Continuous futures data in Parquet
Updated daily -- futures data current through 2026-10-23.
See the format first: a free intraday sample pack (1 week, 10 futures symbols, 1-min to 1-hour, no account).
Ratio-adjusted contracts
MarketParquet futures data is continuous and ratio-adjusted. Coverage includes ~130 of the most active futures contracts, including ES, NQ, CL, GC, ZN, and more, from December 2007 to present.
Futures files use the same date-partitioned Parquet layout as stocks and ETFs, with 1-minute, 5-minute, 30-minute, 1-hour, and daily bars.
Roll method. The data source chains front-month
contracts and rolls before expiry, when trading volume migrates to the
next contract; the entire earlier series is multiplied by the ratio of
the new contract's open to the expiring contract's close. Exact roll
dates are not published by the source, so every roll the nightly build
observes is recorded with its ratio in
meta/futures_rolls.parquet, and the source's contract-by-day
calendar in meta/futures_contract_calendar.parquet. All
published history sits on one ratio-adjusted basis; rolls inside the
trailing 30-day window are re-based nightly. Known source-side quirks
are on the data quality page.
Query a continuous series
import polars as pl
es = (
pl.scan_parquet("by_date/futures_daily/2024/*.parquet")
.filter(pl.col("symbol") == "ES")
.select(["date", "symbol", "open", "high", "low", "close", "volume"])
.sort("date")
.collect()
)
Available futures files
Related
futures data hub · browse futures daily · pricing · DuckDB guide · local data lake guide