Crack the Sky

Warehouse → math chain

CLI usage

python -m pricing.from_market --date YYYY-MM-DD [--asof-ns N] [--r 0.04] — --r is optional; without it the landed Treasury curve interpolates per contract.

As-of load

Own IV

Own greeks

Skip counts

Rows are omitted rather than written as NaN. ChainCounts is what the canary report echoes. None of these is a FAIL by itself; an empty result after skips is a ChainError.

CountOmitted because
n_expiredT ≤ 0 at the as-of (settlement instant already passed).
n_no_priceNo last and no day close — nothing to invert.
n_staleLast print older than --max-trade-age-min (default 60). No day_close fallback. Rows priced off close, and lasts with no trade stamp, are not age-filtered.
n_uninvertiblePrice outside no-arbitrage bounds. Default is raise (--skip-uninvertible counts and drops). The below-intrinsic subset is also n_below_intrinsic.
n_below_intrinsicInside uninvertible: a traded price below the style's intrinsic floor. Issue #44's stale-print tail, now mostly caught as n_stale first.
n_no_asofQuote has no snapshot clock — cannot form T.
n_otmOnly when a moneyness filter is set; far-from-the-money names dropped before invert.

What a nonzero exit means

SymptomWhat it actually is
foreign root / mixed underlyings / empty allowlisted root The parquet is not this desk's universe, or --roots asked for a name that produced zero rows. Absence is failure.
SchemaError Extra, missing, or mistyped column vs ingest.schemas. The warehouse moved without the reader.
AsOfError No snapshot/forward file at or before the instant, or an unstamped filename. Wrong --date / --asof-ns, or the sweep never ran.
ValueError / ChainError on invert A price outside bounds with the default raise policy — not a NaN. Pass --skip-uninvertible only to survey the tail.
empty table Everything was skipped. Look at the counts above before assuming the partition is missing.