AI Options Data Store - free sample: BTC Futures & Perpetual 1-minute Historical Data
https://optionsdata.shop/packs/btc-futures-perpetual-1-minute-historical-data

All files are Parquet, timestamps UTC, minute (or hour) start. Sample week: 21-27 Sep 2026 UTC.

1) BTCUSD_PERP_FUT_1min_2026-09-21_2026-09-27_SAMPLE.parquet - BTC perpetual quoted and settled in USD
   (the most actively traded BTC perpetual in the pack). 10,080 rows; 0 zero-volume minutes in this week.
   columns: datetime, open, high, low, close, volume, mark_open, mark_high, mark_low, mark_close
   volume = contracts traded in the minute (1 contract = 0.001 BTC)
2) BTCUSDT_PERP_FUT_1min_2026-09-21_2026-09-27_SAMPLE.parquet - BTC perpetual settled in USDT, same columns.
   9,909 rows; 8,931 (90%) are zero-volume minutes. This series has traded thinly since April 2026
   (zero-volume minutes: ~37% in Apr 2026, 80-90% from May 2026; ~0.2% in 2025). Use BTCUSD_PERP for
   2026 volume work.
3) BTCUSD_PERP_FUNDING_... and BTCUSDT_PERP_FUNDING_FUT_1hour_2026-09-21_2026-09-27_SAMPLE.parquet -
   hourly funding rate (percent). columns: datetime, funding_rate_pct_open, _high, _low, _close
4) BTCUSDT_QTR_FUT_1min_2022-12-30_LAST3DAYS_SAMPLE.parquet - last 3 days of an expired dated future
   columns: datetime, open, high, low, close, volume, contract, expiry_utc

Minutes with no trade: these appear as zero-volume rows (volume = 0, open = high = low = close = the
last traded price), not as absent rows. The exception is thinly traded series: there some no-trade
minutes are absent instead (171 of 10,080 minutes in the BTCUSDT_PERP week above; none in BTCUSD_PERP).
We never invent volume. Mark-price columns are reference prices, not trades.

The paid pack uses exactly these layouts: one file per calendar year per perpetual, one funding file per
perpetual, one file per expired contract. No options, IV, Greeks or bid/ask.

Python: import pandas as pd; df = pd.read_parquet('BTCUSD_PERP_FUT_1min_2026-09-21_2026-09-27_SAMPLE.parquet')
