Files
fx-quant/results/phase2/backtest_report.json
T
Brent Neale bdab78ee48 Add S10 VWAP Mean Reversion and S11 ADX Trend Pullback strategies, drop both from portfolio
Implemented two M15 intraday strategies to diversify the portfolio:
- S10: VWAP mean reversion in ranging markets (ADX<30, RSI(9) extremes)
- S11: ADX trend pullback to 20 EMA in strong trends (ADX>30, rising)

Added rsi_9 and atr_10 to the indicator pipeline for both strategies.

Backtested on IS (2021-2022) and OOS (2023): both strategies produced
insufficient trade counts on M15 and failed generalization. S10 best
result was EUR_GBP at Gen 0.65 (WARN). S11 collapsed to 0% WR OOS
across all param sweep combos. Both dropped from active portfolio —
3-strategy core (S7_Tight, S9_Filtered, S3) remains unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 16:23:23 +10:00

224 lines
4.3 KiB
JSON

{
"S7_Tight": {
"pair": "GBP_JPY",
"timeframe": "H1",
"is_metrics": {
"trades": 23,
"wr": 69.6,
"pf": 1.52,
"sharpe": 2.89,
"pnl_pips": 207.2,
"max_dd_pips": -205.7,
"expectancy": 9.01
},
"oos_metrics": {
"trades": 15,
"wr": 73.3,
"pf": 1.8,
"sharpe": 3.96,
"pnl_pips": 200.1,
"max_dd_pips": -73.5,
"expectancy": 13.34
},
"generalization": {
"composite": 1.272,
"detail": {
"wr": 1.053,
"pf": 1.184,
"expectancy": 1.481,
"sharpe": 1.37
},
"verdict": "PASS"
}
},
"S9_Filtered": {
"pair": "GBP_AUD",
"timeframe": "H1",
"is_metrics": {
"trades": 42,
"wr": 59.5,
"pf": 1.31,
"sharpe": 1.89,
"pnl_pips": 299.5,
"max_dd_pips": -393.2,
"expectancy": 7.13
},
"oos_metrics": {
"trades": 9,
"wr": 66.7,
"pf": 2.26,
"sharpe": 5.45,
"pnl_pips": 217.8,
"max_dd_pips": -49.6,
"expectancy": 24.19
},
"generalization": {
"composite": 1.712,
"detail": {
"wr": 1.121,
"pf": 1.725,
"expectancy": 2.0,
"sharpe": 2.0
},
"verdict": "PASS"
}
},
"S3": {
"pair": "GBP_JPY",
"timeframe": "H1",
"is_metrics": {
"trades": 84,
"wr": 53.6,
"pf": 1.22,
"sharpe": 1.26,
"pnl_pips": 359.2,
"max_dd_pips": -335.7,
"expectancy": 4.28
},
"oos_metrics": {
"trades": 32,
"wr": 59.4,
"pf": 1.23,
"sharpe": 1.47,
"pnl_pips": 135.5,
"max_dd_pips": -182.9,
"expectancy": 4.24
},
"generalization": {
"composite": 1.068,
"detail": {
"wr": 1.108,
"pf": 1.008,
"expectancy": 0.991,
"sharpe": 1.167
},
"verdict": "PASS"
}
},
"S10_EUR_USD": {
"pair": "EUR_USD",
"timeframe": "M15",
"is_metrics": {
"trades": 13,
"wr": 53.8,
"pf": 1.67,
"sharpe": 3.17,
"pnl_pips": 20.1,
"max_dd_pips": -13.1,
"expectancy": 1.55
},
"oos_metrics": {
"trades": 6,
"wr": 33.3,
"pf": 1.19,
"sharpe": 0.97,
"pnl_pips": 1.5,
"max_dd_pips": -7.9,
"expectancy": 0.25
},
"generalization": {
"composite": 0.45,
"detail": {
"wr": 0.619,
"pf": 0.713,
"expectancy": 0.161,
"sharpe": 0.306
},
"verdict": "FAIL"
}
},
"S10_USD_JPY": {
"pair": "USD_JPY",
"timeframe": "M15",
"is_metrics": {
"trades": 20,
"wr": 50.0,
"pf": 2.08,
"sharpe": 4.18,
"pnl_pips": 51.5,
"max_dd_pips": -19.3,
"expectancy": 2.58
},
"oos_metrics": {
"trades": 9,
"wr": 33.3,
"pf": 0.76,
"sharpe": -1.48,
"pnl_pips": -10.1,
"max_dd_pips": -9.8,
"expectancy": -1.13
},
"generalization": {
"composite": 0.258,
"detail": {
"wr": 0.666,
"pf": 0.365,
"expectancy": 0.0,
"sharpe": 0.0
},
"verdict": "FAIL"
}
},
"S10_EUR_GBP": {
"pair": "EUR_GBP",
"timeframe": "M15",
"is_metrics": {
"trades": 15,
"wr": 33.3,
"pf": 0.98,
"sharpe": -0.14,
"pnl_pips": -0.8,
"max_dd_pips": -29.2,
"expectancy": -0.06
},
"oos_metrics": {
"trades": 7,
"wr": 42.9,
"pf": 1.28,
"sharpe": 1.61,
"pnl_pips": 3.5,
"max_dd_pips": -9.4,
"expectancy": 0.49
},
"generalization": {
"composite": 0.649,
"detail": {
"wr": 1.288,
"pf": 1.306,
"expectancy": 0,
"sharpe": 0
},
"verdict": "WARN"
}
},
"_portfolio": {
"is_metrics": {
"trades": 197,
"wr": 54.8,
"pf": 1.3,
"sharpe": 1.58,
"pnl_pips": 936.6,
"max_dd_pips": -597.5,
"expectancy": 4.75
},
"oos_metrics": {
"trades": 78,
"wr": 56.4,
"pf": 1.51,
"sharpe": 2.52,
"pnl_pips": 548.2,
"max_dd_pips": -208.7,
"expectancy": 7.03
},
"generalization": {
"composite": 1.316,
"detail": {
"wr": 1.029,
"pf": 1.162,
"expectancy": 1.48,
"sharpe": 1.595
},
"verdict": "PASS"
}
}
}