Cleaner OOS validation of the §9.6 negative verdict:
- --source {B,A,both}: Source A = objective_corpus_room_month SUM(deals) monthly
aggregate (survivorship-FREE, ~13mo); Source B path unchanged.
- --detrend: linearly detrend ln(units) before differencing so a spurious
survivorship trend can't drive β (_detrend_log helper).
- cross-source verdict compares B-raw / B-detrended / A.
DEFINITIVE RESULT (run vs prod 2026-06-03): NO variant beats coin-flip OOS —
B-raw 0.148, B-detrended 0.148, A too thin (13mo<18). The §9.6 negative verdict
is a REAL 'no signal', NOT a survivorship artifact (detrend + clean Source A
agree). monthly key_rate→sales is not OOS-predictive on available EKB data →
§9.6 stays advisory; forecast should lean on measured signals (supply/absorption).
Tests 38→60.
|
||
|---|---|---|
| .. | ||
| api | ||
| integration | ||
| scrapers | ||
| scripts | ||
| services | ||
| smoke | ||
| sql | ||
| workers | ||
| __init__.py | ||
| test_admin_weight_profiles.py | ||
| test_concepts_stub.py | ||
| test_gate_verdict.py | ||
| test_health.py | ||
| test_layout_signature.py | ||
| test_layout_tz_pdf.py | ||
| test_nspd_client.py | ||
| test_nspd_sync.py | ||
| test_ping.py | ||
| test_poi_score.py | ||
| test_quarter_dump_lookup.py | ||
| test_rbac.py | ||
| test_sentry_init.py | ||
| test_velocity.py | ||
| test_weight_profiles.py | ||