217 lines
13 KiB
Plaintext
217 lines
13 KiB
Plaintext
V11 Test Parameter Sweep - System Architecture
|
|
================================================
|
|
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
│ LOCAL MACHINE │
|
|
│ /home/icke/traderv4/cluster/ │
|
|
├─────────────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ 1. deploy_v11_test.sh │
|
|
│ └─> Syncs files to EPYC cluster │
|
|
│ │
|
|
│ Files deployed: │
|
|
│ • v11_test_coordinator.py │
|
|
│ • v11_test_worker.py │
|
|
│ • run_v11_test_sweep.sh │
|
|
│ • backtester/v11_moneyline_all_filters.py │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────────────┘
|
|
│
|
|
│ rsync via SSH
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
│ WORKER 1 (pve-nu-monitor01) │
|
|
│ root@10.10.254.106:/home/comprehensive_sweep │
|
|
├─────────────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ 2. run_v11_test_sweep.sh │
|
|
│ └─> Initializes database │
|
|
│ └─> Launches coordinator │
|
|
│ │
|
|
│ 3. v11_test_coordinator.py (COORDINATOR) │
|
|
│ ├─> Checks Worker 2 availability (office hours) │
|
|
│ ├─> Creates 2 chunks (128 combos each) │
|
|
│ ├─> Assigns chunks to workers │
|
|
│ └─> Monitors completion │
|
|
│ │ │
|
|
│ ├── Worker 1 Assignment │
|
|
│ │ └─> SSH: python3 v11_test_worker.py │
|
|
│ │ data/solusdt_5m.csv v11_test_chunk_0000 0 │
|
|
│ │ │
|
|
│ └── Worker 2 Assignment (if available) │
|
|
│ └─> SSH via hop: python3 v11_test_worker.py │
|
|
│ data/solusdt_5m.csv v11_test_chunk_0001 128 │
|
|
│ │
|
|
│ Database: exploration.db │
|
|
│ ├── v11_test_chunks (2 chunks) │
|
|
│ └── v11_test_strategies (256 strategies) │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────────────┘
|
|
│ │
|
|
│ SSH direct │ SSH via hop
|
|
│ 24/7 availability │ Office hours aware
|
|
▼ ▼
|
|
┌─────────────────────────┐ ┌──────────────────────────────────────┐
|
|
│ WORKER 1 PROCESSING │ │ WORKER 2 PROCESSING │
|
|
│ (Always Available) │ │ (Office Hours Aware) │
|
|
├─────────────────────────┤ ├──────────────────────────────────────┤
|
|
│ │ │ │
|
|
│ 4. v11_test_worker.py │ │ 4. v11_test_worker.py │
|
|
│ ├─> 27-core MP │ │ ├─> 27-core MP │
|
|
│ └─> Chunk 0000 │ │ └─> Chunk 0001 │
|
|
│ (0-127) │ │ (128-255) │
|
|
│ │ │ │ │ │
|
|
│ ▼ │ │ ▼ │
|
|
│ 5. v11 Indicator │ │ 5. v11 Indicator │
|
|
│ (For each combo) │ │ (For each combo) │
|
|
│ ├─> Load data │ │ ├─> Load data │
|
|
│ ├─> Generate signals │ │ ├─> Generate signals │
|
|
│ └─> Backtest │ │ └─> Backtest │
|
|
│ │ │ │ │ │
|
|
│ ▼ │ │ ▼ │
|
|
│ Output: │ │ Output: │
|
|
│ • CSV results │ │ • CSV results │
|
|
│ • 128 strategies │ │ • 128 strategies │
|
|
│ │ │ │
|
|
│ Availability: │ │ Availability: │
|
|
│ • 24/7 │ │ • Mon-Fri: 6PM-8AM │
|
|
│ • No restrictions │ │ • Sat-Sun: 24/7 │
|
|
│ │ │ • Office hours: DISABLED │
|
|
└─────────────────────────┘ └──────────────────────────────────────┘
|
|
│ │
|
|
└───────────────┬───────────────────────┘
|
|
│ Results returned
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
│ RESULTS AGGREGATION │
|
|
│ Worker 1:/home/comprehensive_sweep/ │
|
|
├─────────────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ v11_test_results/ │
|
|
│ ├── v11_test_chunk_0000_results.csv (128 rows) │
|
|
│ └── v11_test_chunk_0001_results.csv (128 rows) │
|
|
│ │
|
|
│ exploration.db │
|
|
│ └── v11_test_strategies (256 total strategies) │
|
|
│ ├── params (JSON) │
|
|
│ ├── pnl (REAL) │
|
|
│ ├── win_rate (REAL) │
|
|
│ ├── profit_factor (REAL) │
|
|
│ ├── max_drawdown (REAL) │
|
|
│ └── total_trades (INTEGER) │
|
|
│ │
|
|
│ Telegram Notifications: │
|
|
│ ├── Start: Worker count, configuration │
|
|
│ ├── Progress: Chunk completions │
|
|
│ └── Completion: Duration, results location │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
|
DATA FLOW
|
|
=========
|
|
|
|
Market Data (solusdt_5m.csv)
|
|
↓
|
|
v11_moneyline_all_filters.py
|
|
├─> Calculate Money Line (supertrend)
|
|
├─> Detect trend flips
|
|
├─> Apply ALL filters:
|
|
│ ├─> ADX minimum (trend strength)
|
|
│ ├─> Entry buffer (price beyond line)
|
|
│ ├─> Price position (don't chase extremes)
|
|
│ ├─> Volume ratio (avoid dead/overheated)
|
|
│ └─> RSI boundaries (momentum confirmation)
|
|
└─> Generate signals (ONLY when ALL filters pass)
|
|
↓
|
|
Simple Backtest Logic
|
|
├─> For each signal:
|
|
│ ├─> Look ahead 100 bars
|
|
│ ├─> Check if TP1 hit (+0.86%)
|
|
│ └─> Check if SL hit (-1.29%)
|
|
└─> Track equity curve
|
|
↓
|
|
Results
|
|
├─> Total P&L
|
|
├─> Win rate
|
|
├─> Profit factor
|
|
├─> Max drawdown
|
|
└─> Total trades
|
|
|
|
|
|
PARAMETER SPACE
|
|
===============
|
|
|
|
256 Combinations = 2^8 (2 values per parameter)
|
|
|
|
Parameters being optimized:
|
|
1. flip_threshold [0.5, 0.6] % price movement to flip
|
|
2. adx_min [18, 21] Minimum ADX for trend
|
|
3. long_pos_max [75, 80] Max price position for longs
|
|
4. short_pos_min [20, 25] Min price position for shorts
|
|
5. vol_min [0.8, 1.0] Minimum volume ratio
|
|
6. entry_buffer_atr [0.15, 0.20] ATR buffer beyond line
|
|
7. rsi_long_min [35, 40] RSI minimum for longs
|
|
8. rsi_short_max [65, 70] RSI maximum for shorts
|
|
|
|
Fixed parameters (not being optimized in test):
|
|
- confirm_bars: 0 (immediate signals)
|
|
- cooldown_bars: 3 (prevent overtrading)
|
|
- atr_period: 12 (5-minute chart default)
|
|
- multiplier: 3.8 (ATR band multiplier)
|
|
- adx_length: 16
|
|
- rsi_length: 14
|
|
- vol_max: 3.5
|
|
- rsi_long_max: 70
|
|
- rsi_short_min: 30
|
|
|
|
|
|
TIMING
|
|
======
|
|
|
|
Expected Runtime:
|
|
├─> Worker 1 only (weekday daytime): ~25 minutes
|
|
└─> Both workers (nights/weekends): ~12-15 minutes
|
|
|
|
Optimal Start Times:
|
|
├─> Fastest: Weekend anytime (both workers)
|
|
├─> Good: Weekday after 6 PM (both workers)
|
|
└─> Slowest: Weekday 8am-6pm (Worker 1 only)
|
|
|
|
|
|
VERIFICATION CHECKLIST
|
|
======================
|
|
|
|
After completion, verify:
|
|
□ Coordinator log shows "V11 TEST SWEEP COMPLETE!"
|
|
□ 2 CSV files exist in v11_test_results/
|
|
□ Each CSV has 128 rows (256 total)
|
|
□ Database has 256 entries in v11_test_strategies
|
|
□ PnL values are varied (NOT all zeros)
|
|
□ Top result shows PnL > $0 and trades > 0
|
|
□ Telegram received completion notification
|
|
|
|
|
|
CRITICAL DIFFERENCE FROM V9
|
|
============================
|
|
|
|
v9 Bug (filters calculated but not applied):
|
|
if flip_long:
|
|
adx_ok = ...
|
|
volume_ok = ...
|
|
# BUT: Signal fires regardless
|
|
signals.append(...) ❌
|
|
|
|
v11 Fix (ALL filters must pass):
|
|
if flip_long:
|
|
adx_ok = ...
|
|
volume_ok = ...
|
|
rsi_ok = ...
|
|
pos_ok = ...
|
|
entry_buffer_ok = ...
|
|
# Signal ONLY fires when ALL pass
|
|
if adx_ok and volume_ok and rsi_ok and pos_ok and entry_buffer_ok:
|
|
signals.append(...) ✅
|
|
|
|
This is why v9 showed "no data" - broken filters allowed garbage signals.
|