[ Market data quality for adjusted OHLCV ]

Latest daily freshness signal: 2026-07-24.

[ Adjustment policy ]

Stock and ETF prices are split and dividend adjusted. Historical prices are retroactively adjusted so price series are continuous and directly comparable over time.

Futures data is continuous ratio-adjusted. All data is delivered as Apache Parquet files partitioned by date.

[ Automated checks ]

  • Gap detection -- identifying missing trading days
  • Duplicate screening -- ensuring no repeated bars
  • Price validation -- flagging anomalous OHLCV values
  • Volume consistency -- checking for truncated or zero-volume bars

Zero-volume bars are excluded from datasets. Remaining gaps can reflect normal low-liquidity periods, including small-cap stocks and pre/post-market sessions.

[ Check files locally ]

  import duckdb

  con = duckdb.connect()
  checks = con.execute("""
      SELECT
          COUNT(*) AS rows,
          COUNT(DISTINCT symbol) AS symbols,
          SUM(CASE WHEN high < low THEN 1 ELSE 0 END) AS bad_ranges,
          SUM(CASE WHEN volume < 0 THEN 1 ELSE 0 END) AS negative_volume
      FROM 'stock_daily_2024-01-15.parquet'
  """).fetchdf()

[ Related ]

stock data hub · browse stock daily · pricing · delisted stock data · yfinance limitations