diff --git a/README.md b/README.md index 43456de..f3be1f5 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,26 @@ Fundamentals (weekly, early Monday) · Alerts (hourly, Telegram) · Backtest (we Caveats on the momentum result: in-sample, roughly one market regime, costs/slippage approximated at 0.1% per side, and residual momentum still needs SPY benchmark history to compute. The **out-of-sample proof is the forward paper-trade record**: Signals → Track Record compares live qualified expectancy against the backtest. +### Current production baseline + +Use this as a regression guardrail for future strategy changes, not as a return promise. Backtest run: 506 tickers, weekly cadence, 30-trading-day horizon, 2022-06-28 → 2026-07-01, 0.1% per-side costs, price-only SPY benchmark. + +| Item | Current baseline | +|---|---| +| Strategy version | `residual_momentum_12_1_rr_time_v2` | +| Production gate | Long-only, residual 12-1 momentum percentile >= 80, R:R floor on, NEUTRAL excluded, confidence floor effectively off | +| Exit | Hold 30 trading days with the initial ATR stop | +| Qualified setups | 1,810 | +| Qualified net expectancy | +0.16R per setup | +| Profit factor | 1.27 | +| Portfolio CAGR | +40.4% | +| Portfolio total return | +289.4% vs SPY +95.9% | +| Max drawdown | -26.1% | +| Sharpe | 1.52 daily, annualized | +| Robustness | 30d hold remains +0.16R net/trade after removing the top 5% winners | + +Nearest challengers from the same run: legacy raw 80 was weaker (+33.8% CAGR, -28.8% max drawdown, Sharpe 1.32); raw 90 was close but had lower Sharpe and worse drawdown (+40.4% CAGR, -27.6% max drawdown, Sharpe 1.49); residual 80 / max 15 removed book-full skips but did not improve CAGR, drawdown, Sharpe or closed trades. + ### The iron rule for strategy changes A signal earns its way into selection **only** through the factor harness: