Do not treat these as missing files in a half-landed feature — they are not in the tree.
Curves and calendars
Item
Status
What 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
Item
Status
What 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
Item
Status
What 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.