SPB Git

Repository Public Research preview

findata_audit.md 26.8 KB

# FinData OS audit for WP46 (Phase 0)

Audited 2026-11-09T17:38:35.835958+00:00 against https://findata.spboucher.ai/api/v1 by scripts/audit_findata.py. Machine-readable evidence: results/manifests/findata_audit.json; call log: results/logs/findata_audit_provenance.jsonl. The hostname findata.spboucher.ai (not indata.) is the one configured in the owner's FinData repository and its docs/CLAUDE-API-USAGE.md; the API contract is the live OpenAPI document (/api/v1/openapi.json) — no endpoint below was guessed.

# 1. Service and contract

  • Health status: degraded; alerts: ['dead_jobs']; components: {'postgres': 'ok', 'backup': '…', 'ingest_worker': 'running', 'lake': '…', 'ssd_smart': 'Verified'}.
  • OpenAPI 3.1.0, 41 paths. Used by WP46: /catalog/datasets, /catalog/datasets/{id}, /catalog/schema/bars, /instruments/{symbol}, /market/bars, /query (DuckDB SQL over the lake views), /exports (+ /exports/{id}, /download), /health.
  • Bars schema: {"schema_version": 1, "timestamp_convention": "bar_open", "timezone_storage": "UTC", "fields": [{"name": "instrument_id", "type": "string", "nullable": false}, {"name": "symbol_as_reported", "type": "string", "nullable": false}, {"name": "venue", "type": "string", "nullable": true}, {"name": "asset_class", "type": "string", "nullable": false}, {"name": "interval", "type": "string", "nullable": false}, {"name": "timestamp_utc", "type": "timestamp[us, tz=UTC]", "nullable": false}, {"name": "session_date", "type": "date32[day]", "nullable": false}, {"name": "open", "type": "double", "nullable": f
  • Response headers observed: {'x-content-type-options': 'nosniff', 'x-frame-options': 'DENY', 'x-request-id': 'a269afe07a8a4356'}. Rate limit (documented): 600 requests/min per key; the client uses a 5 req/s token bucket with Retry-After/backoff.
  • Authentication: bearer API key read from the owner's secret file; key scopes used: read:market, query, export. Never logged.

# 2. Datasets (catalog)

dataset status rows first session last session version
corporate_actions.stock active 0 0
market_bars.stock.5m.raw active 2,062,205,350 2000-01-03 2026-11-06 43
market_bars.crypto.1d.raw active 181,957 75
market_bars.crypto.1h.raw active 4,098,204 5
market_bars.crypto.1m.raw active 177,377,622 83
market_bars.crypto.30m.raw active 7,970,148 5
market_bars.crypto.5m.raw active 42,849,352 5
market_bars.etf.1d.raw active 9,073,895 2000-01-03 2026-11-06 5167
market_bars.etf.1d.split active 9,051,347 270
market_bars.etf.1d.split_div active 9,051,347 270
market_bars.etf.1h.split active 55,703,678 270
market_bars.etf.1h.split_div active 55,703,678 270
market_bars.etf.1m.raw active 910,257,088 2000-01-03 2026-11-06 5167
market_bars.etf.1m.split active 907,197,376 5161
market_bars.etf.1m.split_div active 907,197,376 5161
market_bars.etf.30m.split active 91,337,816 270
market_bars.etf.30m.split_div active 91,337,816 270
market_bars.etf.5m.split active 330,637,732 270
market_bars.etf.5m.split_div active 330,637,732 270
market_bars.futures_contracts.1d.raw active 8,430,644 20967
market_bars.futures_contracts.1h.raw active 30,077,653 997
market_bars.futures_contracts.1m.raw active 615,553,277 19699
market_bars.futures_contracts.30m.raw active 51,126,242 997
market_bars.futures_contracts.5m.raw active 199,339,369 997
market_bars.futures.1d.continuous_absolute active 526,324 133
market_bars.futures.1d.continuous_ratio active 526,324 133
market_bars.futures.1d.continuous_raw active 526,324 133
market_bars.futures.1h.continuous_absolute active 8,317,926 8
market_bars.futures.1h.continuous_ratio active 8,317,926 8
market_bars.futures.1h.continuous_raw active 8,317,926 8
market_bars.futures.1m.continuous_absolute active 302,853,229 132
market_bars.futures.1m.continuous_ratio active 302,853,229 132
market_bars.futures.1m.continuous_raw active 302,853,229 132
market_bars.futures.30m.continuous_absolute active 15,617,848 8
market_bars.futures.30m.continuous_ratio active 15,617,848 8
market_bars.futures.30m.continuous_raw active 15,617,848 8
market_bars.futures.5m.continuous_absolute active 78,211,693 8
market_bars.futures.5m.continuous_ratio active 78,211,693 8
market_bars.futures.5m.continuous_raw active 78,211,693 8
market_bars.fx.1d.raw planned 0 0
market_bars.fx.1h.raw active 7,635,724 5
market_bars.fx.1m.raw active 407,864,391 85
market_bars.fx.30m.raw active 15,141,666 5
market_bars.fx.5m.raw active 87,304,277 5
market_bars.index.1d.raw active 556,868 124
market_bars.index.1h.raw active 3,963,294 8
market_bars.index.1m.raw active 203,832,449 2008-01-02 2026-11-06 128
market_bars.index.30m.raw active 7,206,595 8
market_bars.index.5m.raw active 41,215,377 8
market_bars.stock.1d.raw active 21,088,134 2000-01-03 2026-11-06 7757
market_bars.stock.1d.split active 38,316,176 827
market_bars.stock.1d.split_div active 38,103,477 828
market_bars.stock.1h.split active 286,709,713 840
market_bars.stock.1h.split_div active 285,019,420 831
market_bars.stock.1m.raw active 6,702,645,689 2000-01-03 2026-11-06 17382
market_bars.stock.1m.split active 6,657,098,101 14008
market_bars.stock.1m.split_div active 6,578,579,087 13811
market_bars.stock.30m.split active 485,858,160 840
market_bars.stock.30m.split_div active 482,672,255 831
market_bars.stock.5m.split active 2,069,201,312 840
market_bars.stock.5m.split_div active 2,053,780,780 831
options.eod active 4,232,091,733 361

# Dataset conventions (descriptor text)

  • market_bars.etf.1m.raw: {'name': 'US ETFs — 1-minute bars (unadjusted)', 'description': 'Same contract as stocks.', 'timestamp_convention': 'bar_open', 'timezone': 'America/New_York', 'notes': None, 'license_class': 'frd-private', 'license_text': 'FirstRate Data license: private use by the subscriber only. Raw bars/tables may not be redistributed to third parties (no public API, CSV or tables). Derived results and charts may be published with attribution to FirstRate Data.', 'current_version': 5167, 'status': 'active'}
  • market_bars.etf.1d.split_div: {'name': 'US ETFs — daily bars (split- and dividend-adjusted (vendor adj_splitdiv))', 'description': 'Vendor daily OHLCV bars, split- and dividend-adjusted (vendor adj_splitdiv). Includes delisted tickers (suffix -DELISTED) when their archives are ingested. Vendor-adjusted history is rewritten after corporate actions; refreshed weekly via full_update.', 'timestamp_convention': 'session', 'timezone': 'America/New_York', 'notes': None, 'license_class': 'frd-private', 'license_text': 'FirstRate Data license: private use by the subscriber only. Raw bars/tables may not be redistributed to third parties (no public API, CSV or tables). Derived results and charts may be published with attribution to FirstRate Data.', 'current_version': 270, 'status': 'active'}
  • market_bars.stock.1m.raw: {'name': 'US stocks — 1-minute bars (unadjusted)', 'description': 'Raw (unadjusted) 1-minute OHLCV bars for US-listed stocks, extended hours 04:00–20:00 ET, zero-volume bars absent at source. Includes delisted tickers (suffix -DELISTED).', 'timestamp_convention': 'bar_open', 'timezone': 'America/New_York', 'notes': 'Canonical dataset; adjustments are applied at query time from corporate_actions.', 'license_class': 'frd-private', 'license_text': 'FirstRate Data license: private use by the subscriber only. Raw bars/tables may not be redistributed to third parties (no public API, CSV or tables). Derived results and charts may be published with attribution to FirstRate Data.', 'current_version': 17382, 'status': 'active'}
  • market_bars.stock.1d.split_div: {'name': 'US stocks — daily bars (split- and dividend-adjusted (vendor adj_splitdiv))', 'description': 'Vendor daily OHLCV bars, split- and dividend-adjusted (vendor adj_splitdiv). Includes delisted tickers (suffix -DELISTED) when their archives are ingested. Vendor-adjusted history is rewritten after corporate actions; refreshed weekly via full_update.', 'timestamp_convention': 'session', 'timezone': 'America/New_York', 'notes': None, 'license_class': 'frd-private', 'license_text': 'FirstRate Data license: private use by the subscriber only. Raw bars/tables may not be redistributed to third parties (no public API, CSV or tables). Derived results and charts may be published with attribution to FirstRate Data.', 'current_version': 828, 'status': 'active'}
  • market_bars.futures.1m.continuous_ratio: {'name': 'Futures — 1-minute continuous, ratio back-adjusted', 'description': 'Vendor continuous series per root (continuous, ratio back-adjusted); roll dates fixed by vendor.', 'timestamp_convention': 'bar_open', 'timezone': 'America/New_York', 'notes': 'Daily bars follow the contract trading day; absolute-adjusted series may be negative.', 'license_class': 'frd-private', 'license_text': 'FirstRate Data license: private use by the subscriber only. Raw bars/tables may not be redistributed to third parties (no public API, CSV or tables). Derived results and charts may be published with attribution to FirstRate Data.', 'current_version': 132, 'status': 'active'}
  • market_bars.futures.1d.continuous_ratio: {'name': 'Futures — daily continuous, ratio back-adjusted', 'description': 'Vendor continuous series per root (continuous, ratio back-adjusted); roll dates fixed by vendor.', 'timestamp_convention': 'session', 'timezone': 'America/New_York', 'notes': 'Daily bars follow the contract trading day; absolute-adjusted series may be negative.', 'license_class': 'frd-private', 'license_text': 'FirstRate Data license: private use by the subscriber only. Raw bars/tables may not be redistributed to third parties (no public API, CSV or tables). Derived results and charts may be published with attribution to FirstRate Data.', 'current_version': 133, 'status': 'active'}
  • market_bars.futures.1d.continuous_absolute: {'name': 'Futures — daily continuous, absolute back-adjusted', 'description': 'Vendor continuous series per root (continuous, absolute back-adjusted); roll dates fixed by vendor.', 'timestamp_convention': 'session', 'timezone': 'America/New_York', 'notes': 'Daily bars follow the contract trading day; absolute-adjusted series may be negative.', 'license_class': 'frd-private', 'license_text': 'FirstRate Data license: private use by the subscriber only. Raw bars/tables may not be redistributed to third parties (no public API, CSV or tables). Derived results and charts may be published with attribution to FirstRate Data.', 'current_version': 133, 'status': 'active'}
  • market_bars.fx.1m.raw: {'name': 'FX majors — 1-minute bars', 'description': 'Aggregated from four money-center banks.', 'timestamp_convention': 'bar_open', 'timezone': 'America/New_York', 'notes': 'Two-field datetime in source files.', 'license_class': 'frd-private', 'license_text': 'FirstRate Data license: private use by the subscriber only. Raw bars/tables may not be redistributed to third parties (no public API, CSV or tables). Derived results and charts may be published with attribution to FirstRate Data.', 'current_version': 85, 'status': 'active'}
  • market_bars.crypto.1m.raw: {'name': 'Crypto — 1-minute bars', 'description': 'UTC timestamps, 7 days a week.', 'timestamp_convention': 'bar_open', 'timezone': 'UTC', 'notes': None, 'license_class': 'frd-private', 'license_text': 'FirstRate Data license: private use by the subscriber only. Raw bars/tables may not be redistributed to third parties (no public API, CSV or tables). Derived results and charts may be published with attribution to FirstRate Data.', 'current_version': 83, 'status': 'active'}
  • market_bars.index.1d.raw: {'name': 'Indices — daily bars', 'description': 'Vendor daily bars for indices. No volume (stored as 0).', 'timestamp_convention': 'session', 'timezone': 'America/New_York', 'notes': None, 'license_class': 'frd-private', 'license_text': 'FirstRate Data license: private use by the subscriber only. Raw bars/tables may not be redistributed to third parties (no public API, CSV or tables). Derived results and charts may be published with attribution to FirstRate Data.', 'current_version': 124, 'status': 'active'}
  • corporate_actions.stock: {'name': 'Splits and cash dividends', 'description': 'From vendor meta files; mergers/spin-offs not covered.', 'timestamp_convention': None, 'timezone': None, 'notes': None, 'license_class': 'frd-private', 'license_text': 'FirstRate Data license: private use by the subscriber only. Raw bars/tables may not be redistributed to third parties (no public API, CSV or tables). Derived results and charts may be published with attribution to FirstRate Data.', 'current_version': 0, 'status': 'active'}

# 3. Candidate universe coverage

class symbol name daily sessions daily first daily last bad close 1-min sessions 1-min first 1-min last 1-min bars
etf SPY SPDR S&P 500 6748 2000-01-03 2026-10-30 0 6753 2000-01-03 2026-11-06 4675764
etf QQQ PowerShares Qqq 6711 2000-02-28 2026-10-30 0 6753 2000-01-03 2026-11-06 4293565
etf IWM iShares Russell 2000 Index 6646 2000-05-30 2026-10-30 0 6652 2000-05-26 2026-11-06 3475724
etf DIA SPDR Dow Jones Industrial Average 6748 2000-01-03 2026-10-30 0 6753 2000-01-03 2026-11-06 3043772
etf EEM iShares MSCI Emerging Markets Index 5926 2003-04-14 2026-10-30 0 5931 2003-04-14 2026-11-06 2514085
etf EFA iShares MSCI Eafe Index 6332 2001-08-27 2026-10-30 0 6337 2001-08-27 2026-11-06 2377628
etf XLF Financial Select Sector SPDR 6748 2000-01-03 2026-10-30 0 6753 2000-01-03 2026-11-06 2748952
etf XLE Energy Select Sector SPDR 6748 2000-01-03 2026-10-30 0 6753 2000-01-03 2026-11-06 2665653
etf TLT iShares Barclays 20+ Year Treas Bond 6104 2002-07-30 2026-10-30 0 6109 2002-07-30 2026-11-06 2660987
etf IEF iShares Lehman 7-10 Year Treasu 6104 2002-07-30 2026-10-30 0 6109 2002-07-30 2026-11-06 1883934
etf HYG iShares Iboxx $ High Yield Corporate Bd 4922 2007-04-11 2026-10-30 0 4926 2007-04-11 2026-11-06 1812239
etf LQD iShares Iboxx $ Invest Grade Bond 6104 2002-07-30 2026-10-30 0 6109 2002-07-30 2026-11-06 1947361
etf GLD SPDR Gold Shares 5522 2004-11-18 2026-10-30 0 5527 2004-11-18 2026-11-06 2878048
etf SLV iShares Silver Trust 5160 2006-04-28 2026-10-30 0 5165 2006-04-28 2026-11-06 2641783
etf USO United States Oil 5173 2006-04-10 2026-10-30 0 5178 2006-04-10 2026-11-06 2542011
stock AAPL Apple 6747 2000-01-04 2026-10-30 0 6752 2000-01-04 2026-11-06 4184674
stock MSFT Microsoft 6747 2000-01-04 2026-10-30 0 6752 2000-01-04 2026-11-06 3568310
stock AMZN Amazon.com 6747 2000-01-04 2026-10-30 0 6752 2000-01-04 2026-11-06 3435049
stock NVDA Nvidia Corporation 6747 2000-01-04 2026-10-30 0 6752 2000-01-04 2026-11-06 3609152
stock JPM JP Morgan Chase & Co. 6637 2000-06-12 2026-10-30 0 6642 2000-06-12 2026-11-06 2983348
stock XOM Exxon Mobil 6747 2000-01-04 2026-10-30 0 6752 2000-01-04 2026-11-06 3031298
stock JNJ Johnson & Johnson 6747 2000-01-04 2026-10-30 0 6752 2000-01-04 2026-11-06 2764519
stock PG Procter & Gamble 6747 2000-01-04 2026-10-30 0 6752 2000-01-04 2026-11-06 2744358
stock KO Coca-Cola Company 6747 2000-01-04 2026-10-30 0 6752 2000-01-04 2026-11-06 2839222
stock WMT Walmart 6747 2000-01-04 2026-10-30 0 6752 2000-01-04 2026-11-06 2885451
futures ES Eversource Energy 4754 2008-01-02 2026-11-06 0 5861 2008-01-02 2026-11-06 6596585
futures NQ 4754 2008-01-02 2026-11-06 0 5861 2008-01-02 2026-11-06 6262856
futures CL Colgate-Palmolive 4749 2008-01-02 2026-11-06 0 5863 2008-01-02 2026-11-06 6478865
futures NG Novagold Resources 4709 2008-02-25 2026-11-06 0 5818 2008-02-24 2026-11-06 5186395
futures GC 4732 2008-01-28 2026-11-06 0 5840 2008-01-27 2026-11-06 6571988
futures SI Shoulder Innovations 4749 2008-01-02 2026-11-06 0 5863 2008-01-02 2026-11-06 5981619
futures HG Hamilton Insurance 4749 2008-01-02 2026-11-06 0 5863 2008-01-02 2026-11-06 5795513
futures ZN 4754 2008-01-02 2026-11-06 0 5860 2008-01-02 2026-11-06 5688309
futures ZC 4724 2008-02-19 2026-11-06 0 5684 2008-02-19 2026-11-06 3300107
fx EURUSD 5257 2010-01-03 2026-11-06 6251085
fx USDJPY 5255 2010-01-03 2026-11-06 6244770
fx GBPUSD 5255 2010-01-03 2026-11-06 6243077
fx AUDUSD 5255 2010-01-03 2026-11-06 6239239
fx USDCAD 5254 2010-01-03 2026-11-06 6211934
fx USDCHF 5257 2010-01-03 2026-11-06 6212109
crypto BTC Grayscale Bitcoin Mini Trust 4967 2013-04-01 2026-11-06 0 4970 2013-04-01 2026-11-08 6402725
crypto ETH Ethan Allen Interiors 3885 2016-03-11 2026-11-06 0 3888 2016-03-11 2026-11-08 5270106

FX has no daily dataset in the lake (market_bars.fx.1d.raw is planned, 0 rows): daily FX returns are built from the 1-minute bars (last bar of each vendor session). Futures daily rows come from the vendor continuous series.

# 4. Session structure (2024, one representative symbol per class)

  • etf / SPY: {'n_sessions': 252, 'min_bars': 537, 'med_bars': 782, 'max_bars': 948, 'first_bar_utc_min': '2024-01-02T09:00:00+00:00', 'last_bar_utc_max': '2025-01-01T00:59:00+00:00'}; sample days: [{'session_date': '2024-03-08', 'n': 794, 't0': '2024-03-08T09:00:00+00:00', 't1': '2024-03-09T00:59:00+00:00'}, {'session_date': '2024-03-11', 'n': 805, 't0': '2024-03-11T08:00:00+00:00', 't1': '2024-03-11T23:59:00+00:00'}, {'session_date': '2024-07-03', 'n': 575, 't0': '2024-07-03T08:00:00+00:00', 't1': '2024-07-03T20:55:00+00:00'}, {'session_date': '2024-11-29', 'n': 579, 't0': '2024-11-29T09:00:00+00:00', 't1': '2024-11-29T21:59:00+00:00'}]
  • stock / AAPL: {'n_sessions': 252, 'min_bars': 448, 'med_bars': 743, 'max_bars': 926, 'first_bar_utc_min': '2024-01-02T09:00:00+00:00', 'last_bar_utc_max': '2025-01-01T00:58:00+00:00'}; sample days: [{'session_date': '2024-03-08', 'n': 835, 't0': '2024-03-08T09:00:00+00:00', 't1': '2024-03-09T00:59:00+00:00'}, {'session_date': '2024-03-11', 'n': 821, 't0': '2024-03-11T08:00:00+00:00', 't1': '2024-03-11T23:59:00+00:00'}, {'session_date': '2024-07-03', 'n': 591, 't0': '2024-07-03T08:00:00+00:00', 't1': '2024-07-03T20:59:00+00:00'}, {'session_date': '2024-11-29', 'n': 467, 't0': '2024-11-29T09:00:00+00:00', 't1': '2024-11-29T21:59:00+00:00'}]
  • futures / ES: {'n_sessions': 313, 'min_bars': 354, 'med_bars': 1379, 'max_bars': 1380, 'first_bar_utc_min': '2024-01-01T23:00:00+00:00', 'last_bar_utc_max': '2024-12-31T21:59:00+00:00'}; sample days: [{'session_date': '2024-03-08', 'n': 1019, 't0': '2024-03-08T05:00:00+00:00', 't1': '2024-03-08T21:59:00+00:00'}, {'session_date': '2024-03-11', 'n': 1374, 't0': '2024-03-11T04:00:00+00:00', 't1': '2024-03-12T03:59:00+00:00'}, {'session_date': '2024-07-03', 'n': 1151, 't0': '2024-07-03T04:00:00+00:00', 't1': '2024-07-04T03:59:00+00:00'}, {'session_date': '2024-07-07', 'n': 360, 't0': '2024-07-07T22:00:00+00:00', 't1': '2024-07-08T03:59:00+00:00'}, {'session_date': '2024-11-29', 'n': 795, 't0': '2024-11-29T05:00:00+00:00', 't1': '2024-11-29T18:14:00+00:00'}]
  • fx / EURUSD: {'n_sessions': 312, 'min_bars': 393, 'med_bars': 1433, 'max_bars': 1440, 'first_bar_utc_min': '2024-01-02T05:01:00+00:00', 'last_bar_utc_max': '2024-12-31T20:00:00+00:00'}; sample days: [{'session_date': '2024-03-08', 'n': 1020, 't0': '2024-03-08T05:00:00+00:00', 't1': '2024-03-08T21:59:00+00:00'}, {'session_date': '2024-03-11', 'n': 1437, 't0': '2024-03-11T04:00:00+00:00', 't1': '2024-03-12T03:59:00+00:00'}, {'session_date': '2024-07-03', 'n': 1434, 't0': '2024-07-03T04:00:00+00:00', 't1': '2024-07-04T03:59:00+00:00'}, {'session_date': '2024-07-07', 'n': 419, 't0': '2024-07-07T21:00:00+00:00', 't1': '2024-07-08T03:59:00+00:00'}, {'session_date': '2024-11-29', 'n': 1019, 't0': '2024-11-29T05:00:00+00:00', 't1': '2024-11-29T21:58:00+00:00'}]
  • crypto / BTC: {'n_sessions': 366, 'min_bars': 1010, 'med_bars': 1440, 'max_bars': 1440, 'first_bar_utc_min': '2024-01-01T00:00:00+00:00', 'last_bar_utc_max': '2024-12-31T23:58:00+00:00'}; sample days: [{'session_date': '2024-03-08', 'n': 1440, 't0': '2024-03-08T00:00:00+00:00', 't1': '2024-03-08T23:59:00+00:00'}, {'session_date': '2024-03-11', 'n': 1440, 't0': '2024-03-11T00:00:00+00:00', 't1': '2024-03-11T23:59:00+00:00'}, {'session_date': '2024-07-03', 'n': 1440, 't0': '2024-07-03T00:00:00+00:00', 't1': '2024-07-03T23:59:00+00:00'}, {'session_date': '2024-07-07', 'n': 1440, 't0': '2024-07-07T00:00:00+00:00', 't1': '2024-07-07T23:59:00+00:00'}, {'session_date': '2024-11-29', 'n': 1440, 't0': '2024-11-29T00:00:00+00:00', 't1': '2024-11-29T23:59:00+00:00'}]
  • SPY regular hours 09:30–16:00 ET (incl. the 16:00 closing print) 2024: {'n_sessions': 252, 'min_bars': 319, 'med_bars': 391, 'max_bars': 391}

# 5. Calendar reconciliation

  • SPY daily sessions vs exchange_calendars XNYS: {'vendor_sessions': 6748, 'xnys_sessions': 6748, 'missing_in_vendor': [], 'n_missing': 0, 'extra_in_vendor': [], 'n_extra': 0, 'exchange_calendars_version': '4.13.2'}

# 6. Adjustment conventions (ratios, no price levels disclosed)

  • aapl_split_2020_08_31: [{'session_date': '2020-08-28', 'ratio_raw_over_split': 4.0}, {'session_date': '2020-08-31', 'ratio_raw_over_split': 1.0}]
  • spy_exdiv_2024_03_15: [{'session_date': '2024-03-14', 'ratio_split_over_splitdiv': 1.0327383781585309}, {'session_date': '2024-03-15', 'ratio_split_over_splitdiv': 1.0295496480088433}, {'session_date': '2024-03-18', 'ratio_split_over_splitdiv': 1.0295497190449032}]
  • es_roll_march_2024: [{'session_date': '2024-03-11', 'ratio_ratioadj_over_raw': 1.1122799141128246, 'diff_absadj_minus_raw': 660.5}, {'session_date': '2024-03-12', 'ratio_ratioadj_over_raw': 1.112279685161041, 'diff_absadj_minus_raw': 660.5}, {'session_date': '2024-03-13', 'ratio_ratioadj_over_raw': 1.112279411764706, 'diff_absadj_minus_raw': 660.5}, {'session_date': '2024-03-14', 'ratio_ratioadj_over_raw': 1.0985684170180146, 'diff_absadj_minus_raw': 596.0}, {'session_date': '2024-03-15', 'ratio_ratioadj_over_raw': 1.0985692923640924, 'diff_absadj_minus_raw': 596.0}, {'session_date': '2024-03-18', 'ratio_ratioadj_over_raw': 1.0985684836281702, 'diff_absadj_minus_raw': 596.0}, {'session_date': '2024-03-19', 'ratio_ratioadj_over_raw': 1.0985701340201268, 'diff_absadj_minus_raw': 596.0}]
  • es_latest_ratio_vs_raw_equal: [{'d': '2026-11-06', 'ratio_close_over_raw_close': 1.0}, {'d': '2026-11-05', 'ratio_close_over_raw_close': 1.0}, {'d': '2026-11-04', 'ratio_close_over_raw_close': 1.0}]

# 7. Quality flags and revisions (daily ETF/stock candidates)

  • flags: [{'flag': 'off_interval', 'n': 91696}]; revision ids: [{'revision_id': 1, 'n': 91696}]

# 8. Export smoke test

  • {'export_id': '63a3f115-e934-4660-b688-a370e20e77ea', 'dataset_id': 'market_bars.etf.1d.split_div', 'dataset_version': 270, 'row_count': 252, 'bytes': 18126, 'sha256': 'cbb37f1924e4a6bebc80c84e2559ac62f13c591b300c6ae488a0be217158af5e'}

# 9. Errors during the audit

  • none

# 10. Facts, consequences and unresolved questions

  • Timestamps are bar OPEN in UTC; stocks/ETFs/futures/FX carry an ET session_date, crypto a UTC date. Stocks/ETFs: extended hours 04:00–20:00 ET are present in the 1-minute data; regular session 09:30–16:00 ET (391 bars on a full day, 211 on a 13:00 early close). Zero-volume minutes are absent (missingness is a mask, never filled).
  • Futures continuous series: vendor-fixed roll dates (not documented per contract by the vendor); three variants (raw = unadjusted splice, ratio = ratio back-adjusted, absolute = difference back-adjusted). WP46 uses the ratio-adjusted series, whose log returns are free of roll jumps, and the vendor session_date (a calendar day in ET, 00:00–23:59 ET), not the CME trading day (18:00–17:00 ET). This is disclosed in the data section; daily futures returns are therefore 'ET-day close-to-close'.
  • FX: 1-minute mid bars aggregated from four money-center banks (vendor description), ET session_date, 24h except the weekend gap (Friday ~17:00 ET → Sunday 17:00 ET); Sunday partial sessions exist and are dropped by the preprocessing rule (session must have ≥ 60 % of the modal bar count).
  • Crypto: UTC days, 7 days a week, 1,440 bars per day.
  • Adjustments: stocks/ETFs daily returns use the vendor split- and dividend-adjusted closes (split_div, price-return convention with dividends reinvested at the ex-date = total-return approximation); intraday returns within a session are unaffected by adjustments except on split days (handled by using the split 1-minute view for RV).
  • Licence: FirstRate Data private use; raw bars are never redistributed; aggregate forecasts/losses and derived statistics are publishable with attribution.
  • Survivorship: the universe is fixed ex ante to instruments alive on 2026-11-06; all candidates have been continuously listed over their sample, so there is no within-sample delisting, but the selection of liquid, surviving instruments is a documented selection bias (results describe liquid benchmarks, not the cross-section).
  • Unresolved: (i) exact vendor roll rule for continuous futures (vendor does not expose it in the API; the ratio series preserves returns, so forecasts are unaffected, but RV on roll days mixes two contracts' intraday paths); (ii) corporate-actions table is empty in the lake (adjustments come from vendor-adjusted series only); (iii) 1-minute FX/crypto bars are not consolidated trade data — RV from them is a mid-quote/aggregate measure and is documented as such.
Files main
Menu

Theme