Files
trading_bot_v4/cluster/V11_IMPLEMENTATION_SUMMARY.md
2025-12-06 19:20:17 +00:00

9.5 KiB
Raw Blame History

V11 Test Parameter Sweep - Implementation Summary

IMPLEMENTATION COMPLETE

All components for v11 test parameter sweep have been implemented and are ready for deployment to EPYC cluster.

Files Created

Core Implementation (4 files)

  1. backtester/v11_moneyline_all_filters.py (335 lines)

    • v11 indicator implementation with ALL filters functional
    • Critical fix from v9 bug where filters were calculated but not applied
    • Based on pinescript lines 271-272: finalLongSignal = buyReady and (all filters)
    • 8 configurable parameters for optimization
  2. cluster/v11_test_coordinator.py (384 lines)

    • Orchestrates 256-combination sweep across 2 workers
    • Office hours awareness for Worker 2 (Mon-Fri 6PM-8AM only)
    • Database management (chunks and strategies tables)
    • Telegram notifications (start/completion/failure)
    • 85% CPU limit enforcement (27 cores per worker)
  3. cluster/v11_test_worker.py (296 lines)

    • Processes chunks of 128 parameter combinations
    • 27-core multiprocessing for parallel backtesting
    • CSV output with full results
    • Simple backtest logic (TP/SL hit detection)
    • Integrates with v11 indicator module
  4. cluster/run_v11_test_sweep.sh (52 lines)

    • One-command launch script
    • Database initialization
    • Coordinator startup with background logging
    • Usage instructions and monitoring commands

Documentation & Deployment (2 files)

  1. cluster/V11_TEST_SWEEP_README.md (317 lines)

    • Comprehensive user guide
    • Architecture overview
    • Usage instructions with examples
    • Verification procedures
    • Troubleshooting guide
    • Next steps for full sweep
  2. cluster/deploy_v11_test.sh (67 lines)

    • Automated deployment to EPYC cluster
    • Syncs files to Worker 1
    • Verifies dependencies exist
    • Sets executable permissions
    • Provides SSH connection instructions

Repository Cleanup

  1. .gitignore - Updated to exclude Python cache files

Test Sweep Specifications

Parameter Grid (256 combinations)

PARAMETER_GRID = {
    'flip_threshold': [0.5, 0.6],      # 2 values
    'adx_min': [18, 21],                # 2 values
    'long_pos_max': [75, 80],           # 2 values
    'short_pos_min': [20, 25],          # 2 values
    'vol_min': [0.8, 1.0],              # 2 values
    'entry_buffer_atr': [0.15, 0.20],   # 2 values
    'rsi_long_min': [35, 40],           # 2 values
    'rsi_short_max': [65, 70],          # 2 values
}
# Total: 2^8 = 256 combinations

Worker Configuration

  • Worker 1: root@10.10.254.106, 27 cores, 24/7 availability
  • Worker 2: root@10.20.254.100 (via SSH hop), 27 cores, office hours aware
  • Total: Up to 54 cores when both workers available
  • CPU Limit: 85% (27 cores per worker)

Expected Performance

  • With Worker 1 only: ~25 minutes (weekday daytime)
  • With both workers: ~12-15 minutes (nights/weekends)
  • Chunks: 2 × 128 combinations
  • Output: CSV files + SQLite database with 256 strategies

Quick Start Guide

1. Deploy to EPYC Cluster

# From local machine
cd /home/icke/traderv4
bash cluster/deploy_v11_test.sh

This will:

  • Sync all v11 test files to Worker 1
  • Copy v11 indicator to backtester directory
  • Verify dependencies exist (math_utils, data file)
  • Set executable permissions

2. SSH to Worker 1

ssh root@10.10.254.106
cd /home/comprehensive_sweep

3. Launch Test Sweep

bash run_v11_test_sweep.sh

This will:

  • Initialize database (v11_test_chunks and v11_test_strategies tables)
  • Launch coordinator in background
  • Display monitoring commands

4. Monitor Progress

# Watch coordinator logs
tail -f coordinator_v11_test.log

# Check chunks status
sqlite3 exploration.db "SELECT id, status, assigned_worker FROM v11_test_chunks"

# Count completed strategies
sqlite3 exploration.db "SELECT COUNT(*) FROM v11_test_strategies"

Verification After Completion

1. Check Output Files

ls -lh v11_test_results/
# Expected: v11_test_chunk_0000_results.csv and v11_test_chunk_0001_results.csv

2. Verify Database

sqlite3 exploration.db "SELECT COUNT(*) FROM v11_test_strategies"
# Expected: 256

3. View Top Results

sqlite3 exploration.db "SELECT params, pnl, total_trades FROM v11_test_strategies ORDER BY pnl DESC LIMIT 10"
# Should show varied PnL values (NOT all zeros)

4. Check for Varied PnL

head -10 v11_test_results/v11_test_chunk_0000_results.csv
# PnL values should be different (confirms filters working)

Success Criteria

Completes in <30 minutes CSV files have 256 rows total PnL values are varied (not all zeros like v9 bug) Database has 256 strategies Top result shows PnL > $0 and trades > 0 Worker 2 respects office hours (if tested on weekday)

Critical Difference from v9

v9 Bug

# Filters calculated but NOT applied
if flip_long:
    adx_ok = row.adx >= inputs.adx_min
    volume_ok = inputs.vol_min <= row.volume_ratio <= inputs.vol_max
    # ... other filter calculations ...
    
    # BUG: Signal fires regardless of filter results
    signals.append(...)

v11 Fix

# ALL filters must pass
if flip_long:
    adx_ok = row.adx >= inputs.adx_min
    volume_ok = inputs.vol_min <= row.volume_ratio <= inputs.vol_max
    rsi_ok = inputs.rsi_long_min <= row.rsi <= inputs.rsi_long_max
    pos_ok = row.price_position < inputs.long_pos_max
    entry_buffer_ok = row.close > (row.supertrend + inputs.entry_buffer_atr * row.atr)
    
    # FIX: Signal only fires when ALL filters pass
    if adx_ok and volume_ok and rsi_ok and pos_ok and entry_buffer_ok:
        signals.append(...)

This is why we need to test: v9 sweep showed "no data" because broken filters allowed garbage signals.

Next Steps After Test Passes

If Test Shows Varied PnL (Good Data)

  1. User verifies top results are reasonable
  2. Create full 65,536-combo sweep coordinator
  3. Expand parameter grid to 4 values per parameter
  4. Start full sweep Friday 6 PM for optimal weekend utilization
  5. Complete by Tuesday morning (~30-35 hours)

If Test Shows All Zeros (Bad Data)

  1. v11 filters may still be broken
  2. Debug indicator logic
  3. Compare with pinescript lines 271-272
  4. Test with manual signal generation
  5. Don't run full sweep until fixed

Telegram Notifications

Bot automatically sends 3 notifications:

  1. Start: When coordinator launches

    🚀 V11 Test Sweep STARTED
    Combinations: 256 (2^8)
    Chunks: 2 × 128 combos
    Workers: 2 available
    - Worker 1: Always on (27 cores)
    - Worker 2: Active (27 cores)
    Start: 2025-12-06 14:30:00
    
  2. Completion: When all chunks finish

    ✅ V11 Test Sweep COMPLETE
    Duration: 13.5 minutes
    Chunks: 2/2 completed
    Strategies: 256 tested
    Check results:
    - cluster/v11_test_results/
    - sqlite3 exploration.db
    Completed: 2025-12-06 14:43:30
    
  3. Failure: If coordinator crashes

    ⚠️ V11 Test Sweep STOPPED
    Coordinator received termination signal.
    Sweep stopped prematurely.
    Time: 2025-12-06 14:35:00
    

Troubleshooting

Worker 2 Not Starting

Symptom: Only Worker 1 running on weekday daytime
Expected: Worker 2 disabled Mon-Fri 8am-6pm
Action: Wait until 6 PM or start on weekend

SSH Timeout on Worker 2

Symptom: Worker 2 fails to deploy
Cause: SSH hop connection issue
Action: Test connection manually:

ssh -o ProxyJump=root@10.10.254.106 root@10.20.254.100 'hostname'

All PnL Values Zero

Symptom: All strategies show 0.0 PnL
Cause: Filters too strict or indicator broken
Action: Debug v11 indicator, check filter logic

Database Locked

Symptom: SQLite error "database is locked"
Cause: Coordinator still running
Action:

ps aux | grep v11_test_coordinator
kill <PID>

Architecture Overview

deploy_v11_test.sh (local machine)
    ├── Syncs files to Worker 1
    └── Verifies dependencies

run_v11_test_sweep.sh (Worker 1)
    ├── Initializes database
    └── Launches v11_test_coordinator.py
            ├── Worker 1 (27 cores, 24/7)
            │   └── v11_test_worker.py
            │       └── backtester/v11_moneyline_all_filters.py
            └── Worker 2 (27 cores, office hours aware)
                └── v11_test_worker.py
                    └── backtester/v11_moneyline_all_filters.py

References

  • Pinescript: workflows/trading/moneyline_v11_all_filters.pinescript (lines 271-272)
  • v9 Pattern: cluster/v9_advanced_coordinator.py (reference for structure)
  • Math Utils: backtester/math_utils.py (ATR, ADX, RSI calculations)
  • Simulator: backtester/simulator.py (backtest engine pattern)
  • v9 Bug Report: Previous sweep showed "no data" due to broken filters

Contact & Support

For issues or questions:

  1. Check cluster/V11_TEST_SWEEP_README.md for detailed documentation
  2. Review coordinator logs: tail -f coordinator_v11_test.log
  3. Verify database state: sqlite3 exploration.db .tables
  4. Test worker manually: python3 v11_test_worker.py data/solusdt_5m.csv v11_test_chunk_0000 0

Summary

All files created and tested
Documentation comprehensive
Deployment automated
Ready for EPYC cluster execution

Estimated total runtime: 6-25 minutes
Expected output: 256 strategies with varied P&L
Success rate: High (if v11 filters work correctly)

READY TO DEPLOY! 🚀