Owner's rule: backtest must run as soon as there's enough data to estimate an investment — it must NOT be blocked just because some sources lack deep PIT history. Scoring is deliberately flexible (a theme uses whatever subset of factors was knowable that day). - backtest_readiness: readiness = usable window (price + Siamchart + >=1 factor), not all-factors-present. Missing factors still reported (transparency) but no longer block the run. recommended_start = oldest executable price (oldest history the system holds); recommended_end = last complete trading day. - pit_scorer.theme_surprise_report: flexible — skips factors not released by as_of; blocked only when NO factor has a value. pit_meta.partial_pit reflects themes scored from a partial factor subset. - Verified end-to-end: readiness ready=true (recommended 2024-01-03 -> 2026-08-29); POST /api/v1/backtest/run default window returns 201 full result (1M -> final equity 1,117,243.95), no 400 from missing factors. - test_backtest_readiness updated to earliest-runnable semantics; full suite 369 green.
18 KiB
18 KiB