{"schemaVersion":4,"feedRevision":33,"lastUpdated":"2026-10-08T09:00:00Z","semantics":{"publishedAt":"The first time this correction id became visible in the public feed. It does not change after publication.","updatedAt":"The most recent mutation of this correction record, including status, deployment identity, affected scope, or validation.","deployedAt":"When the deployment currently identified by the record became effective. It may change while work is in progress; once status is deployed, a different deployment is published as a new correction id.","changeDetection":"Poll top-level lastUpdated. When it changes, compare correction ids and updatedAt values; do not watch only for new ids.","recollection":"For a deployed correction, use deployment.deployedAt together with affected and recommendedRecollection to delimit or invalidate collected batches.","changesClosedWindowResponsesWithoutBackfill":"When true, the deployed correction can change a repeated response for a closed affected route and window without rewriting the persisted source, so clients should re-collect according to recommendedRecollection. When false, this record alone does not change an already closed response without a backfill; a separate correction or backfill whose scope intersects the same route and window may still do so.","unpublishedDeployments":"The feed cannot signal a correction before its record is published. A delayed record is published with its actual effective deployedAt so clients can invalidate intersecting batches retroactively.","verification":"Every correction first published on or after 2026-09-03 carries at least one customer-safe replay coordinate when its status is deployed. Future production-correction notices use the same record format rather than an untracked notice.","publicDetail":"Cause and validation are record-specific customer-facing descriptions. Validation includes figures when the outcome is quantitative; private infrastructure and operational identifiers are not published.","selection":"Optional affected.selection names supported selector scope. A wildcard means all supported values. all_retained requires the full available history, not only currently duplicated keys. conservative_retained_history gives inclusive sourceFrom/sourceThrough bounds for re-collection, not proof that every row changed."},"corrections":[{"id":"HIST-2026-10-08-V2-OPTIONS-IV-SIDE-SELECTION","status":"deployed","publishedAt":"2026-10-08T09:00:00Z","updatedAt":"2026-10-08T09:00:00Z","summary":"Corrected unavailable put-wing IVs and dependent skew and butterfly values in quote-selected options surfaces.","cause":"When no eligible put quote existed for a 10D or 25D wing, a put IV could instead contain a call IV. That was not a matched-strike put-call parity calculation: the requested delta wings represent different option contracts. Such put IVs now return null, as do skew and butterfly values that require them. Interpolated tenor values can also change when an unavailable expiry value is excluded.","deployment":{"deployedAt":"2026-10-08T08:21:56Z","releaseId":"HIST-2026-10-08-V2-OPTIONS-IV-SIDE-SELECTION-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/options/vol-surface/by-expiry","/api/v1/options/vol-surface/by-time","/api/v1/options/vol-surface/by-tenor"],"fields":["put_25d_iv","put_10d_iv","skew_25d","skew_10d","butterfly_25d","butterfly_10d"],"historicalWindow":"All available history and current responses where the requested put side has no eligible quote, including dependent interpolated tenor values. This is not a claim that every row changed. Existing historical coverage and expiry eligibility are unchanged.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Refresh held values of the listed fields collected before deployedAt using the same explicit time bounds, exchange, currency, maturity or tenor selection, resolution and sort order; follow every page. Preserve REST nulls as unavailable, not zero or an opposite-side IV. MCP continues to omit unavailable fields. Interpolated tenor values may change even where the response remains numeric. No field names, units or historical-access windows change. This correction does not establish when a historical value was originally available.","validation":["Six dated expiry snapshots were compared before and after the correction. At Deribit BTC, 2026-02-02 01:05 UTC, maturity 20FEB26, the two put IV fields and their four dependent skew/butterfly fields changed to null. ATM IV remained 44.83 and both call-wing IVs remained 47.19; all other returned fields and the six expiry rows were unchanged.","The same unavailable put values were confirmed on by-time. REST and MCP agreed on the by-time and eight-row by-tenor responses, allowing their documented presentation differences. ATM and call-side eligibility remain unchanged; no guarantee of a complete chain or original historical availability is added.","For the by-expiry replay below, expectedValues identifies the row with maturity 20FEB26. For by-tenor, it identifies tenor 30; other tenor rows are also returned."],"verification":[{"endpoint":"/api/v1/options/vol-surface/by-expiry","parameters":{"exchange":"deribit","currency":"BTC","date":"2026-02-02T01:05:00Z","resolution":"1m"},"expectedStatus":200,"expectedRows":6,"expectedValues":{"maturity":"20FEB26","atm_iv":44.83,"call_25d_iv":47.19,"call_10d_iv":47.19,"put_25d_iv":null,"put_10d_iv":null,"skew_25d":null,"skew_10d":null,"butterfly_25d":null,"butterfly_10d":null}},{"endpoint":"/api/v1/options/vol-surface/by-time","parameters":{"exchange":"deribit","currency":"BTC","maturity":"20FEB26","start":"2026-02-02T01:05:00Z","end":"2026-02-02T01:05:59Z","resolution":"1m","limit":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"maturity":"20FEB26","atm_iv":44.83,"call_25d_iv":47.19,"call_10d_iv":47.19,"put_25d_iv":null,"put_10d_iv":null,"skew_25d":null,"skew_10d":null,"butterfly_25d":null,"butterfly_10d":null}},{"endpoint":"/api/v1/options/vol-surface/by-tenor","parameters":{"exchange":"deribit","currency":"BTC","date":"2026-02-02T01:05:00Z","resolution":"1m"},"expectedStatus":200,"expectedRows":8,"expectedValues":{"tenor":30,"atm_iv":44.32238898709455,"put_25d_iv":45.93232587036185,"put_10d_iv":53.89731672934537}}]},{"id":"HIST-2026-10-07-V2-TICKER-FIELD-CLARIFICATION","status":"deployed","publishedAt":"2026-10-07T12:10:00Z","updatedAt":"2026-10-07T12:10:00Z","summary":"Clarified the public ticker-history field names and how to compare repeated historical responses.","cause":"HIST-2026-08-19-V2-TICKER-DETERMINISM listed names ending in _close rather than the corresponding ticker-history response names, and grouped the two products without separating their product-specific fields. Its byte-identical checks described the reported reads, not a guarantee that the entire response stays identical as availability metadata advances. This is a clarification of that existing correction, not a new change to data.","deployment":{"deployedAt":"2026-08-19T11:47:12Z","releaseId":"HIST-2026-08-19-V2-TICKER-DETERMINISM-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/ticker-history"],"fields":["mark_price","index_price","bid_price","ask_price","bid_size","ask_size","bid_ask_spread","oi","volume_usd_24h","days_to_expiry"],"historicalWindow":"The original correction scope remains every available closed ticker-history window containing multiple versions of a minute. This addendum only identifies the public fields; it does not change values, coverage or retention."},{"apiVersion":"v2","endpoints":["/api/v1/perpetuals/ticker-history"],"fields":["mark_price","index_price","bid_price","ask_price","bid_size","ask_size","bid_ask_spread","oi","volume_usd_24h","funding_rate","next_funding_time"],"historicalWindow":"The original correction scope remains every available closed ticker-history window containing multiple versions of a minute. This addendum only identifies the public fields; it does not change values, coverage or retention."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"No new re-collection is required solely because of this clarification. If the old names prevented applying HIST-2026-08-19-V2-TICKER-DETERMINISM, apply its existing re-collection guidance to the public fields listed here. deployedAt and releaseId identify that original correction, not a new numerical change. Compare all REST data rows for the same explicit bounds, selectors, resolution and sort order, following every page. Preserve all row fields, nulls, zeros, row order and row counts; normalize JSON object-key order if hashing parsed data. Compare meta separately: meta.coverage.latest_observed_at, meta.completeness.complete_through and meta.completeness.updated_at can advance without changes to those rows. A whole-response digest or ETag is not a data-only revision identifier. No per-window data revision field is exposed. A failed or incomplete page sequence cannot establish an unchanged window. Historical corrections and availability changes remain possible; this is not a finality or original-availability guarantee.","validation":["mark_price_close in the earlier notice means mark_price in both ticker-history responses.","index_price_close in the earlier notice means index_price in both ticker-history responses.","bid_price_close in the earlier notice means bid_price in both ticker-history responses.","ask_price_close in the earlier notice means ask_price in both ticker-history responses.","bid_size_close in the earlier notice means bid_size in both ticker-history responses.","ask_size_close in the earlier notice means ask_size in both ticker-history responses.","bid_ask_spread_close in the earlier notice means bid_ask_spread in both ticker-history responses.","oi_close in the earlier notice means oi in both ticker-history responses.","funding_rate_close in the earlier notice means funding_rate on perpetuals only. Dated futures have neither funding_rate nor next_funding_time; days_to_expiry applies to dated futures only. volume_usd_24h keeps its name on both routes.","This addendum leaves response field names, values, nulls, pagination and ETag behavior unchanged. The original correction record remains unchanged."],"verification":[{"endpoint":"/api/v1/futures/ticker-history","parameters":{"exchange":"binance","instrument_name":"ETHUSDT_260925","start":"2026-07-10T00:00:00Z","end":"2026-07-10T00:00:59Z","resolution":"1m","limit":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"mark_price":1749.696,"oi":14588.462}},{"endpoint":"/api/v1/perpetuals/ticker-history","parameters":{"exchange":"binance","instrument_name":"BTCUSDT","start":"2026-02-01T00:00:00Z","end":"2026-02-01T00:00:59Z","resolution":"1m","limit":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"mark_price":78652.8,"oi":93533.39}}]},{"id":"HIST-2026-10-07-V2-L2-REPEAT-READ-CLARIFICATION","status":"deployed","publishedAt":"2026-10-07T12:10:00Z","updatedAt":"2026-10-07T12:10:00Z","summary":"Clarified which aggregated order-book fields the earlier correction covers and how to compare repeated reads.","cause":"HIST-2026-08-04-L2-DETERMINISM described its fields as All aggregated L2 fields. The explicit response field list is supplied here. Its reported byte-identical checks do not guarantee that coverage and completeness metadata stay unchanged between later reads. This adds no numerical correction or retention change.","deployment":{"deployedAt":"2026-08-04T13:26:25Z","releaseId":"HIST-2026-08-04-L2-DETERMINISM-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/orderbook","/api/v1/perpetuals/orderbook","/api/v1/spot/l2-orderbook"],"fields":["bid_liq_10_open","bid_liq_10_high","bid_liq_10_low","bid_liq_10_close","bid_liq_10_avg","ask_liq_10_open","ask_liq_10_high","ask_liq_10_low","ask_liq_10_close","ask_liq_10_avg","imbalance_10_open","imbalance_10_high","imbalance_10_low","imbalance_10_close","imbalance_10_avg","bid_liq_20_open","bid_liq_20_high","bid_liq_20_low","bid_liq_20_close","bid_liq_20_avg","ask_liq_20_open","ask_liq_20_high","ask_liq_20_low","ask_liq_20_close","ask_liq_20_avg","imbalance_20_open","imbalance_20_high","imbalance_20_low","imbalance_20_close","imbalance_20_avg","bid_liq_50_open","bid_liq_50_high","bid_liq_50_low","bid_liq_50_close","bid_liq_50_avg","ask_liq_50_open","ask_liq_50_high","ask_liq_50_low","ask_liq_50_close","ask_liq_50_avg","imbalance_50_open","imbalance_50_high","imbalance_50_low","imbalance_50_close","imbalance_50_avg","bid_liq_100_open","bid_liq_100_high","bid_liq_100_low","bid_liq_100_close","bid_liq_100_avg","ask_liq_100_open","ask_liq_100_high","ask_liq_100_low","ask_liq_100_close","ask_liq_100_avg","imbalance_100_open","imbalance_100_high","imbalance_100_low","imbalance_100_close","imbalance_100_avg","microprice_open","microprice_high","microprice_low","microprice_close","microprice_avg","snapshot_count"],"historicalWindow":"The original correction scope remains aggregated L2 history available at its August 4, 2026 cutover. This field and comparison clarification does not change that scope, any data value, historical coverage or retention."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"No new re-collection is required solely because of this clarification. The original correction and any later separately announced corrections remain applicable. deployedAt and releaseId identify the original August 4 correction, not a new numerical change. Compare all REST data rows for the same explicit bounds, selectors, resolution and sort order, following every page. Preserve all row fields, nulls, zeros, row order and row counts; normalize JSON object-key order if hashing parsed data. Compare meta separately: meta.coverage.latest_observed_at, meta.completeness.complete_through and meta.completeness.updated_at can advance without changes to those rows. A whole-response digest or ETag is not a data-only revision identifier. No per-window data revision field is exposed. A failed or incomplete page sequence cannot establish an unchanged window. Historical corrections and availability changes remain possible; this is not a finality or original-availability guarantee.","validation":["The field list names bid and ask liquidity and imbalance at depths 10, 20, 50 and 100, each with open, high, low, close and avg, plus microprice with those five statistics and snapshot_count. Those are the public aggregate measures on all three routes.","When checking whether data changed, also preserve date and any returned instrument identifiers or product-specific row fields. The listed correction fields do not mean other data fields may be ignored.","Coverage and completeness metadata describe availability and are not per-window data revision markers. This clarification leaves response fields, data values, pagination and ETag behavior unchanged; the earlier correction record remains unchanged."],"verification":[{"endpoint":"/api/v1/perpetuals/orderbook","parameters":{"exchange":"binance","instrument_name":"BTCUSDT","start":"2026-07-10T00:00:00Z","end":"2026-07-10T00:00:59Z","resolution":"1m","limit":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"snapshot_count":60}}]},{"id":"HIST-2026-10-06-V1-OPTIONS-VALUATION-COMPLETENESS","status":"deployed","publishedAt":"2026-10-07T12:05:00Z","updatedAt":"2026-10-07T12:05:00Z","deployment":{"deployedAt":"2026-10-06T12:03:27Z","releaseId":"HIST-2026-10-06-V1-OPTIONS-VALUATION-COMPLETENESS-r1"},"changesClosedWindowResponsesWithoutBackfill":true,"summary":"Corrected Binance DOGE/XRP option valuations, unavailable notionals and reproducibility of market-wide options OI totals.","cause":"On v1, Binance OI quantities are coins, volume quantities are contracts, and premiums are quoted per contract. DOGE contracts represent 1,000 DOGE and XRP contracts 100 XRP. Treating those quantities alike overstated OI premium and understated volume notional. Separately, a missing price could make a positive quantity appear to have zero or incomplete notional.","affected":[{"apiVersion":"v1","endpoints":["/historical/options/oi_total/:market/:currency","/historical/options/volume_total/:market/:currency"],"fields":["notional","premium"],"historicalWindow":"Full available history. Contract-size valuation changes apply to Binance DOGE and XRP; missing-price handling applies to every supported selection. This scope does not assert that every row changed. Quantity fields keep their existing units. Market-wide OI sums are also reproducible between identical requests; this does not certify every other analytic series as invariant.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/historical/options/oi_pc_ratio/:market/:currency","/historical/options/volume_pc_ratio/:market/:currency"],"fields":["p_p","c_p","pc_p","p_notional","c_notional"],"historicalWindow":"Full available history. Contract-size valuation changes apply to Binance DOGE and XRP; missing-price handling applies to every supported selection. This scope does not assert that every row changed. Quantity fields keep their existing units. Market-wide OI sums are also reproducible between identical requests; this does not certify every other analytic series as invariant.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/historical/options/total/oi_by_market/:market","/historical/options/total/volume_by_market/:market","/historical/options/total/oi_by_currency/:currency","/historical/options/total/volume_by_currency/:currency"],"fields":["n","ov"],"historicalWindow":"Full available history. Contract-size valuation changes apply to Binance DOGE and XRP; missing-price handling applies to every supported selection. This scope does not assert that every row changed. Quantity fields keep their existing units. Market-wide OI sums are also reproducible between identical requests; this does not certify every other analytic series as invariant.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/historical/options/total_open_interest_by_currency","/historical/options/total_volume_by_currency"],"fields":["BTC","ETH","Other"],"historicalWindow":"Full available history. Contract-size valuation changes apply to Binance DOGE and XRP; missing-price handling applies to every supported selection. This scope does not assert that every row changed. Quantity fields keep their existing units. Market-wide OI sums are also reproducible between identical requests; this does not certify every other analytic series as invariant.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/historical/options/oi_strike/:market/:currency/:maturity","/historical/options/volume_strike/:market/:currency/:maturity"],"fields":["notional_c","notional_p"],"historicalWindow":"Full available history. Contract-size valuation changes apply to Binance DOGE and XRP; missing-price handling applies to every supported selection. This scope does not assert that every row changed. Quantity fields keep their existing units. Market-wide OI sums are also reproducible between identical requests; this does not certify every other analytic series as invariant.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/historical/options/maturity/oi_volume/:market/:currency/:maturity","/historical/options/maturity/total_oi/:market/:currency/:maturity","/historical/options/maturity/total_volume/:market/:currency/:maturity"],"fields":["oi_usd","v_usd","oi_p_usd","oi_c_usd","v_p_usd","v_c_usd","oi_premium","oi_p_premium","oi_c_premium","v_premium","v_p_premium","v_c_premium","oi_pc_premium_ratio","v_pc_premium_ratio"],"historicalWindow":"Full available history. Contract-size valuation changes apply to Binance DOGE and XRP; missing-price handling applies to every supported selection. This scope does not assert that every row changed. Quantity fields keep their existing units. Market-wide OI sums are also reproducible between identical requests; this does not certify every other analytic series as invariant. Only fields present on the selected maturity route apply.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"endpoints":["/analytics/options/oi_breakdown","/analytics/options/volume_breakdown","/analytics/options/oi_breakdown_by_currency","/analytics/options/volume_breakdown_by_currency"],"fields":["notional","open_value"],"apiVersion":"v1","historicalWindow":"Current options analytics only, for the named premium and notional components. Prior live snapshots cannot be recreated as originally seen."},{"endpoints":["/analytics/options/oi_expiry/:market/:currency","/analytics/options/oi_strike_all/:market/:currency","/analytics/options/oi_strike/:market/:currency/:maturity","/analytics/options/v_strike_all/:market/:currency","/analytics/options/v_strike/:market/:currency/:maturity"],"fields":["notional_c","notional_p","premium_c","premium_p"],"apiVersion":"v1","historicalWindow":"Current options analytics only, for the named premium and notional components. Prior live snapshots cannot be recreated as originally seen."},{"endpoints":["/analytics/options/v_expiry/:market/:currency"],"fields":["open_value_c","open_value_p","USDVC","USDVP"],"apiVersion":"v1","historicalWindow":"Current options analytics only, for the named premium and notional components. Prior live snapshots cannot be recreated as originally seen."},{"endpoints":["/analytics/options/oi_type/:market/:currency"],"fields":["notional","premium"],"apiVersion":"v1","historicalWindow":"Current options analytics only, for the named premium and notional components. Prior live snapshots cannot be recreated as originally seen."},{"endpoints":["/analytics/options/top_traded_option/:market/:currency"],"fields":["volume_usd","premium"],"apiVersion":"v1","historicalWindow":"Current options analytics only, for the named premium and notional components. Prior live snapshots cannot be recreated as originally seen."},{"endpoints":["/analytics/options/oi_net_change_all/:market/:currency/:hours","/analytics/options/oi_net_change/:market/:currency/:maturity/:hours"],"fields":["c_notional","p_notional","c_premium","p_premium"],"apiVersion":"v1","historicalWindow":"Current options analytics only, for the named premium and notional components. Prior live snapshots cannot be recreated as originally seen."},{"endpoints":["/analytics/options/top_instrument_oi_change/:market/:currency/:hours"],"fields":["notional","oi_change_notional"],"apiVersion":"v1","historicalWindow":"Current options analytics only, for the named premium and notional components. Prior live snapshots cannot be recreated as originally seen."}],"recommendedRecollection":"Refresh affected premium and notional history, including dependent premium ratios, over the available history. Keep null as unavailable, not zero; a total is null if any contributing positive quantity lacks its required price. Genuine zero quantity remains zero, and premium and notional availability are independent. The same public field names remain in use. These are option-state valuations, not realized trade cash flows. Individual option trades, candles, retention and account limits are unchanged by this record. This is a separate correction from HIST-2026-09-15-V1-OPTIONS-VALUATION and the October individual-trade records.","validation":["Post-release public DOGE, XRP and XAG historical controls returned HTTP 200 and identical bodies on v1 and v2. The DOGE call premium was 3077.7668 with call notional 220532.591; XRP was 4531.4737 with call notional 219995.","The XAG control preserved quantity 1469.3000000000002 and premium 932.56 while reporting notional null. These controls are not an independent certification of every historical input."],"verification":[{"endpoint":"/historical/options/oi_pc_ratio/BINANCE/DOGE","parameters":{"start":"2024-01-14","end":"2024-01-14","granularity":"1h","limit":1,"page":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"date":1705190400000,"c_p":3077.7668,"c_notional":220532.591}},{"endpoint":"/historical/options/oi_total/BINANCE/XAG","parameters":{"start":"2026-09-03","end":"2026-09-03","granularity":"1h","limit":1,"page":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"date":1788393600000,"notional":null,"premium":932.56}}]},{"id":"HIST-2026-10-06-V2-OPTIONS-VALUATION-COMPLETENESS","status":"deployed","publishedAt":"2026-10-07T12:05:00Z","updatedAt":"2026-10-07T12:05:00Z","deployment":{"deployedAt":"2026-10-06T14:06:31Z","releaseId":"HIST-2026-10-06-V2-OPTIONS-VALUATION-COMPLETENESS-r1"},"changesClosedWindowResponsesWithoutBackfill":true,"summary":"Corrected Binance DOGE/XRP option valuations, unavailable notionals and reproducibility of market-wide options OI totals.","cause":"On v2, Binance OI quantities are coins, volume quantities are contracts, and premiums are quoted per contract. DOGE contracts represent 1,000 DOGE and XRP contracts 100 XRP. Treating those quantities alike overstated OI premium and understated volume notional. Separately, a missing price could make a positive quantity appear to have zero or incomplete notional.","affected":[{"apiVersion":"v2","endpoints":["/api/v1/market/positioning-history","/api/v1/mcp","/api/v1/historical/options/oi_total/:market/:currency","/api/v1/historical/options/volume_total/:market/:currency","/api/v1/historical/options/oi_pc_ratio/:market/:currency","/api/v1/historical/options/volume_pc_ratio/:market/:currency","/api/v1/historical/options/oi_strike/:market/:currency/:maturity","/api/v1/historical/options/volume_strike/:market/:currency/:maturity","/api/v1/historical/options/total/oi_by_market/:market","/api/v1/historical/options/total/oi_by_currency/:currency","/api/v1/historical/options/total/volume_by_currency/:currency"],"fields":["notional","premium","n","ov","p_p","c_p","pc_p","p_notional","c_notional","notional_c","notional_p"],"historicalWindow":"Full available history. Contract-size valuation changes apply to Binance DOGE and XRP; missing-price handling applies to every supported selection. This scope does not assert that every row changed. Quantity fields keep their existing units. Market-wide OI sums are also reproducible between identical requests; this does not certify every other analytic series as invariant. Applies only to options_oi_strike, options_volume_strike, options_oi_pc_ratio, options_volume_pc_ratio, options_oi_total, options_volume_total, options_oi_by_market, options_oi_by_currency and options_volume_by_currency, including get_market_positioning_history.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v2","endpoints":["/api/v1/options/current-analytics","/api/v1/mcp","/api/v1/analytics/options/oi_breakdown","/api/v1/analytics/options/volume_breakdown","/api/v1/analytics/options/oi_breakdown_by_currency","/api/v1/analytics/options/volume_breakdown_by_currency","/api/v1/analytics/options/oi_expiry/:market/:currency","/api/v1/analytics/options/oi_strike_all/:market/:currency","/api/v1/analytics/options/oi_strike/:market/:currency/:maturity","/api/v1/analytics/options/oi_type/:market/:currency","/api/v1/analytics/options/top_instrument_oi_change/:market/:currency/:hours"],"fields":["notional","premium","notional_c","notional_p","premium_c","premium_p","open_value","oi_change_notional"],"historicalWindow":"Current options analytics only: oi_by_expiry, oi_by_strike, oi_by_type, instrument_oi_change, market_breakdown and currency_breakdown, including get_options_current_analytics. Only fields present in the selected response apply; prior live snapshots cannot be recreated as originally seen. Buy/sell trade volume is outside this record."}],"recommendedRecollection":"Refresh affected premium and notional history, including dependent premium ratios, over the available history. Keep null as unavailable, not zero; a total is null if any contributing positive quantity lacks its required price. Genuine zero quantity remains zero, and premium and notional availability are independent. The same public field names remain in use. These are option-state valuations, not realized trade cash flows. Individual option trades, candles, retention and account limits are unchanged by this record. This is a separate correction from HIST-2026-09-15-V1-OPTIONS-VALUATION and the October individual-trade records.","validation":["Post-release public DOGE, XRP and XAG historical controls returned HTTP 200 and identical bodies on v1 and v2. The DOGE call premium was 3077.7668 with call notional 220532.591; XRP was 4531.4737 with call notional 219995.","The XAG control preserved quantity 1469.3000000000002 and premium 932.56 while reporting notional null. These controls are not an independent certification of every historical input."],"verification":[{"endpoint":"/api/v1/historical/options/oi_pc_ratio/BINANCE/DOGE","parameters":{"start":"2024-01-14","end":"2024-01-14","granularity":"1h","limit":1,"page":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"date":1705190400000,"c_p":3077.7668,"c_notional":220532.591}},{"endpoint":"/api/v1/historical/options/oi_total/BINANCE/XAG","parameters":{"start":"2026-09-03","end":"2026-09-03","granularity":"1h","limit":1,"page":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"date":1788393600000,"notional":null,"premium":932.56}}]},{"id":"HIST-2026-10-06-V1-KRAKEN-CONTRACT-IDENTITY","status":"deployed","publishedAt":"2026-10-07T12:05:00Z","updatedAt":"2026-10-07T12:05:00Z","deployment":{"deployedAt":"2026-10-06T12:03:27Z","releaseId":"HIST-2026-10-06-V1-KRAKEN-CONTRACT-IDENTITY-r1"},"changesClosedWindowResponsesWithoutBackfill":true,"summary":"Futures and perpetual totals count each Kraken contract once when its names differ only in letter case.","cause":"On v1, uppercase and lowercase spellings of the same Kraken contract could both contribute to a venue or margin total at one timestamp.","affected":[{"apiVersion":"v1","endpoints":["/historical/futures/total_oi/:currency","/historical/futures/total_volume/:currency","/historical/futures/total_oi_by_exchange/:currency/:option","/historical/futures/total_volume_by_exchange/:currency/:option"],"fields":["perpetual.KRAKEN","perpetual.KRAKEN_notional","future.KRAKEN","future.KRAKEN_notional"],"historicalWindow":"Full available history on the listed total, by-exchange and by-margin routes where Kraken contributes. Names differing only in letter case identify one contract. Equal values count once; an unresolved disagreement makes that measure null. Category disagreement makes the affected category totals unavailable. Other futures analytics and global-activity series are outside this record.","selection":{"markets":["KRAKEN"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/historical/futures/total_oi_by_margin/:currency","/historical/futures/total_volume_by_margin/:currency"],"fields":["f_u","f_u_n","f_c","f_c_n","p_u","p_u_n","p_c","p_c_n"],"historicalWindow":"Full available history on the listed total, by-exchange and by-margin routes where Kraken contributes. Names differing only in letter case identify one contract. Equal values count once; an unresolved disagreement makes that measure null. Category disagreement makes the affected category totals unavailable. Other futures analytics and global-activity series are outside this record.","selection":{"markets":["KRAKEN"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}}],"recommendedRecollection":"Refresh Kraken OI and volume keys and affected margin totals over the available history. Unsuffixed venue values remain USD-equivalent and _notional values remain base-asset quantities. Do not replace null with zero. This is not a certificate of venue completeness or of every other route using Kraken data.","validation":["The BTC control at 2023-07-14 12:00 UTC returned perpetual.KRAKEN 102517509.50999999 and perpetual.KRAKEN_notional 3280.6882072949325 on both production APIs; the complete v1 and v2 response bodies matched. One verified hour is not a census of all affected timestamps."],"verification":[{"endpoint":"/historical/futures/total_oi/BTC","parameters":{"start":"2023-07-14T12:00:00Z","end":"2023-07-14T12:00:00Z","granularity":"1h","page":1,"limit":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"date":1689336000000,"perpetual.KRAKEN":102517509.50999999,"perpetual.KRAKEN_notional":3280.6882072949325}}]},{"id":"HIST-2026-10-06-V2-KRAKEN-CONTRACT-IDENTITY","status":"deployed","publishedAt":"2026-10-07T12:05:00Z","updatedAt":"2026-10-07T12:05:00Z","deployment":{"deployedAt":"2026-10-06T14:06:31Z","releaseId":"HIST-2026-10-06-V2-KRAKEN-CONTRACT-IDENTITY-r1"},"changesClosedWindowResponsesWithoutBackfill":true,"summary":"Futures and perpetual totals count each Kraken contract once when its names differ only in letter case.","cause":"On v2, uppercase and lowercase spellings of the same Kraken contract could both contribute to a venue or margin total at one timestamp.","affected":[{"apiVersion":"v2","endpoints":["/api/v1/market/positioning-history","/api/v1/mcp","/api/v1/historical/futures/total_oi/:currency","/api/v1/historical/futures/total_volume/:currency","/api/v1/historical/futures/total_oi_by_exchange/:currency/:option","/api/v1/historical/futures/total_volume_by_exchange/:currency/:option","/api/v1/historical/futures/total_oi_by_margin/:currency"],"fields":["perpetual.KRAKEN","perpetual.KRAKEN_notional","future.KRAKEN","future.KRAKEN_notional","f_u","f_u_n","f_c","f_c_n","p_u","p_u_n","p_c","p_c_n"],"selection":{"markets":["KRAKEN"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"},"historicalWindow":"Full available history on the listed total, by-exchange and by-margin routes where Kraken contributes. Names differing only in letter case identify one contract. Equal values count once; an unresolved disagreement makes that measure null. Category disagreement makes the affected category totals unavailable. Other futures analytics and global-activity series are outside this record. Applies only to futures_oi_total, futures_volume_total, futures_oi_by_exchange, futures_volume_by_exchange and futures_oi_by_margin, including get_market_positioning_history. No futures_volume_by_margin series is offered here."}],"recommendedRecollection":"Refresh Kraken OI and volume keys and affected margin totals over the available history. Unsuffixed venue values remain USD-equivalent and _notional values remain base-asset quantities. Do not replace null with zero. This is not a certificate of venue completeness or of every other route using Kraken data.","validation":["The BTC control at 2023-07-14 12:00 UTC returned perpetual.KRAKEN 102517509.50999999 and perpetual.KRAKEN_notional 3280.6882072949325 on both production APIs; the complete v1 and v2 response bodies matched. One verified hour is not a census of all affected timestamps."],"verification":[{"endpoint":"/api/v1/historical/futures/total_oi/BTC","parameters":{"start":"2023-07-14T12:00:00Z","end":"2023-07-14T12:00:00Z","granularity":"1h","page":1,"limit":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"date":1689336000000,"perpetual.KRAKEN":102517509.50999999,"perpetual.KRAKEN_notional":3280.6882072949325}}]},{"id":"HIST-2026-10-06-V1-BINANCE-ETHBTC-UNITS","status":"deployed","publishedAt":"2026-10-07T12:05:00Z","updatedAt":"2026-10-07T12:05:00Z","deployment":{"deployedAt":"2026-10-06T12:57:01Z","releaseId":"HIST-2026-10-06-V1-BINANCE-ETHBTC-UNITS-r1"},"changesClosedWindowResponsesWithoutBackfill":true,"summary":"Binance ETHBTC contributions to futures OI and volume totals consistently distinguish USD values and ETH quantities.","cause":"On v1, ETHBTC prices are quoted in BTC, not USD. Older BTC-quoted volume and newer ETH quantities needed different conversions; applying one convention could mix BTC or USD amounts into the ETH quantity total. Some OI values also needed the historical BTC/USD reference.","affected":[{"apiVersion":"v1","endpoints":["/historical/futures/total_oi/:currency","/historical/futures/total_volume/:currency","/historical/futures/total_oi_by_exchange/:currency/:option","/historical/futures/total_volume_by_exchange/:currency/:option"],"fields":["perpetual.BINANCE","perpetual.BINANCE_notional","future.BINANCE","future.BINANCE_notional"],"historicalWindow":"Full available ETH history on the listed routes where ETHBTC contributes. The correction is to the ETHBTC contribution, not every Binance contract. Other futures analytics, global activity, individual trades and candles are outside this record.","selection":{"markets":["BINANCE"],"currencies":["ETH"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/historical/futures/total_oi_by_margin/:currency","/historical/futures/total_volume_by_margin/:currency"],"fields":["f_u","f_u_n","f_c","f_c_n","p_u","p_u_n","p_c","p_c_n"],"historicalWindow":"Full available ETH history on the listed routes where ETHBTC contributes. The correction is to the ETHBTC contribution, not every Binance contract. Other futures analytics, global activity, individual trades and candles are outside this record.","selection":{"markets":["BINANCE"],"currencies":["ETH"],"granularities":["*"],"historyScope":"all_retained"}}],"recommendedRecollection":"Refresh both BINANCE and BINANCE_notional in affected ETH venue maps and the affected margin totals. The unsuffixed amount is USD-equivalent; _notional is ETH quantity. Older volume quantities converted from BTC turnover are ETH equivalents at the historical instrument price, not reconstructed individual-trade quantities. Required unavailable or conflicting prices make only the dependent measure null. Genuine zero quantity stays zero. Recollect the currently corrected values rather than choosing an earlier response merely because its unit ratio looks plausible. This record does not establish when every previously served incorrect value first appeared.","validation":["For 2026-04-18 00:00 UTC, the production volume control returned perpetual.BINANCE 18439237068.349762 and perpetual.BINANCE_notional 7624995.018911481. The OI control returned 7680886442.620001 USD-equivalent and 3176159.236580813 ETH. Both complete response bodies matched across v1 and v2."],"verification":[{"endpoint":"/historical/futures/total_volume/ETH","parameters":{"start":"2026-04-18","end":"2026-04-18","granularity":"1h","page":1,"limit":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"date":1776470400000,"perpetual.BINANCE":18439237068.349762,"perpetual.BINANCE_notional":7624995.018911481}}]},{"id":"HIST-2026-10-06-V2-BINANCE-ETHBTC-UNITS","status":"deployed","publishedAt":"2026-10-07T12:05:00Z","updatedAt":"2026-10-07T12:05:00Z","deployment":{"deployedAt":"2026-10-06T14:06:31Z","releaseId":"HIST-2026-10-06-V2-BINANCE-ETHBTC-UNITS-r1"},"changesClosedWindowResponsesWithoutBackfill":true,"summary":"Binance ETHBTC contributions to futures OI and volume totals consistently distinguish USD values and ETH quantities.","cause":"On v2, ETHBTC prices are quoted in BTC, not USD. Older BTC-quoted volume and newer ETH quantities needed different conversions; applying one convention could mix BTC or USD amounts into the ETH quantity total. Some OI values also needed the historical BTC/USD reference.","affected":[{"apiVersion":"v2","endpoints":["/api/v1/market/positioning-history","/api/v1/mcp","/api/v1/historical/futures/total_oi/:currency","/api/v1/historical/futures/total_volume/:currency","/api/v1/historical/futures/total_oi_by_exchange/:currency/:option","/api/v1/historical/futures/total_volume_by_exchange/:currency/:option","/api/v1/historical/futures/total_oi_by_margin/:currency"],"fields":["perpetual.BINANCE","perpetual.BINANCE_notional","future.BINANCE","future.BINANCE_notional","f_u","f_u_n","f_c","f_c_n","p_u","p_u_n","p_c","p_c_n"],"selection":{"markets":["BINANCE"],"currencies":["ETH"],"granularities":["*"],"historyScope":"all_retained"},"historicalWindow":"Full available ETH history on the listed routes where ETHBTC contributes. The correction is to the ETHBTC contribution, not every Binance contract. Other futures analytics, global activity, individual trades and candles are outside this record. Applies only to futures_oi_total, futures_volume_total, futures_oi_by_exchange, futures_volume_by_exchange and futures_oi_by_margin, including get_market_positioning_history. No futures_volume_by_margin series is offered here."}],"recommendedRecollection":"Refresh both BINANCE and BINANCE_notional in affected ETH venue maps and the affected margin totals. The unsuffixed amount is USD-equivalent; _notional is ETH quantity. Older volume quantities converted from BTC turnover are ETH equivalents at the historical instrument price, not reconstructed individual-trade quantities. Required unavailable or conflicting prices make only the dependent measure null. Genuine zero quantity stays zero. Recollect the currently corrected values rather than choosing an earlier response merely because its unit ratio looks plausible. This record does not establish when every previously served incorrect value first appeared.","validation":["For 2026-04-18 00:00 UTC, the production volume control returned perpetual.BINANCE 18439237068.349762 and perpetual.BINANCE_notional 7624995.018911481. The OI control returned 7680886442.620001 USD-equivalent and 3176159.236580813 ETH. Both complete response bodies matched across v1 and v2."],"verification":[{"endpoint":"/api/v1/historical/futures/total_volume/ETH","parameters":{"start":"2026-04-18","end":"2026-04-18","granularity":"1h","page":1,"limit":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"date":1776470400000,"perpetual.BINANCE":18439237068.349762,"perpetual.BINANCE_notional":7624995.018911481}}]},{"id":"HIST-2026-10-06-V1-SPOT-DAILY-WINDOW-AVAILABILITY","status":"deployed","publishedAt":"2026-10-07T12:05:00Z","updatedAt":"2026-10-07T12:05:00Z","deployment":{"deployedAt":"2026-10-06T14:48:58Z","releaseId":"HIST-2026-10-06-V1-SPOT-DAILY-WINDOW-AVAILABILITY-r1"},"changesClosedWindowResponsesWithoutBackfill":true,"summary":"Long daily spot-volume windows now return data, including requests ending at an explicit minute.","cause":"Valid long-window requests for spot volume by exchange could time out with HTTP 500. Complete-day requests were corrected at 2026-10-06T14:20:00Z; the later effective time on this record includes the explicit-minute boundary correction.","affected":[{"apiVersion":"v1","endpoints":["/historical/spot/volume_by_exchange/:period"],"fields":["items","meta"],"historicalWindow":"Daily (period=1d) requests contained in 2025-01-01 00:00:00 UTC through 2026-09-30 23:59:59 UTC, including partial boundary days. Other periods and history outside these bounds are not covered by this availability correction.","selection":{"markets":["*"],"currencies":["*"],"granularities":["1d"],"historyScope":"conservative_retained_history","sourceFrom":"2025-01-01T00:00:00Z","sourceThrough":"2026-09-30T23:59:59Z"}}],"recommendedRecollection":"Retry previously failed requests within the stated scope and follow meta.total_pages. Existing successful daily volume values, venue keys and pagination definitions are unchanged. An explicit end minute includes that minute, not the remainder of its day; a date-only end includes the complete day. This is not a new account limit, a latency guarantee, or a correction to options OI requests.","validation":["All nine reported failing daily spot-volume requests returned HTTP 200 after the final correction. Eight took 0.2–0.5 seconds and the explicit-minute request took 1.2 seconds in this check; these timings are observations, not an SLA.","Previously successful January and February controls remained byte-identical. An out-of-range page returned no rows with unchanged totals; the final partial-day row matched the same minute requested alone."],"verification":[{"endpoint":"/historical/spot/volume_by_exchange/1d","parameters":{"start":"2025-01-01","end":"2025-12-31","limit":144,"page":3},"expectedStatus":200,"expectedRows":77,"expectedMeta":{"total":365,"page":3,"total_pages":3}},{"endpoint":"/historical/spot/volume_by_exchange/1d","parameters":{"start":"2025-11-26T00:00","end":"2026-09-10T00:00","limit":144,"page":3},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":289,"page":3,"total_pages":3},"expectedValues":{"date":1788998400000,"binance":5378820.13093419}}]},{"id":"HIST-2026-10-06-OPTION-TRADE-DUPLICATES","status":"deployed","publishedAt":"2026-10-07T12:00:00Z","updatedAt":"2026-10-07T12:00:00Z","summary":"Duplicate copies of option trades in April to August 2026 were removed, so each trade is counted once.","cause":"Some option trades appeared twice with the same trade ID and timestamp. Trade lists returned both copies and volume, premium and greek totals counted those trades twice. Bybit April 2026 was most affected, at about 11 percent of its trades.","deployment":{"deployedAt":"2026-10-06T12:05:00Z","releaseId":"HIST-2026-10-06-OPTION-TRADE-DUPLICATES-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/options/trades","/api/v1/options/flow","/api/v1/options/trades/summary","/api/v1/mcp"],"fields":["trade records","amount","premium","premium_usd","notional","delta","gamma","vega","theta"],"historicalWindow":"Option trades in April 2026 (Bybit, Binance, Deribit, OKX), May 2026 (Bybit) and July and August 2026 (Derive).","selection":{"markets":["BYBIT","BINANCE","DERIBIT","OKX","DERIVE"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained","sourceFrom":"2026-04-01T00:00:00Z","sourceThrough":"2026-08-31T23:59:59Z"}}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect option trades, flow and trade summaries for the affected venues and months if you collected them before deployedAt. Only the extra copies were removed; every distinct trade remains.","validation":["301,485 duplicate trade records were removed: 281,043 Bybit April 2026, 14,393 Binance April, 3,859 Deribit April, 2,116 Bybit May, 59 OKX April and 15 Derive July and August.","Afterwards every affected month holds exactly one record per trade ID and timestamp."],"verification":[{"endpoint":"/api/v1/options/trades","parameters":{"exchange":"binance","instrument_name":"BTC-260918-85000-C","start":"2026-09-15T00:00:02Z","end":"2026-09-15T00:00:03Z","limit":5},"expectedStatus":200,"expectedRows":1,"expectedValues":{"trade_id":"172"}}]},{"id":"HIST-2026-10-06-BINANCE-XRP-DOGE-OPTION-UNITS","status":"deployed","publishedAt":"2026-10-07T12:00:00Z","updatedAt":"2026-10-07T12:00:00Z","summary":"Binance XRP and DOGE option trades now report amount, sizes and prices per coin, like every other venue and underlying.","cause":"Binance XRP options trade in contracts of 100 XRP and DOGE options in contracts of 1,000 DOGE. Their trades were reported in contracts with prices per contract, so amount, notional and greeks were 100 and 1,000 times too small and options volume mixed contracts with coins. Premium was correct.","deployment":{"deployedAt":"2026-10-06T12:00:00Z","releaseId":"HIST-2026-10-06-BINANCE-XRP-DOGE-OPTION-UNITS-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/options/trades","/api/v1/options/flow","/api/v1/options/trades/summary","/api/v1/mcp"],"fields":["amount","price","mark_price","bid_price","ask_price","bid_price_change","ask_price_change","bid_size","ask_size","bid_size_change","ask_size_change","notional","delta","gamma","vega","theta"],"historicalWindow":"Binance XRP and DOGE option trades from 13 November 2025 to 6 October 2026 11:39 UTC. Trades from 11:39:14 UTC on 6 October 2026 are reported per coin.","selection":{"markets":["BINANCE"],"currencies":["XRP","DOGE"],"granularities":["*"],"historyScope":"all_retained","sourceFrom":"2025-11-13T00:00:00Z","sourceThrough":"2026-10-06T11:39:13Z"}}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect Binance XRP and DOGE option trades, flow and trade summaries if you collected them before deployedAt. Amount, sizes, notional and greeks are now 100 (XRP) or 1,000 (DOGE) times larger and prices that much smaller; premium, IV and open interest did not change.","validation":["216,362 XRP and 20,698 DOGE option trades were converted. Total premium was unchanged (XRP 1,111,690.79 USD, DOGE 788,509.86 USD).","Calls priced above the index fell from 29,510 to 0 for XRP and from 614 to 0 for DOGE; median call price per coin is 0.8 percent of the index for XRP and 1.2 percent for DOGE, in line with trades since the change."],"verification":[{"endpoint":"/api/v1/options/trades","parameters":{"exchange":"binance","instrument_name":"XRP-260925-1.4-P","start":"2026-09-15T00:06:27Z","end":"2026-09-15T00:06:28Z","limit":5},"expectedStatus":200,"expectedRows":1,"expectedValues":{"trade_id":"101","amount":129,"price":0.0458,"premium_usd":5.91}}]},{"id":"HIST-2026-10-06-BINANCE-OPTION-TRADE-PRICING","status":"deployed","publishedAt":"2026-10-07T12:00:00Z","updatedAt":"2026-10-07T12:00:00Z","summary":"Binance option trades that were missing pricing now carry IV, index, mark, bid/ask, premium, notional and greeks.","cause":"Binance option trades do not include IV or index price, so each trade is priced from the latest Binance market data. When that data was briefly unavailable the trade was published with zero greeks, premium and notional. This affected 9 to 12 percent of Binance option trades in February and March 2026 and 24 to 55 percent every month from April 2026, so Binance flow and trade summaries undercounted greeks, premium and notional.","deployment":{"deployedAt":"2026-10-06T11:20:00Z","releaseId":"HIST-2026-10-06-BINANCE-OPTION-TRADE-PRICING-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/options/trades","/api/v1/options/flow","/api/v1/options/trades/summary","/api/v1/mcp"],"fields":["delta","gamma","vega","theta","iv","index_price","mark_price","bid_price","ask_price","bid_size","ask_size","open_interest","premium","premium_usd","notional"],"historicalWindow":"Binance option trades from 13 November 2025 to 6 October 2026 11:39 UTC that had zero greeks and no IV or index. Since 6 October 2026 11:39 UTC new trades fall back to Binance mark prices, which update every second.","selection":{"markets":["BINANCE"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained","sourceFrom":"2025-11-13T00:00:00Z","sourceThrough":"2026-10-06T11:39:13Z"}}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect Binance option trades, flow and trade summaries for 13 November 2025 to 6 October 2026 if you collected them before deployedAt and use greeks, premium, notional or IV. Trade identities, amounts, prices and sides did not change. Open interest change and bid/ask change fields stay empty for the repaired trades.","validation":["1,949,336 of 1,961,141 affected Binance option trades were repaired from Binance market data of the same minute, using the same pricing and greek formulas as live trades. 11,805 trades had no market data for their minute (mostly December 2025) and keep zero greeks.","Share of Binance option trades with zero greeks after the repair: 0.03 to 0.65 percent per month from April 2026 (previously 24 to 55 percent), 3.2 percent in December 2025 and 5.6 percent in March 2026.","Every repaired trade was preserved: monthly Binance option trade counts are unchanged, apart from duplicate copies removed under HIST-2026-10-06-OPTION-TRADE-DUPLICATES."],"verification":[{"endpoint":"/api/v1/options/trades","parameters":{"exchange":"binance","instrument_name":"BTC-260918-85000-C","start":"2026-09-15T00:00:02Z","end":"2026-09-15T00:00:03Z","limit":5},"expectedStatus":200,"expectedRows":1,"expectedValues":{"trade_id":"172","delta":-0.00314208,"premium_usd":5.1,"notional":4691.68}}]},{"id":"HIST-2026-10-06-DERIBIT-OPTION-TRADE-GREEKS-MAR-APR","status":"deployed","publishedAt":"2026-10-07T12:00:00Z","updatedAt":"2026-10-07T12:00:00Z","summary":"Deribit option trades recovered for March and April 2026 now carry position greeks signed by trade side and scaled by size.","cause":"Trades recovered after a March 2026 data gap carried per-contract greeks instead of position greeks, so sells had the sign of a buy and greeks were not multiplied by trade size. Deribit flow and trade summaries for those days mixed the two conventions.","deployment":{"deployedAt":"2026-10-06T10:20:00Z","releaseId":"HIST-2026-10-06-DERIBIT-OPTION-TRADE-GREEKS-MAR-APR-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/options/trades","/api/v1/options/flow","/api/v1/options/trades/summary","/api/v1/mcp"],"fields":["delta","gamma","vega","theta"],"historicalWindow":"Recovered Deribit option trades between 1 March and 30 April 2026, almost all on 10, 11, 14 and 20 to 23 March 2026.","selection":{"markets":["DERIBIT"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained","sourceFrom":"2026-03-01T00:00:00Z","sourceThrough":"2026-04-30T23:59:59Z"}}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect Deribit option trades, flow and trade summaries for March and April 2026 if you collected them before deployedAt and use greeks. Amounts, prices, premium and other fields did not change.","validation":["59,587 recovered Deribit option trades had greeks recomputed from their own size, side, IV, index, strike and expiry; 172 without a usable IV now carry zero greeks instead of unscaled ones.","After the repair no Deribit sell in March or April 2026 carries a buyer-signed delta (previously 29,580) and no trade reports more than one unit of delta per unit of size (previously 17,869)."],"verification":[{"endpoint":"/api/v1/options/trades","parameters":{"exchange":"deribit","instrument_name":"BTC-22MAR26-70500-P","start":"2026-03-21T00:00:32Z","end":"2026-03-21T00:00:33Z","limit":5},"expectedStatus":200,"expectedRows":1,"expectedValues":{"trade_id":"421261518","direction":"sell","delta":0.09801774}}]},{"id":"HIST-2026-10-02-COINBASE-SPOT-TRADE-SIDE","status":"deployed","publishedAt":"2026-10-03T12:00:00Z","updatedAt":"2026-10-03T12:00:00Z","summary":"Coinbase spot trade direction and candle buy/sell fields now report the aggressor (taker) side.","cause":"Coinbase publishes the maker side of each trade. It was stored without conversion, so Coinbase buy and sell were the reverse of the aggressor side used for every other venue.","deployment":{"deployedAt":"2026-10-02T18:00:00Z","releaseId":"HIST-2026-10-02-COINBASE-SPOT-TRADE-SIDE-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/spot/trades","/api/v1/mcp"],"fields":["direction"],"historicalWindow":"Every retained Coinbase spot trade with a timestamp before 2026-10-02 15:42:00 UTC. Retained trades span 4 August to 2 October 2026; trades older than 30 days are retained only at 1,000,000 or more quote amount, and those were corrected too.","selection":{"markets":["COINBASE"],"currencies":["*"],"granularities":["*"],"historyScope":"conservative_retained_history","sourceFrom":"2026-08-04T00:00:00Z","sourceThrough":"2026-10-02T15:41:59Z"}},{"apiVersion":"v2","endpoints":["/api/v1/spot/ohlcvt","/api/v1/spot/volume","/api/v1/mcp"],"fields":["buy_volume","sell_volume","buy_quote_volume","sell_quote_volume","buy_trades_count","sell_trades_count"],"historicalWindow":"Every Coinbase spot candle minute from 2026-03-06 00:00 through 2026-10-02 15:57 UTC, at every resolution, including history before 7 May 2026 that was reconstructed from the archive. Prices, total volume, VWAP and total trade counts were not affected.","selection":{"markets":["COINBASE"],"currencies":["*"],"granularities":["*"],"historyScope":"conservative_retained_history","sourceFrom":"2026-03-06T00:00:00Z","sourceThrough":"2026-10-02T15:57:59Z"}}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect Coinbase spot trades, candles and volume within the affected windows if you collected them before deployedAt and use trade direction or buy/sell splits. deployedAt is when the corrected history was complete and verified; new data has carried the aggressor side since 2026-10-02 15:42 UTC for trades and 15:58 UTC for candles. Other Coinbase fields and other venues are unchanged. Purchased tick-data files are corrected separately.","validation":["Trades: 108,662,979 Coinbase trades across 56 trading days were relabelled; every day showed an exact buy/sell count swap. Afterwards 90 to 92 percent of buy-labelled BTC-USD trades were upticks in every week.","Candles: 37,814,842 Coinbase minute bars across eight months had their buy/sell volume, quote volume and trade counts swapped, with exact per-month sum swaps. For every instrument on 1 October 2026, all 227,422 candle buy/sell splits matched the corrected trades with zero differences.","Production check on 3 October 2026: of 600 recent BTC-USD trades, 167 at or above the ask were buys (one sell) and 432 at or below the bid were sells (no buys); two complete minute candles matched those trades exactly."],"verification":[{"endpoint":"/api/v1/spot/trades","parameters":{"exchange":"coinbase","instrument_name":"BTC-USD","start":"2026-10-01T12:00:00Z","end":"2026-10-01T12:00:01Z","limit":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"trade_id":"1100888818","direction":"buy"}},{"endpoint":"/api/v1/spot/ohlcvt","parameters":{"exchange":"coinbase","instrument_name":"BTC-USD","resolution":"1m","start":"2026-03-10T12:00:00Z","end":"2026-03-10T12:00:59Z"},"expectedStatus":200,"expectedRows":1,"expectedValues":{"buy_trades_count":478,"sell_trades_count":376}}]},{"id":"HIST-2026-09-28-DERIBIT-SETTLEMENT-CATALOGUE","status":"deployed","publishedAt":"2026-09-28T13:40:00Z","updatedAt":"2026-09-28T13:40:00Z","summary":"Recovered retained Deribit option settlement payouts, corrected USDC payout valuation, and identified unavailable position quantities.","cause":"Recent expired options were missing from the direct delivery-event history even as the catalogue refresh time advanced. USDC-settled prices also received an extra underlying-index conversion, and one unavailable position had been represented as zero.","deployment":{"deployedAt":"2026-09-28T13:08:49.057555Z","releaseId":"HIST-2026-09-28-DERIBIT-SETTLEMENT-CATALOGUE-r1"},"affected":[{"apiVersion":"v1","endpoints":["/analytics/options/expired_expiries/:market/:currency"],"fields":["Date","Strike","OptionType","mark_price","mark_price_usd","position","index_price"],"historicalWindow":"Deribit option settlements only. Native discovery requires series=option_settlements; MCP requires get_legacy_market_discovery with that series. The catalogue uses maturity, not a granularity parameter; source bounds below refer to expiry dates, not first-publication times. Recovered retained inverse option payouts for BTC and ETH, 1 August through 28 September 2026.","selection":{"markets":["DERIBIT"],"currencies":["BTC","ETH"],"granularities":["*"],"historyScope":"conservative_retained_history","sourceFrom":"2026-08-01T00:00:00Z","sourceThrough":"2026-09-28T08:00:00Z"}},{"apiVersion":"v1","endpoints":["/analytics/options/expired_expiries/:market/:currency"],"fields":["Date","Strike","OptionType","mark_price","mark_price_usd","position","index_price"],"historicalWindow":"Deribit option settlements only. Native discovery requires series=option_settlements; MCP requires get_legacy_market_discovery with that series. The catalogue uses maturity, not a granularity parameter; source bounds below refer to expiry dates, not first-publication times. Recovered retained USDC-settled option payouts, 1 April through 28 September 2026. Existing currency selectors are preserved, including BTC_USDC and ETH_USDC.","selection":{"markets":["DERIBIT"],"currencies":["AVAX","BTC_USDC","ETH_USDC","HYPE","SOL","TRX","XRP"],"granularities":["*"],"historyScope":"conservative_retained_history","sourceFrom":"2026-04-01T00:00:00Z","sourceThrough":"2026-09-28T08:00:00Z"}},{"apiVersion":"v1","endpoints":["/analytics/options/expired_expiries/:market/:currency"],"fields":["Date","Strike","OptionType","mark_price","mark_price_usd","position","index_price"],"historicalWindow":"Deribit option settlements only. Native discovery requires series=option_settlements; MCP requires get_legacy_market_discovery with that series. The catalogue uses maturity, not a granularity parameter; source bounds below refer to expiry dates, not first-publication times. Previously absent direct exchange delivery entries for retained BNB, MATIC and PAXG expiries. Recollect their full available settlement catalogues; this does not imply these are currently traded products.","selection":{"markets":["DERIBIT"],"currencies":["BNB","MATIC","PAXG"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/analytics/options/expired_expiries/:market/:currency"],"fields":["mark_price_usd"],"historicalWindow":"Deribit option settlements only. Native discovery requires series=option_settlements; MCP requires get_legacy_market_discovery with that series. The catalogue uses maturity, not a granularity parameter; source bounds below refer to expiry dates, not first-publication times. USD payout normalization for retained USDC-settled options. The union of changed expiry dates runs from 12 March 2024 through 31 March 2026; not every row in that range changed.","selection":{"markets":["DERIBIT"],"currencies":["AVAX","BTC_USDC","ETH_USDC","SOL","TRX","XRP"],"granularities":["*"],"historyScope":"conservative_retained_history","sourceFrom":"2024-03-12T00:00:00Z","sourceThrough":"2026-03-31T08:00:00Z"}},{"apiVersion":"v1","endpoints":["/analytics/options/expired_expiries/:market/:currency"],"fields":["position"],"historicalWindow":"Deribit option settlements only. Native discovery requires series=option_settlements; MCP requires get_legacy_market_discovery with that series. The catalogue uses maturity, not a granularity parameter; source bounds below refer to expiry dates, not first-publication times. BTC-26MAY17-2550-P: a previous zero without an exchange-observed position becomes null (unavailable), not a recovered position quantity.","selection":{"markets":["DERIBIT"],"currencies":["BTC"],"granularities":["*"],"historyScope":"conservative_retained_history","sourceFrom":"2017-05-26T08:00:00Z","sourceThrough":"2017-05-26T08:00:00Z"}},{"apiVersion":"v2","endpoints":["/api/v1/analytics/options/expired_expiries/:market/:currency","/api/v1/market/legacy-discovery","/api/v1/mcp"],"fields":["Date","Strike","OptionType","mark_price","mark_price_usd","position","index_price"],"historicalWindow":"Deribit option settlements only. Native discovery requires series=option_settlements; MCP requires get_legacy_market_discovery with that series. The catalogue uses maturity, not a granularity parameter; source bounds below refer to expiry dates, not first-publication times. Recovered retained inverse option payouts for BTC and ETH, 1 August through 28 September 2026.","selection":{"markets":["DERIBIT"],"currencies":["BTC","ETH"],"granularities":["*"],"historyScope":"conservative_retained_history","sourceFrom":"2026-08-01T00:00:00Z","sourceThrough":"2026-09-28T08:00:00Z"}},{"apiVersion":"v2","endpoints":["/api/v1/analytics/options/expired_expiries/:market/:currency","/api/v1/market/legacy-discovery","/api/v1/mcp"],"fields":["Date","Strike","OptionType","mark_price","mark_price_usd","position","index_price"],"historicalWindow":"Deribit option settlements only. Native discovery requires series=option_settlements; MCP requires get_legacy_market_discovery with that series. The catalogue uses maturity, not a granularity parameter; source bounds below refer to expiry dates, not first-publication times. Recovered retained USDC-settled option payouts, 1 April through 28 September 2026. Existing currency selectors are preserved, including BTC_USDC and ETH_USDC.","selection":{"markets":["DERIBIT"],"currencies":["AVAX","BTC_USDC","ETH_USDC","HYPE","SOL","TRX","XRP"],"granularities":["*"],"historyScope":"conservative_retained_history","sourceFrom":"2026-04-01T00:00:00Z","sourceThrough":"2026-09-28T08:00:00Z"}},{"apiVersion":"v2","endpoints":["/api/v1/analytics/options/expired_expiries/:market/:currency","/api/v1/market/legacy-discovery","/api/v1/mcp"],"fields":["Date","Strike","OptionType","mark_price","mark_price_usd","position","index_price"],"historicalWindow":"Deribit option settlements only. Native discovery requires series=option_settlements; MCP requires get_legacy_market_discovery with that series. The catalogue uses maturity, not a granularity parameter; source bounds below refer to expiry dates, not first-publication times. Previously absent direct exchange delivery entries for retained BNB, MATIC and PAXG expiries. Recollect their full available settlement catalogues; this does not imply these are currently traded products.","selection":{"markets":["DERIBIT"],"currencies":["BNB","MATIC","PAXG"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v2","endpoints":["/api/v1/analytics/options/expired_expiries/:market/:currency","/api/v1/market/legacy-discovery","/api/v1/mcp"],"fields":["mark_price_usd"],"historicalWindow":"Deribit option settlements only. Native discovery requires series=option_settlements; MCP requires get_legacy_market_discovery with that series. The catalogue uses maturity, not a granularity parameter; source bounds below refer to expiry dates, not first-publication times. USD payout normalization for retained USDC-settled options. The union of changed expiry dates runs from 12 March 2024 through 31 March 2026; not every row in that range changed.","selection":{"markets":["DERIBIT"],"currencies":["AVAX","BTC_USDC","ETH_USDC","SOL","TRX","XRP"],"granularities":["*"],"historyScope":"conservative_retained_history","sourceFrom":"2024-03-12T00:00:00Z","sourceThrough":"2026-03-31T08:00:00Z"}},{"apiVersion":"v2","endpoints":["/api/v1/analytics/options/expired_expiries/:market/:currency","/api/v1/market/legacy-discovery","/api/v1/mcp"],"fields":["position"],"historicalWindow":"Deribit option settlements only. Native discovery requires series=option_settlements; MCP requires get_legacy_market_discovery with that series. The catalogue uses maturity, not a granularity parameter; source bounds below refer to expiry dates, not first-publication times. BTC-26MAY17-2550-P: a previous zero without an exchange-observed position becomes null (unavailable), not a recovered position quantity.","selection":{"markets":["DERIBIT"],"currencies":["BTC"],"granularities":["*"],"historyScope":"conservative_retained_history","sourceFrom":"2017-05-26T08:00:00Z","sourceThrough":"2017-05-26T08:00:00Z"}},{"apiVersion":"v2","endpoints":["/api/v1/analytics/options/expired_expiries/:market/:currency","/api/v1/market/legacy-discovery","/api/v1/mcp"],"fields":["items[].provenance","meta.settlement_catalogue"],"historicalWindow":"Deribit option settlements only. Native discovery requires series=option_settlements; MCP requires get_legacy_market_discovery with that series. The catalogue uses maturity, not a granularity parameter; source bounds below refer to expiry dates, not first-publication times. Native discovery and MCP now carry source-check, latest-expiry and row-provenance information. The legacy route and compatibility alias retain exactly their seven existing row fields.","selection":{"markets":["DERIBIT"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Refresh saved settlement results for the affected currencies and maturities. This is a corrective catalogue republication; deployedAt records its successful publication acknowledgement, not the earlier reader release or an original observation time. Reconstructed payouts use actual retained option identities and the official delivery index for the exact expiry date, never an adjacent date or spot substitute. For inverse options, native payout is intrinsic value divided by that index and USD payout is intrinsic value. For USDC-settled options, native and USD payout are already USD-quoted per underlying unit; do not multiply by the index again. Contract multipliers affect position cashflows, not these per-unit price fields. Existing display rounding is retained. A reconstructed position is null, meaning unavailable, not zero or delivered open interest. Directly observed positions remain distinguishable from unavailable ones. Native discovery and MCP expose delivery_price_reconstruction versus exchange_delivery_event provenance; use those surfaces when that distinction is needed. The legacy route and alias retain Date, Strike, OptionType, mark_price, mark_price_usd, position and index_price. source_checked_at is the refresh input-check time, not the contract expiry, the write acknowledgement or the first time a value was observable. latest_expiry and returned_rows_by_source describe retained data, not complete exchange coverage. Known missing exact delivery prices remain unavailable. These are current corrected/recovered values, not certified originally published point-in-time history. Other venues, futures settlements, candles, trades, retention and subscriber access are unchanged.","validation":["The successful publication retained all 229,106 previous keys and added 72,661, for 301,767 rows across twelve currencies. Additions comprise 63,616 contractual payout reconstructions and 9,045 direct exchange entries. No known required exact delivery price was missing in the examined retained inventory; this is not a whole-exchange completeness certificate.","Before/after comparison found zero lost keys and zero unexpected changes to the seven original fields. The intended existing-row changes were 16,482 USDC mark_price_usd values and one unavailable BTC position changed from an unproven zero to null.","Thirty-two production requests covered eight populated/empty maturity controls through v1, the v2 alias, native discovery and MCP. All four transports agreed on the seven legacy fields, native/MCP provenance agreed, and the future maturity returned HTTP 200 with zero rows. Controls included 140 recovered BTC September rows, 154 ETH September rows, 138 BTC_USDC June rows and 94 SOL June rows."],"verification":[{"endpoint":"/analytics/options/expired_expiries/deribit/BTC","parameters":{"maturity":"31JUL26"},"expectedStatus":200,"expectedRows":121},{"endpoint":"/api/v1/market/legacy-discovery","parameters":{"series":"option_settlements","exchange":"deribit","currency":"BTC","maturity":"25SEP26"},"expectedStatus":200,"expectedRows":140,"expectedMeta":{"settlement_catalogue.version":2,"settlement_catalogue.completeness_certified":false,"settlement_catalogue.returned_rows_by_source.delivery_price_reconstruction":140}},{"endpoint":"/api/v1/market/legacy-discovery","parameters":{"series":"option_settlements","exchange":"deribit","currency":"ETH","maturity":"25SEP26"},"expectedStatus":200,"expectedRows":154},{"endpoint":"/api/v1/market/legacy-discovery","parameters":{"series":"option_settlements","exchange":"deribit","currency":"BTC_USDC","maturity":"26JUN26"},"expectedStatus":200,"expectedRows":138},{"endpoint":"/api/v1/market/legacy-discovery","parameters":{"series":"option_settlements","exchange":"deribit","currency":"SOL","maturity":"26JUN26"},"expectedStatus":200,"expectedRows":94},{"endpoint":"/api/v1/analytics/options/expired_expiries/deribit/BTC_USDC","parameters":{"maturity":"27MAR26"},"expectedStatus":200,"expectedRows":120},{"endpoint":"/analytics/options/expired_expiries/deribit/BTC","parameters":{"maturity":"26MAY17"},"expectedStatus":200,"expectedRows":40},{"endpoint":"/api/v1/market/legacy-discovery","parameters":{"series":"option_settlements","exchange":"deribit","currency":"BTC","maturity":"31DEC30"},"expectedStatus":200,"expectedRows":0}]},{"id":"HIST-2026-09-24-V1-MARKET-OI-TOTALS","status":"deployed","publishedAt":"2026-09-24T16:00:00Z","updatedAt":"2026-09-24T16:00:00Z","summary":"Corrected current venue open-interest change rankings to compare totals across matching contracts.","cause":"At a boundary timestamp with several matching contracts, the previous calculation could select a single contract instead of the venue total.","deployment":{"deployedAt":"2026-09-24T14:45:22Z","releaseId":"HIST-2026-09-24-V1-MARKET-OI-TOTALS-r1"},"affected":[{"apiVersion":"v1","endpoints":["/analytics/futures/markets_oi_gainers_and_losers/:currency/:option/:param","/analytics/futures/markets_oi_gainers_and_losers/:currency/:option/:param/:type"],"fields":["open_interest_change","open_interest_change_perc","open_interest_notional_change","open_interest_notional_change_perc"],"historicalWindow":"Current analytics only, for every supported currency, all/future/perpetual selection, lookback and C/D venue group. These routes do not serve a requested historical window."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Refresh current rankings. Each venue now sums matching contracts at the earliest and latest matching global timestamps within the selected lookback plus its existing two-minute buffer, resolving retained replacements before summing. The unsuffixed change is in USD; the legacy notional suffix denotes base-asset quantity. Percent changes multiply the relative change by 100. Missing boundary totals remain null; a zero earlier total makes the percent change unavailable. This is not a completeness certificate for missing contracts. Previously saved live snapshots cannot be recreated as-of their publication through these routes. No source observations, URLs, parameters, response fields or retention were changed. The separate per-symbol OI-ranking routes are outside this correction.","validation":["Eight frozen-boundary source controls matched independently summed canonical contract observations, covering BTC/ETH, all/future/perpetual, C/D venue groups and 1/24/168/720-hour lookbacks.","Post-rollout public checks returned HTTP 200 for all eight controls across both route forms. Each control matched a contemporaneous corrected source calculation; one required a later repeat after the current snapshot advanced. This is live-value verification, not immutable response-body or whole-history certification.","Local regression checks cover several contracts at one boundary, retained identical copies and replacements, reversed insertion order of distinct contracts, and unavailable or zero comparison values."],"verification":[{"endpoint":"/analytics/futures/markets_oi_gainers_and_losers/BTC/all/24","parameters":{},"expectedStatus":200},{"endpoint":"/analytics/futures/markets_oi_gainers_and_losers/BTC/all/24/C","parameters":{},"expectedStatus":200},{"endpoint":"/analytics/futures/markets_oi_gainers_and_losers/ETH/perpetual/168","parameters":{},"expectedStatus":200}]},{"id":"HIST-2026-09-22-V1-IV-BID-ASK-TENORS","status":"deployed","publishedAt":"2026-09-22T16:10:00Z","updatedAt":"2026-09-22T16:10:00Z","summary":"Corrected the association of historical bid, ask and mark implied volatility with its target tenor.","cause":"Maturity-neighbour selection and association with the target-tenor labels could return a quote for a different maturity. Page counts also did not consistently use the same currency selection as the returned observations.","deployment":{"deployedAt":"2026-09-22T14:30:08Z","releaseId":"HIST-2026-09-22-V1-IV-BID-ASK-TENORS-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/type/iv_bid_ask/:market/:currency/:type"],"fields":["1.b","1.a","1.m","7.b","7.a","7.m","14.b","14.a","14.m","30.b","30.a","30.m","60.b","60.a","60.m","90.b","90.a","90.m","180.b","180.a","180.m","365.b","365.a","365.m","items","meta.total","meta.items","meta.total_pages"],"historicalWindow":"All retained history on this route for every supported market/currency combination and each of P_ATM, P_25, P_10, P_5, C_ATM, C_25, C_10 and C_5. This is the conservative re-collection scope, not a claim that every row or value changed.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-read every page of retained windows used from this route. Each observed timestamp now has one bid/ask/mark quote for each of the eight target tenors. The calculation retains whole-day maturity buckets and nearest signed-delta selection within 0.1; bid, ask and mark are separately interpolated in total variance between the lower and upper available maturities. An exact maturity uses its selected quote; a target with only one maturity neighbour retains flat-IV extrapolation from that neighbour. Mark IV is independent, not the bid/ask midpoint. Coarser granularities sample the UTC observation grid, not an interval average. The URL, parameters, response fields, pagination convention, access and retention are unchanged; no source observations were rewritten. These are current corrected calculations, not certified as-originally-published values. The prior instruction to treat -100 in frozen legacy captures as unavailable, not as a quote, remains in force.","validation":["Post-deployment public verification passed 52 requests across 26 request shapes and 18 source-reference controls. The controls included all eight signed-delta selectors, Deribit BTC/ETH/SOL/XRP, two correctly empty Deribit BNB/PAXG observations, Bybit BTC, an older July 2025 observation, and five-minute, hourly, four-hour and daily sampling. All returned HTTP 200 and matched independently calculated reference values and page counts. This is sampled verification, not a whole-history quality certification.","The five-minute control contains five observations from 2026-09-11T09:00:00Z through 09:20:00Z inclusive. Its pages contain 2, 2 and 1 rows at limit 2, and 3 and 2 rows at limit 3, with declared total 5 in both cases. Past-last pages are empty. A shifted 09:05:00Z through 09:15:00Z window contains the same three overlapping observations.","Each request shape was repeated after at least 80 seconds with intervening requests. All 26 repeated response bodies were byte-identical to their first pass; bodies, sizes, digests, request/receipt times and cache-related response headers were retained for these checks."],"verification":[{"endpoint":"/historical/options/type/iv_bid_ask/DERIBIT/BTC/C_ATM","parameters":{"start":"2026-09-11T09:00:00Z","end":"2026-09-11T09:00:00Z","granularity":"1h","page":1,"limit":10},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":1,"items":1,"page":1,"total_pages":1},"expectedValues":{"date":1789117200000,"1.b":30.7,"1.a":34.13,"1.m":33.43,"7.b":36.8,"7.a":38.49,"7.m":37.84,"30.b":36.16,"30.a":37,"30.m":36.69}},{"endpoint":"/historical/options/type/iv_bid_ask/DERIBIT/ETH/P_ATM","parameters":{"start":"2026-09-11T09:00:00Z","end":"2026-09-11T09:00:00Z","granularity":"1h","page":1,"limit":10},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":1,"items":1,"page":1,"total_pages":1},"expectedValues":{"date":1789117200000,"7.b":47.79,"7.a":49.47,"7.m":48.58}},{"endpoint":"/historical/options/type/iv_bid_ask/DERIBIT/BTC/C_25","parameters":{"start":"2025-07-01T00:00:00Z","end":"2025-07-01T00:00:00Z","granularity":"1h","page":1,"limit":10},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":1,"items":1,"page":1,"total_pages":1},"expectedValues":{"date":1751328000000,"7.b":32.23,"7.a":34.09,"7.m":33.38}},{"endpoint":"/historical/options/type/iv_bid_ask/DERIBIT/BTC/C_ATM","parameters":{"start":"2026-09-11T09:00:00Z","end":"2026-09-11T09:20:00Z","granularity":"5m","page":1,"limit":2},"expectedStatus":200,"expectedRows":2,"expectedMeta":{"total":5,"items":2,"page":1,"total_pages":3}},{"endpoint":"/historical/options/type/iv_bid_ask/DERIBIT/BTC/C_ATM","parameters":{"start":"2026-09-11T09:00:00Z","end":"2026-09-11T09:20:00Z","granularity":"5m","page":2,"limit":2},"expectedStatus":200,"expectedRows":2,"expectedMeta":{"total":5,"items":2,"page":2,"total_pages":3}},{"endpoint":"/historical/options/type/iv_bid_ask/DERIBIT/BTC/C_ATM","parameters":{"start":"2026-09-11T09:00:00Z","end":"2026-09-11T09:20:00Z","granularity":"5m","page":3,"limit":2},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":5,"items":1,"page":3,"total_pages":3}},{"endpoint":"/historical/options/type/iv_bid_ask/DERIBIT/BTC/C_ATM","parameters":{"start":"2026-09-11T09:00:00Z","end":"2026-09-11T09:20:00Z","granularity":"5m","page":4,"limit":2},"expectedStatus":200,"expectedRows":0,"expectedMeta":{"total":5,"items":0,"page":4,"total_pages":3}},{"endpoint":"/historical/options/type/iv_bid_ask/DERIBIT/BTC/C_ATM","parameters":{"start":"2026-09-11T09:00:00Z","end":"2026-09-11T09:20:00Z","granularity":"5m","page":1,"limit":3},"expectedStatus":200,"expectedRows":3,"expectedMeta":{"total":5,"items":3,"page":1,"total_pages":2}},{"endpoint":"/historical/options/type/iv_bid_ask/DERIBIT/BTC/C_ATM","parameters":{"start":"2026-09-11T09:00:00Z","end":"2026-09-11T09:20:00Z","granularity":"5m","page":2,"limit":3},"expectedStatus":200,"expectedRows":2,"expectedMeta":{"total":5,"items":2,"page":2,"total_pages":2}},{"endpoint":"/historical/options/type/iv_bid_ask/DERIBIT/BTC/C_ATM","parameters":{"start":"2026-09-11T09:00:00Z","end":"2026-09-11T09:20:00Z","granularity":"5m","page":3,"limit":3},"expectedStatus":200,"expectedRows":0,"expectedMeta":{"total":5,"items":0,"page":3,"total_pages":2}},{"endpoint":"/historical/options/type/iv_bid_ask/DERIBIT/BTC/C_ATM","parameters":{"start":"2026-09-11T09:05:00Z","end":"2026-09-11T09:15:00Z","granularity":"5m","page":1,"limit":3},"expectedStatus":200,"expectedRows":3,"expectedMeta":{"total":3,"items":3,"page":1,"total_pages":1}}]},{"status":"deployed","publishedAt":"2026-09-18T16:00:00Z","updatedAt":"2026-09-18T16:00:00Z","id":"HIST-2026-09-18-V1-GAMMA-DAILY-RANGE","summary":"Added an explicit daily gamma-band request bound with actionable validation.","cause":"Very long daily requests could exceed the calculation deadline before pagination, returning a generic server error. Reducing page size did not reduce that work.","deployment":{"deployedAt":"2026-09-18T09:14:22Z","releaseId":"HIST-2026-09-18-V1-GAMMA-DAILY-RANGE-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/type/gamma_bands/:market/:currency/:type"],"fields":["statusCode","code","message","max_calendar_days","requested_calendar_days"],"historicalWindow":"Daily (1d) requests spanning more than 31 inclusive UTC calendar dates. The limit applies to every requested page; other granularities and the retained history are unchanged."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Use non-overlapping windows of at most 31 inclusive UTC calendar dates and follow every declared page within each window. An excessive daily range returns HTTP 400 with code GAMMA_DAILY_RANGE_TOO_LARGE. This is request validation, not faster whole-history calculation or a change to existing band values.","validation":["Production requests for DERIBIT/BTC 1D, 7D and 30D over the reported excessive range returned the structured 400 in under 2.4 seconds each. Three 31-date controls each returned HTTP 200, 31 rows and meta.total=31."],"verification":[{"endpoint":"/historical/options/type/gamma_bands/DERIBIT/BTC/7D","parameters":{"start":"2018-06-02","end":"2026-04-21","granularity":"1d","limit":144,"page":1},"expectedStatus":400,"expectedValues":{"code":"GAMMA_DAILY_RANGE_TOO_LARGE","max_calendar_days":31}},{"endpoint":"/historical/options/type/gamma_bands/DERIBIT/BTC/7D","parameters":{"start":"2026-03-22","end":"2026-04-21","granularity":"1d","limit":144,"page":1},"expectedStatus":200,"expectedRows":31,"expectedMeta":{"total":31,"items":31,"page":1,"total_pages":1}}]},{"status":"deployed","publishedAt":"2026-09-18T16:00:00Z","updatedAt":"2026-09-18T16:00:00Z","id":"HIST-2026-09-18-V1-OBSERVED-ZERO-VENUES","summary":"Preserved explicitly observed zero venue values in historical futures OI and volume.","cause":"The shared formatter could omit a venue when its observed dollar and underlying-unit values were both zero, making that observation indistinguishable from an absent contribution.","deployment":{"deployedAt":"2026-09-18T09:14:22Z","releaseId":"HIST-2026-09-18-V1-OBSERVED-ZERO-VENUES-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/futures/total_oi/:currency","/historical/futures/total_oi_by_exchange/:currency/:option","/historical/futures/total_volume/:currency","/historical/futures/total_volume_by_exchange/:currency/:option"],"fields":["perpetual venue keys","future venue keys","venue notional keys"],"historicalWindow":"Full retained history at supported currencies and granularities where an eligible venue observation has both values equal to zero. Missing contributions are not fabricated.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-read retained rows where observed-zero versus absent venue membership matters. A supplied zero is an observation; an absent venue still is not a statement of zero. This does not restore retired venues or certify complete all-venue coverage. Nonzero values and sampling rules are unchanged.","validation":["Production ARB daily controls for 17 September 2026 returned one row on each of the OI and volume routes. Both preserved BULLISH and NADO dollar/notional zeros; neither introduced a VERTEX key."],"verification":[{"endpoint":"/historical/futures/total_oi/ARB","parameters":{"start":"2026-09-17","end":"2026-09-17","granularity":"1d","limit":144,"page":1},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":1,"items":1,"page":1,"total_pages":1},"expectedValues":{"perpetual.BULLISH":0,"perpetual.BULLISH_notional":0,"perpetual.NADO":0,"perpetual.NADO_notional":0}},{"endpoint":"/historical/futures/total_volume/ARB","parameters":{"start":"2026-09-17","end":"2026-09-17","granularity":"1d","limit":144,"page":1},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":1,"items":1,"page":1,"total_pages":1},"expectedValues":{"perpetual.BULLISH":0,"perpetual.NADO":0}}]},{"status":"deployed","publishedAt":"2026-09-18T16:00:00Z","updatedAt":"2026-09-18T16:00:00Z","id":"HIST-2026-09-18-V1-SPOT-HISTORY-PAGINATION","summary":"Corrected pagination of spot requests spanning the start of 2024.","cause":"Combining the older and newer histories could overlap their boundary and miscalculate global page offsets when one source only partly filled a page.","deployment":{"deployedAt":"2026-09-18T09:14:22Z","releaseId":"HIST-2026-09-18-V1-SPOT-HISTORY-PAGINATION-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/spot/:market/:symbol/:period","/historical/spot/volume_by_exchange/:period"],"fields":["items","meta.total","meta.items","meta.page","meta.total_pages"],"historicalWindow":"Requests whose start is before 2024-01-01T00:00:00Z and whose end reaches or passes that instant, across supported selectors and periods. Single-era requests do not use the corrected combining path."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-read all pages of affected cross-boundary requests. The two histories now form one ascending paginated sequence with disjoint source intervals. The minute-first/coarse-fallback rule and the values returned by individual source reads are unchanged.","validation":["Production candle and exchange-volume controls each combined three older and three newer daily rows. Every page at limits 2 and 4, plus one page beyond exhaustion at each limit, matched the independently read six-row sequence. Repeats of page 1 at limit 4 after 82.286 seconds (candles) and 107.534 seconds (volume) were byte-identical."],"verification":[{"endpoint":"/historical/spot/coinbase/BTC-USDT/1d","parameters":{"start":"2023-12-29","end":"2024-01-03","limit":4,"page":1},"expectedStatus":200,"expectedRows":4,"expectedMeta":{"total":6,"items":4,"page":1,"total_pages":2}},{"endpoint":"/historical/spot/coinbase/BTC-USDT/1d","parameters":{"start":"2023-12-29","end":"2024-01-03","limit":4,"page":2},"expectedStatus":200,"expectedRows":2,"expectedMeta":{"total":6,"items":2,"page":2,"total_pages":2}},{"endpoint":"/historical/spot/volume_by_exchange/1d","parameters":{"start":"2023-12-29","end":"2024-01-03","limit":4,"page":2},"expectedStatus":200,"expectedRows":2,"expectedMeta":{"total":6,"items":2,"page":2,"total_pages":2}}]},{"status":"deployed","publishedAt":"2026-09-18T16:00:00Z","updatedAt":"2026-09-18T16:00:00Z","id":"HIST-2026-09-13-V2-RAW-L2-CURRENCY-SCOPE","summary":"Corrected currency selection and observed coverage on raw futures and perpetual order books.","cause":"Currency-scoped rows and their observed coverage did not consistently use the same currency selector.","deployment":{"deployedAt":"2026-09-13T17:39:42Z","releaseId":"HIST-2026-09-13-V2-RAW-L2-CURRENCY-SCOPE-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/orderbook-raw","/api/v1/perpetuals/orderbook-raw"],"fields":["data","meta.coverage.earliest_observed_at","meta.coverage.latest_observed_at"],"historicalWindow":"Retained raw history for currency-scoped requests, including requests also naming an instrument. The separate 30-day retention window is unchanged.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Refresh affected currency-scoped windows still inside retention. Observed coverage is not completeness certification. The dated verification coordinate below expires under raw retention; a later empty outside_retention response does not invalidate the original verification.","validation":["Nineteen production checks passed: 18 HTTP 200 and one expected HTTP 400. Two spaced rounds covered BTC/ETH and currency/instrument selection, with three negative controls."],"verification":[{"endpoint":"/api/v1/futures/orderbook-raw","parameters":{"exchange":"deribit","currency":"BTC","start":"2026-09-09","end":"2026-09-10","limit":1},"expectedStatus":200,"expectedRows":1,"expectedValues":{"currency":"BTC","coverage.earliest_observed_at_present":true,"coverage.latest_observed_at_present":true}}]},{"status":"deployed","publishedAt":"2026-09-18T16:00:00Z","updatedAt":"2026-09-18T16:00:00Z","id":"HIST-2026-09-13-V1-OPTIONS-OI-TOTAL-CONSISTENCY","summary":"Stabilized options currency totals across request windows.","cause":"Numerical summation order could expose a last-cent difference for the same observation in different request windows.","deployment":{"deployedAt":"2026-09-13T18:02:30Z","releaseId":"HIST-2026-09-13-V1-OPTIONS-OI-TOTAL-CONSISTENCY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/total/oi_by_currency/:currency"],"fields":["n","ov"],"historicalWindow":"Full retained history at all supported currencies and granularities using this total calculation. Not every row changes.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Refresh held totals over retained history; no old request-window shape is preferential. Apply the separate 15 September options valuation correction as well: its later currency-selector fix can supersede reference values measured before that release.","validation":["The six-round post-release replay included 72 requests across four currencies and three window shapes; common observations agreed. The five then-current reference values matched in 66 row occurrences. A later valuation release changed the ETH reference independently."],"verification":[{"endpoint":"/historical/options/total/oi_by_currency/BNB","parameters":{"start":"2026-01-31","end":"2026-01-31","granularity":"1d","limit":144,"page":1},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":1,"items":1,"page":1,"total_pages":1},"expectedValues":{"date":1769817600000,"n":4400420.44,"ov":28577.94}}]},{"status":"deployed","publishedAt":"2026-09-18T16:00:00Z","updatedAt":"2026-09-18T16:00:00Z","id":"HIST-2026-09-13-V1-LIQUIDATION-REPLACEMENT-CONSISTENCY","summary":"Prevented repeated retained copies from inflating historical liquidation totals and counts.","cause":"More than one retained copy of a logical liquidation observation could contribute to the same published total.","deployment":{"deployedAt":"2026-09-13T18:02:30Z","releaseId":"HIST-2026-09-13-V1-LIQUIDATION-REPLACEMENT-CONSISTENCY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/derivs/liquidation/:market/:symbol","/historical/derivs/liquidation_by_currency/:market/:currency"],"fields":["usd_amount","items","meta.total","meta.total_pages"],"historicalWindow":"Full retained history containing repeated logical keys, across supported markets, currencies, symbols and granularities. AGGREGATED is included. Present duplicate bounds cannot prove the earliest past affected response.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Refresh held liquidation rows and page counts. The last inserted retained copy of a logical key is selected before summation. Source timestamp ties are not resolved by choosing the largest amount. An ended clock interval is not a finality guarantee; no finite maximum late-arrival interval is certified.","validation":["The retained audit covered 59 months and found repeated logical keys across 11 markets. Twenty-four production requests across four currency-route shapes/pages and six rounds agreed. The BYBIT/TRX reference matched 18 times for each side; the symbol-route scope is established by the shared correction, not by those currency-route HTTP checks."],"verification":[{"endpoint":"/historical/derivs/liquidation_by_currency/BYBIT/TRX","parameters":{"start":"2026-06-01","end":"2026-09-10","granularity":"1h","limit":144,"page":2},"expectedStatus":200,"expectedRows":134,"expectedMeta":{"total":278,"items":134,"page":2,"total_pages":2},"expectedValues":{"2026-09-09T23:00:00Z.long":66155,"2026-09-09T23:00:00Z.short":328}}]},{"status":"deployed","publishedAt":"2026-09-18T16:00:00Z","updatedAt":"2026-09-18T16:00:00Z","id":"HIST-2026-09-13-V1-SPOT-VOLUME-CONSISTENCY","summary":"Stabilized spot volumes and replacement-dependent historical reads.","cause":"Some volume reads summed repeated retained copies; numerical summation and exchange-key ordering could also vary between requests.","deployment":{"deployedAt":"2026-09-13T18:02:30Z","releaseId":"HIST-2026-09-13-V1-SPOT-VOLUME-CONSISTENCY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/spot/volume_by_exchange/:period","/historical/spot/:market/:symbol/:period"],"fields":["exchange volume values","volume_base","volume_quote","items","meta.total","meta.total_pages"],"historicalWindow":"Full retained current and legacy spot history using the corrected reads. Supported market/symbol selectors and periods are in scope; this is not an exact list of rows whose value changed.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Refresh held spot volumes and replacement-dependent legacy reads. The 9 September close-selection rule is unchanged. Partial first/last candle intervals still use only observations inside the requested bounds; compare complete aligned candles. The pre/post-2024 request boundary was not certified by this replay.","validation":["The production replay included 144 Coinbase candle requests and 18 exchange-volume requests across multiple shapes and six rounds, with stable repeated bodies and overlapping values. It did not establish the contents of earlier digest-only differences."],"verification":[{"endpoint":"/historical/spot/volume_by_exchange/1d","parameters":{"start":"2026-02-06","end":"2026-02-06","limit":144,"page":1},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":1,"items":1,"page":1,"total_pages":1},"expectedValues":{"date":1770336000000,"binance":27463132411.31634}}]},{"status":"deployed","publishedAt":"2026-09-18T16:00:00Z","updatedAt":"2026-09-18T16:00:00Z","id":"HIST-2026-09-15-V1-OPTIONS-VALUATION","summary":"Corrected options premium units and cross-exchange BTC/ETH total selection.","cause":"Some dollar-quoted option premiums were converted as coin prices, and a currency filter excluded eligible non-Deribit contracts. Missing price inputs could appear as zero or incomplete totals.","deployment":{"deployedAt":"2026-09-15T06:55:26Z","releaseId":"HIST-2026-09-15-V1-OPTIONS-VALUATION-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/total/oi_by_currency/:currency","/historical/options/total/volume_by_currency/:currency"],"fields":["n","ov","meta.total","meta.total_pages"],"historicalWindow":"Full retained currency-total history. BTC/ETH selection now includes eligible non-Deribit contracts independently of instrument-name punctuation. BTC_USDC/ETH_USDC remain Deribit-specific buckets. Valuation correction applies to dollar-quoted families and unavailable inputs.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/historical/options/oi_total/:market/:currency","/historical/options/volume_total/:market/:currency"],"fields":["premium"],"historicalWindow":"Full retained history using premium valuation for the supported option quotation families. Existing inverse reference-price conventions are unchanged.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/historical/options/total/oi_by_market/:market","/historical/options/total/volume_by_market/:market"],"fields":["ov"],"historicalWindow":"Full retained market-total history using premium valuation. Notional quantities are not redefined.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/historical/options/oi_pc_ratio/:market/:currency","/historical/options/volume_pc_ratio/:market/:currency"],"fields":["p_p","c_p"],"historicalWindow":"Full retained history for the put/call premium components; quantity-based put/call definitions are unchanged.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/historical/options/maturity/oi_volume/:market/:currency/:maturity","/historical/options/maturity/total_oi/:market/:currency/:maturity","/historical/options/maturity/total_volume/:market/:currency/:maturity"],"fields":["oi_premium","oi_p_premium","oi_c_premium","v_premium","v_p_premium","v_c_premium"],"historicalWindow":"Full retained maturity-series premium history; only fields present on each route apply.","selection":{"markets":["*"],"currencies":["*"],"granularities":["*"],"historyScope":"all_retained"}},{"apiVersion":"v1","endpoints":["/analytics/options/oi_breakdown","/analytics/options/volume_breakdown","/analytics/options/oi_breakdown_by_currency","/analytics/options/volume_breakdown_by_currency"],"fields":["notional","open_value"],"historicalWindow":"Current analytics responses using the corrected valuation and unavailable-input rules. These endpoints do not themselves serve historical windows."},{"apiVersion":"v1","endpoints":["/analytics/options/oi_expiry/:market/:currency","/analytics/options/v_expiry/:market/:currency","/analytics/options/oi_strike_all/:market/:currency","/analytics/options/oi_strike/:market/:currency/:maturity","/analytics/options/oi_type/:market/:currency","/analytics/options/top_traded_option/:market/:currency","/analytics/options/v_strike_all/:market/:currency","/analytics/options/v_strike/:market/:currency/:maturity","/analytics/options/oi_net_change_all/:market/:currency/:hours","/analytics/options/oi_net_change/:market/:currency/:maturity/:hours"],"fields":["premium","premium_c","premium_p","open_value_c","open_value_p","c_premium","p_premium"],"historicalWindow":"Current analytics premium components and changes using the shared valuation. Only fields present on each route apply. This is not a historical rewrite of independent consumer datasets."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-read affected premium and total-by-currency history. Preserve explicit unavailable values when required inputs are missing. The previously supplied ETH 2h reference n=6242984084.28 at 2026-04-10T18:00:00Z predates this release and is superseded by n=6253875127.92, ov=422304977.19. This is a later selector correction, not a return of request-window nondeterminism. Response field names and retention are unchanged.","validation":["Four current breakdown checks and 120 historical requests over 24 coordinates and seven active venues returned HTTP 200. All historical coordinates reconciled three observations across two pages; repeats 91.651–104.505 seconds apart and narrower overlapping windows agreed. Twenty-four premium and sixteen quantity comparisons matched. This is not a whole-history source-quality certification."],"verification":[{"endpoint":"/historical/options/total/oi_by_currency/ETH","parameters":{"start":"2026-04-10","end":"2026-04-10","granularity":"2h","limit":144,"page":1},"expectedStatus":200,"expectedRows":12,"expectedMeta":{"total":12,"items":12,"page":1,"total_pages":1},"expectedValues":{"2026-04-10T18:00:00Z.n":6253875127.92,"2026-04-10T18:00:00Z.ov":422304977.19}}]},{"status":"deployed","publishedAt":"2026-09-18T16:00:00Z","updatedAt":"2026-09-18T16:00:00Z","id":"HIST-2026-09-05-V1-RETIRED-FUTURES-HISTORY","summary":"Recorded intentional removal of retired-venue futures and perpetual history from the live API.","cause":"Retired, stale venue histories were withdrawn from live serving after preservation. Historical aggregate responses consequently no longer include those venue contributions.","deployment":{"deployedAt":"2026-09-05T12:42:10Z","releaseId":"HIST-2026-09-05-V1-RETIRED-FUTURES-HISTORY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/futures/total_oi/:currency","/historical/futures/total_oi_by_exchange/:currency/:option","/historical/futures/total_volume/:currency","/historical/futures/total_volume_by_exchange/:currency/:option"],"fields":["perpetual","future","venue keys and their contributions"],"historicalWindow":"Retained history of AEVO, ARKHAM, BLITZ, FTX, GMX, KWENTA, MANGO, PERP-PROTOCOL and VERTEX where those venues previously contributed. Removal occurred in stages from 2026-09-04T15:54:36Z through 2026-09-05T12:42:10Z. This is a historical coverage withdrawal, not merely a stop to new collection. CME was also retired but was already excluded from these total routes.","selection":{"markets":["AEVO","ARKHAM","BLITZ","FTX","GMX","KWENTA","MANGO","PERP-PROTOCOL","VERTEX"],"currencies":["*"],"granularities":["*"],"historyScope":"conservative_retained_history","sourceFrom":"2021-03-25T09:27:00Z","sourceThrough":"2026-04-13T06:00:00Z"}}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Do not treat an absent retired venue as a zero market observation or splice current totals with older all-venue totals without accounting for the composition change. Retain old copies separately if the retired contributions are required. This notice does not reinstate these venues or promise live-history restoration. It is separate from the options-only AEVO retirement and the global-activity option-field correction.","validation":["Preservation and restore checks covered 195 monthly segments across ten retired venues before removal. The current history control for BTC on 2025-07-01 no longer contains the retired venue keys. Preserved history bounds are conservative route-recollection bounds, not a claim that every currency or timestamp changed."],"verification":[{"endpoint":"/historical/futures/total_oi/BTC","parameters":{"start":"2025-07-01","end":"2025-07-01","granularity":"1d","limit":144,"page":1},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":1,"items":1,"page":1,"total_pages":1},"expectedValues":{"perpetual.VERTEX_present":false,"perpetual.AEVO_present":false,"perpetual.BLITZ_present":false}}]},{"status":"deployed","publishedAt":"2026-09-18T16:00:00Z","updatedAt":"2026-09-18T16:00:00Z","id":"HIST-2026-09-18-V1-TOTAL-OI-SAMPLING-CLARIFICATION","summary":"Clarified which coarse OI samples are affected by the previously published negative-input exclusion.","cause":"Earlier guidance referred to every interval containing a rejected hourly observation, although this series samples the interval start instead of aggregating all hours.","deployment":{"deployedAt":"2026-09-18T16:00:00Z","releaseId":"HIST-2026-09-18-V1-TOTAL-OI-SAMPLING-CLARIFICATION-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/futures/total_oi/:currency","/historical/futures/total_oi_by_exchange/:currency/:option"],"fields":["recollection guidance"],"historicalWindow":"Clarification of HIST-2026-08-19-V1-GAMMA-GEX-ACTIVITY-FOLLOWUP for DOGE at 2024-06-18T02:00:00Z and 03:00:00Z, and XLM at 03:00:00Z. No new values are changed by this notice."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"At 1h re-read the three named source hours. At 2h only the DOGE sample beginning 02:00 selects a named rejected source hour. The containing 4h and 1d samples select 00:00 and are not affected by those three rejected observations. No replacement at a later hour is substituted if an interval-start observation is missing. Rejected invalid contributors are omitted; remaining positive values do not certify complete venue coverage.","validation":["Fresh production hourly and daily controls reproduce HUOBI DOGE 1335560 at 02:00 and 8769648 at 00:00; the latter is the daily sample. XLM at 03:00 has no HUOBI entry."],"verification":[{"endpoint":"/historical/futures/total_oi/DOGE","parameters":{"start":"2024-06-18","end":"2024-06-18","granularity":"1d","limit":144,"page":1},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":1,"items":1,"page":1,"total_pages":1},"expectedValues":{"date":1718668800000,"perpetual.HUOBI":8769648}}]},{"id":"HIST-2026-09-14-DERIBIT-MARKET-ATM-UNAVAILABLE","status":"deployed","publishedAt":"2026-09-14T13:15:00Z","updatedAt":"2026-09-14T13:15:00Z","summary":"Withdrew four unrecoverable Deribit ETH 30-day market ATM values and strengthened strike-coverage checks.","cause":"The retained strikes of a required expiry did not bracket the underlying, causing a wing quote to be treated as ATM. The required near-ATM quotes could not be recovered from retained inputs.","deployment":{"deployedAt":"2026-09-14T12:36:47Z","releaseId":"HIST-2026-09-14-DERIBIT-MARKET-ATM-UNAVAILABLE-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/atm_iv/:market/:currency"],"fields":["30"],"historicalWindow":"DERIBIT/ETH, 2026-08-31T19:40:00Z, 19:45:00Z, 19:50:00Z and 19:55:00Z only. These four market ATM 30-day values are explicitly null at every query resolution selecting these observations. Timestamps, other tenor values and page counts are unchanged."},{"apiVersion":"v1","endpoints":["/historical/options/atm_iv/:market/:currency","/historical/options/type/butterfly/:market/:currency/:type","/historical/options/type/skew/:market/:currency/:type"],"fields":["items"],"historicalWindow":"Forward market-series publication for DERIBIT/BTC and DERIBIT/ETH from the 2026-09-14T12:35:00Z observation. An expiry whose retained strike range does not bracket the underlying is unavailable for ATM, butterfly and normalized skew; it is not skipped to interpolate across another expiry. Independent risk-reversal values are not withheld by this ATM check. This safeguard does not retrospectively rewrite butterfly, skew or risk-reversal history."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-read the four ETH 30-day observations and replace the previous numbers with explicit unavailable values. Do not interpolate replacement values or load the withdrawn observations as valid measurements. Original retained inputs were insufficient for a source-backed repair. Model ATM, other exchanges and other historical tenor values are unchanged by these four withdrawals.","validation":["The strengthened check rejected all four partial-chain input cases and preserved six healthy or previously repaired controls. Eight additional strike-coverage and unaffected-scope cases passed.","After production rollout completed at 12:36:47 UTC, 20 public requests checked all pages of 15 cases: five event windows, two window shapes and a repeated shape at least 80 seconds apart. All 106 supplied values matched: 43 previously corrected, four explicitly null and 59 unchanged. Every page count reconciled."],"verification":[{"endpoint":"/historical/options/atm_iv/deribit/eth","parameters":{"start":"2026-08-31T19:25:00Z","end":"2026-08-31T20:15:00Z","granularity":"5m","limit":144,"page":1},"expectedStatus":200,"expectedRows":11,"expectedMeta":{"total":11,"items":11,"page":1,"total_pages":1},"expectedValues":{"2026-08-31T19:40:00Z.30":null,"2026-08-31T19:45:00Z.30":null,"2026-08-31T19:50:00Z.30":null,"2026-08-31T19:55:00Z.30":null}}]},{"id":"HIST-2026-09-14-DERIBIT-MARKET-ATM-REPAIR","status":"deployed","publishedAt":"2026-09-14T13:15:00Z","updatedAt":"2026-09-14T13:15:00Z","summary":"Recovered missing Deribit BTC/ETH market ATM observations and corrected reproducible historical spikes.","cause":"Missing market-ATM publications were recoverable from retained option inputs. Separately, grouping quotes by rounded time to expiry could fragment a single expiry and select a wing IV; the corrected calculation groups by expiry identity and preserves unavailable operands.","deployment":{"deployedAt":"2026-09-14T11:29:33.237362Z","releaseId":"HIST-2026-09-14-DERIBIT-MARKET-ATM-REPAIR-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/atm_iv/:market/:currency"],"fields":["1","7","14","30","60","90","180","270","365","meta.total","meta.total_pages"],"historicalWindow":"DERIBIT/BTC and DERIBIT/ETH: selected missing five-minute observations in the investigated 2026-06-06 through 2026-09-04 window. Spike corrections: BTC 30d at 2026-06-06T09:05:00Z and 2026-07-28T07:10:00Z; ETH 30d at 2026-06-06T07:10:00Z; 40 ETH values across tenors 7/14/30/60/90 in 2026-09-04T14:00:00Z through 15:15:00Z. Not every row in these windows changed."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-read the affected market ATM windows following all declared pages. The recovery added 8,784 tenor values at 976 previously missing currency/timestamp slots (488 BTC, 488 ETH) and corrected 43 values. Twenty-four currency/timestamp slots remain unavailable: both BTC and ETH at 10:00, 10:05, 10:10, 10:15, 10:20 and 10:25 UTC on 2026-07-07 and 2026-08-18. Retained inputs were absent; this is not a claim that the exchange had no data. Separately apply HIST-2026-09-14-DERIBIT-MARKET-ATM-UNAVAILABLE to four ETH 30d values. These are revised/recovered values, not certified as-originally-published point-in-time data.","validation":["Of 1,000 reported missing currency/timestamp slots, 976 were restored and 24 remained unavailable. Nine tenors per restored slot give 8,784 newly served values. The completed backfill was verified in production with 96 HTTP 200 requests over 66 cases, all pages and spaced repeats; 4,356 compared pre-existing values were unchanged.","The 43 replaced anomaly values were verified with 20 additional HTTP 200 requests over 15 cases using five event windows and two window shapes with spaced repeats. A further 20-request post-withdrawal replay confirmed the corrected values remain served. Historical risk reversal, butterfly, skew, model ATM, DVOL and other exchanges were not backfilled or rewritten by this repair."],"verification":[{"endpoint":"/historical/options/atm_iv/deribit/btc","parameters":{"start":"2026-06-09T13:55:00Z","end":"2026-06-09T14:05:00Z","granularity":"5m","limit":144,"page":1},"expectedStatus":200,"expectedRows":2,"expectedMeta":{"total":2,"items":2,"page":1,"total_pages":1}},{"endpoint":"/historical/options/atm_iv/deribit/eth","parameters":{"start":"2026-09-04T13:55:00Z","end":"2026-09-04T15:20:00Z","granularity":"5m","limit":144,"page":1},"expectedStatus":200,"expectedRows":18,"expectedMeta":{"total":18,"items":18,"page":1,"total_pages":1},"expectedValues":{"2026-09-04T14:20:00Z.30":49.5886}}]},{"id":"HIST-2026-09-11-V2-OHLCVT-CONSISTENCY","status":"deployed","publishedAt":"2026-09-11T10:51:08Z","updatedAt":"2026-09-11T10:51:08Z","summary":"Corrected options spot-index references and volume weighting of coarser OHLCVT candles and selected snapshots.","cause":"Some options candle index values represented the option pricing underlying rather than the exchange spot index. Coarser VWAPs averaged minute values without weighting them by traded volume, and missing final option references could select an earlier available value.","deployment":{"deployedAt":"2026-09-11T10:46:50Z","releaseId":"HIST-2026-09-11-V2-OHLCVT-CONSISTENCY-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/options/ohlcvt"],"fields":["index_price"],"historicalWindow":"Full currently served history at every resolution. The index is the exchange spot reference at the final observed candle minute. An unavailable reference is null; the option pricing underlying is not substituted for it."},{"apiVersion":"v2","endpoints":["/api/v1/options/reference-price"],"fields":["index_price","underlying_price"],"historicalWindow":"Full currently served history at every resolution for final-reference selection and unavailable-value handling. Positive equal spot and underlying references remain valid."},{"apiVersion":"v2","endpoints":["/api/v1/options/volatility"],"fields":["underlying_price"],"historicalWindow":"Full currently served history at every resolution for final-reference selection and unavailable-value handling. IV and Greeks definitions are unchanged."},{"apiVersion":"v2","endpoints":["/api/v1/options/ticker-history","/api/v1/options/snapshot"],"fields":["index_price"],"historicalWindow":"Full currently served history at every resolution where a non-positive or non-finite index represented an unavailable reference; these values are now null."},{"apiVersion":"v2","endpoints":["/api/v1/options/ohlcvt","/api/v1/futures/ohlcvt","/api/v1/perpetuals/ohlcvt","/api/v1/spot/ohlcvt","/api/v1/predictions/ohlcvt","/api/v1/options/snapshot","/api/v1/futures/snapshot","/api/v1/perpetuals/snapshot","/api/v1/predictions/snapshot"],"fields":["vwap"],"historicalWindow":"Full currently served history at resolutions above one minute. Minute VWAPs are weighted by traded volume. An interval with no traded volume retains the mean minute reference price; mark-filled candles remain available."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Refresh previously collected values in the affected fields and scopes, following every page of each requested window. Closed responses may change without a historical backfill; not every row changes. OHLCVT response fields, OHLC values, volumes, request parameters, historical coverage and retention windows are unchanged. The separate option pricing underlying remains available on the existing reference-price endpoint, not as a new OHLCVT field.","validation":["Production verification completed 13 checks across 28 requests, all HTTP 200, with zero failed checks. It covered options, futures, perpetuals, spot and predictions at one-minute, five-minute and hourly resolutions, four snapshot families, and options reference-price and volatility final-reference selection.","Comparison with the pre-release responses preserved the field sets, row counts, OHLC, volumes and other non-corrected values of all 365 control candles. The options control retained all 60 one-minute candles, including 55 zero-volume minutes; no underlying_price or data_source field was added to options OHLCVT.","The hourly Deribit options control returned volume 9.2, 18 trades, VWAP 0.01990760869565218 and spot index 76869.05. Its 60 minute indices matched the same-minute reference-price responses, and three hourly requests returned identical candle values.","The zero-volume prediction control retained 60 minute candles and its mean-price fallback at both coarser resolutions. Selected hourly snapshot VWAPs matched their minute-history volume-weighted values."],"verification":[{"endpoint":"/api/v1/options/ohlcvt","parameters":{"exchange":"deribit","instrument_name":"BTC-25SEP26-80000-C","start":"2026-09-10T12:00:00Z","end":"2026-09-10T12:59:59Z","resolution":"1m","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":60,"expectedMeta":{"next_cursor":null},"expectedValues":{"date":"2026-09-10T12:00:00.000Z","index_price":77838.3,"close":0.0203,"volume":0}},{"endpoint":"/api/v1/options/ohlcvt","parameters":{"exchange":"deribit","instrument_name":"BTC-25SEP26-80000-C","start":"2026-09-10T12:00:00Z","end":"2026-09-10T12:59:59Z","resolution":"1h","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"next_cursor":null},"expectedValues":{"index_price":76869.05,"vwap":0.01990760869565218,"volume":9.2,"trades_count":18}},{"endpoint":"/api/v1/options/reference-price","parameters":{"exchange":"deribit","instrument_name":"BTC-25SEP26-80000-C","start":"2026-09-10T12:00:00Z","end":"2026-09-10T12:59:59Z","resolution":"1h","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"next_cursor":null},"expectedValues":{"index_price":76869.05,"underlying_price":76973.23}},{"endpoint":"/api/v1/options/volatility","parameters":{"exchange":"deribit","instrument_name":"BTC-25SEP26-80000-C","start":"2026-09-10T12:00:00Z","end":"2026-09-10T12:59:59Z","resolution":"1h","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"next_cursor":null},"expectedValues":{"underlying_price":76973.23}},{"endpoint":"/api/v1/futures/ohlcvt","parameters":{"exchange":"deribit","instrument_name":"BTC-25SEP26","start":"2026-09-10T12:00:00Z","end":"2026-09-10T12:59:59Z","resolution":"1h","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"next_cursor":null},"expectedValues":{"vwap":77434.37189437148,"volume":3431270,"trades_count":1219}},{"endpoint":"/api/v1/perpetuals/ohlcvt","parameters":{"exchange":"deribit","instrument_name":"BTC-PERPETUAL","start":"2026-09-10T12:00:00Z","end":"2026-09-10T12:59:59Z","resolution":"1h","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"next_cursor":null},"expectedValues":{"vwap":77245.23380741554,"volume":68216720,"trades_count":15309}},{"endpoint":"/api/v1/spot/ohlcvt","parameters":{"exchange":"binance","instrument_name":"BTCUSDT","start":"2026-09-10T12:00:00Z","end":"2026-09-10T12:59:59Z","resolution":"1h","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"next_cursor":null},"expectedValues":{"vwap":77401.95032210968,"trades_count":106023}},{"endpoint":"/api/v1/predictions/ohlcvt","parameters":{"exchange":"polymarket","instrument_name":"1-megaton-meteor-strike-in-2026-NO","start":"2026-09-10T12:00:00Z","end":"2026-09-10T12:59:59Z","resolution":"1h","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"next_cursor":null},"expectedValues":{"close":0.987,"volume":0,"trades_count":0}}]},{"id":"HIST-2026-09-10-V2-HISTORICAL-INTERVALS","status":"deployed","publishedAt":"2026-09-10T13:17:35Z","updatedAt":"2026-09-10T13:17:35Z","summary":"Corrected interval aggregation, resolution handling and pagination on selected historical endpoints.","cause":"Some interval responses did not consistently use the first and final observations of the requested interval; selected routes also applied resolution, time bounds or pagination inconsistently.","deployment":{"deployedAt":"2026-09-10T13:13:21Z","releaseId":"HIST-2026-09-10-V2-HISTORICAL-INTERVALS-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/options/ticker-history","/api/v1/predictions/ticker-history"],"fields":["data","meta.next_cursor"],"historicalWindow":"Full currently served history. Resolution handling affects intervals above one minute; consistent final-state selection and pagination also apply at one-minute resolution."},{"apiVersion":"v2","endpoints":["/api/v1/options/ohlcvt","/api/v1/options/open-interest","/api/v1/options/reference-price","/api/v1/options/volatility","/api/v1/predictions/ohlcvt","/api/v1/futures/orderbook","/api/v1/perpetuals/orderbook"],"fields":["data","meta.next_cursor"],"historicalWindow":"Full currently served history at resolutions above one minute for interval value selection. Options open-interest time bounds, options volatility pagination and prediction OHLCVT ordering also apply at one-minute resolution."},{"apiVersion":"v2","endpoints":["/api/v1/options/snapshot","/api/v1/futures/snapshot","/api/v1/perpetuals/snapshot","/api/v1/spot/snapshot","/api/v1/predictions/snapshot"],"fields":["data","meta.date","meta.next_date"],"historicalWindow":"Full currently served snapshot history at resolutions above one minute, and requests whose date is not aligned to the requested UTC interval."},{"apiVersion":"v2","endpoints":["/api/v1/options/volume","/api/v1/futures/volume","/api/v1/perpetuals/volume","/api/v1/spot/volume"],"fields":["data","meta.next_cursor"],"historicalWindow":"Full currently served history. Options, futures and perpetual rolling 24-hour counters at resolutions above one minute use the final counter, not the sum of counters. Options time bounds and multi-exchange pagination on all four routes apply at every resolution; spot rolling counters are unchanged."},{"apiVersion":"v2","endpoints":["/api/v1/options/vol-surface/by-time","/api/v1/options/vol-surface/by-expiry","/api/v1/options/vol-surface/by-tenor"],"fields":["data","meta.next_cursor","meta.date","meta.next_date"],"historicalWindow":"Full currently served history at every resolution for stable repeated selections and pagination; interval reference values and snapshot UTC alignment also affect coarse resolutions."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-fetch previously collected responses in the affected scopes, including all pages of each selected window. This can change closed historical responses without a source-data backfill. Not every row changes. Response formats, source definitions, historical coverage and retention windows are unchanged.","validation":["A production replay completed 61 representative historical API checks across 157 requests, all HTTP 200, with zero failed checks. It covered six resolutions, interval values, bounded windows, pagination in both directions, snapshot metadata and repeated responses.","The Deribit options control returned 60 one-minute rows, 12 five-minute rows and one hourly row in the one-hour window. Its hourly open interest was 6700.7 at open and 6683.2 at close, matching the first and final minute observations.","The four-hour BTC surface-by-expiry control returned 44 rows; pagination with two time buckets per page reproduced all 44 rows across two pages in each direction. BTC and ETH surface controls returned identical values across three repeated requests each.","The hourly BTC options snapshot returned 1530 rows and labelled the non-aligned date request with the interval start 2026-09-09T12:00:00.000Z and next interval 2026-09-09T13:00:00.000Z."],"verification":[{"endpoint":"/api/v1/options/ticker-history","parameters":{"exchange":"deribit","instrument_name":"BTC-25SEP26-80000-C","start":"2026-09-09T12:00:00Z","end":"2026-09-09T12:59:59Z","resolution":"5m","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":12,"expectedMeta":{"next_cursor":null},"expectedValues":{"date":"2026-09-09T12:00:00.000Z","mark_price":0.0299}},{"endpoint":"/api/v1/options/open-interest","parameters":{"exchange":"deribit","instrument_name":"BTC-25SEP26-80000-C","start":"2026-09-09T12:00:00Z","end":"2026-09-09T12:59:59Z","resolution":"1h","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"next_cursor":null},"expectedValues":{"date":"2026-09-09T12:00:00.000Z","oi_open":6700.7,"oi_close":6683.2}},{"endpoint":"/api/v1/perpetuals/orderbook","parameters":{"exchange":"deribit","instrument_name":"BTC-PERPETUAL","start":"2026-09-09T12:00:00Z","end":"2026-09-09T12:59:59Z","resolution":"1h","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"next_cursor":null}},{"endpoint":"/api/v1/options/volume","parameters":{"exchange":"deribit","instrument_name":"BTC-25SEP26-80000-C","start":"2026-09-09T12:01:00Z","end":"2026-09-09T13:01:00Z","resolution":"1h","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":2,"expectedMeta":{"next_cursor":null},"expectedValues":{"date":"2026-09-09T12:00:00.000Z","volume_24h":505.3,"volume_usd_24h":1079032.14}},{"endpoint":"/api/v1/options/vol-surface/by-expiry","parameters":{"exchange":"deribit","currency":"BTC","start":"2026-09-09T12:00:00Z","end":"2026-09-09T15:59:59Z","resolution":"1h","limit":1000,"sort_dir":"ASC"},"expectedStatus":200,"expectedRows":44,"expectedMeta":{"next_cursor":null,"has_more":false}},{"endpoint":"/api/v1/options/snapshot","parameters":{"exchange":"deribit","currency":"BTC","date":"2026-09-09T12:14:00Z","resolution":"1h"},"expectedStatus":200,"expectedRows":1530,"expectedMeta":{"date":"2026-09-09T12:00:00.000Z","next_date":"2026-09-09T13:00:00.000Z"}}]},{"id":"HIST-2026-09-09-V1-COINBASE-SPOT-HOURLY-RECOVERY","status":"deployed","publishedAt":"2026-09-09T19:10:17Z","updatedAt":"2026-09-09T19:10:17Z","summary":"Restored all source-available Coinbase hourly candles in the supplied 951-symbol gap inventory.","cause":"Hourly source candles available for the identified gap dates had not been published by the historical route.","deployment":{"deployedAt":"2026-09-09T18:57:34Z","releaseId":"HIST-2026-09-09-V1-COINBASE-SPOT-HOURLY-RECOVERY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/spot/COINBASE/:symbol/1h"],"fields":["items","meta.total","meta.items","meta.total_pages"],"historicalWindow":"The 2,229 supplied gap ranges across 483 Coinbase symbols, from 2023-10-03 through 2026-08-11."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect the supplied hourly gap ranges. Source-available hours are now served; the accompanying exception list identifies every source-unavailable hour and defines the resolution fields used in that list.","validation":["The source pass examined 2,607,840 expected symbol-hours, recovered 2,298,080 source hours, and classified 309,760 source-unavailable hours across 40,772 symbol-days, with zero duplicate natural keys.","Before publication, 43,392 recovered source hours were already served and were preserved; 2,254,688 missing source hours were restored. The complete 2,298,080-row source set then had zero missing keys.","Three public verification coordinates returned all 88 source hours, zero value mismatches, and one stable response body per coordinate across three repeated requests."],"verification":[{"endpoint":"/historical/spot/COINBASE/00-USD/1h","parameters":{"start":"2025-07-03","end":"2025-07-03","limit":144,"page":1},"expectedStatus":200,"expectedRows":18,"expectedMeta":{"total":18,"page":1,"total_pages":1}}]},{"id":"HIST-2026-09-09-V2-RAW-L2-COVERAGE-METADATA","status":"deployed","publishedAt":"2026-09-09T19:10:17Z","updatedAt":"2026-09-09T19:10:17Z","summary":"Aligned observed coverage metadata between successful and empty raw L2 responses.","cause":"Observed coverage bounds were applied during empty-response classification but were not attached to successful raw L2 responses.","deployment":{"deployedAt":"2026-09-09T18:20:46Z","releaseId":"HIST-2026-09-09-V2-RAW-L2-COVERAGE-METADATA-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/orderbook-raw","/api/v1/perpetuals/orderbook-raw","/api/v1/spot/l2-orderbook-raw","/api/v1/predictions/orderbook-raw"],"fields":["meta.coverage.earliest_observed_at","meta.coverage.latest_observed_at"],"historicalWindow":"All successful raw L2 responses."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"No data recollection is required. Re-query raw L2 coverage metadata when establishing a collection lower bound. Raw L2 retains its separately declared rolling 30-day window.","validation":["Successful perpetual and spot raw L2 controls each returned one row with both earliest_observed_at and latest_observed_at populated.","Six production replay requests across the two controls returned HTTP 200 and complete observed coverage bounds."],"verification":[{"endpoint":"/api/v1/perpetuals/orderbook-raw","parameters":{"exchange":"deribit","instrument_name":"BTC-PERPETUAL","limit":1,"sort_dir":"DESC"},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"coverage.source_id":"perpetuals.orderbook_raw","coverage.earliest_observed_at_present":true,"coverage.latest_observed_at_present":true}}]},{"id":"HIST-2026-09-09-V1-SPOT-DETERMINISTIC-CLOSE","status":"deployed","publishedAt":"2026-09-09T19:10:17Z","updatedAt":"2026-09-09T19:10:17Z","summary":"Made closed historical spot candles deterministic when more than one same-timestamp source revision is retained.","cause":"A closed bucket could consider more than one retained revision at the same source timestamp. The tied candidates could make close vary between otherwise identical repeated requests.","deployment":{"deployedAt":"2026-09-09T16:09:23Z","releaseId":"HIST-2026-09-09-V1-SPOT-DETERMINISTIC-CLOSE-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/spot/:market/:symbol/:period"],"fields":["close"],"historicalWindow":"Retained closed spot history containing multiple revisions at the same source timestamp."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect closed historical spot windows for which deterministic reproduction is required. The currently served close is the source-of-record value.","validation":["All 50 previously varying rows across the six reported Coinbase coordinates were replayed after deployment.","Thirty production requests, five per coordinate, returned one byte-identical response body per coordinate and one current close per row."],"verification":[{"endpoint":"/historical/spot/COINBASE/BTC-USDT/1d","parameters":{"start":"2026-04-18","end":"2026-04-18","limit":144,"page":1},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":1,"page":1,"total_pages":1},"expectedValues":{"timestamp":1776470400000,"close":75711.53}}]},{"id":"HIST-2026-09-07-V1-COINBASE-SPOT-DAILY-RECOVERY","status":"deployed","publishedAt":"2026-09-07T09:52:17Z","updatedAt":"2026-09-07T10:05:58Z","summary":"Restored all recoverable Coinbase daily candles in the supplied 951-symbol gap inventory.","cause":"Some daily source candles available for the identified gap dates had not been published by the historical route.","deployment":{"deployedAt":"2026-09-07T09:40:20Z","releaseId":"HIST-2026-09-07-V1-COINBASE-SPOT-DAILY-RECOVERY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/spot/COINBASE/:symbol/1d"],"fields":["items","meta.total","meta.items","meta.total_pages"],"historicalWindow":"The 2,229 supplied gap ranges across 483 Coinbase symbols, from 2023-10-03 through 2026-08-11."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect the supplied daily gap ranges. Of 108,660 requested symbol-days, 108,403 are now served and 257 remain source-unavailable and unserved in the accompanying exception list.","validation":["The source pass produced 108,397 unique daily candles with zero duplicate natural keys and 263 source-unavailable symbol-days.","Before publication, 54,989 recoverable source candles were already served and 53,408 were newly restored; the complete recoverable set was then present with zero missing keys.","The source pass could not retrieve 263 symbol-days. Six of those were already served, leaving 257 source-unavailable and unserved after publication."],"verification":[{"endpoint":"/historical/spot/COINBASE/BAL-BTC/1d","parameters":{"start":"2024-08-31","end":"2024-08-31","limit":144,"page":1},"expectedStatus":200,"expectedRows":1,"expectedMeta":{"total":1,"page":1,"total_pages":1}}]},{"id":"HIST-2026-09-04-V2-LEVEL1-QUOTE-CLOSE","status":"deployed","publishedAt":"2026-09-04T08:22:08Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Corrected spot level1 close selection at coarse resolutions and excluded minutes without a complete quote sample from level1 publication.","cause":"The spot coarse-resolution query could use the output bucket as its within-bucket ordering key, making close select the first rather than the last contributing minute. Separately, ticker-only minutes could be published as all-zero level1 observations even though they contained no complete bid/ask sample.","deployment":{"deployedAt":"2026-09-04T08:22:08Z","releaseId":"HIST-2026-09-04-V2-LEVEL1-QUOTE-CLOSE-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/spot/level1"],"fields":["*_open","*_close"],"historicalWindow":"All retained spot level1 history requested at a resolution above 1m."},{"apiVersion":"v2","endpoints":["/api/v1/futures/level1","/api/v1/perpetuals/level1","/api/v1/options/level1","/api/v1/spot/level1"],"fields":["data"],"historicalWindow":"All retained minutes that contain no complete bid/ask quote sample."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect retained spot level1 history at resolutions above 1m. Across every level1 family, treat previously returned all-zero rows with no complete quote sample as missing rather than as observations.","validation":["The reported Binance BTCUSDT and ETHUSDT hourly rows now select every close field from the last contributing persisted minute.","The reported Bullish XLM-USDC-PERP minute window now omits ticker-only all-zero level1 rows."],"verification":[{"endpoint":"/api/v1/spot/level1","parameters":{"exchange":"binance","instrument_name":"BTCUSDT","resolution":"1h","start":"2026-08-28T00:00:00Z","end":"2026-08-28T00:59:00Z","limit":1000},"expectedStatus":200,"expectedRows":1},{"endpoint":"/api/v1/perpetuals/level1","parameters":{"exchange":"bullish","instrument_name":"XLM-USDC-PERP","resolution":"1m","start":"2026-08-28","end":"2026-08-29","limit":1000},"expectedStatus":200,"expectedRows":0}]},{"id":"HIST-2026-09-04-V1-COINBASE-SPOT-RESOLUTION-RECOVERY","status":"deployed","publishedAt":"2026-09-04T07:58:22Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Restored the reported Coinbase spot gaps for seven USDT selectors at daily and hourly resolution.","cause":"The historical route selected minute-source rows for post-2024 requests even where an exact-resolution recovery row existed. Exact daily and hourly recovery rows are now used only when a requested bucket has no minute-source row, preserving minute-derived results where available.","deployment":{"deployedAt":"2026-09-04T07:58:22Z","releaseId":"HIST-2026-09-04-V1-COINBASE-SPOT-RESOLUTION-RECOVERY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/spot/COINBASE/:symbol/:period"],"fields":["items","meta.total","meta.items","meta.total_pages"],"historicalWindow":"The 40 reported gap ranges across ADA-USDT, BTC-USDT, DOGE-USDT, ETH-USDT, SOL-USDT, XLM-USDT, and XRP-USDT, from 2024-01-02 through 2026-01-12, at 1d and 1h."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect the 40 reported gap ranges for the seven listed USDT selectors at 1d and 1h. All 1,858 symbol-days now return at least one row at both resolutions; hourly publication contains 43,391 rows, with 1,630 complete 24-hour days and 228 source-sparse days.","validation":["A full public replay of all 40 ranges returned every one of the 1,858 expected symbol-days at both daily and hourly resolution, with no failed requests.","The recovery introduced no duplicate natural keys and retained minute-derived values wherever the minute source already populated the requested bucket."],"verification":[{"endpoint":"/historical/spot/COINBASE/BTC-USDT/1d","parameters":{"start":"2024-01-02","end":"2024-01-04","limit":144,"page":1},"expectedStatus":200,"expectedRows":3,"expectedMeta":{"total":3,"page":1,"total_pages":1}}]},{"id":"HIST-2026-09-04-V1-MODEL-SKEW-PUBLICATION","status":"deployed","publishedAt":"2026-09-04T07:27:34Z","updatedAt":"2026-09-09T19:10:17Z","summary":"Aligned model-skew row publication, precision, formula evaluation, and pagination to one contract population.","cause":"The route could count candidate rows before applying the same validity and completeness rules used for publication, and could expose a derived value that did not correspond to the operands published on the same row.","deployment":{"deployedAt":"2026-09-04T07:27:34Z","releaseId":"HIST-2026-09-04-V1-MODEL-SKEW-PUBLICATION-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/actual_vol/skew_model/:market/:currency/:type/:days"],"fields":["atm","c","p","d","meta.total","meta.items","meta.total_pages"],"historicalWindow":"All served model-skew history."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect the full model-skew history used by your system. Publishable rows use fixed field precision (atm, c, and p at four decimal places; d at two), derive d from the published operands, and omit incomplete or invalid rows rather than emitting a partial row.","validation":["Focused relationship, incomplete-row, pagination-population, and response-contract tests passed.","The reported BINANCE/BNB/10D/365 daily coordinate declared 222 rows and served all 222 across two pages (144 and 78), with zero relationship violations."],"verification":[{"endpoint":"/historical/options/actual_vol/skew_model/BINANCE/BNB/10D/365","parameters":{"start":"2026-01-01","end":"2026-08-24","granularity":"1d","limit":144,"page":1},"expectedStatus":200,"expectedRows":144,"expectedMeta":{"total":222,"page":1,"total_pages":2}}]},{"id":"HIST-2026-09-04-V1-ACTIVE-VENUE-GLOBAL-ACTIVITY","status":"deployed","publishedAt":"2026-09-04T06:12:42Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Updated the option component of global activity history to include only supported option venues.","cause":"Historical global activity included option observations from venues that are no longer part of the supported option universe. Removing those retired observations changed the option component of closed aggregate rows; futures and perpetual components were not changed.","deployment":{"deployedAt":"2026-09-01T14:47:23Z","releaseId":"HIST-2026-09-04-V1-ACTIVE-VENUE-GLOBAL-ACTIVITY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/futures/oi_total_global_activity","/historical/futures/volume_total_global_activity"],"fields":["option"],"historicalWindow":"All served closed history containing option observations from a venue retired by 2026-09-01T14:47:23Z."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect every closed global-activity window used by your system. Treat the currently served option value as the contract generation; the future and perpetual fields were not affected by this correction.","validation":["Current production responses were compared with the prior generation across 2,440 timestamps. The option field changed where retired venue observations had contributed; future and perpetual were unchanged."],"verification":[{"endpoint":"/historical/futures/oi_total_global_activity","parameters":{"start":"2024-03-05","end":"2024-03-05","granularity":"1h","limit":144,"page":1},"expectedStatus":200,"expectedValues":{"timestamp":"2024-03-05T00:00:00Z","option":20559294.9625,"future":3395756992.2000003,"perpetual":49774519663.31}}]},{"id":"HIST-2026-07-04-V2-L2-OHLC-GENERATION","status":"deployed","publishedAt":"2026-09-04T06:12:42Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Records the delayed publication of the July 2026 L2 OHLC generation boundary.","cause":"The earlier L2 generation retained the last observation as both open and close. The corrected generation preserves the first and last observations independently. The transition occurred per series between 2026-07-04 and 2026-07-06 and is separate from the August L2 determinism correction.","deployment":{"deployedAt":"2026-07-04T01:51:00Z","releaseId":"HIST-2026-07-04-V2-L2-OHLC-GENERATION-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/orderbook","/api/v1/perpetuals/orderbook","/api/v1/spot/l2-orderbook"],"fields":["*_open","*_close"],"historicalWindow":"Rows before each series-specific corrected-generation boundary. Most series transitioned on 2026-07-04; the latest observed transition completed on 2026-07-06."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Exclude rows before the first corrected-generation row for each series from model input. Re-collection does not repair the earlier flattened generation. The per-series first_all_open_ne_close_utc selector supplied with the 2026-08-30 validation is the applicable boundary list.","validation":["The full L2 re-collection located the same transition in futures, perpetual, and spot series and distinguished post-boundary statistical open/close ties from the earlier flattened generation."],"verification":[{"endpoint":"/api/v1/perpetuals/orderbook","parameters":{"exchange":"deribit","instrument_name":"BTC-PERPETUAL","resolution":"1h","start":"2026-07-04T01:00:00Z","end":"2026-07-04T02:00:00Z","limit":10},"expectedStatus":200,"expectedRows":2}]},{"id":"HIST-2026-09-03-V2-TRADE-PRODUCT-CLASSIFICATION","status":"deployed","publishedAt":"2026-09-03T18:25:02Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Corrected futures and perpetual trade-history classification across venue-specific instrument naming conventions.","cause":"Trade-history queries inferred the product class from an instrument-name suffix used by one venue. Perpetual symbols on venues with other naming conventions could therefore be omitted from perpetual responses and included in dated-futures responses. Queries now use the normalized maturity classification published with each trade.","deployment":{"deployedAt":"2026-09-03T18:16:30Z","releaseId":"HIST-2026-09-03-V2-TRADE-PRODUCT-CLASSIFICATION-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/trades","/api/v1/futures/trades/summary","/api/v1/futures/flow","/api/v1/perpetuals/trades","/api/v1/perpetuals/trades/summary","/api/v1/perpetuals/flow"],"fields":["data","summary","notable_trades","meta.next_cursor"],"historicalWindow":"Every window requested before the deployment where futures or perpetual product membership depended on a venue-specific instrument name."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect affected v2 futures and perpetual trade, trade-summary, and flow responses obtained before the deployment when using non-Deribit venues or currency-level aggregation. Stored trade rows were already present; no data backfill is required.","validation":["All automated futures and perpetual test suites passed with explicit coverage for perpetual inclusion and dated-futures exclusion.","Production requests returned current perpetual trades for Binance BTCUSD1, BTCU, and BTCUSDT with maturity PERPETUAL, while the dated-futures route excluded BTCUSD1 and continued to return a current dated Binance contract.","Production trade-summary and flow requests returned populated perpetual results, and a Deribit BTC-PERPETUAL control remained available."],"verification":[{"endpoint":"/api/v1/perpetuals/trades","parameters":{"exchange":"binance","instrument_name":"BTCUSD1","start":"2026-09-03T18:16:30Z","end":"2026-09-03T18:17:30Z","limit":100},"expectedStatus":200,"expectedRows":44,"expectedValues":{"instrument_name":"BTCUSD1","maturity":"PERPETUAL"}}]},{"id":"HIST-2026-09-01-V1-MODEL-SKEW-RELATION","status":"deployed","publishedAt":"2026-09-01T09:28:13Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Corrected persisted model-skew values that could not satisfy the published relationship between d, atm, c, and p.","cause":"Some historical model-skew observations retained a previously derived d value that was inconsistent with the call-IV, put-IV, and ATM-IV values published on the same row. The correction derives d from those three published inputs and changes only rows outside the interval implied by their visible precision.","deployment":{"deployedAt":"2026-09-01T08:54:46Z","releaseId":"HIST-2026-09-01-V1-MODEL-SKEW-RELATION-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/actual_vol/skew_model/:market/:currency/:type/:days"],"fields":["d"],"historicalWindow":"All available model-skew history through 2026-09-01 00:00:00 UTC where the published d value fell outside the rounding interval implied by atm, c, and p."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect the full available v1 skew_model history used by your system through 2026-09-01 00:00:00 UTC, across every market, currency, delta type, days parameter, and granularity used. History collected after the deployment applies the corrected d values.","validation":["The correction completed across all available years and produced 4,470,218 unique corrected observations with matching counts on both production copies.","The reported BINANCE/BTC/15D/180 observation at 2023-07-14T14:00:00Z now returns atm=51.53, c=58.72, p=45.69, and d=-25.29, matching d=(p-c)/atm*100 at published precision.","Correction selection accounts for the observed precision of each input row and leaves values unchanged when the published fields can already satisfy the relationship within their rounding interval."]},{"id":"HIST-2026-08-27-V2-LIQUIDITY-SAMPLE-CONSISTENCY","status":"deployed","publishedAt":"2026-08-28T09:02:21Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Aligned total-liquidity OHLC values and averages to one complete bid/ask sample population across v2 level1 families.","cause":"Minute aggregation could combine a current one-sided size update with a carried-forward opposite side and divide the liquidity sum by the count of all ticker messages. That mixed sample population allowed total_liquidity_avg to be zero or below total_liquidity_low even when complete positive bid/ask pairs were present.","deployment":{"deployedAt":"2026-08-27T16:12:22Z","releaseId":"HIST-2026-08-27-V2-LIQUIDITY-SAMPLE-CONSISTENCY-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/level1","/api/v1/perpetuals/level1","/api/v1/options/level1","/api/v1/spot/level1"],"fields":["total_liquidity_open","total_liquidity_high","total_liquidity_low","total_liquidity_close","total_liquidity_avg"],"historicalWindow":"Persisted minute bars produced at or after the deployment. Older persisted minute bars retain the legacy aggregation and are not rewritten by this deployment."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"For the corrected semantics, collect level1 data from 2026-08-27T16:12:22Z onward. Do not mix older legacy-generation liquidity fields with corrected-generation fields without recording the deployment boundary; no retrospective liquidity backfill was performed.","validation":["Differential and focused aggregation tests cover futures, perpetuals, options, predictions, and spot ticker families and require all total-liquidity OHLC and average values to use the same complete-pair population.","The production deployment and post-deployment verification completed successfully.","A public production sample compared 1,424 recent one-minute rows across perpetuals, futures, spot, and options level1 endpoints and found zero total_liquidity_avg values outside total_liquidity_low through total_liquidity_high."]},{"id":"HIST-2026-08-19-V1-IV-BID-ASK-VALIDATION","status":"deployed","publishedAt":"2026-08-19T13:10:08Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Excluded unavailable, non-positive, extreme, and bid-above-ask source quotes before v1 IV smile interpolation.","cause":"Legacy source history can encode an unavailable bid or ask as -100 or another non-positive value. The interpolation query previously admitted those sentinels and did not enforce bid IV less than or equal to ask IV, allowing invalid source quotes to become normal-looking interpolated values.","deployment":{"deployedAt":"2026-08-19T11:17:53Z","releaseId":"HIST-2026-08-19-V1-IV-BID-ASK-VALIDATION-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/type/iv_bid_ask/:market/:currency/:type"],"fields":["{tenor}.b","{tenor}.a","{tenor}.m"],"historicalWindow":"Every closed window whose selected interpolation inputs contained a non-positive, non-finite, above-10,000-percent, or bid-above-ask IV quote."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect every v1 iv_bid_ask history used. Treat -100 in a frozen legacy capture as an unavailable-quote sentinel, not as a volatility observation; current publication excludes it before interpolation.","validation":["The serving query now requires finite positive bid, ask, and mark IV at or below 10,000 percent and requires bid IV to be less than or equal to ask IV before selecting and interpolating source observations.","Focused contract tests assert rejection of sentinel, extreme, and inverted source quotes.","The public field contract defines b as interpolated bid IV, a as interpolated ask IV, and m as independently interpolated exchange mark IV; m is not a bid/ask midpoint and may lie outside the b-to-a interval."]},{"id":"HIST-2026-08-19-V2-TICKER-DETERMINISM","status":"deployed","publishedAt":"2026-08-19T11:58:49Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Made futures and perpetuals ticker-history selection deterministic while retaining bounded request cost.","cause":"Historical minute data could contain multiple source versions without an explicit canonical winner, causing repeated reads to vary. The corrected selection uses source minute, version, stable event order, and a deterministic final tie-break.","deployment":{"deployedAt":"2026-08-19T11:47:12Z","releaseId":"HIST-2026-08-19-V2-TICKER-DETERMINISM-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/ticker-history","/api/v1/perpetuals/ticker-history"],"fields":["days_to_expiry","mark_price_close","index_price_close","bid_price_close","ask_price_close","ask_size_close","bid_size_close","next_funding_time","bid_ask_spread_close","oi_close","funding_rate_close","volume_usd_24h"],"historicalWindow":"Every retained closed ticker-history window containing duplicate source-minute versions."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect retained futures and perpetuals ticker-history windows previously used. The correction selects one canonical source version at request time and does not rewrite persisted minute rows.","validation":["The complete production endpoint matrix passed, including futures and perpetuals ticker-history pagination, before the release became effective.","Eight identical public perpetuals ticker-history requests over a closed Binance BTCUSDT window returned HTTP 200, 73 rows, one response-body SHA-256, and one ETag; observed request latency was 0.904 to 3.800 seconds.","The customer reproduction kit completed all eight checks after deployment with every prior defect reported as NOT REPRODUCED and zero HTTP 429 responses."]},{"id":"HIST-2026-08-19-V1-GAMMA-GEX-ACTIVITY-FOLLOWUP","status":"deployed","publishedAt":"2026-08-19T11:58:49Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Corrected gamma-band skew scaling and recovered valid history, made GEX averages finite-aware, bounded global-activity pagination work, and rejected negative open-interest source rows.","cause":"Gamma-band skew was applied in volatility-point units directly to price instead of being converted through the estimated delivery price and daily volatility scale. GEX averaged null replacements instead of only finite inputs, global-activity pages built and grouped the full requested range before applying pagination, and total-OI aggregation admitted invalid negative source observations.","deployment":{"deployedAt":"2026-08-19T11:17:53Z","releaseId":"HIST-2026-08-19-V1-GAMMA-GEX-ACTIVITY-FOLLOWUP-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/type/gamma_bands/:market/:currency/:tenor"],"fields":["l1_4","l1_2","l1","l2","u1_4","u1_2","u1","u2","vwap","price"],"historicalWindow":"Every closed gamma-band window served before the deployment."},{"apiVersion":"v1","endpoints":["/historical/options/gex_index/:market/:currency"],"fields":["gex","vex","gex_plus","index_price"],"historicalWindow":"Every closed GEX window containing non-finite or missing index-price inputs."},{"apiVersion":"v1","endpoints":["/historical/futures/oi_total_global_activity","/historical/futures/volume_total_global_activity"],"fields":["future","perpetual","option","items","meta.total"],"historicalWindow":"Every requested page, including the reported 2025 and older historical windows."},{"apiVersion":"v1","endpoints":["/historical/futures/total_oi/:currency","/historical/futures/total_oi_by_exchange/:currency/:option"],"fields":["HUOBI","HUOBI_notional"],"historicalWindow":"DOGE at 2024-06-18T02:00:00Z and 2024-06-18T03:00:00Z, and XLM at 2024-06-18T03:00:00Z; any requested aggregation window containing those observations is affected."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect all gamma-band history used, retry GEX and global-activity windows that failed or were incomplete, and re-collect total-OI and total-OI-by-exchange windows that contained negative values. These corrections are applied by the serving queries.","validation":["A complete two-page audit of the customer's 35 gamma-band coordinates covered all 6,720 requested hourly timestamps: 6,662 publish valid rows and 58 are excluded because the calculated bands do not bracket vwap. The earlier 5,040-input/50-exclusion validation covered page 1 only and is superseded by this full-window result.","All five reported DERIBIT XRP/TRX coordinates return the complete requested 192 of 192 hourly rows in their respective eight-day windows.","The patched DERIBIT/BTC 2020 GEX query returns rows while excluding non-finite index-price values from the average.","The global-activity query is page-bounded before aggregation and completed a production dry benchmark in approximately 0.34 seconds.","The reported DOGE and XLM total-OI coordinates were replayed over 192 production rows around 2024-06-18; both requests returned HTTP 200 and no negative open-interest or notional values.","Focused regression, build, and Coinbase recovery tests passed before production deployment."]},{"id":"HIST-2026-08-19-V1-COINBASE-SPOT-PRE-MAY","status":"deployed","publishedAt":"2026-08-19T11:58:49Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Filled the remaining Coinbase XRP, ADA, and XLM v1 spot-history gaps immediately before the May 8 restoration boundary.","cause":"The first Coinbase recovery began at the common 2026-05-08 publication-stop boundary. Three symbols also had earlier symbol-specific gaps, so following the original recollection recommendation left those ranges incomplete.","deployment":{"deployedAt":"2026-08-19T10:41:37Z","releaseId":"HIST-2026-08-19-V1-COINBASE-SPOT-PRE-MAY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/spot/COINBASE/XRP-USDT/:period","/historical/spot/COINBASE/ADA-USDT/:period","/historical/spot/COINBASE/XLM-USDT/:period"],"fields":["date","open","high","low","close","volume_base","volume_quote"],"historicalWindow":"XRP: 2026-05-03 through 2026-05-07; ADA: 2026-03-07 through 2026-05-07; XLM: 2026-01-18 through 2026-05-07. Coarser periods are derived from the restored one-minute rows."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect XRP-USDT from 2026-05-03, ADA-USDT from 2026-03-07, and XLM-USDT from 2026-01-18 through the existing Coinbase restoration range.","validation":["Inserted 256 XRP-USDT, 6,617 ADA-USDT, and 4,560 XLM-USDT one-minute rows; production consistency checks reported matching inventories.","Public v1 daily requests returned complete expected coverage: XRP 46 of 46 days, ADA 143 of 143 days, and XLM 143 of 143 days for the customer-reported windows.","A production inventory was generated for all 951 stored Coinbase symbols, including first date, latest date, and observed gap ranges."]},{"id":"HIST-2026-08-14-V1-COINBASE-SPOT-HISTORY","status":"deployed","publishedAt":"2026-08-16T13:26:01Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Restored Coinbase v1 spot history after the May 8 coverage stop and resumed current publication.","cause":"The legacy Coinbase spot publication stopped advancing while Coinbase remained available in the v2 source. The v1 persisted history was rebuilt from the authoritative Coinbase candle source and current publication was restored.","deployment":{"deployedAt":"2026-08-14T07:03:00Z","releaseId":"HIST-2026-08-14-V1-COINBASE-SPOT-HISTORY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/spot/COINBASE/:symbol/:period"],"fields":["date","open","high","low","close","volume_base","volume_quote"],"historicalWindow":"Coinbase one-minute spot history after the prior publication stop on 2026-05-08 through the restoration cutover; coarser periods are derived from the restored one-minute rows."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect Coinbase v1 spot history from 2026-05-08 onward for every symbol and period used. Requests made while the route was frozen may have returned an incomplete closed window.","validation":["The restoration ran from 2026-08-13 21:38:00 UTC through 2026-08-14 07:03:00 UTC in 4,390 completed insert batches with zero failed batches and 12,782,346 written rows.","The production v1 Coinbase one-minute inventory contains 120,736,641 rows across 951 stored symbols, including 12,868,398 rows after 2026-05-08; the observed range is 2023-10-02 through current ingestion.","Public v1 Coinbase requests return post-May history, and a matching v2 Coinbase control also returns post-May data."]},{"id":"HIST-2026-08-13-V1-HISTORY-FOLLOWUP","status":"deployed","publishedAt":"2026-08-16T13:26:01Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Made affected v1 futures/options aggregates deterministic, made gamma bands tenor-aware, restored two futures global-activity routes, and enabled the v1 Hyperliquid liquidation selector.","cause":"Gamma bands used request-time aggregate states without a stable Decimal accumulation order and did not consistently apply the tenor segment; two global-activity routes used invalid legacy query projections; and the v1 liquidation exchange validator omitted Hyperliquid.","deployment":{"deployedAt":"2026-08-13T20:24:58Z","releaseId":"HIST-2026-08-13-V1-HISTORY-FOLLOWUP-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/futures/alt_summary/:currency","/historical/futures/total_oi/:currency","/historical/futures/total_volume/:currency","/historical/futures/total_oi_by_margin/:currency","/historical/futures/total_volume_by_margin/:currency","/historical/futures/oi_weighted_funding/:currency","/historical/futures/oi_weighted_volume_funding/:currency","/historical/futures/perpetual_funding_exchange/:currency/:option","/historical/options/volume_total/:market/:currency","/historical/options/oi_total/:market/:currency","/historical/options/oi_pc_ratio/:market/:currency","/historical/options/volume_pc_ratio/:market/:currency","/historical/options/total/volume_by_currency/:currency","/historical/options/gex_index/:market/:currency","/historical/options/type/gamma_bands/:market/:currency/:tenor"],"fields":["Aggregate numeric fields","l1","l2","l3","u1","u2","u3","vwap","price","tenor"],"historicalWindow":"Every closed window requested from the listed aggregate routes before the deployment."},{"apiVersion":"v1","endpoints":["/historical/futures/oi_total_global_activity","/historical/futures/volume_total_global_activity"],"fields":["items","meta.total"],"historicalWindow":"Every window that returned HTTP 500 before the deployment."},{"apiVersion":"v1","endpoints":["/historical/derivs/liquidation_by_currency/HYPERLIQUID/:currency"],"fields":["exchange selector","items","meta.total"],"historicalWindow":"Every Hyperliquid liquidation window requested before the deployment."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect history used from the listed deterministic aggregate and gamma-band routes, and retry failed global-activity and Hyperliquid liquidation windows. Gamma bands bracket vwap, the spot input to the calculation; price is a separate estimated delivery/index input and is not the band-bracketing field.","validation":["Focused contract tests cover fixed-scale decimal aggregation for futures totals, margin totals, weighted funding, perpetual funding by exchange, alternative summary, options OI/volume totals, put/call ratios, per-currency volume, and GEX.","Four repeated production DERIBIT/BTC/30D gamma-band reads returned one canonical item SHA-256; BINANCE/SOL 1D, 7D, and 30D returned three distinct tenor-specific histories.","Validated gamma-band rows bracketed vwap between the lower and upper boundaries after invalid source rows were excluded.","Both restored global-activity routes returned HTTP 200 with data for the production test window.","The v1 Hyperliquid BTC liquidation-by-currency selector returned HTTP 200 with data for the production test window."]},{"id":"HIST-2026-08-13-V2-REFERENCE-PRICE-QUALITY","status":"deployed","publishedAt":"2026-08-16T13:26:01Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Excluded incomplete or non-positive persisted source minutes from futures and perpetuals reference-price rollups.","cause":"A minute with a null index side and a zero mark side could be admitted to request-time aggregation, producing a valid-looking zero open or low at 1h and coarser resolutions.","deployment":{"deployedAt":"2026-08-13T19:20:25Z","releaseId":"HIST-2026-08-13-V2-REFERENCE-PRICE-QUALITY-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/reference-price","/api/v1/perpetuals/reference-price"],"fields":["mark_price_open","mark_price_high","mark_price_low","mark_price_close","index_price_open","index_price_high","index_price_low","index_price_close"],"historicalWindow":"Every closed rollup containing a persisted minute with a non-positive mark field or an incomplete/non-positive index field."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect futures and perpetuals reference-price history at every resolution used. The correction changes request-time rollups without rewriting the persisted one-minute source.","validation":["The reported Bybit BTCUSDT-25SEP26 2026-01-30 08:00 hourly bucket returned non-zero, complete mark/index OHLC values after deployment.","Focused query tests reject null, non-finite, and non-positive source-minute fields before aggregation."]},{"id":"HIST-2026-08-13-V2-VOLUME-END-BOUND","status":"deployed","publishedAt":"2026-08-16T13:26:01Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Applied the requested end timestamp before limiting and cursoring futures and perpetuals volume history.","cause":"The futures and perpetuals volume queries applied the inclusive start bound but omitted the end predicate, so limit and cursor pagination could continue from start toward the present.","deployment":{"deployedAt":"2026-08-13T19:20:25Z","releaseId":"HIST-2026-08-13-V2-VOLUME-END-BOUND-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/volume","/api/v1/perpetuals/volume"],"fields":["end","data","meta.next_cursor"],"historicalWindow":"Every bounded historical window requested before the deployment."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect bounded futures and perpetuals volume windows if over-fetched rows were loaded or if cursor exhaustion was used to define the requested export. No persisted source rows were rewritten.","validation":["The reported DERIBIT BTC-PERPETUAL 2026-01-01 through 2026-01-08 daily request returned exactly eight bounded rows and no next cursor at limit=200.","Focused futures and perpetuals regression tests verify that end is applied before limit and cursor generation; spot volume behavior is unchanged."]},{"id":"HIST-2026-08-16-BINANCE-REFERENCE-PRICE-GAP","status":"deployed","publishedAt":"2026-08-16T11:58:44Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Restored missing Binance futures and perpetuals reference-price minutes through an endpoint-specific historical correction.","cause":"The persisted Binance ticker source has an ingestion gap from 2026-01-30 06:57 UTC through 08:42 UTC. Reference-price rollups therefore omitted or incompletely formed buckets intersecting that interval.","deployment":{"deployedAt":"2026-08-16T11:16:37Z","releaseId":"HIST-2026-08-16-BINANCE-REFERENCE-PRICE-GAP-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/reference-price","/api/v1/perpetuals/reference-price"],"fields":["mark_price_open","mark_price_high","mark_price_low","mark_price_close","index_price_open","index_price_high","index_price_low","index_price_close"],"historicalWindow":"Binance timestamps from 2026-01-30 06:57:00 UTC through 08:42:00 UTC."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect Binance futures and perpetuals reference-price windows intersecting 2026-01-30 06:57:00 UTC through 08:42:00 UTC at every resolution used. The correction covers 625 instruments for which authoritative mark and index history was recoverable. ZAMAUSDT is excluded because no authoritative Binance index history was available for this interval.","validation":["The correction contains 66,136 rows and 66,136 unique logical keys across 625 instruments. Production consistency and availability checks passed.","Validation found zero non-positive mark/index values, zero OHLC-order violations, and zero duplicate logical keys. Existing published source rows were preserved rather than overwritten.","The correction artifact SHA-256 is c7ca33c8ba518020747a21642f5311608f079ca46712b40349ab2dc5b5d2aaad.","Production BTCUSDT and XRPUSDT 07:00 hourly responses matched their 60 corrected source minutes exactly across every returned mark/index OHLC field.","Four repeated production requests per instrument returned one canonical data SHA-256 and one ETag across Cloudflare FRA, MRS, and AMS edges. BTCUSDT data SHA-256 was 80a2b4dc3bfef7ab4ffdcef4498ebbba61aa1a404d1de9258939bae872021f16; XRPUSDT was f38675b9a0ae99f8f85de3da9c6e80e9772e5c558e5af9df6554d175c8a9ff7c."]},{"id":"HIST-2026-08-06-REFERENCE-PRICE-RESOLUTION","status":"deployed","publishedAt":"2026-08-06T09:20:19Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Applied the requested resolution to futures and perpetuals reference-price history.","cause":"The reference-price endpoint accepted a resolution parameter but queried persisted one-minute mark/index aggregates without bucketing them.","deployment":{"deployedAt":"2026-08-06T09:18:02Z","releaseId":"HIST-2026-08-06-REFERENCE-PRICE-RESOLUTION-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/reference-price","/api/v1/perpetuals/reference-price"],"fields":["resolution","mark_price_open","mark_price_high","mark_price_low","mark_price_close","index_price_open","index_price_high","index_price_low","index_price_close"],"historicalWindow":"All available closed windows requested at a resolution above 1m before the deployment."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect the full available futures and perpetuals reference-price history at every resolution above 1m. The persisted 1m source aggregates were not rewritten.","validation":["For the same inclusive one-day window, futures and perpetuals returned 1,441 1m buckets, 25 1h buckets, and two 1d buckets.","The 1m, 1h, and 1d canonical row payloads were distinct for both tested families.","Immediate repeated reads were identical at all three resolutions for both tested families.","All tested mark-price and index-price OHLC quartets satisfied low <= open/close <= high.","Production evidence retained Date, CF-RAY, ETag, body SHA-256, row counts, and canonical row SHA-256; evidence-file SHA-256 ca203320da7c7d4d0c53ba614318df7846a29ea344d0e070b69e2d5d6ef3ed6e."]},{"id":"HIST-2026-08-01-V1-CANONICAL-QUERIES","status":"deployed","publishedAt":"2026-08-06T08:46:31Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Canonicalized v1 cross-currency aggregates, tied-row liquidation pagination, and recent-year options currency aggregates.","cause":"Parallel Float64 accumulation could differ at representation scale, liquidation pages ordered tied timestamps without a side tie-break, and options year-range queries aggregated the full source range before selecting the requested page.","deployment":{"deployedAt":"2026-08-01T13:41:18Z","releaseId":"HIST-2026-08-01-V1-CANONICAL-QUERIES-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/futures/total_open_interest_by_currency","/historical/futures/total_volume_by_currency","/historical/derivs/perpetual/total_open_interest_by_currency","/historical/derivs/perpetual/total_volume_by_currency"],"fields":["BTC","ETH","Other"],"historicalWindow":"Every closed window fetched before the deployment."},{"apiVersion":"v1","endpoints":["/historical/derivs/liquidation/:market/:symbol","/historical/derivs/liquidation_by_currency/:market/:currency"],"fields":["date","side","meta.total","items"],"historicalWindow":"Every paginated closed window fetched before the deployment."},{"apiVersion":"v1","endpoints":["/historical/options/total_open_interest_by_currency","/historical/options/total_volume_by_currency"],"fields":["BTC","ETH","Other","meta.total","items"],"historicalWindow":"Every requested window; the reported HTTP 500 failures affected annual ranges beginning in 2025."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect cross-currency aggregates where byte-level identity matters, every liquidation window previously consumed through page-based pagination, and failed or incomplete options currency-aggregate ranges. Legacy aggregate rows that differ only at floating-point representation scale are one logical observation, not separate market events.","validation":["Six repeated production requests to each reported perpetual currency aggregate returned one parsed row multiset; fixed-scale Decimal128(8) accumulation is used before Float64 response serialization.","Both limit=144 and limit=36 production pagination runs delivered all 536 declared (date, side) keys for the reported aggregate BTC liquidation window.","The reported 2025 and 2026 options open-interest and volume annual ranges returned HTTP 200 with data at 1h, 2h, 4h, and 1d.","Focused contract tests cover fixed-scale sums, stable (date, side) ordering, and timestamp-first options pagination."]},{"id":"HIST-2026-08-05-MODEL-YIELD-V1","status":"deployed","publishedAt":"2026-08-05T12:44:30Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Stabilized model-implied yield publication and completed a versioned rebuild of eligible affected v1 history.","cause":"The producer could standardize a forward curve without three expiries or a 30-day anchor, and could accept a copied-underlying-across-expiries source pattern that becomes an inverse-tenor annualized-rate curve. Asynchronous source refreshes then exposed abrupt changes between five-minute publications.","deployment":{"deployedAt":"2026-08-06T06:11:51Z","releaseId":"HIST-2026-08-05-MODEL-YIELD-V1-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/type/atm_iv_model/:market/:currency/yield"],"fields":["7","14","30","60","90","180","270","365"],"historicalWindow":"2023-09-07 00:00:00 UTC through 2026-08-04 23:55:00 UTC."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect model-implied yield from 2023-09-07 10:30:00 UTC through 2026-08-04 23:55:00 UTC. Eligible observations were rebuilt in the corrected publication; timestamps without enough valid source expiries to reconstruct a curve remain on their previously published state.","validation":["The producer now requires at least three expiries and a 30-day anchor, rejects copied-underlying source curves, applies a causal three-point median, and bounds each published five-minute step to one percentage point.","Forward-curve input now rejects malformed, non-positive, non-finite, and zero-after-conversion expiry knots and deterministically consolidates duplicate expiries. Focused model validation passed 51 tests.","The exact previously failing UTC day completed in two independent read-only production reproductions, each producing 33,008 correction rows with logical SHA-256 6478f8b4f8cd4347549e84a2fb8a4ff366a8a9c9834e3b4dbd79d183367edd4e.","The completed recent correction contains 3,136,056 rows through 2026-08-04 23:55 UTC; production consistency checks passed.","The completed older correction contains 29,368,264 unique logical rows across 294,767 timestamps from 2023-09-07 10:30 UTC through 2026-06-30 23:55 UTC, with zero invalid values.","The complete corrected model-yield publication contains 38,784,686 unique logical rows through 2026-08-04 23:55 UTC, with zero invalid values; production consistency and availability checks passed.","Post-deployment BTC, ETH, and SOL reads were byte-identical on immediate repetition, with maximum observed five-minute moves between 0.2558 and 0.2999 percentage points.","API v1 was cut over to the versioned correction publication; all eight tenors in a sampled corrected XRP row matched at public response precision.","The older-history correction completed all 1,028 UTC days through 2026-06-30."]},{"id":"HIST-2026-08-05-ACTUAL-VOL-DELTA","status":"deployed","publishedAt":"2026-08-05T06:03:12Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Corrected v1 actual-volatility model endpoints to apply the requested 10D, 15D, 25D, or 35D delta bucket.","cause":"The public path bucket already contained a D suffix. The service appended another leg suffix directly, producing unsupported query keys and silently omitting the delta predicate.","deployment":{"deployedAt":"2026-08-05T06:03:09Z","releaseId":"HIST-2026-08-05-ACTUAL-VOL-DELTA-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/actual_vol/butterfly_model/:market/:currency/:type/:days","/historical/options/actual_vol/risk_reversal_model/:market/:currency/:type/:days","/historical/options/actual_vol/skew_model/:market/:currency/:type/:days"],"fields":["c","p","d"],"historicalWindow":"All closed windows requested through the affected endpoint paths."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect every actual-volatility model history previously requested with a delta bucket. The persisted published values were not rewritten; the corrected request now selects the intended bucket.","validation":["A service-level regression test verified that public 10D input resolves to the supported 10C, 10P, and 10D query keys.","Three consecutive production runs returned four distinct histories for 10D, 15D, 25D, and 35D, while both skew controls remained distinct."]},{"id":"HIST-2026-08-04-IMMUTABLE-VOLATILITY","status":"deployed","publishedAt":"2026-08-04T16:44:28Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Rebuilt historical model-volatility data into an immutable, validity-filtered publication and cut v1 model endpoints over to it.","cause":"Legacy history could contain invalid model values and multiple same-key candidates without a stable canonical winner. Historical publication did not preserve a stable first valid value for each logical key.","deployment":{"deployedAt":"2026-08-04T16:44:25Z","releaseId":"HIST-2026-08-04-IMMUTABLE-VOLATILITY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/options/type/atm_iv_model/:market/:currency/:type","/historical/options/type/butterfly_model/:market/:currency/:type","/historical/options/type/risk_reversal_model/:market/:currency/:type","/historical/options/type/skew_model/:market/:currency/:type","/historical/options/actual_vol/butterfly_model/:market/:currency/:type/:days","/historical/options/actual_vol/risk_reversal_model/:market/:currency/:type/:days","/historical/options/actual_vol/skew_model/:market/:currency/:type/:days"],"fields":["atm","c","p","d","7","14","30","60","90","180","270","365"],"historicalWindow":"2017-08-20 UTC through the publication cutover on 2026-08-04."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect the full model and actual-volatility history used by your system. The immutable publication replaces invalid or unstable legacy aggregate winners.","validation":["The historical rebuild completed all 109 UTC months with zero failed months and produced 2,237,255,785 corrected rows.","Production consistency and availability checks returned matching counts and sampled logical hashes.","Every monthly validation reported zero non-finite values, zero values above the 10,000-percent bound, and zero non-positive volatility levels.","The reported 2023 DERIBIT/ETH 25D risk-reversal case returned 144 rows and a byte-identical result across direct published-state reads."]},{"id":"HIST-2026-08-04-NEO-REALIZED-VOLATILITY","status":"deployed","publishedAt":"2026-08-04T16:55:00Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Corrected and backfilled the NEO realized-volatility history that stopped advancing after 2026-07-28.","cause":"Publication advanced from one global BTC watermark, so currencies whose spot observations arrived after that watermark could be skipped permanently. Spot selection also relied on symbol parsing and a non-deterministic equal-timestamp winner.","deployment":{"deployedAt":"2026-08-04T16:43:37Z","releaseId":"HIST-2026-08-04-NEO-REALIZED-VOLATILITY-r1"},"affected":[{"apiVersion":"v1","endpoints":["/historical/futures/realized_volatility/NEO"],"fields":["3","7","30","60","90","180","270","365"],"historicalWindow":"2026-07-28 00:00:00 UTC through 2026-08-04 16:00:00 UTC."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect NEO realized volatility from 2026-07-28 00:00:00 UTC onward. The corrected publication is versioned 2026-08-04 16:55:00 UTC.","validation":["The bounded source reconstruction produced 185 hourly timestamps and eight tenors (1,480 rows) with zero non-positive, non-finite, or extreme values.","Every corrected published row matched the deterministic normalized-USDT source calculation; logical hash 13593388322320676545.","Production consistency and availability checks returned the same row count, window, correction version, and logical hash."]},{"id":"HIST-2026-08-04-ROLLUP-CLOSE","status":"deployed","publishedAt":"2026-08-04T15:11:21Z","updatedAt":"2026-09-07T07:24:37Z","summary":"Corrected futures and perpetual resolution rollups to select open/close from the first/last source minute and to apply ticker-history resolution.","cause":"First/last selection used the output bucket timestamp instead of the source timestamp as its within-bucket ordering key. Carry close fields also used averaging.","deployment":{"deployedAt":"2026-08-04T15:02:49Z","releaseId":"HIST-2026-08-04-ROLLUP-CLOSE-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/ohlcvt","/api/v1/futures/level1","/api/v1/futures/open-interest","/api/v1/futures/carry","/api/v1/futures/ticker-history","/api/v1/perpetuals/ohlcvt","/api/v1/perpetuals/level1","/api/v1/perpetuals/open-interest","/api/v1/perpetuals/carry","/api/v1/perpetuals/ticker-history"],"fields":["open","close","*_open","*_close","resolution"],"historicalWindow":"All available closed windows requested at a resolution above 1m."}],"changesClosedWindowResponsesWithoutBackfill":true,"recommendedRecollection":"Re-collect the full available history for the listed endpoints at every resolution above 1m. The persisted 1m source aggregates were not rewritten.","validation":["Three complete 1d OHLCVT bars reconstructed from the API 1h response matched first open, maximum high, minimum low, and last close; zero matched first close.","Twelve complete 1h buckets reconstructed from API 1m responses passed first/open, maximum/high, minimum/low, and last/close checks across OHLCVT, level1, open-interest, and carry.","Ticker-history returned distinct 1h and 1d bucket sets for the same window."]},{"id":"HIST-2026-08-04-L2-DETERMINISM","status":"deployed","publishedAt":"2026-08-04T13:26:25Z","updatedAt":"2026-09-09T19:10:17Z","summary":"Made futures, perpetual, and spot L2 history deterministic with a stable sequence-based tie-break and corrected the retained history available at cutover.","cause":"Equal-timestamp snapshots did not have a stable secondary ordering key, so repeated reads could select different winners. The corrected publication uses a deterministic sequence-based tie-break.","deployment":{"deployedAt":"2026-08-04T13:26:25Z","releaseId":"HIST-2026-08-04-L2-DETERMINISM-r1"},"affected":[{"apiVersion":"v2","endpoints":["/api/v1/futures/orderbook","/api/v1/perpetuals/orderbook","/api/v1/spot/l2-orderbook"],"fields":["All aggregated L2 fields"],"historicalWindow":"All aggregate L2 rows available at cutover. This record does not define a rolling API-retention window."}],"changesClosedWindowResponsesWithoutBackfill":false,"recommendedRecollection":"Re-collect aggregate L2 history from each series' meta.coverage.earliest_observed_at. Aggregate rows remain queryable after movement between serving tiers and do not have a rolling 90-day deletion contract. Earlier correspondence dated 2026-08-07 and 2026-08-16 that described a hard minute-plus-90-day boundary for these aggregate routes is superseded. This record does not describe raw L2 history, whose separately documented rolling retention is 30 days.","validation":["Retained ranges were rebuilt with exchange timestamp and stable sequence ordering; ranges without recoverable observations were stabilized from the previously published values.","A later support-export comparison found additional observations for an overlapping hour. Support exports containing those observations are therefore labelled as a separate corrected revision and are not represented as byte-equivalent to the August 4 publication.","Repeated production reads returned byte-identical bodies and ETags for the reported futures, perpetual, and spot controls."]}]}