v2.0.1 — Post-v2.0.0 hardening: honest backtest + audit-driven fixes
⚠️ Simulation-only toy project. No live order routing. All outputs are not investment advice — see the disclaimer in the README.
A multi-agent code audit of the v2 stack drove a round of correctness fixes, honest validation, and de-duplication. The headline: the first out-of-sample backtest of the v2 signal/sizing stack — published with the candid result that it shows no demonstrated alpha vs buy-and-hold.
🔬 Honest validation (the highlight)
- Out-of-sample backtest (
docs/backtest-v2-results.md) — bridges the v2 signal/sizing stack into the A-share backtest engine (no look-ahead) and reports an equity curve, Sharpe, drawdown, and a buy-and-hold baseline over 2019–2024 (14 sector-diverse names). Result: +25.5% vs +351.7% buy-and-hold, 0/14 — the stack is a drawdown-limiter that caps trend upside, not an alpha engine. Reproduce withscripts/backtest_v2_universe.py. The machinery is real; the inputs are unproven, and now measured. make demo— one-command offline backtest on a bundled sample (no Docker, API keys, or network).
🐛 Fixed
- Risk gates that were no-ops —
preflightnow reads the persisted circuit-breaker halt state (is_halted()) and enforces T+1 sellability;review_agentscore cutoffs are named constants. - Bayesian likelihood derivation —
OutcomeTrackerestimates genuineP(evidence | state)from conditional frequencies instead of mislabeling the hit-rate. - T+N outcome horizons use trading days (not calendar days), so T+1 after a Friday no longer lands on a weekend.
🧹 Changed / consolidated
- Single source of truth for A-share constants (
src/utils/ashare_constants.py). - Unified data-source health on one shared
DataSourceRouter(the/adminview was previously empty). - Merged the two causal-chain engines into one (
ImpactChainEngine→ adapter overCausalChainConstructor); stock resolution and USD→gold kept lossless. - LLM-debate de-risked with an opt-in graceful-degradation path (default off).
- Honest naming — Alpha158 → custom alpha factors; "causal chains" → rule-based templates; IC annotated as an autocorrelation proxy.
- Removed dead code and a no-op calibration dimension.
Quality
All external deps mocked in unit tests; full unit suite passes, ruff/format clean, CI green throughout. Every change shipped through the standard branch → PR → CI flow.
Full changelog: see CHANGELOG.md · grounded in ROADMAP.md.