You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
New overfitting.py: probability_of_backtest_overfitting (PBO via CSCV), min_track_record_length, min_backtest_length, a one-call assess_overfitting verdict, and an embeddable overfitting_section. Consume-only, offline, no new deps. 22 TDD unit tests.
|*What should I do about it?* (opt-in) |**Recommendation layer (2.1)**: recommended target weights, a rebalance trade list, risk-limit alerts, and a strategy verdict — each with its rationale & evidence |
59
59
|*Does this suit my goals, and does it hold up out-of-sample?* (opt-in) |**Decision-support layer (2.2)**: a CFA-grounded investor `Profile` that constrains the optimizer and sets alert thresholds, plus walk-forward validation of the recommendation (in-sample vs OOS Sharpe + a holds-up / fragile verdict) |
60
+
|*Is this backtest result real, or did I overfit picking it?*|**Backtest honesty (2.3)**: Probability of Backtest Overfitting (PBO via CSCV), Minimum Track Record / Backtest Length, and a one-call overfitting verdict that deflates the Sharpe for the number of trials you ran |
60
61
61
62
The 2.0 report generators are descriptive analytics on daily historical data — a decision-support and communication tool. **2.1 adds a cost-aware, walk-forward backtest engine, a composable strategy layer, and an opt-in recommendation layer** (see [Strategy backtesting & recommendations](#strategy-backtesting--recommendations-21)). Monte Carlo assumes Geometric Brownian Motion (thin tails — it understates crash risk), and reports depend on live `yfinance` data.
62
63
@@ -276,6 +277,33 @@ The four pieces are also standalone — `qr.recommend_weights`, `qr.rebalance_tr
276
277
`qr.risk_alerts`, `qr.compare_verdict` — and a recommendation can be embedded directly into a
0 commit comments