From ed2ebdb077b09eee2237d4d97665ede5fe76f973 Mon Sep 17 00:00:00 2001 From: Matt Spinola Date: Fri, 21 Aug 2026 06:58:57 -0400 Subject: [PATCH] Drop the four CBOE implied-vol indices from the registry VIX, VXN, OVX and GVZ were fetchable but nothing kept them. The workspace notes had recorded them as "deliberately let go" since July while they sat here in the registry, so every unscoped `--bars --domain equities` fetched them straight back. That is what happened on 2026-08-20: a new scheduled equities task ran unscoped, the four reappeared, and the whole equities half moved forward a month on every replica. The prose and the registry disagreed, and the registry is what runs. Removing them here is the only thing that actually stops it. Scoping the producer task would fix that one caller; any other unscoped fetch, from any checkout, would undo it. CONSEQUENCE, recorded in the file rather than left to be discovered: npf/trading_riot maps all four to a realized counterpart (VIX->ES, VXN->NQ, OVX->CL, GVZ->GC) for a variance risk premium study, and its data.py documents fetching them with `--bars --symbols VIX`. That command now prints "no registry symbols resolve to this provider" and exits 0 having written nothing, which is a silent no-op rather than an error. Re-adding the block is the fix if that work resumes; the note in registry.yaml says so at the point someone would look. Store side is already done on the producer: the four parquets and their manifest entries are gone, leaving 11 equities symbols, which is what this registry now lists. Suite 200 passed, 12 skipped, ruff clean. The month-end pin is untouched: the frozen copy never carried these. Co-Authored-By: Claude Opus 5 --- src/marketdata/registry.yaml | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/marketdata/registry.yaml b/src/marketdata/registry.yaml index 1058124..149e1cd 100644 --- a/src/marketdata/registry.yaml +++ b/src/marketdata/registry.yaml @@ -70,23 +70,17 @@ Broad Bond ETF: yahoo: "AGG" inception: "2003-09-22" -Volatility Index: - VIX: - yahoo: "^VIX" - inception: "1990-01-02" - note: "CBOE 30-day implied vol index. No corporate actions, so the split/raw tiers are a passthrough. It is an implied-vol series, not a tradable price." - VXN: - yahoo: "^VXN" - inception: "2001-01-23" - note: "CBOE Nasdaq-100 implied vol. Implied series, not tradable. Realized counterpart: NQ." - OVX: - yahoo: "^OVX" - inception: "2007-05-10" - note: "CBOE crude-oil ETF (USO) implied vol. Implied series, not tradable. Realized counterpart: CL." - GVZ: - yahoo: "^GVZ" - inception: "2008-06-03" - note: "CBOE gold ETF (GLD) implied vol. Implied series, not tradable. Realized counterpart: GC." +# The four CBOE implied-vol indices (VIX, VXN, OVX, GVZ) were removed on 2026-08-21. +# They were fetchable but nothing in the store's own governance kept them: the workspace +# notes had recorded them as "deliberately let go" since July while they sat here in the +# registry, so every unscoped `--bars --domain equities` fetched them back. The prose and +# the registry disagreed, and the registry is what runs. +# +# CONSEQUENCE, recorded because it is not visible from here: npf/trading_riot maps all +# four to a realized counterpart (VIX->ES, VXN->NQ, OVX->CL, GVZ->GC) for a variance +# risk premium study, and its data.py documents fetching them with +# `--bars --symbols VIX`. That command now reports "no registry symbols resolve to this +# provider" and exits 0, writing nothing. Re-add the block below to unblock that work. # ── Futures ─────────────────────────────────────────────────────────────── # Ported from cotdata's registry (ADR-0007 step 2: bars move here, CFTC