Consumer half of mspinola/marketdata#24. Blocked on it: the regimes table has to exist before this package can read it.
What changes here
exposure.point_values() returns one multiplier per symbol and market_exposure applies it to every week:
out["notional_usd"] = out["net_contracts"] * pv * out["price"]
That becomes a per-DATE multiplier from marketdata.point_value_asof(symbol, out.index), falling back to the current contract_specs value for symbols with no regime rows, so the 46 unaffected markets are byte-identical.
Why it matters here specifically
RTY is understated 2x across 740 of its 1,247 priced weeks. Because aggregate_exposure ranks each week against an expanding window of its own history, an under-scaled first half compresses the reference distribution, so the error does not stay in the past: every post-2016 Russell reading ranks as more extreme than it is, and the Equities composite is understated about 11.9% before the cut.
Evidence and the reproducer are in docs/analysis/2026-08-22-effective-dated-contract-multipliers.md.
Done when
Note for whoever picks this up
Do not treat the correction as a licence to promote the dollar-risk percentile to a signal-level metric. Fixing the input removes a data-correctness objection; whether the metric predicts anything is a pre-registered question for the ladder in npf, judged by a session other than the one that proposes it.
Consumer half of mspinola/marketdata#24. Blocked on it: the regimes table has to exist before this package can read it.
What changes here
exposure.point_values()returns one multiplier per symbol andmarket_exposureapplies it to every week:That becomes a per-DATE multiplier from
marketdata.point_value_asof(symbol, out.index), falling back to the currentcontract_specsvalue for symbols with no regime rows, so the 46 unaffected markets are byte-identical.Why it matters here specifically
RTY is understated 2x across 740 of its 1,247 priced weeks. Because
aggregate_exposureranks each week against an expanding window of its own history, an under-scaled first half compresses the reference distribution, so the error does not stay in the past: every post-2016 Russell reading ranks as more extreme than it is, and the Equities composite is understated about 11.9% before the cut.Evidence and the reproducer are in
docs/analysis/2026-08-22-effective-dated-contract-multipliers.md.Done when
market_exposureprices each week with the multiplier in force that weekpoint_values()either gains an as-of form or is documented as the current-regime lookup it is, so a future caller does not reach for the wrong oneaggregate_exposure's shape or to the numeraire pathNote for whoever picks this up
Do not treat the correction as a licence to promote the dollar-risk percentile to a signal-level metric. Fixing the input removes a data-correctness objection; whether the metric predicts anything is a pre-registered question for the ladder in npf, judged by a session other than the one that proposes it.