Refine Phase 2 portfolio: data-driven filters, drop S4F and S9

S7: add RSI floor (RSI<40 = 0% WR) and ATR percentile cap (high-vol
regime = worse RR). IS flips from PF 0.68 to 1.52, OOS holds at 1.80.

S3: add confluence gate (C>=4) and skip hours 09-10 (0% WR). IS PF
1.06 -> 1.22, OOS PF 1.07 -> 1.23.

S9_Filtered: add skip_monday (unreliable Asian ranges after weekend
gaps). IS PF 1.10 -> 1.31, OOS holds strong at 2.26.

Drop S9/GBP_USD (negative PF across all param combos) and S4F/EUR_AUD
(overfit: IS 1.43 collapses to OOS 0.48). 3-strategy portfolio: all
PASS generalization, IS PF 1.29, OOS PF 1.55, Gen 1.46.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Brent Neale
2026-02-20 10:25:09 +10:00
co-authored by Claude Opus 4.6
parent 4f911b2072
commit 9c5d55ec46
11 changed files with 328 additions and 456 deletions
+72 -136
View File
@@ -3,190 +3,126 @@
"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
"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": 35,
"wr": 71.4,
"trades": 15,
"wr": 73.3,
"pf": 1.8,
"sharpe": 4.17,
"pnl_pips": 558.9,
"max_dd_pips": -219.9,
"expectancy": 15.97
"sharpe": 3.96,
"pnl_pips": 200.1,
"max_dd_pips": -73.5,
"expectancy": 13.34
},
"generalization": {
"composite": 0.841,
"composite": 1.272,
"detail": {
"wr": 1.363,
"pf": 2.0,
"expectancy": 0,
"sharpe": 0
"wr": 1.053,
"pf": 1.184,
"expectancy": 1.481,
"sharpe": 1.37
},
"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
"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": 12,
"wr": 75.0,
"pf": 2.98,
"sharpe": 7.38,
"pnl_pips": 342.6,
"trades": 9,
"wr": 66.7,
"pf": 2.26,
"sharpe": 5.45,
"pnl_pips": 217.8,
"max_dd_pips": -49.6,
"expectancy": 28.55
"expectancy": 24.19
},
"generalization": {
"composite": 1.827,
"composite": 1.712,
"detail": {
"wr": 1.307,
"pf": 2.0,
"wr": 1.121,
"pf": 1.725,
"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
"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": 38,
"wr": 55.3,
"pf": 1.07,
"sharpe": 0.51,
"pnl_pips": 56.9,
"trades": 32,
"wr": 59.4,
"pf": 1.23,
"sharpe": 1.47,
"pnl_pips": 135.5,
"max_dd_pips": -182.9,
"expectancy": 1.5
"expectancy": 4.24
},
"generalization": {
"composite": 1.147,
"composite": 1.068,
"detail": {
"wr": 1.126,
"pf": 1.009,
"expectancy": 1.145,
"sharpe": 1.308
"wr": 1.108,
"pf": 1.008,
"expectancy": 0.991,
"sharpe": 1.167
},
"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
"trades": 149,
"wr": 57.7,
"pf": 1.29,
"sharpe": 1.68,
"pnl_pips": 865.8,
"max_dd_pips": -597.5,
"expectancy": 5.81
},
"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
"trades": 56,
"wr": 64.3,
"pf": 1.55,
"sharpe": 3.03,
"pnl_pips": 553.3,
"max_dd_pips": -182.9,
"expectancy": 9.88
},
"generalization": {
"composite": 0.658,
"composite": 1.455,
"detail": {
"wr": 1.159,
"pf": 1.473,
"expectancy": 0,
"sharpe": 0
"wr": 1.114,
"pf": 1.202,
"expectancy": 1.701,
"sharpe": 1.804
},
"verdict": "WARN"
"verdict": "PASS"
}
}
}