DIX Nowcast
Last verified
Auto-generated. This article is rebuilt from
app/signals/config/signal_definitions.jsonbyscripts/build_signals_kb.py. Edit the registry entry and re-run the script — do not edit this file directly.
DIX Nowcast
What it is
DIX Nowcast — registry key dix_nowcast.
INTERNAL next-session DIX forecast (board #89 U2) – today’s DIX plus a frozen 3-feature OLS prediction of tomorrow’s DIX change (mechanical mean-reversion; prereg research/planning/prereg_u2_dix_nowcast_2026-06-12.md, graded forward as CARRIER_DIX in nowcast_grading). A HALF-DAY-EARLY read of tomorrow’s vendor print + a sanity guard on a stale/frozen DIX feed. data_only INTERNAL per Law 3 – NEVER substituted into the dix health-score component / band / matcher tag / alignment leg (the DIX of record stays the vendor print), and deliberately NOT tracked_in_history / tracked_in_sparkline (no public surface): it is persisted purely so the standing grader + the AI pack (ai_context dark_pool_divergence) read a live column. Distinct temporal target (TOMORROW forecast) from the same-day freshen carriers (stlfsi4_nowcast / hy_oas_nowcast / nfci_nowcast), hence the distinct name. Existing rows are backfillable via scripts/backfill_dix_nowcast.py.
Data-pyramid tier
T1 — Signal. This metric sits at the signal layer of the platform’s six-tier data pyramid (T0 raw inputs → T5 actionable read). The tier reflects how far the value is from a raw measurement — not how strongly it is validated. Abstraction and validation are separate axes: a higher tier is not a claim of stronger evidence.
Horizon & validation
No validated skill horizon is on file for this metric — read it as context / a data carrier, not a validated edge. Stamps are added only when a gated research verdict lands.
Source
Source module: computed
Data source: computed
Derived metric — produced inside the platform (app/signals/computed.py or equivalent) rather than fetched as a raw upstream value. See the How it's computed section below for the formula.
How it’s computed
dix_nowcast = dix_t + (b0 + b1 * (dix_t - dix_{t-1}) + b2 * (dix_t - mean(dix[t-62..t])) + b3 * (spy_close_t / spy_close_{t-1} - 1)), the frozen Q1 full-sample OLS (b0=-0.000150, b1=-0.172253, b2=-0.268001, b3=+0.436843; capture.DIX_NOWCAST_B{0..3}), where dix_t / spy_close_t come from today’s row, dix{t-1} is the newest DISTINCT prior DIX print (the trailing series is deduped to one observation per dix_obs_date – a carry-forward row is not a fresh print), and the 63-row deviation mean spans the newest 63 distinct prints INCLUDING today. Computed at capture (capture._inject_dix_nowcast). ABSTAINS (NULL) unless ALL features resolve: today’s dix, a prior distinct DIX print, a FULL 63-distinct-print deviation window, and the SPY 1-session return (today’s + the prior trading row’s spy_close) – no fake inputs (a wrong feature produces a confidently wrong carrier). The coefficients are frozen; re-fit only at the prereg’s 6-month checkpoint, never silently. Calibration provenance research/studies/u2_dix_nowcast_calibration.py; forward-grading contract research/planning/prereg_u2_dix_nowcast_2026-06-12.md (falsifier: directional accuracy < 0.65 OR RMSE skill <= 0 vs the no-change carry over ~120 matured pairs).
Where it surfaces
- API field:
dark_pool_divergence.dix_nowcastonGET /api/v1/signals/latest - Surface:
daily_signalsrow (daily-cadence persistence)
Health-score / alignment role
Data carrier — no implication, no health-score contribution.
Persisted for downstream consumers (sparklines, base-rate matcher, calibration substrate) but does not classify into BULLISH / NEUTRAL / BEARISH and does not contribute to the 0-100 health score.
Release cadence
- Publishes:
intraday