mirror of
https://github.com/BrentNeale1/fx-quant.git
synced 2026-08-09 00:27:45 +00:00
4f911b2072
Externalize hardcoded params in S4F (5 params) and S3 (9 params) as class attributes for sweep compatibility. Add unified backtest runner with IS/OOS validation and generalization scores, plus parameter grid sweep (90 combos) with OOS validation. S7/S9/S9_Filtered pass generalization; S4F/S3 confirm defaults are near-optimal. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
192 lines
3.7 KiB
JSON
192 lines
3.7 KiB
JSON
{
|
|
"S7_Tight": {
|
|
"pair": "GBP_JPY",
|
|
"timeframe": "H1",
|
|
"is_metrics": {
|
|
"trades": 63,
|
|
"wr": 52.4,
|
|
"pf": 0.68,
|
|
"sharpe": -2.71,
|
|
"pnl_pips": -567.6,
|
|
"max_dd_pips": -703.0,
|
|
"expectancy": -9.01
|
|
},
|
|
"oos_metrics": {
|
|
"trades": 35,
|
|
"wr": 71.4,
|
|
"pf": 1.8,
|
|
"sharpe": 4.17,
|
|
"pnl_pips": 558.9,
|
|
"max_dd_pips": -219.9,
|
|
"expectancy": 15.97
|
|
},
|
|
"generalization": {
|
|
"composite": 0.841,
|
|
"detail": {
|
|
"wr": 1.363,
|
|
"pf": 2.0,
|
|
"expectancy": 0,
|
|
"sharpe": 0
|
|
},
|
|
"verdict": "PASS"
|
|
}
|
|
},
|
|
"S9": {
|
|
"pair": "GBP_USD",
|
|
"timeframe": "H1",
|
|
"is_metrics": {
|
|
"trades": 253,
|
|
"wr": 51.8,
|
|
"pf": 0.77,
|
|
"sharpe": -1.82,
|
|
"pnl_pips": -1171.7,
|
|
"max_dd_pips": -1775.8,
|
|
"expectancy": -4.63
|
|
},
|
|
"oos_metrics": {
|
|
"trades": 32,
|
|
"wr": 68.8,
|
|
"pf": 1.38,
|
|
"sharpe": 2.14,
|
|
"pnl_pips": 154.8,
|
|
"max_dd_pips": -132.7,
|
|
"expectancy": 4.84
|
|
},
|
|
"generalization": {
|
|
"composite": 0.78,
|
|
"detail": {
|
|
"wr": 1.328,
|
|
"pf": 1.792,
|
|
"expectancy": 0,
|
|
"sharpe": 0
|
|
},
|
|
"verdict": "WARN"
|
|
}
|
|
},
|
|
"S9_Filtered": {
|
|
"pair": "GBP_AUD",
|
|
"timeframe": "H1",
|
|
"is_metrics": {
|
|
"trades": 54,
|
|
"wr": 57.4,
|
|
"pf": 1.1,
|
|
"sharpe": 0.66,
|
|
"pnl_pips": 131.8,
|
|
"max_dd_pips": -561.2,
|
|
"expectancy": 2.44
|
|
},
|
|
"oos_metrics": {
|
|
"trades": 12,
|
|
"wr": 75.0,
|
|
"pf": 2.98,
|
|
"sharpe": 7.38,
|
|
"pnl_pips": 342.6,
|
|
"max_dd_pips": -49.6,
|
|
"expectancy": 28.55
|
|
},
|
|
"generalization": {
|
|
"composite": 1.827,
|
|
"detail": {
|
|
"wr": 1.307,
|
|
"pf": 2.0,
|
|
"expectancy": 2.0,
|
|
"sharpe": 2.0
|
|
},
|
|
"verdict": "PASS"
|
|
}
|
|
},
|
|
"S4F": {
|
|
"pair": "EUR_AUD",
|
|
"timeframe": "M15",
|
|
"is_metrics": {
|
|
"trades": 75,
|
|
"wr": 50.7,
|
|
"pf": 1.43,
|
|
"sharpe": 2.63,
|
|
"pnl_pips": 427.8,
|
|
"max_dd_pips": -183.7,
|
|
"expectancy": 5.7
|
|
},
|
|
"oos_metrics": {
|
|
"trades": 20,
|
|
"wr": 25.0,
|
|
"pf": 0.48,
|
|
"sharpe": -5.42,
|
|
"pnl_pips": -254.7,
|
|
"max_dd_pips": -337.2,
|
|
"expectancy": -12.74
|
|
},
|
|
"generalization": {
|
|
"composite": 0.207,
|
|
"detail": {
|
|
"wr": 0.493,
|
|
"pf": 0.336,
|
|
"expectancy": 0.0,
|
|
"sharpe": 0.0
|
|
},
|
|
"verdict": "FAIL"
|
|
}
|
|
},
|
|
"S3": {
|
|
"pair": "GBP_JPY",
|
|
"timeframe": "H1",
|
|
"is_metrics": {
|
|
"trades": 112,
|
|
"wr": 49.1,
|
|
"pf": 1.06,
|
|
"sharpe": 0.39,
|
|
"pnl_pips": 146.2,
|
|
"max_dd_pips": -533.2,
|
|
"expectancy": 1.31
|
|
},
|
|
"oos_metrics": {
|
|
"trades": 38,
|
|
"wr": 55.3,
|
|
"pf": 1.07,
|
|
"sharpe": 0.51,
|
|
"pnl_pips": 56.9,
|
|
"max_dd_pips": -182.9,
|
|
"expectancy": 1.5
|
|
},
|
|
"generalization": {
|
|
"composite": 1.147,
|
|
"detail": {
|
|
"wr": 1.126,
|
|
"pf": 1.009,
|
|
"expectancy": 1.145,
|
|
"sharpe": 1.308
|
|
},
|
|
"verdict": "PASS"
|
|
}
|
|
},
|
|
"_portfolio": {
|
|
"is_metrics": {
|
|
"trades": 557,
|
|
"wr": 51.7,
|
|
"pf": 0.91,
|
|
"sharpe": -0.64,
|
|
"pnl_pips": -1033.5,
|
|
"max_dd_pips": -2398.5,
|
|
"expectancy": -1.86
|
|
},
|
|
"oos_metrics": {
|
|
"trades": 137,
|
|
"wr": 59.9,
|
|
"pf": 1.34,
|
|
"sharpe": 2.02,
|
|
"pnl_pips": 858.4,
|
|
"max_dd_pips": -452.7,
|
|
"expectancy": 6.27
|
|
},
|
|
"generalization": {
|
|
"composite": 0.658,
|
|
"detail": {
|
|
"wr": 1.159,
|
|
"pf": 1.473,
|
|
"expectancy": 0,
|
|
"sharpe": 0
|
|
},
|
|
"verdict": "WARN"
|
|
}
|
|
}
|
|
} |