Task #37 - M-filter ON Quality + Weak-Regime Stop Calibration First Batch
Scope: use existing mfilter_sensitivity and stop_ab outputs to answer whether 2023 churn can be mitigated by stronger M-filter ON confirmation or stop-rule changes.
Executive conclusion
First batch result: **M-filter ON confirmation helps 2023, but over-tight confirmation is not a production replacement yet. Stop-rule variants do not solve 2023.**
- More stringent ON confirmation (open10 / open20) can reduce 2023 loss to near 0 by essentially avoiding 2023 exposure, but this also cuts full-window return/Sharpe materially versus v1.3 Y2 baseline.
- Moderate confirmation (open5_close2/3) improves 2023 from the #31 baseline -10.51% to about -5.58%, but full-window Sharpe is still only ~0.72, below v1.3 baseline ~0.86.
- Stop variants (hard8/10/12, hybrid8/10) keep 2023 near -10%, so the main 2023 issue is not solved by simple stop calibration.
Selected evidence
| scenario | type | ret_2023 | avg_exp_2023 | market_on_pct_2023 | full_ann | full_sharpe | full_mdd |
|---|---|---|---|---|---|---|---|
| open20_close3 | mfilter | 0.0000 | 0.0000 | 0.0000 | 0.1123 | 0.7215 | -0.2743 |
| open10_close2 | mfilter | -0.0333 | 0.0278 | 0.0207 | 0.1048 | 0.6466 | -0.2740 |
| open5_close2 | mfilter | -0.0558 | 0.0637 | 0.0537 | 0.1248 | 0.7278 | -0.2789 |
| open5_close3 | mfilter | -0.0558 | 0.0637 | 0.0620 | 0.1238 | 0.7186 | -0.2840 |
| open1_close1 | mfilter | -0.1141 | 0.1920 | 0.0826 | 0.1234 | 0.7255 | -0.2877 |
| open3_close2 | mfilter | -0.1169 | 0.1971 | 0.0702 | 0.1230 | 0.7133 | -0.2720 |
| open2_close2 | mfilter | -0.1169 | 0.1971 | 0.0785 | 0.1088 | 0.6485 | -0.2721 |
| hybrid8_three_axis | stop | -0.1007 | 0.1706 | 0.0826 | 0.1103 | 0.6667 | -0.2728 |
| hybrid10_three_axis | stop | -0.1034 | 0.1864 | 0.0826 | 0.1052 | 0.6524 | -0.2741 |
| three_axis_v1_2 | stop | -0.1141 | 0.1920 | 0.0826 | 0.1234 | 0.7255 | -0.2877 |
| hard12_only | stop | -0.1226 | 0.9101 | 0.0826 | 0.0397 | 0.2903 | -0.6234 |
| hard8_only | stop | -0.1306 | 0.7667 | 0.0826 | 0.0577 | 0.3728 | -0.5508 |
| hard10_only | stop | -0.1387 | 0.8053 | 0.0826 | 0.0454 | 0.3186 | -0.5843 |
Interpretation
2023 confirms #31: the book lost money during low-quality ON windows. If we require longer ON confirmation, those windows disappear and 2023 improves. But the same filter also misses too much valid bull-regime entry over the full sample.
Stop calibration alone is lower priority: existing stop A/B does not materially improve 2023. The stop system is reacting after low-quality entries; the higher-leverage fix is entry/regime confirmation, not a different stop threshold by itself.
Next experiment
Do not adopt open10/open20 globally. Next #37 batch should test **conditional confirmation only in weak/ambiguous regimes**, e.g.:
1. Keep current v1.3 ON rule in normal regimes.
2. Require extra ON confirmation only when breadth/liquidity/policy sub-factors are mixed or recent M-filter churn is high.
3. Optional: block new buys for N days after an OFF→ON flip unless benchmark breadth confirms; existing holdings still follow normal exit rules.
Decision for v1.4: #37 remains active, but first batch rejects simple global open10/open20 replacement and deprioritizes stop-only fixes.