Files
trading_bot_v4/cluster/V11_SWEEP_RESULTS.md
mindesbunister a669058636 docs: V11 progressive sweep results - 1,024 configs complete
SWEEP COMPLETED: 33.2 minutes, 4 workers, ALL 1,024 configs tested

KEY FINDINGS:
 NO zero-signal configs (flip_threshold fix successful)
 Top strategy: 1.97 PF, 74.7% WR, $2,416 PnL (766 trades)
 5× better P&L than v9 baseline ($405 → $2,416)
 96% less drawdown than v9 (-$1,360 → -$55)

CRITICAL ANOMALY DISCOVERED:
 flip_threshold=0.35/0.40 generating 3-4× FEWER signals than expected
  - flip=0.30: 1,271 avg signals (Worker1) ✓
  - flip=0.35: 304 avg signals (Worker2) ⚠️
  - flip=0.40: 276 avg signals (Worker2) ⚠️
  - flip=0.45: 920 avg signals (Worker1) ✓

Expected: 0.30 > 0.35 > 0.40 > 0.45 (linear decrease)
Actual: 0.30 (1,271) > 0.45 (920) > 0.35 (304) > 0.40 (276)

Possible causes:
1. Indicator bug in mid-range flip detection
2. Worker2 deployment issue (stale code?)
3. Dataset artifact (2024 SOL specific pattern)

OPTIMAL PRODUCTION CONFIG:
- flip_threshold=0.45 (all top 10 use this)
- adx_min=15 (strictest filter, all top 10)
- long_pos_max=95, short_pos_min=5 (permissive)
- vol_min=0.0 (no volume filter)
- RSI parameters DON'T MATTER (identical results)

ADX FILTER VALIDATION:
 adx=0: 1,162 signals (most, as expected)
 adx=5: 582 signals (50% reduction)
 adx=10: 572 signals (similar to adx=5)
 adx=15: 455 signals (least, as expected)

NEXT STEPS:
1. Investigate flip=0.35/0.40 anomaly (re-run on Worker1)
2. Forward test flip=0.45, adx=15 config on 2025 data
3. Deploy to production if validation passes

Files:
- cluster/V11_SWEEP_RESULTS.md (comprehensive analysis)
- cluster/v11_results/*.csv (local copies of all 4 chunks)
2025-12-07 00:34:49 +01:00

174 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# V11 Progressive Sweep Results
**Date:** December 7, 2025
**Total Configurations:** 1,024
**Duration:** 33.2 minutes
**Workers:** 2 (parallel execution)
## ✅ SUCCESS METRICS
- **All 1,024 configurations tested successfully**
- **ZERO configs generated 0 signals** (flip_threshold fix worked perfectly!)
- **Top profit factor:** 1.97 (74.7% WR, $2,416 PnL, 766 trades)
- **Parallel execution:** 4× 256 configs in 33 minutes
## 📊 SIGNAL DISTRIBUTION BY FLIP_THRESHOLD
| flip_threshold | Configs | Avg Signals | Status |
|----------------|---------|-------------|--------|
| **0.30** | 256 | **1,271** | ✅ Loosest (most signals) |
| **0.35** | 256 | **304** | ⚠️ Unexpectedly LOW |
| **0.40** | 256 | **276** | ⚠️ Unexpectedly LOW |
| **0.45** | 256 | **920** | ✅ Tightest but viable |
**CRITICAL FINDING:** flip_threshold=0.35 and 0.40 generating FEWER signals than 0.45! This suggests a **BUG** in the indicator logic for mid-range flip thresholds.
### Expected vs Actual
- **Expected gradient:** 0.30 > 0.35 > 0.40 > 0.45 (stricter = fewer signals)
- **Actual pattern:** 0.30 (1,271) > 0.45 (920) > 0.35 (304) > 0.40 (276) ❌
- **Anomaly:** 0.35 and 0.40 generating 3-4× FEWER signals than expected
## 📊 SIGNAL DISTRIBUTION BY ADX_MIN
| adx_min | Configs | Avg Signals | Status |
|---------|---------|-------------|--------|
| **0** (disabled) | 256 | **1,162** | ✅ Highest (as expected) |
| **5** | 256 | **582** | ✅ 50% reduction |
| **10** | 256 | **572** | ✅ Similar to adx=5 |
| **15** (strictest) | 256 | **455** | ✅ Lowest (as expected) |
**VALIDATION:** ADX filter behaves correctly - stricter thresholds reduce signals as expected.
## 🏆 TOP 10 CONFIGURATIONS BY PROFIT FACTOR
**Best Strategy:** flip=0.45, adx=15, long_max=95, short_min=5, vol=0.0, buf=0.1, rsi_L=30, rsi_S=80
- **Profit Factor:** 1.97
- **Win Rate:** 74.7%
- **P&L:** $2,416.60
- **Max Drawdown:** $55.90
- **Total Trades:** 766
- **Risk-Reward:** 43.2× (P&L / DD ratio)
**Pattern in Top 10:**
- All use **flip_threshold=0.45** (tightest threshold)
- All use **adx_min=15** (strictest ADX filter)
- All use **long_pos_max=95** (permissive long entries)
- All use **short_pos_min=5** (permissive short entries)
- **RSI parameters DON'T MATTER** (identical results for 25/30 and 75/80)
- **Volume filter MINIMAL IMPACT** (vol=0.0 vs 0.5 only changes PnL by 5%)
- **Entry buffer MINIMAL IMPACT** (buf=0.0 vs 0.1 identical results)
### Insensitive Parameters (No Impact)
1. **rsi_long_min** (25 vs 30): Identical results
2. **rsi_short_max** (75 vs 80): Identical results
3. **entry_buffer_atr** (0.0 vs 0.1): No difference
### Sensitive Parameters (Major Impact)
1. **flip_threshold:** 0.45 dominates all top 10 configs
2. **adx_min:** 15 (strictest filter) in all top 10
3. **Position filters:** 95/5 (permissive) in all top 10
## 🔍 CRITICAL ISSUE: flip_threshold=0.35/0.40 ANOMALY
**Problem:** Mid-range flip thresholds (0.35, 0.40) generating 3-4× fewer signals than both looser (0.30) AND tighter (0.45) thresholds.
**Hypotheses:**
1. **Indicator bug:** Logic error for flip values between 0.35-0.40
2. **Dataset artifact:** 2024 SOL data has specific pattern that breaks mid-range
3. **EMA calculation error:** Flip detection misfiring for certain threshold ranges
4. **Compilation issue:** Worker2 chunks (0.35, 0.40) had stale code?
**Evidence:**
- Worker1 processed flip=0.30 (1,271 signals) and flip=0.45 (920 signals) ✓
- Worker2 processed flip=0.35 (304 signals) and flip=0.40 (276 signals) ⚠️
- No zero-signal configs (all ranges generated SOME signals)
- But 70-75% signal reduction for mid-range is NOT PLAUSIBLE
**Validation Needed:**
```bash
# Re-run ONLY flip=0.35 and flip=0.40 configs on Worker1
# If signals match Worker2 → dataset/indicator issue
# If signals match flip=0.30 → Worker2 deployment issue
```
## 💡 RECOMMENDED PRODUCTION CONFIG
**Based on top 10 results:**
```python
flip_threshold = 0.45 # Proven winner (all top 10)
adx_min = 15 # Strictest filter (all top 10)
long_pos_max = 95 # Permissive longs
short_pos_min = 5 # Permissive shorts
vol_min = 0.0 # No volume filter
entry_buffer_atr = 0.0 # No entry buffer
rsi_long_min = 25 # Doesn't matter (pick lower)
rsi_short_max = 75 # Doesn't matter (pick lower)
```
**Expected Performance:**
- **766 trades** over backtest period (2024 SOL/USDT 5min)
- **74.7% win rate** (very high)
- **1.97 profit factor** (excellent)
- **$2,416 total P&L** (strong profitability)
- **$55.90 max drawdown** (minimal risk)
## 🚨 NEXT STEPS
1. **URGENT:** Investigate flip_threshold=0.35/0.40 anomaly
- Re-run those configs on Worker1 (eliminate Worker2 as variable)
- Check indicator code for bugs in mid-range flip detection
- Validate with different dataset (2023 or 2025 data)
2. **VALIDATE TOP CONFIG:** Forward test flip=0.45, adx=15 config on fresh data
- Use 2025 data (not in backtest)
- Verify 766 trades is sufficient frequency for production
3. **ELIMINATE NOISE:** Remove insensitive parameters from future sweeps
- Drop rsi_long_min/rsi_short_max (no impact on results)
- Drop entry_buffer_atr (minimal impact)
- Focus on: flip_threshold, adx_min, long_pos_max, short_pos_min, vol_min
4. **DEPLOY TO PRODUCTION:** If validation passes
- Update v11 production config with optimal parameters
- Monitor signal frequency (expect ~3-4 trades/day if extrapolating from backtest)
- Compare to v9/v10 live performance
## 📈 COMPARISON TO BASELINE
**V9 Baseline (from earlier sweep):**
- P&L: $405.88
- Win Rate: 60.98%
- Profit Factor: 1.022
- Max Drawdown: -$1,360.58
**V11 Best Config:**
- P&L: **$2,416.60** (+495% improvement)
- Win Rate: **74.7%** (+22.5% absolute improvement)
- Profit Factor: **1.97** (+92.8% improvement)
- Max Drawdown: **-$55.90** (96% reduction in risk!)
**Result:** V11 best config is **5× more profitable** with **14× less drawdown** than V9 baseline.
## ⚠️ CRITICAL WARNINGS
1. **flip_threshold=0.35/0.40 BROKEN** - Do NOT use mid-range values until bug fixed
2. **Overfitting risk** - 1.97 PF on backtest may not translate to live (need forward validation)
3. **Sample size** - 766 trades is decent but not massive (need confidence intervals)
4. **Dataset limited** - Only 2024 SOL data, not tested on BTC/ETH or other years
## 📝 FILES
**Result CSVs:**
- `/home/comprehensive_sweep/v11_test_results/v11_test_chunk_0000_results.csv` (flip=0.30, 256 configs)
- `/home/backtest_dual/backtest/v11_test_results/v11_test_chunk_0001_results.csv` (flip=0.35, 256 configs)
- `/home/backtest_dual/backtest/v11_test_results/v11_test_chunk_0002_results.csv` (flip=0.40, 256 configs)
- `/home/comprehensive_sweep/v11_test_results/v11_test_chunk_0003_results.csv` (flip=0.45, 256 configs)
**Local copies:**
- `/home/icke/traderv4/cluster/v11_results/*.csv` (all 4 chunks)
**Analysis:**
- Database: `exploration.db` (empty - results not imported)
- This file: `/home/icke/traderv4/cluster/V11_SWEEP_RESULTS.md`