Crack the Sky

Not built

Do not treat these as missing files in a half-landed feature — they are not in the tree.

Curves and calendars

ItemStatusWhat exists instead
Vol surfaces / interpolator built pricing.surface fits raw SVI (Gatheral) per (date, root, expiry) over own-IV OTM strikes from option_day_bars — calls above the parity forward, puts below — SPX/SPXW only. Butterfly (g(k) ≥ 0) and calendar (total variance non-decreasing in T) are repaired inside the fit; an unrepairable slice raises SurfaceArbitrageError rather than write an arbitrageable smile. Surface.vol(K, T) interpolates linearly in total variance between expiries, flat outside — alongside the ATM curve, not replacing it. Scheduled Tue–Sat 12:15 ET; rebuilds over the archive via scripts/build_surface.py into vol_surface; load_surface reads the landed parameters back. Still not built: an SPY smile (American strikes under a European fit path — follow-up, not a flag), a VIX surface (options on the VX future), and the calibration consumers (drift_check's off-ATM slice).
Rates warehouse / curve built rates_sync lands treasury_yields; ingest.common.rates.rate_for is what every IV inversion discounts with. History is walked back to 1962, so historical dates resolve properly (2022-08-31 → 2.4%, 2023-05-10 → 5.47%). DRIFT_CHECK_R remains only as the canary's scalar override.
Holiday calendar for T / trading-day theta partial Day-bar vol time defaults to the hybrid in pricing.daycount: sessions over 252 inside the attested + upcoming calendar, ACT/365 past the horizon, stamped per row on atm_term_structure and vol_surface. TRADING_DAYS_PER_YEAR (252) annualizes that session-based vol time in TradingSessions.year_fraction and still rescales per-trading-day theta output in GreeksConventions — two uses of the same constant, not the same quantity. The live path (from_market.year_fraction) is still ACT/365 to the settlement instant — that is step 4, not this row going red again.

Market data and pricing

ItemStatusWhat exists instead
NBBO mid not entitled Quote.market_price = last else close.
American IV solver built pricing.iv.implied_vol_american inverts the CRR tree by Brent. SPY sigma now comes off the same engine that prices it; a price at intrinsic returns 0.0, because an American put exercised now is worth that at every sigma.
Index levels (I:SPX, I:VIX, …) 403 Parity forwards on the option chain.

Infra and stack

ItemStatusWhat exists instead
ClickHouse not built Parquet under DATA_ROOT. Docstring leftover only.
VIX options ingest built VIX and VIXW options are captured: roots in OPTION_ROOTS, swept by snapshot_sweep, kept by the flat-file filter, and re-filtered across the whole history. The VIX index level is still a 403, so the per-expiry parity forward is the VX future of that expiry — which is the right object for a term structure.
VVIX ingest not built No capture, no root, nothing downstream. Split out from the VIX row because that half shipped and this half did not, and one row cannot carry both badges honestly.
pandas deliberately unused PyArrow + numpy + scipy.
Decision-log writers not built The append-only decision_log schema and writer (ingest.common.decision_log.write_decisions) exist; nothing produces rows yet. The backtester (event replay) and the strategy engine are the intended writers — both unbuilt.