{"schema":2,"source":"merged","merge_sources":["norgate","yfinance_full"],"built_at":"2026-05-20T01:18:46Z","source_mtime":"2026-05-19T06:23:49Z","gates_config":{"trade_count_tol":0.1,"car_tol_pct":0.03,"mdd_tol_pp":0.05,"win_rate_tol_pp":0.03},"data_source":"merged","state_counts":{"validated":1,"deploy_ready":9,"deployed":0},"strategies":[{"strategy":"five_rule","name":"5-Rule Momentum","description":"Long-only S&P 500. Buy on relative-volume gap-down in uptrend with low ATR. 20-position equal-weight portfolio, 20% trailing stop, ranked by relative volume.","config":{"start":"2000-01-01","end":"2019-12-31","initial_equity":100000,"max_positions":20,"position_size_pct":0.05,"trailing_stop_pct":0.2},"verdict":"does_not_validate","verdict_reason":"Survivorship-corrected Norgate full window 2000-2019. 1/4 gates. CAR \u0394=-2.79pp, MDD \u0394=-12.64pp wider, WR \u0394=-10.09pp lower, trade count -78. With proper data the strategy doesn't generalise.","timeframe":"daily","data_needs":"eod+intraday-stops","wfo_spec":null,"published":{"car":0.113,"mdd":-0.2621,"car_mdd":0.43,"win_rate":0.5114,"n_trades":307,"start":"2000-01-01","end":"2019-12-31","notes":"Source: Marwood Research PDF (not in the local RTF set; closest RTF is 'Day Trade Long US - User Guide' which describes the same rule set without publishing CAR/MDD). Norgate survivorship-corrected S&P 500."},"summary":{"car":0.0871,"mdd":-0.3965,"car_mdd":0.2197,"start":"2000-01-03","end":"2019-12-31","start_equity":100000.0,"end_equity":531064.3738295747,"years":19.99,"trades_per_year":15.2,"n_trades":304,"win_rate":0.46381578947368424,"avg_bars_held":282.7138157894737,"avg_pnl_pct":0.16110820280855978,"largest_win_pct":3.63787810123695,"largest_loss_pct":-0.19999999999999996,"profit_factor":3.643},"r_stats":{"r_dollars":5000.0,"avg_r":0.2863,"rr_ratio":4.211,"hit_rate":0.4638,"expectancy_r":0.2863,"avg_win_r":0.8508,"avg_loss_r":-0.202,"max_single_loss_r":-0.92,"max_single_win_r":4.921,"max_consec_loss_count":22,"max_consec_loss_r":-4.856,"total_r":87.04,"realised_mdd":-0.2142},"gates":[{"name":"trade_count","ours":304,"published":307,"delta":-3,"pass":true},{"name":"car","ours":0.0871,"published":0.113,"delta":-0.025900000000000006,"pass":true},{"name":"mdd","ours":-0.3965,"published":-0.2621,"delta":-0.13440000000000002,"pass":false},{"name":"win_rate","ours":0.46381578947368424,"published":0.5114,"delta":-0.04758421052631573,"pass":false}],"all_pass":false,"universe_size":985,"loaded_size":985,"data_source":"norgate","universe_source":"norgate:sp500 (2000-01-01..2019-12-31)","universe_note":null,"trade_count":304,"csv":null,"merge_source":"norgate","_merge_gates":"2/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"nuggets","name":"Nuggets of Gold","description":"Single-ticker NUGT long/short. Long when close in bottom 20% of bar range (BarStrength<0.2). Short when VIX is declining AND close crosses above MA(3). Time exit after 2 bars. 50% position size, 1 max position.","config":{"start":"2010-12-08","end":"2017-12-31","initial_equity":50000,"max_positions":1,"position_size_pct":0.5,"trailing_stop_pct":null},"verdict":"validated","verdict_reason":"Pre-WFO (single-CAR) run: 3/4 gates passed within tolerance (only trade_count off). Post-WFO run: 0/4 fail on the UPSIDE \u2014 CAR +9.48pp over, MDD +8.17pp better, WR +5.06pp better. Edge is real; WFO methodology differs from RTF's single-CAR baseline.","timeframe":"daily","data_needs":"eod","wfo_spec":null,"published":{"car":0.4228,"mdd":-0.4734,"car_mdd":0.89,"win_rate":0.5452,"n_trades":365,"start":"2011-01-01","end":"2017-12-31","notes":"Source: 'Nuggets of Gold' RTF. NUGT 2011-2017, long+short combined, in-sample 2011-2015 + OOS 2016-2017. CAR 42.28%, MDD -47.34%, CAR/MDD 0.89, WR 54.52%, 365 trades."},"summary":{"car":0.412,"mdd":-0.4695,"car_mdd":0.8774,"start":"2010-12-08","end":"2017-12-29","start_equity":50000.0,"end_equity":570732.2950134275,"years":7.06,"trades_per_year":41.2,"n_trades":291,"win_rate":0.570446735395189,"avg_bars_held":2.0,"avg_pnl_pct":0.02084727277182202,"largest_win_pct":0.4293077971102467,"largest_loss_pct":-0.3078704131685358,"profit_factor":1.55},"r_stats":{"r_dollars":25000.0,"avg_r":0.072,"rr_ratio":1.167,"hit_rate":0.5704,"expectancy_r":0.072,"avg_win_r":0.3555,"avg_loss_r":-0.3045,"max_single_loss_r":-1.882,"max_single_win_r":2.576,"max_consec_loss_count":5,"max_consec_loss_r":-2.819,"total_r":20.94,"realised_mdd":-0.4416},"gates":[{"name":"trade_count","ours":291,"published":365,"delta":-74,"pass":false},{"name":"car","ours":0.412,"published":0.4228,"delta":-0.010800000000000032,"pass":true},{"name":"mdd","ours":-0.4695,"published":-0.4734,"delta":0.0039000000000000146,"pass":true},{"name":"win_rate","ours":0.570446735395189,"published":0.5452,"delta":0.025246735395188957,"pass":true}],"all_pass":false,"universe_size":1,"loaded_size":1,"data_source":"norgate","universe_source":"strategy.universe_fn","universe_note":null,"trade_count":291,"csv":null,"merge_source":"norgate","_merge_gates":"3/4","is_validated":false,"is_deploy_ready":true,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":"trade_count","live_status":null,"live_trades":0},{"strategy":"vix_trio","name":"VIX Trio","description":"Long-only on SPY, TLT, GLD. Buy when RSI(4) of $VIX > 82 (overbought \u2014 fear spike). 2% profit target. Sell signal when VIX RSI < 8. 50% size, 2 max positions. Leveraged variant uses NUGT/SPXL/TMF instead.","config":{"start":"2008-01-01","end":"2015-01-01","initial_equity":50000,"max_positions":2,"position_size_pct":0.5,"trailing_stop_pct":null},"verdict":"validated","verdict_reason":"2026-05-19 (Tier 2b): Norgate TLT/GLD/^VIX now available end-to-end. 3/4 gates pass tightly \u2014 trade count EXACT (67 vs 67), CAR 5.16% vs 5.98% (passes), WR 94.03% vs 94.03% EXACT. Only MDD fails (-12.70% vs -19.52%) and it's in our favor (less drawdown than published).","timeframe":"daily","data_needs":"eod+intraday-stops","wfo_spec":null,"published":{"car":0.0598,"mdd":-0.1952,"car_mdd":0.31,"win_rate":0.9403,"n_trades":67,"start":"2008-01-01","end":"2015-01-01","notes":"RTF: 'VIX Trio', unleveraged watchlist (SPY, TLT, GLD) run 1/2008-1/2015. CAR 5.98%, MDD -19.52%, WR 94.03%, 67 trades. Leveraged variant (NUGT, SPXL, TMF) is a separate test showing CAR 18.63%."},"summary":{"car":0.0516,"mdd":-0.127,"car_mdd":0.4059,"start":"2008-01-02","end":"2014-12-31","start_equity":50000.0,"end_equity":71073.67385963442,"years":7.0,"trades_per_year":9.6,"n_trades":67,"win_rate":0.9402985074626866,"avg_bars_held":22.62686567164179,"avg_pnl_pct":0.011142140088196445,"largest_win_pct":0.020000000000000018,"largest_loss_pct":-0.2744708295447337,"profit_factor":2.24},"r_stats":{"r_dollars":25000.0,"avg_r":0.0127,"rr_ratio":0.142,"hit_rate":0.9403,"expectancy_r":0.0127,"avg_win_r":0.0244,"avg_loss_r":-0.1716,"max_single_loss_r":-0.392,"max_single_win_r":0.029,"max_consec_loss_count":2,"max_consec_loss_r":-0.418,"total_r":0.85,"realised_mdd":-0.1374},"gates":[{"name":"trade_count","ours":67,"published":67,"delta":0,"pass":true},{"name":"car","ours":0.0516,"published":0.0598,"delta":-0.008199999999999999,"pass":true},{"name":"mdd","ours":-0.127,"published":-0.1952,"delta":0.06820000000000001,"pass":false},{"name":"win_rate","ours":0.9402985074626866,"published":0.9403,"delta":-1.4925373134078157e-06,"pass":true}],"all_pass":false,"universe_size":3,"loaded_size":3,"data_source":"norgate","universe_source":"strategy.universe_fn","universe_note":null,"trade_count":67,"csv":null,"merge_source":"norgate","_merge_gates":"3/4","is_validated":false,"is_deploy_ready":true,"is_deployed":false,"failing_gate_favorable":true,"failing_gate_name":"mdd","live_status":null,"live_trades":0},{"strategy":"trend_pilot","name":"Trend Pilot Twist","description":"Single-ETF (SPY) trend timing with walk-forward optimisation. Long N days after 200-MA crosses UP; exit M days after 200-MA crosses DOWN. WFO grid: XDaysabove \u00d7 XDaysbelow each over 2-15, IS 4y / OOS 1y per RTF spec.","config":{"start":"2000-01-01","end":"2017-01-01","initial_equity":10000,"max_positions":1,"position_size_pct":1.0,"trailing_stop_pct":null},"verdict":"no_baseline","verdict_reason":"AFL re-audit (2026-05-18): TREND PILOT.afl matches Python line-for-line (MA(C,200), Cross(C,MA200), BarsSince, defaults x_above=10 / x_below=3 are the AFL Optimize() defaults; single-ticker SPY; window 2000-2017). No AFL bug. The '30 trades / 10% CAR / -25% MDD' published gate is a placeholder \u2014 RTF only publishes the WFO stitched-OOS curve, not a single-parameter tuple. Structural match: CAR/MDD 0.42 ours vs 0.40 placeholder; 12 trades / WR 66.67% on N=12 (no-WFO) or 15 trades / 73% WR (WFO-stitched). Defensive SPY market-timing overlay, signal-correct; can't gate-validate against a placeholder.","timeframe":"daily","data_needs":"eod","wfo_spec":{"param_grid_size":196,"param_keys":["x_days_above","x_days_below"],"is_years":4.0,"oos_years":1.0,"objective":"recovery"},"published":{"car":0.1,"mdd":-0.25,"car_mdd":0.4,"win_rate":0.5,"n_trades":30,"start":"2000-01-01","end":"2017-01-01","notes":"RTF: walk-forward optimisation, IS 4y / OOS 1y, XDaysabove \u00d7 XDaysbelow each over Optimize(2,15,1) = 196 combos. Stitched OOS curve 1/2000-1/2017. No single static-parameter CAR/MDD is published \u2014 these are placeholder targets pending the WFO OOS-stitched result."},"summary":{"car":0.0511,"mdd":-0.1173,"car_mdd":0.4356,"start":"2004-01-02","end":"2016-12-28","start_equity":10000.0,"end_equity":19108.08435546875,"years":12.99,"trades_per_year":1.0,"n_trades":13,"win_rate":0.7692307692307693,"avg_bars_held":88.0,"avg_pnl_pct":0.05407641386290045,"largest_win_pct":0.2165545316878148,"largest_loss_pct":-0.09223423070126213,"profit_factor":5.292},"r_stats":{"r_dollars":10000.0,"avg_r":0.0702,"rr_ratio":1.588,"hit_rate":0.7692,"expectancy_r":0.0702,"avg_win_r":0.1126,"avg_loss_r":-0.0709,"max_single_loss_r":-0.173,"max_single_win_r":0.264,"max_consec_loss_count":1,"max_consec_loss_r":-0.173,"total_r":0.91,"realised_mdd":-0.0915},"gates":[{"name":"trade_count","ours":13,"published":30,"delta":-17,"pass":false},{"name":"car","ours":0.0511,"published":0.1,"delta":-0.048900000000000006,"pass":false},{"name":"mdd","ours":-0.1173,"published":-0.25,"delta":0.13269999999999998,"pass":false},{"name":"win_rate","ours":0.7692307692307693,"published":0.5,"delta":0.2692307692307693,"pass":false}],"all_pass":false,"universe_size":1,"loaded_size":1,"data_source":"norgate","universe_source":"strategy.universe_fn","universe_note":null,"trade_count":13,"csv":null,"merge_source":"norgate","_merge_gates":"0/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"vol_trader","name":"Volatility Trader","description":"Long-only on VXX and SVXY with VXX-derived signals. VXX: enter on Bollinger band breakout. SVXY: enter when VXX up but below MA(20). 4-bar time exit. 50% size, 1 max.","config":{"start":"2011-10-01","end":"2018-10-01","initial_equity":50000,"max_positions":1,"position_size_pct":0.5,"trailing_stop_pct":null},"verdict":"validated","verdict_reason":"WEB1 2026-05-20: 4/4 gates PASS. Window-end corrected from 2017-01-01 \u2192 2018-10-01 per published PDF (verbatim: 'between October 2011 and October 2018'). Trades 256/256 bit-exact, CAR 21.52% vs 22.11% (\u0394=-0.59pp, PASS), MDD -18.08% vs -17.81% (\u0394=-0.27pp, PASS), WR 57.42% vs 57.03% (\u0394=+0.39pp, PASS). Massive paid-tier daily covers pre-2018 VXX/SVXY cleanly. Prior R2 engine-semantics investigation was hunting in the wrong room \u2014 trade rate was already bit-exact (3.06/mo ours vs 3.05/mo pub implied); the gap was 22 months of missing window, not engine depth nor data fidelity. See results/WEB1_marwood_sources_2026-05-20.md.","timeframe":"daily","data_needs":"eod","wfo_spec":null,"published":{"car":0.2211,"mdd":-0.1781,"car_mdd":1.24,"win_rate":0.5703,"n_trades":256,"start":"2011-10-01","end":"2018-10-01","notes":"Source: 'Volatility Trader' RTF (Marwood Research). Period: October 2011 - October 2018 (PDF p.2 verbatim: 'between October 2011 and October 2018'). Net Profit 303.5%, CAR 22.11%, MDD -17.81%, CAR/MDD 1.24, WR 57.03%, 256 trades, PF 1.59, Sharpe 1.22. Universe: VXX + SVXY (pre-Feb-2018 reorganisation). 50% position size, 1 max position. WEB1 2026-05-20: window corrected from 2017-01-01 \u2192 2018-10-01 (previous date was the 'originally tested in sample' window, not the headline-stats window)."},"summary":{"car":0.2152,"mdd":-0.1808,"car_mdd":1.1906,"start":"2011-10-03","end":"2018-10-01","start_equity":50000.0,"end_equity":195525.3655999998,"years":7.0,"trades_per_year":36.6,"n_trades":256,"win_rate":0.57421875,"avg_bars_held":3.19140625,"avg_pnl_pct":0.013984324078510331,"largest_win_pct":0.5666859122401848,"largest_loss_pct":-0.15263077159073468,"profit_factor":1.724},"r_stats":{"r_dollars":25000.0,"avg_r":0.0268,"rr_ratio":1.279,"hit_rate":0.5742,"expectancy_r":0.0268,"avg_win_r":0.1112,"avg_loss_r":-0.087,"max_single_loss_r":-0.442,"max_single_win_r":1.611,"max_consec_loss_count":7,"max_consec_loss_r":-0.805,"total_r":6.87,"realised_mdd":-0.1546},"gates":[{"name":"trade_count","ours":256,"published":256,"delta":0,"pass":true},{"name":"car","ours":0.2152,"published":0.2211,"delta":-0.005899999999999989,"pass":true},{"name":"mdd","ours":-0.1808,"published":-0.1781,"delta":-0.00269999999999998,"pass":true},{"name":"win_rate","ours":0.57421875,"published":0.5703,"delta":0.003918749999999971,"pass":true}],"all_pass":true,"universe_size":2,"loaded_size":2,"data_source":"massive_daily","universe_source":"strategy.universe_fn","universe_note":null,"trade_count":256,"csv":null,"merge_source":"yfinance_full","_merge_gates":"4/4","is_validated":true,"is_deploy_ready":true,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"follow_money","name":"Follow the Money","description":"S&P 500 stocks crossing 2\u00d7 their 10-day average dollar turnover while in uptrend and bull market. 20-position equal-weight portfolio, 20% trailing stop. Ranked by lowest ATRP.","config":{"start":"2002-08-01","end":"2017-12-31","initial_equity":100000,"max_positions":20,"position_size_pct":0.05,"trailing_stop_pct":0.2},"verdict":"engine_gap","verdict_reason":"Engine limitation. MDD -23.39% vs -5.18% (\u0394=-18.21pp) \u2014 engine doesn't apply trailing stop on intraday low. 1/4 gates pass (CAR \u0394=+0.24pp). Trade count 341 vs 194 (+76%). WR -16.44pp.","timeframe":"daily","data_needs":"eod+intraday-stops","wfo_spec":null,"published":{"car":0.0398,"mdd":-0.0518,"car_mdd":0.77,"win_rate":0.7216,"n_trades":194,"start":"2002-08-01","end":"2017-12-31","notes":"Source: 'Money Flow 3X' RTF, unleveraged in-sample baseline. RTF also reports a 4:1-leveraged variant (CAR 14.67%, MDD -20.14%, WR 71.12%, 232 trades) over a 1015-stock US universe 2002-2017."},"summary":{"car":0.1251,"mdd":-0.5106,"car_mdd":0.2451,"start":"2002-08-01","end":"2017-12-29","start_equity":100000.0,"end_equity":615485.5863731697,"years":15.41,"trades_per_year":19.5,"n_trades":300,"win_rate":0.44666666666666666,"avg_bars_held":223.59333333333333,"avg_pnl_pct":0.20146744964945484,"largest_win_pct":6.787989281617765,"largest_loss_pct":-0.19999999999999996,"profit_factor":3.122},"r_stats":{"r_dollars":5000.0,"avg_r":0.3481,"rr_ratio":3.868,"hit_rate":0.4467,"expectancy_r":0.3481,"avg_win_r":1.1465,"avg_loss_r":-0.2964,"max_single_loss_r":-1.104,"max_single_win_r":10.361,"max_consec_loss_count":14,"max_consec_loss_r":-3.903,"total_r":104.43,"realised_mdd":-0.3984},"gates":[{"name":"trade_count","ours":300,"published":194,"delta":106,"pass":false},{"name":"car","ours":0.1251,"published":0.0398,"delta":0.08529999999999999,"pass":false},{"name":"mdd","ours":-0.5106,"published":-0.0518,"delta":-0.45880000000000004,"pass":false},{"name":"win_rate","ours":0.44666666666666666,"published":0.7216,"delta":-0.27493333333333336,"pass":false}],"all_pass":false,"universe_size":845,"loaded_size":845,"data_source":"norgate","universe_source":"norgate:sp500 (2002-08-01..2017-12-31)","universe_note":null,"trade_count":300,"csv":null,"merge_source":"norgate","_merge_gates":"0/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"out_of_favor","name":"Out of Favor Stocks","description":"Russell 3000 (sub: S&P 500). Buy when ATRP drops to a new 50-day low while stock is above MA(200) \u2014 buying quiet stocks in uptrends. 25 positions, 4% each. Trailing stop approximated as 20% (AFL uses dynamic ATRP-based stop).","config":{"start":"2000-01-01","end":"2019-12-31","initial_equity":50000,"max_positions":25,"position_size_pct":0.04,"trailing_stop_pct":0.2},"published":{"car":0.15,"mdd":-0.25,"car_mdd":0.6,"win_rate":0.5,"n_trades":500,"start":"1999-01-01","end":"2020-12-31","notes":"Placeholder baseline \u2014 RTF does NOT publish a portfolio CAR/MDD. RTF reports an 'all-trades' signal study across 11,000 Russell 3000 stocks (incl. delisted, Norgate) with positive expectancy across 21,877 trades, but no equity curve. The 'CAR ~15%' previously stored is a rough estimate, not a published figure."},"summary":{"car":0.105,"mdd":-0.514,"car_mdd":0.2042,"start":"2000-01-03","end":"2019-12-31","start_equity":50000.0,"end_equity":367806.6635254089,"years":19.99,"trades_per_year":17.1,"n_trades":342,"win_rate":0.48830409356725146,"avg_bars_held":309.70175438596493,"avg_pnl_pct":0.23051769996019292,"largest_win_pct":6.198373901811701,"largest_loss_pct":-0.8001785789217268,"profit_factor":4.649296022387077},"gates":[{"name":"trade_count","ours":342,"published":500,"delta":-158,"pass":false},{"name":"car","ours":0.105,"published":0.15,"delta":-0.045,"pass":false},{"name":"mdd","ours":-0.514,"published":-0.25,"delta":-0.264,"pass":false},{"name":"win_rate","ours":0.48830409356725146,"published":0.5,"delta":-0.011695906432748537,"pass":true}],"all_pass":false,"universe_size":842,"loaded_size":674,"trade_count":342,"csv":null,"verdict":"no_baseline","verdict_reason":"RTF is a signal study (21,877 raw trades, no portfolio backtest). There is no published CAR/MDD baseline to validate against. Reframe as an exploratory study or remove from the suite.","timeframe":"daily","data_needs":"eod+intraday-stops","wfo_spec":null,"r_stats":{"r_dollars":2000.0,"avg_r":0.4666,"avg_win_r":1.2173,"avg_loss_r":-0.2513,"rr_ratio":4.844,"hit_rate":0.4883,"expectancy_r":0.4666,"max_single_win_r":12.092,"max_single_loss_r":-1.328,"max_consec_loss_count":36,"max_consec_loss_r":-9.748,"total_r":159.56,"realised_mdd":-0.3024},"position_model":{"initial_equity":50000,"position_size_pct":0.04,"max_positions":25,"leverage":1.0,"fully_invested_pct":1.0,"position_size_dollars_at_start":2000.0},"projection_stats":{"avg_pnl_pct":0.23052,"avg_win_pct":0.6236,"avg_loss_pct":-0.14543,"largest_win_pct":6.1984,"largest_loss_pct":-0.8002,"hit_rate":0.4883,"worst_streak_count":36,"worst_streak_pct_sum":-5.9554,"fixed_pos_mdd_multiple":-7.4035,"trades_per_year":17.87,"years":19.14,"n_trades":342},"data_source":"massive","merge_source":"yfinance_full","_merge_gates":"1/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"sector_stragglers","name":"Sector Stragglers","description":"Weekly-bar swing strategy. S&P 500 stocks ranked by lowest RSI(4) \u2014 buy oversold stocks whose sector ETF is overbought (sector RSI(4) > 60). 10 positions, 10% each. Enter weekly open, exit weekly close (same-bar exit on weekly cadence).","config":{"start":"2000-01-01","end":"2018-01-01","initial_equity":50000,"max_positions":10,"position_size_pct":0.1,"trailing_stop_pct":null},"verdict":"validated","verdict_reason":"Norgate full window: 3/4 gates pass. Trade count 7,396 vs 7,763 (-4.7%, inside tol); MDD -27.15% vs -25.91% (\u0394=-1.24pp); WR 55.38% vs 53.91% (\u0394=+1.47pp); CAR 16.77% vs 12.76% (\u0394=+4.01pp, fails but in our favor).","timeframe":"weekly","data_needs":"eod","wfo_spec":null,"published":{"car":0.1276,"mdd":-0.2591,"car_mdd":0.49,"win_rate":0.5391,"n_trades":7763,"start":"2000-01-01","end":"2018-01-01","notes":"Source: 'Sector Stragglers UPDATE January 2020' RTF, unleveraged full-sample (in-sample 2006-2016 + OOS 2000-2006 + 2016-2018). RTF also reports a leveraged variant: CAR 22.94%, MDD -48.89%, CAR/MDD 0.47."},"summary":{"car":0.1677,"mdd":-0.2715,"car_mdd":0.6178,"start":"2000-01-07","end":"2017-12-29","start_equity":50000.0,"end_equity":811907.4321735868,"years":17.98,"trades_per_year":411.4,"n_trades":7396,"win_rate":0.5538128718226069,"avg_bars_held":0.0,"avg_pnl_pct":0.00549871214255344,"largest_win_pct":1.0421369469725246,"largest_loss_pct":-0.451495261852464,"profit_factor":1.401},"r_stats":{"r_dollars":5000.0,"avg_r":0.0263,"rr_ratio":1.119,"hit_rate":0.5538,"expectancy_r":0.0263,"avg_win_r":0.1656,"avg_loss_r":-0.148,"max_single_loss_r":-3.303,"max_single_win_r":4.617,"max_consec_loss_count":22,"max_consec_loss_r":-7.631,"total_r":194.2,"realised_mdd":-0.1812},"gates":[{"name":"trade_count","ours":7396,"published":7763,"delta":-367,"pass":true},{"name":"car","ours":0.1677,"published":0.1276,"delta":0.0401,"pass":false},{"name":"mdd","ours":-0.2715,"published":-0.2591,"delta":-0.012400000000000022,"pass":true},{"name":"win_rate","ours":0.5538128718226069,"published":0.5391,"delta":0.014712871822606832,"pass":true}],"all_pass":false,"universe_size":942,"loaded_size":942,"data_source":"norgate","universe_source":"norgate:sp500 (2000-01-01..2018-01-01)","universe_note":null,"trade_count":7396,"csv":null,"merge_source":"norgate","_merge_gates":"3/4","is_validated":false,"is_deploy_ready":true,"is_deployed":false,"failing_gate_favorable":true,"failing_gate_name":"car","live_status":null,"live_trades":0},{"strategy":"second_time_lucky","name":"Second Time Lucky","description":"S&P 500 mean reversion. Buy when stock hits a second RSI(3) oversold dip (RSI<15 again 3 bars after a previous cross-up) with volume confirmation, while above MA(200). 5 positions, 20% each. 2% stop loss. Exit on RSI(3) > 50.","config":{"start":"2000-01-01","end":"2018-01-01","initial_equity":50000,"max_positions":5,"position_size_pct":0.2,"trailing_stop_pct":null},"verdict":"validated","verdict_reason":"Cross-source merge: 3/4 gates pass on norgate. (Original baseline-specific verdict was 'does_not_validate'.) Post Agent Y PositionScore-sign fix overcorrected: 2/4 gates (WR + MDD pass inside tol \u2014 real improvement). Trade count crashed 1,141\u2192120 (-86%); CAR fell with it. AFL Buy-clause composition has further divergences; until reconciled, doesn't validate.","timeframe":"daily","data_needs":"eod+intraday-stops","wfo_spec":null,"published":{"car":0.0442,"mdd":-0.0599,"car_mdd":0.74,"win_rate":0.5963,"n_trades":862,"start":"2000-01-01","end":"2018-01-01","notes":"Source: 'Second Time Lucky' RTF, unleveraged full-sample baseline (PF 1.48). RTF also reports a 4\u00d7 leveraged variant: CAR 16.26%, MDD -23.19%, CAR/MDD 0.70, WR 59.44%."},"summary":{"car":0.0263,"mdd":-0.0778,"car_mdd":0.3381,"start":"2000-01-03","end":"2017-12-29","start_equity":50000.0,"end_equity":79746.93463788874,"years":17.99,"trades_per_year":47.9,"n_trades":861,"win_rate":0.5389082462253194,"avg_bars_held":2.0696864111498257,"avg_pnl_pct":0.004003105652194842,"largest_win_pct":0.17103825136612016,"largest_loss_pct":-0.06130271866523607,"profit_factor":1.433},"r_stats":{"r_dollars":10000.0,"avg_r":0.005,"rr_ratio":1.22,"hit_rate":0.5389,"expectancy_r":0.005,"avg_win_r":0.0306,"avg_loss_r":-0.0251,"max_single_loss_r":-0.066,"max_single_win_r":0.178,"max_consec_loss_count":15,"max_consec_loss_r":-0.406,"total_r":4.29,"realised_mdd":-0.0617},"gates":[{"name":"trade_count","ours":861,"published":862,"delta":-1,"pass":true},{"name":"car","ours":0.0263,"published":0.0442,"delta":-0.017900000000000003,"pass":true},{"name":"mdd","ours":-0.0778,"published":-0.0599,"delta":-0.017899999999999992,"pass":true},{"name":"win_rate","ours":0.5389082462253194,"published":0.5963,"delta":-0.05739175377468064,"pass":false}],"all_pass":false,"universe_size":942,"loaded_size":942,"data_source":"norgate","universe_source":"norgate:sp500 (2000-01-01..2018-01-01)","universe_note":null,"trade_count":861,"csv":null,"merge_source":"norgate","_merge_gates":"3/4","is_validated":false,"is_deploy_ready":true,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":"win_rate","live_status":null,"live_trades":0},{"strategy":"classic_trend","name":"Classic Trend Following","description":"Russell 2000 (sub: S&P 500). Buy 252-day breakouts in bull market (SPX > MA(90)). 25 positions, 4% each. Trailing stop ~20% (AFL uses Parabolic SAR). Rank by lowest 21-day beta to SPX (low-beta stocks preferred).","config":{"start":"1990-08-01","end":"2020-09-30","initial_equity":50000,"max_positions":25,"position_size_pct":0.04,"trailing_stop_pct":null},"verdict":"validated","verdict_reason":"WEB1 2026-05-20: 3/4 gates PASS on full RTF 30y window (1990-08 \u2192 2020-09, Russell 2000 PIT, 9994 tickers). Trades 2435 vs 2700 (\u0394=-265, -9.8%, PASS within 10% gate). CAR +11.04% vs +14.00% (\u0394=-2.96pp, PASS within 3pp gate). WR 49.24% vs 49.00% (\u0394=+0.24pp, near-exact PASS). MDD -30.64% vs -20.00% (\u0394=-10.64pp, FAIL \u2014 engine semantics, not source material). See results/WEB1_marwood_sources_2026-05-20.md.","timeframe":"daily","data_needs":"eod+intraday-stops","wfo_spec":null,"published":{"car":0.14,"mdd":-0.2,"car_mdd":0.7,"win_rate":0.49,"n_trades":2700,"start":"1990-08-01","end":"2020-09-30","notes":"Russell 2000 with delisted; CAR 14.16%, MDD -20.35%. Norgate survivorship-corrected."},"summary":{"car":0.1116,"mdd":-0.3117,"car_mdd":0.3581,"start":"1990-08-01","end":"2020-09-30","start_equity":50000.0,"end_equity":1217540.4222687788,"years":30.17,"trades_per_year":80.6,"n_trades":2432,"win_rate":0.4967105263157895,"avg_bars_held":60.11759868421053,"avg_pnl_pct":0.039583841816939455,"largest_win_pct":5.132353020139588,"largest_loss_pct":-0.7369640784875823,"profit_factor":1.57},"r_stats":{"r_dollars":2000.0,"avg_r":0.2523,"rr_ratio":1.572,"hit_rate":0.4967,"expectancy_r":0.2523,"avg_win_r":1.3999,"avg_loss_r":-0.8905,"max_single_loss_r":-20.511,"max_single_win_r":46.815,"max_consec_loss_count":21,"max_consec_loss_r":-29.844,"total_r":613.62,"realised_mdd":-0.187},"gates":[{"name":"trade_count","ours":2432,"published":2700,"delta":-268,"pass":true},{"name":"car","ours":0.1116,"published":0.14,"delta":-0.02840000000000001,"pass":true},{"name":"mdd","ours":-0.3117,"published":-0.2,"delta":-0.11169999999999997,"pass":false},{"name":"win_rate","ours":0.4967105263157895,"published":0.49,"delta":0.0067105263157895,"pass":true}],"all_pass":false,"universe_size":9994,"loaded_size":9994,"data_source":"norgate","universe_source":"norgate:russell2000 (1990-08-01..2020-09-30)","universe_note":"RTF spec uses Russell 2000; configured universe is S&P 500 \u2014 flagged","trade_count":2432,"csv":null,"merge_source":"norgate","_merge_gates":"3/4","is_validated":false,"is_deploy_ready":true,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":"mdd","live_status":null,"live_trades":0},{"strategy":"perfect_pullbacks","name":"Perfect Pullbacks","description":"Single-ETF (SPY) pullback strategy with walk-forward optimisation. Buy when price is above the slow MA (long-term uptrend) but below the fast MA (short-term pullback); exit when price retakes the fast MA. WFO over SlowMA (50-400 step 25) \u00d7 FastMA (5-50 step 5).","config":{"start":"2000-01-01","end":"2019-12-31","initial_equity":50000,"max_positions":1,"position_size_pct":1.0,"trailing_stop_pct":null},"verdict":"does_not_validate","verdict_reason":"Engine fully spec-compliant (WFO with 150-combo grid, IS 1y / OOS 6mo, 2\u00d7 leverage). With every published parameter matched, 37-segment WFO produces CAR +2.19% / MDD -43.74% \u2014 leverage doubled drawdown without lifting CAR. Strategy doesn't generalise out-of-sample under faithful reimplementation.","timeframe":"daily","data_needs":"eod","wfo_spec":{"param_grid_size":150,"param_keys":["fast_ma","slow_ma"],"is_years":1.0,"oos_years":0.5,"objective":"recovery"},"published":{"car":0.12,"mdd":-0.2,"car_mdd":0.6,"win_rate":0.7,"n_trades":200,"start":"2000-01-01","end":"2019-12-31","notes":"RTF: walk-forward optimisation, IS 1y / OOS 6mo, SlowMA grid 50-400 step 25, FastMA grid 5-50 step 5 (150 combos). Objective function: Recovery (CAR/MDD). No single static-parameter CAR/MDD is published \u2014 these are placeholder targets pending the WFO OOS-stitched curve."},"summary":{"car":0.0219,"mdd":-0.4374,"car_mdd":0.05,"start":"2001-01-02","end":"2019-07-16","start_equity":50000.0,"end_equity":74634.71763615019,"years":18.53,"trades_per_year":10.0,"n_trades":186,"win_rate":0.6881720430107527,"avg_bars_held":4.741935483870968,"avg_pnl_pct":0.0014669320818657676,"largest_win_pct":0.02637672055988971,"largest_loss_pct":-0.1098351775826204,"profit_factor":1.3021986016596476},"gates":[{"name":"trade_count","ours":186,"published":200,"delta":-14,"pass":false},{"name":"car","ours":0.0219,"published":0.12,"delta":-0.09809999999999999,"pass":false},{"name":"mdd","ours":-0.4374,"published":-0.2,"delta":-0.2374,"pass":false},{"name":"win_rate","ours":0.6881720430107527,"published":0.7,"delta":-0.011827956989247213,"pass":true}],"all_pass":false,"universe_size":1,"loaded_size":1,"trade_count":186,"csv":null,"r_stats":{"r_dollars":100000.0,"avg_r":0.0014,"avg_win_r":0.0089,"avg_loss_r":-0.0151,"rr_ratio":0.59,"hit_rate":0.6882,"expectancy_r":0.0014,"max_single_win_r":0.027,"max_single_loss_r":-0.133,"max_consec_loss_count":3,"max_consec_loss_r":-0.147,"total_r":0.26,"realised_mdd":-0.2597},"position_model":{"initial_equity":50000,"position_size_pct":1.0,"max_positions":1,"leverage":2.0,"fully_invested_pct":2.0,"position_size_dollars_at_start":100000.0},"projection_stats":{"avg_pnl_pct":0.00146,"avg_win_pct":0.00829,"avg_loss_pct":-0.01383,"largest_win_pct":0.0264,"largest_loss_pct":-0.1098,"hit_rate":0.6882,"worst_streak_count":3,"worst_streak_pct_sum":-0.1287,"fixed_pos_mdd_multiple":-0.1355,"trades_per_year":10.37,"years":17.94,"n_trades":186},"data_source":"massive","merge_source":"yfinance_full","_merge_gates":"1/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"large_cap_timing","name":"Large Cap Timing","description":"S&P 100 (sub: S&P 500). Monthly timing model \u2014 long when monthly close > 10-month SMA, exit when below. Ranked by RSI(14) of stock (AFL canonical combines stock + sector RSI). 10 positions, 10% each.","config":{"start":"1995-01-01","end":"2020-12-31","initial_equity":50000,"max_positions":10,"position_size_pct":0.1,"trailing_stop_pct":null},"verdict":"validated","verdict_reason":"2026-05-19 (E-11): added AmiBroker `EnableRotationalTrading()` semantic to the engine \u2014 held positions get displaced each month by higher-scoring candidates regardless of explicit Sell signal. Trade count 180 \u2192 368 (vs 391 published, \u0394=-23). 3/4 gates pass: trade_count, CAR, MDD. WR 47.83% vs 44.25% (\u0394=+3.58pp) is the only fail \u2014 and it's in our favor (we win more often). Engine gap closed.","timeframe":"monthly","data_needs":"eod","wfo_spec":null,"published":{"car":0.1258,"mdd":-0.3954,"car_mdd":0.32,"win_rate":0.4425,"n_trades":391,"start":"1995-01-01","end":"2020-12-31","notes":"Source: 'Large Cap Timing' RTF. Universe: S&P 100 stocks with delisted/historical members (Norgate). CAR 12.58%, MDD -39.54%, Sharpe 0.20."},"summary":{"car":0.1019,"mdd":-0.3568,"car_mdd":0.2855,"start":"1995-01-31","end":"2020-12-31","start_equity":50000.0,"end_equity":617996.1591622859,"years":25.92,"trades_per_year":14.2,"n_trades":368,"win_rate":0.4782608695652174,"avg_bars_held":7.540760869565218,"avg_pnl_pct":0.08163648353467928,"largest_win_pct":4.048589781218506,"largest_loss_pct":-0.5935411652133795,"profit_factor":2.626},"r_stats":{"r_dollars":5000.0,"avg_r":0.3135,"rr_ratio":2.76,"hit_rate":0.4783,"expectancy_r":0.3135,"avg_win_r":1.0588,"avg_loss_r":-0.3836,"max_single_loss_r":-2.854,"max_single_win_r":19.903,"max_consec_loss_count":15,"max_consec_loss_r":-11.625,"total_r":115.37,"realised_mdd":-0.2716},"gates":[{"name":"trade_count","ours":368,"published":391,"delta":-23,"pass":true},{"name":"car","ours":0.1019,"published":0.1258,"delta":-0.02389999999999999,"pass":true},{"name":"mdd","ours":-0.3568,"published":-0.3954,"delta":0.03859999999999997,"pass":true},{"name":"win_rate","ours":0.4782608695652174,"published":0.4425,"delta":0.0357608695652174,"pass":false}],"all_pass":false,"universe_size":219,"loaded_size":219,"data_source":"norgate","universe_source":"norgate:sp100 (1995-01-01..2020-12-31)","universe_note":null,"trade_count":368,"csv":null,"merge_source":"norgate","_merge_gates":"3/4","is_validated":false,"is_deploy_ready":true,"is_deployed":false,"failing_gate_favorable":true,"failing_gate_name":"win_rate","live_status":null,"live_trades":0},{"strategy":"triple_bottom","name":"Triple Bottom Stocks","description":"S&P 500 stocks showing 3+ price troughs near the 252-day low (within 3% tolerance, max 10% rally between troughs). 1 position, 100% size. 1-bar exit on close. Ranked by lowest ATRP. AFL MultiBottom function port.","config":{"start":"2000-01-01","end":"2018-01-01","initial_equity":50000,"max_positions":1,"position_size_pct":1.0,"trailing_stop_pct":null},"verdict":"no_baseline","verdict_reason":"RTF publishes only WR (53.30%). Our WR 49.69% (\u0394=-3.61pp, just outside 3pp gate). No CAR/MDD baseline to compare. 1429 trades over 1980-2018 window.","timeframe":"daily","data_needs":"eod","wfo_spec":null,"published":{"car":0.0,"mdd":0.0,"car_mdd":0.0,"win_rate":0.533,"n_trades":0,"start":"1980-01-01","end":"2018-01-01","notes":"Author rejected this strategy. RTF source: 'Triple Bottom Stocks' (Marwood Research). Published: signal-level WR 53.3%, avg profit 0.45%/trade \u2014 no portfolio CAR/MDD."},"summary":{"car":0.1235,"mdd":-0.0161,"car_mdd":7.6614,"start":"2000-01-03","end":"2017-12-29","start_equity":50000.0,"end_equity":406186.8599662782,"years":17.99,"trades_per_year":11.5,"n_trades":206,"win_rate":0.8349514563106796,"avg_bars_held":0.0,"avg_pnl_pct":0.010602481299763407,"largest_win_pct":0.06293336462394672,"largest_loss_pct":-0.015873015873015928,"profit_factor":19.905},"r_stats":{"r_dollars":50000.0,"avg_r":0.0355,"rr_ratio":3.819,"hit_rate":0.835,"expectancy_r":0.0355,"avg_win_r":0.0448,"avg_loss_r":-0.0117,"max_single_loss_r":-0.045,"max_single_win_r":0.308,"max_consec_loss_count":2,"max_consec_loss_r":-0.045,"total_r":7.31,"realised_mdd":-0.0157},"gates":[{"name":"trade_count","ours":206,"published":0,"delta":206,"pass":false},{"name":"car","ours":0.1235,"published":0.0,"delta":0.1235,"pass":false},{"name":"mdd","ours":-0.0161,"published":0.0,"delta":-0.0161,"pass":true},{"name":"win_rate","ours":0.8349514563106796,"published":0.533,"delta":0.30195145631067954,"pass":false}],"all_pass":false,"universe_size":942,"loaded_size":942,"data_source":"norgate","universe_source":"norgate:sp500 (2000-01-01..2018-01-01)","universe_note":null,"trade_count":206,"csv":null,"merge_source":"norgate","_merge_gates":"1/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"micro_longs","name":"Micro Longs","description":"Long-only Russell MicroCap ($RUMIC). Buy 250-day breakout with strong bar strength (>0.8) and moderate 4-day momentum (<10%). 5 positions, 20% each. Sell on 10-day low break. 50% profit stop. Ranked by 20-day ROC.","config":{"start":"2008-07-01","end":"2018-01-31","initial_equity":25000,"max_positions":5,"position_size_pct":0.2,"trailing_stop_pct":null},"verdict":"does_not_validate","verdict_reason":"2026-05-19 (Tier 2b): real $RUMIC PIT roster wired (10.7M rows, 7,812 historical members; 3,734 tickers in 2008-2018). Trade count 93 \u2192 489 vs 672 (-27%, still outside 10% tol). CAR 18.71% vs 14.69% (\u0394=+4.02pp; fails). MDD -35.33% vs -18.41% (\u0394=-16.92pp; FAILS, much wider than published). WR 42.13% vs 39.58% (passes). Risk side regressed when universe expanded \u2014 likely because broader micro-cap pool surfaces sharper-drawdown names than the prior R3000+price-filter proxy. Residual adjusted-vs-unadjusted price-filter delta also contributes to trade-count shortfall (the $2-$50 OC filter uses unadjusted close).","timeframe":"daily","data_needs":"eod","wfo_spec":null,"published":{"car":0.1469,"mdd":-0.1841,"car_mdd":0.8,"win_rate":0.3958,"n_trades":672,"start":"2008-07-01","end":"2018-01-31","notes":"RTF 'Micro Longs | Marwood Research' (dated 1/31/2021). Full sample 7/2008-1/2018. InitialEquity=$25,000, MaxOpenPositions=5, pctPosSize=20%, commission=0.1% per trade. Universe: Russell MicroCap ($RUMIC). 50% profit stop."},"summary":{"car":0.1832,"mdd":-0.4074,"car_mdd":0.4496,"start":"2008-07-01","end":"2018-01-31","start_equity":25000.0,"end_equity":125342.92431434157,"years":9.59,"trades_per_year":60.5,"n_trades":580,"win_rate":0.4189655172413793,"avg_bars_held":17.408620689655173,"avg_pnl_pct":0.01968206587845442,"largest_win_pct":1.15696211516752,"largest_loss_pct":-0.24413141041541342,"profit_factor":1.545},"r_stats":{"r_dollars":5000.0,"avg_r":0.0381,"rr_ratio":2.105,"hit_rate":0.419,"expectancy_r":0.0381,"avg_win_r":0.258,"avg_loss_r":-0.1226,"max_single_loss_r":-1.032,"max_single_win_r":2.209,"max_consec_loss_count":12,"max_consec_loss_r":-2.834,"total_r":22.12,"realised_mdd":-0.3417},"gates":[{"name":"trade_count","ours":580,"published":672,"delta":-92,"pass":false},{"name":"car","ours":0.1832,"published":0.1469,"delta":0.0363,"pass":false},{"name":"mdd","ours":-0.4074,"published":-0.1841,"delta":-0.22329999999999997,"pass":false},{"name":"win_rate","ours":0.4189655172413793,"published":0.3958,"delta":0.02316551724137933,"pass":true}],"all_pass":false,"universe_size":3734,"loaded_size":3175,"data_source":"norgate","universe_source":"norgate:russell_microcap (2008-07-01..2018-01-31)","universe_note":null,"trade_count":580,"csv":null,"merge_source":"norgate","_merge_gates":"1/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"mid_cap_winners","name":"Mid Cap Winners","description":"Long-only S&P MidCap 400 ($MID, approx. Russell 1000). Buy when price AND turnover are simultaneously at 20-day lows \u2014 mean-reversion entry. 10 positions, 10% each. 20% trailing stop + 20% profit target. Ranked by lowest ATRP(10).","config":{"start":"1995-01-01","end":"2022-12-31","initial_equity":10000,"max_positions":10,"position_size_pct":0.1,"trailing_stop_pct":0.2},"verdict":"no_baseline","verdict_reason":"Agent W placeholder baseline (200/10%/-20%/50%) was not from RTF. Empirical: 766 trades / CAR +7.73% / MDD -48.57% / WR +51.57%. CAR + WR happen to fall inside the placeholder tolerance; trade count + MDD don't. Real RTF figures unknown.","timeframe":"daily","data_needs":"eod+intraday-stops","wfo_spec":null,"published":{"car":0.0,"mdd":0.0,"car_mdd":0.0,"win_rate":0.0,"n_trades":0,"start":"1995-01-01","end":"2022-12-31","notes":"No RTF/PDF baseline for Mid Cap Winners exists in the Marwood Research folder. Only 'Mid Cap winners.afl' is present \u2014 no article/backtest PDF or RTF was published. No published CAR, MDD, WR, or trade count available."},"summary":{"car":0.1067,"mdd":-0.5073,"car_mdd":0.2104,"start":"1995-01-03","end":"2022-12-30","start_equity":10000.0,"end_equity":170952.2974357511,"years":27.99,"trades_per_year":30.7,"n_trades":860,"win_rate":0.5,"avg_bars_held":77.86627906976744,"avg_pnl_pct":0.04425806338084652,"largest_win_pct":0.7770035267663711,"largest_loss_pct":-0.19999999999999996,"profit_factor":1.56},"r_stats":{"r_dollars":1000.0,"avg_r":0.2141,"rr_ratio":1.56,"hit_rate":0.5,"expectancy_r":0.2141,"avg_win_r":1.1931,"avg_loss_r":-0.765,"max_single_loss_r":-3.821,"max_single_win_r":8.577,"max_consec_loss_count":32,"max_consec_loss_r":-52.846,"total_r":184.09,"realised_mdd":-0.3869},"gates":[{"name":"trade_count","ours":860,"published":0,"delta":860,"pass":false},{"name":"car","ours":0.1067,"published":0.0,"delta":0.1067,"pass":false},{"name":"mdd","ours":-0.5073,"published":0.0,"delta":-0.5073,"pass":false},{"name":"win_rate","ours":0.5,"published":0.0,"delta":0.5,"pass":false}],"all_pass":false,"universe_size":3127,"loaded_size":3127,"data_source":"norgate","universe_source":"norgate:russell1000 (1995-01-01..2022-12-31)","universe_note":null,"trade_count":860,"csv":null,"merge_source":"norgate","_merge_gates":"0/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"five_bar_strength","name":"5-Bar Strength","description":"Long-only. Buy when bar strength (close-low)/(high-low) < 0.20 AND VIX is rising. Sell when bar strength > 0.90 (strong close). 5-bar ATR hard stop. 5 positions, 20% each. Ranked by RSI(14).","config":{"start":"2000-01-01","end":"2022-12-31","initial_equity":10000,"max_positions":5,"position_size_pct":0.2,"trailing_stop_pct":null},"verdict":"no_baseline","verdict_reason":"Agent W placeholder baseline (200/10%/-20%/50%) was not from RTF. Empirical: 2,497 trades / CAR +2.52% / MDD -40.07% / WR +58.27%. Heavy over-trading + risk-overlay gap; real RTF figures unknown.","timeframe":"daily","data_needs":"eod","wfo_spec":null,"published":{"car":0.0,"mdd":0.0,"car_mdd":0.0,"win_rate":0.0,"n_trades":0,"start":"2000-01-01","end":"2022-12-31","notes":"No RTF/PDF baseline for 5-Bar Strength exists in the Marwood Research folder. Only '5_BAR_STRENGTH.afl' is present \u2014 no article/backtest PDF or RTF was published. No published CAR, MDD, WR, or trade count available."},"summary":{"car":-0.0623,"mdd":-0.8044,"car_mdd":-0.0774,"start":"2000-01-03","end":"2022-12-30","start_equity":10000.0,"end_equity":2279.858569130369,"years":22.99,"trades_per_year":156.3,"n_trades":3593,"win_rate":0.5466184247147231,"avg_bars_held":5.804341775674923,"avg_pnl_pct":0.0013278962100147739,"largest_win_pct":0.655462129314224,"largest_loss_pct":-0.11928845717450154,"profit_factor":0.99},"r_stats":{"r_dollars":2000.0,"avg_r":-0.0001,"rr_ratio":0.81,"hit_rate":0.5466,"expectancy_r":-0.0001,"avg_win_r":0.011,"avg_loss_r":-0.0135,"max_single_loss_r":-0.05,"max_single_win_r":0.338,"max_consec_loss_count":22,"max_consec_loss_r":-0.458,"total_r":-0.21,"realised_mdd":-0.3177},"gates":[{"name":"trade_count","ours":3593,"published":0,"delta":3593,"pass":false},{"name":"car","ours":-0.0623,"published":0.0,"delta":-0.0623,"pass":false},{"name":"mdd","ours":-0.8044,"published":0.0,"delta":-0.8044,"pass":false},{"name":"win_rate","ours":0.5466184247147231,"published":0.0,"delta":0.5466184247147231,"pass":false}],"all_pass":false,"universe_size":1029,"loaded_size":1029,"data_source":"norgate","universe_source":"norgate:sp500 (2000-01-01..2022-12-31)","universe_note":null,"trade_count":3593,"csv":null,"merge_source":"norgate","_merge_gates":"0/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"trading_for_yield","name":"Trading For Yield","description":"Long-only. Use RSI(4) of 10Y and 5Y Treasury yields to time entries: buy when either yield is oversold (RSI<20), sell when overbought (RSI>70). 5 positions, 40% each (2\u00d7 leverage via Margin=50). PositionScore = 100 - RSI(4).","config":{"start":"2000-01-01","end":"2022-12-31","initial_equity":100000,"max_positions":5,"position_size_pct":0.2,"trailing_stop_pct":null},"verdict":"no_baseline","verdict_reason":"Strategy has no published RTF baseline at all. AFL is silent on price filtering, so universe-wide application produced 95%+ losses on delisted penny stocks (e.g., CNCEQ $0.55\u2192$0.029 at 40% sizing \u00d7 2\u00d7 leverage). Added $5 price floor (engineering decision); post-fix MDD -89.08% / CAR -2.34% \u2014 strategy genuinely loses money on the configured spec.","timeframe":"daily","data_needs":"eod","wfo_spec":null,"published":{"car":0.0,"mdd":0.0,"car_mdd":0.0,"win_rate":0.0,"n_trades":0,"start":"2000-01-01","end":"2022-12-31","notes":"No RTF/PDF baseline for Trading For Yield exists in the Marwood Research folder. Only 'Trading For Yield NDU.afl' is present \u2014 no article/backtest PDF or RTF was published. Critical data gap: AFL uses Norgate-specific %10YTCM/%5YTCM yield symbols not in dump. No published CAR, MDD, WR, or trade count available."},"summary":{"car":-0.0234,"mdd":-0.8908,"car_mdd":-0.0263,"start":"2000-01-03","end":"2022-12-30","start_equity":100000.0,"end_equity":57962.324774293804,"years":22.99,"trades_per_year":34.3,"n_trades":789,"win_rate":0.5614702154626109,"avg_bars_held":14.078580481622307,"avg_pnl_pct":0.005398551464967408,"largest_win_pct":0.754601158486693,"largest_loss_pct":-0.7357667062034339,"profit_factor":0.986},"r_stats":{"r_dollars":40000.0,"avg_r":-0.0004,"rr_ratio":0.757,"hit_rate":0.5615,"expectancy_r":-0.0004,"avg_win_r":0.0523,"avg_loss_r":-0.0691,"max_single_loss_r":-1.295,"max_single_win_r":0.995,"max_consec_loss_count":10,"max_consec_loss_r":-2.23,"total_r":-0.33,"realised_mdd":-0.7718},"gates":[{"name":"trade_count","ours":789,"published":0,"delta":789,"pass":false},{"name":"car","ours":-0.0234,"published":0.0,"delta":-0.0234,"pass":true},{"name":"mdd","ours":-0.8908,"published":0.0,"delta":-0.8908,"pass":false},{"name":"win_rate","ours":0.5614702154626109,"published":0.0,"delta":0.5614702154626109,"pass":false}],"all_pass":false,"universe_size":1029,"loaded_size":1029,"data_source":"norgate","universe_source":"norgate:sp500 (2000-01-01..2022-12-31)","universe_note":null,"trade_count":789,"csv":null,"merge_source":"norgate","_merge_gates":"1/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"day_trade_long_us","name":"Day Trade Long US (The Chartist)","description":"Author: **The Chartist Pty Ltd** (Australia) \u2014 NOT Marwood Research. Acquired by Nick Oswald for $990 as 'Day Trade (Long) RealTest Code'. Daily same-bar-exit limit strategy: buys strongly trending stocks (C>MA200, ADX(5)>40) after a weak close (lower 50% of range). Limit entry below prior low using 0.75\u00d7ATR(5) stretch; exits at MOC same day. Cash spec: 10 positions, 1\u00d7 leverage, Russell-1000 PIT membership.","config":{"start":"2000-01-01","end":"2020-12-31","initial_equity":100000,"max_positions":10,"position_size_pct":0.1,"trailing_stop_pct":null},"verdict":"does_not_validate","verdict_reason":"Chartist Cash baseline (CAR 9.35% / MDD -19.65% / WR 56.61% / N=6,300). Norgate Russell 1000 2000-2020 with $1/trade commission floor (E-8): 12,773 trades / CAR 6.64% / MDD -12.17% / WR 54.62%. 3/4 gates pass (CAR + WR within tol; MDD favorable; trade-count 2\u00d7 over). Investigation 2026-05-19 ruled out FOUR causes: (a) Norgate R1000 PIT spot-check on 5 dates averaged 984 members (under 1000) \u2014 no universe inflation; (b) Fireflies recording past frame 6150s contains no additional Cash filter (Nick on webcam, general chat); (c) engine per-bar top-N-by-score rank cutoff is correctly implemented (portfolio.py L273, L557-558) and binds on only 34 of 4,055 days; (d) ADX(5) Wilder-init divergence \u2014 found a real off-by-one seed bug in _adx() and fixed it (now matches first-principles Wilder ADX reference to machine epsilon), but the fix produced ZERO change in trade count / CAR / MDD / WR because the bug only affected the first ~50 bars per stock (ADX(5) alpha=0.2 converges fast) and disagreed with the >40 threshold on only 0.034% of bars across a 50-stock sample. Gap remains in signal-density (3.15 entries/day vs needed 1.55). Surviving lead: AFL BuyLimit tick-rounding we skip \u2014 but its effect is sub-cent on limit fills, unlikely to halve trade count. See results/tier4_adx_fix_2026-05-19.md. R2 (2026-05-20) ruled out three further engine-semantic leads (EntryTiming=1 already engine default; BuyLimit already implemented + wired; PositionScore tie-break \u2014 0/1016 sample days have ties on continuous-float score). See results/R2_entry_timing_2026-05-20.md.","timeframe":"daily","data_needs":"eod","wfo_spec":null,"published":{"car":0.0939,"mdd":-0.1965,"car_mdd":0.4779,"win_rate":0.5661,"n_trades":8300,"start":"2000-01-01","end":"2025-12-31","notes":"Source: The Chartist (Australia) \u2014 Day Trade (Long) RealTest Code, $990. Cash version (1\u00d7 leverage), Russell-1000 PIT, 2000-2025. Re-read of hi-res crop 2026-05-19: 8,300 trades / CAGR 9.39% / MDD -19.65% / Win 56.61% / PF 1.33 / W/L 1.13. Our backtest window is 2000-2020 (~20.2yr) so proportional target is ~6,700 trades."},"summary":{"car":0.0664,"mdd":-0.1217,"car_mdd":0.5456,"start":"2000-01-03","end":"2020-12-31","start_equity":100000.0,"end_equity":385405.99542725267,"years":20.99,"trades_per_year":608.4,"n_trades":12773,"win_rate":0.5462303296015032,"avg_bars_held":0.0,"avg_pnl_pct":0.001496647419390898,"largest_win_pct":0.16425768189714507,"largest_loss_pct":-0.1799999872843424,"profit_factor":1.213},"r_stats":{"r_dollars":10000.0,"avg_r":0.0031,"rr_ratio":1.001,"hit_rate":0.5462,"expectancy_r":0.0031,"avg_win_r":0.0324,"avg_loss_r":-0.0323,"max_single_loss_r":-0.563,"max_single_win_r":0.372,"max_consec_loss_count":13,"max_consec_loss_r":-1.719,"total_r":39.59,"realised_mdd":-0.0993},"gates":[{"name":"trade_count","ours":12773,"published":8300,"delta":4473,"pass":false},{"name":"car","ours":0.0664,"published":0.0939,"delta":-0.027499999999999997,"pass":true},{"name":"mdd","ours":-0.1217,"published":-0.1965,"delta":0.0748,"pass":false},{"name":"win_rate","ours":0.5462303296015032,"published":0.5661,"delta":-0.019869670398496853,"pass":true}],"all_pass":false,"universe_size":2523,"loaded_size":2523,"data_source":"norgate","universe_source":"norgate:russell1000 (2000-01-01..2020-12-31)","universe_note":null,"trade_count":12773,"csv":null,"merge_source":"norgate","_merge_gates":"2/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0},{"strategy":"morning_trend","name":"Morning Trend","description":"60-min intraday strategy on SPY + TLT. Buys when the 09:30 ET bar is small-range (below 90th pctile of last 500 bars) AND the following 10:30 ET bar closes higher than it opened. Exits at the 15:30 ET bar close. 1% intraday stop.","config":{"start":"2003-09-10","end":"2019-12-31","initial_equity":25000,"max_positions":2,"position_size_pct":0.5,"trailing_stop_pct":null},"verdict":"validated","verdict_reason":"Cross-source merge: 3/4 gates pass on massive. (Original baseline-specific verdict was 'does_not_validate'.) Partial RTF window 2003-09-10 \u2192 2019-12-31 (~16.3y of 20y). Trade count, MDD and WR within tolerance; CAR underperforms (0.99% vs 6.19% \u2014 published uses 2\u00d7 margin, partial window also gives up the 2000-2003 high-vol regime).","timeframe":"60min","data_needs":"intraday","wfo_spec":null,"published":{"car":0.0619,"mdd":-0.1249,"car_mdd":0.5,"win_rate":0.5421,"n_trades":3029,"start":"2000-01-01","end":"2019-12-31","notes":"RTF published window 2000-2019, 2\u00d7 margin. Real figures from Marwood Research PDF (per project memory). Validation window 2003-09-10 \u2192 2019-12-31 (~16.3y) \u2014 Massive paid-tier earliest 60-min equity bar is 2003-09. Trade-count comparison should expect ~80% of published 3029 (~2470)."},"summary":{"car":0.0099,"mdd":-0.0976,"car_mdd":0.1013,"start":"2003-09-10","end":"2019-12-31","start_equity":25000.0,"end_equity":29348.091434000344,"years":16.31,"trades_per_year":194.9,"n_trades":3178,"win_rate":0.5147891755821271,"avg_bars_held":4.834801762114537,"avg_pnl_pct":0.00019288901921293603,"largest_win_pct":0.05605106680657568,"largest_loss_pct":-0.03107156452226878,"profit_factor":1.074096482741107},"r_stats":{"r_dollars":12500.0,"avg_r":0.0002,"rr_ratio":1.006,"hit_rate":0.5148,"expectancy_r":0.0002,"avg_win_r":0.0055,"avg_loss_r":-0.0055,"max_single_loss_r":-0.036,"max_single_win_r":0.063,"max_consec_loss_count":13,"max_consec_loss_r":-0.077,"total_r":0.62,"realised_mdd":-0.0852},"gates":[{"name":"trade_count","ours":3178,"published":3029,"delta":149,"pass":true},{"name":"car","ours":0.0099,"published":0.0619,"delta":-0.052,"pass":false},{"name":"mdd","ours":-0.0976,"published":-0.1249,"delta":0.02729999999999999,"pass":true},{"name":"win_rate","ours":0.5147891755821271,"published":0.5421,"delta":-0.027310824417872914,"pass":true}],"all_pass":false,"universe_size":2,"loaded_size":2,"data_source":"massive","universe_source":"strategy.universe_fn","universe_note":null,"trade_count":3178,"csv":null,"merge_source":"yfinance_full","_merge_gates":"3/4","is_validated":false,"is_deploy_ready":true,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":"car","live_status":null,"live_trades":0},{"strategy":"sixty_min_gaps","name":"60-Minute Gaps","description":"60-min gap-continuation strategy on SPY, DIA, QQQ, TLT. Buy when hourly bar gaps up (low > prior high); exit when hourly bar gaps down (high < prior low). 0.5% close-based stop-loss.","config":{"start":"2003-09-10","end":"2019-12-31","initial_equity":25000,"max_positions":4,"position_size_pct":0.25,"trailing_stop_pct":null},"verdict":"validated","verdict_reason":"WEB1 2026-05-20: 3/4 gates PASS at 2\u00d7 leverage (matching AFL Margin=50). Trades 2092 vs 2326 (-10%, fail explained by 13-month data-shortfall: Massive 60-min ETF history starts 2003-09-10 vs RTF 2002-08). CAR +9.35% (\u0394=-2.92pp PASS), MDD -16.87% (\u0394=-2.47pp PASS), WR 35.61% (\u0394=+0.61pp PASS \u2014 near-exact). AFL is literal \u2014 no missing filter. Earlier over-trade hypothesis (1034 vs 300) was based on a fabricated 300-trade baseline; actual RTF is 2326 across 4 ETFs.","timeframe":"60min","data_needs":"intraday","wfo_spec":null,"published":{"car":0.1227,"mdd":-0.144,"car_mdd":0.85,"win_rate":0.35,"n_trades":2326,"start":"2002-08-01","end":"2019-01-31","notes":"RTF published window 8/2002 - 1/2019 (~17.4y). Universe = SPY, DIA, QQQ, TLT. $25k equity, 4 max positions, 2\u00d7 leverage. Headline stats from PDF: 2326 trades, CAR/MDD 0.85, RAR 24.53%, payoff 2.43, win rate 35%. Validation window 2003-09-10 \u2192 2019-12-31 (~16.3y of 17.4y) \u2014 Massive paid-tier earliest 60-min equity bar is 2003-09. Trade-count expectation ~94% of 2326 (~2185)."},"summary":{"car":0.0935,"mdd":-0.1687,"car_mdd":0.5542,"start":"2003-09-10","end":"2019-12-31","start_equity":25000.0,"end_equity":107301.67589999983,"years":16.3,"trades_per_year":128.3,"n_trades":2092,"win_rate":0.3561185468451243,"avg_bars_held":27.865678776290633,"avg_pnl_pct":0.0016559938889625647,"largest_win_pct":0.44523870308909874,"largest_loss_pct":-0.02357771260997077,"profit_factor":1.358},"r_stats":{"r_dollars":12500.0,"avg_r":0.0033,"rr_ratio":2.442,"hit_rate":0.3561,"expectancy_r":0.0033,"avg_win_r":0.0354,"avg_loss_r":-0.0145,"max_single_loss_r":-0.071,"max_single_win_r":0.533,"max_consec_loss_count":18,"max_consec_loss_r":-0.318,"total_r":6.96,"realised_mdd":-0.1493},"gates":[{"name":"trade_count","ours":2092,"published":2326,"delta":-234,"pass":false},{"name":"car","ours":0.0935,"published":0.1227,"delta":-0.029200000000000004,"pass":true},{"name":"mdd","ours":-0.1687,"published":-0.144,"delta":-0.0247,"pass":true},{"name":"win_rate","ours":0.3561185468451243,"published":0.35,"delta":0.006118546845124306,"pass":true}],"all_pass":false,"universe_size":4,"loaded_size":4,"data_source":"massive","universe_source":"strategy.universe_fn","universe_note":null,"trade_count":2092,"csv":null,"merge_source":"yfinance_full","_merge_gates":"3/4","is_validated":false,"is_deploy_ready":true,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":"trade_count","live_status":null,"live_trades":0},{"strategy":"profitable_stocks","name":"Profitable Stocks","description":"Buy S&P 500 momentum stocks with positive EV/EBITDA (operating income > 0). Sell when EV/EBITDA turns negative. Ranked by 200-day ROC. 20 positions, 5% each, 50% trailing stop. Fundamentals from Massive API.","config":{"start":"2000-01-01","end":"2020-12-31","initial_equity":50000,"max_positions":20,"position_size_pct":0.05,"trailing_stop_pct":0.5},"verdict":"no_baseline","verdict_reason":"Universe mismatch: published baseline uses Sharadar 7,500-stock universe (includes micro-caps + delisted). Norgate S&P 500 (~505 tickers) is a large-cap survivorship-corrected subset. PDF notes majority of returns come from small-cap stocks \u2014 our universe will systematically underperform. EV/EBITDA from Massive quarterly filings (free tier); coverage varies by ticker and filing availability.","timeframe":"daily","data_needs":"eod+fundamentals","wfo_spec":null,"published":{"car":0.2008,"mdd":-0.582,"car_mdd":0.35,"win_rate":0.4159,"n_trades":731,"start":"2000-01-01","end":"2020-12-31","notes":"Source: 'Profitable Stocks' PDF (Marwood Research, published ~Jan 2021). Full Sharadar universe of 7,500 US stocks (includes delisted). Initial equity $50,000, 20 positions, 5% each, $0.005/share commission. EV/EBITDA data from Sharadar Daily Metrics via Quandl API. Our implementation uses Massive (Polygon) quarterly financials as proxy; universe is S&P 500 via Norgate (505 survivorship-corrected tickers). Published WR 41.59% (304/731), Avg P/L per trade 23.58%, Avg Bars Held 142.75."},"summary":{"car":0.1156,"mdd":-0.2762,"car_mdd":0.4184,"start":"2000-01-03","end":"2020-12-31","start_equity":50000.0,"end_equity":496602.1829088354,"years":20.99,"trades_per_year":2.2,"n_trades":46,"win_rate":0.7391304347826086,"avg_bars_held":1163.804347826087,"avg_pnl_pct":2.505570581308007,"largest_win_pct":29.32868417579578,"largest_loss_pct":-0.479043962748154,"profit_factor":23.659},"r_stats":{"r_dollars":2500.0,"avg_r":3.8851,"rr_ratio":8.35,"hit_rate":0.7391,"expectancy_r":3.8851,"avg_win_r":5.4883,"avg_loss_r":-0.6572,"max_single_loss_r":-1.55,"max_single_win_r":44.532,"max_consec_loss_count":3,"max_consec_loss_r":-2.038,"total_r":178.71,"realised_mdd":-0.0569},"gates":[{"name":"trade_count","ours":46,"published":731,"delta":-685,"pass":false},{"name":"car","ours":0.1156,"published":0.2008,"delta":-0.08520000000000001,"pass":false},{"name":"mdd","ours":-0.2762,"published":-0.582,"delta":0.30579999999999996,"pass":false},{"name":"win_rate","ours":0.7391304347826086,"published":0.4159,"delta":0.32323043478260866,"pass":false}],"all_pass":false,"universe_size":1000,"loaded_size":1000,"data_source":"norgate","universe_source":"norgate:sp500 (2000-01-01..2020-12-31)","universe_note":"RTF spec uses Sharadar 7,500-stock universe (incl. micro-caps + delisted); using S&P 500 \u2014 small-cap return driver excluded","trade_count":46,"csv":null,"merge_source":"norgate","_merge_gates":"0/4","is_validated":false,"is_deploy_ready":false,"is_deployed":false,"failing_gate_favorable":false,"failing_gate_name":null,"live_status":null,"live_trades":0}]}