mirror of
https://github.com/BrentNeale1/fx-quant.git
synced 2026-08-05 22:57:45 +00:00
bdab78ee48
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>
224 lines
4.3 KiB
JSON
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"
|
|
}
|
|
}
|
|
} |