diff --git a/README.md b/README.md index 9638f39..5b15213 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ The primary source for price history (Norgate Data). Indexed by tz-naive `Date`. | `Close` | float | Settlement Close price. | | `Volume` | float | Continuous contract trading volume (front-month only). | | `Open Interest` | float | Continuous contract open interest. | -| `Volume_Reconstructed` | float | True market volume (sum of First and Second contract). Note: systematically higher than raw `Volume`, not a drop-in replacement. | +| `Volume_Reconstructed` | float | True market volume (sum of First and Second contract). Differs from raw `Volume` by symbol — typically higher for products whose rolls spread volume across contracts, but roughly equal or lower for symbols with a near-empty back month (e.g. crypto). Not a drop-in replacement. | | `Volume_Source` | string | `reconstructed` if First+Second available, `raw` fallback if not. | | `FirstVolume` / `SecondVolume` | float | Trading volume of the specific first and second expiring contracts. | | `FirstContract` / `SecondContract` | string | Contract names for the first and second expirations (e.g., `ES-2024H`). | diff --git a/src/cotdata/config.py b/src/cotdata/config.py index f301fda..1e302e4 100644 --- a/src/cotdata/config.py +++ b/src/cotdata/config.py @@ -4,8 +4,9 @@ # v2 — reconstructed volume promoted: prices carry Volume_Reconstructed / # Volume_Source, and get_prices(volume="reconstructed") serves them. The store -# does not actually carry v2 shape until a full producer pass re-writes it; see -# docs/plan_promote_reconstructed_volume.md for the rollout order. +# was migrated by a full producer pass (2026-07-14) and now carries v2 shape; +# schema_version() reflects the on-disk manifest, so a fresh/partial store can +# still read <2. See docs/plan_promote_reconstructed_volume.md for the rollout. SCHEMA_VERSION = 2