The deepest backtest dataset a quant can pull.

The most comprehensive backtest dataset for quants and AI agents: survivorship-bias-free OHLCV across crypto, US and global equities and ETFs, corporate-action adjusted, one schema everywhere. Files, API, SDK and MCP. Free up to 1M bars a month - no card, no key.

BTC/USD +2.14% ETH/USD +1.62% AAPL -0.38% NVDA +0.91%

Coverage built for research, not demos

Point-in-time constituents and delisted symbols included, so your backtests are survivorship-bias free. Splits and dividends adjusted on equities. One schema everywhere: timestamp, open, high, low, close, volume.

Asset classCoverageGranularityHistory
Crypto spot Top 500 by market cap, incl. delisted 1m, 1h, 1d From listing date
Crypto perpetuals Majors: price, funding, open interest 1m, 1h, 1d From contract launch
US equities Full listed universe + delisted, point-in-time S&P 500 / NASDAQ-100 membership 1m, 1h, 1d 30+ years daily
Global equities ASX 200, FTSE 100, Nikkei 225, DAX, major indices 1h, 1d 20+ years
ETFs & indices SPY, QQQ, sector/factor ETFs, index levels, VIX 1m, 1h, 1d From inception
Reference data Corporate actions, listing/delisting dates, index membership history Event-level Full history

Three ways in. Same data.

Pick the interface that fits your pipeline. Files for bulk backtests, API for live lookups, SDK and CLI for research loops and agent frameworks.

1File download

Bulk CSV or Parquet, one file per symbol per timeframe. Grab a whole asset class in a single archive and backtest offline.

  • Parquet with typed columns, zstd compressed
  • Stable URLs your scripts can rely on
  • Nightly refresh
# entire BTC daily history, one file
curl -O https://histprice.com/data/crypto/BTC/1d.parquet

# or everything at once
curl -O https://histprice.com/data/crypto/all-1d.tar.zst

2REST API

JSON over HTTPS with predictable paths. Query by symbol, timeframe and date range. No auth needed for standard rate limits.

  • Consistent schema across all asset classes
  • Range queries, pagination, gzip
  • OpenAPI spec for tool-use and MCP wrappers
GET /v1/bars/AAPL?tf=1d&from=2015-01-01&to=2025-01-01

{
  "symbol": "AAPL",
  "tf": "1d",
  "bars": [
    [1420502400, 27.85, 27.86, 26.84, 27.33, 212818400],
    ...
  ]
}

3SDK

Python and TypeScript clients that return DataFrames and typed arrays, with local caching so repeated backtests don't refetch.

  • pip install histprice / npm i histprice
  • Pandas and Polars support out of the box
  • Designed to be called by agents, not just people
from histprice import bars

df = bars("ETH", tf="1h", start="2020-01-01")
# pandas DataFrame: ts, open, high, low, close, volume

result = my_backtest(df)

Agents are first-class users. The API ships with an OpenAPI spec and a hosted MCP server, so Claude, GPT and any agent framework can discover the dataset and run backtest queries without custom glue - the free tier applies to agents too.

https://histprice.com/openapi.json  ·  https://mcp.histprice.com

From idea to multi-year backtest, in the terminal

No exchange pagination, CSV merging, timestamp cleaning, duplicate removal or database admin. You work with dataset IDs, strategies and results: market to dataset to strategy to result.

1Prepare a dataset

HistPrice finds the required history, pulls only what's missing, validates it, caches it locally and returns a reusable dataset handle. Any timeframe, resampled on the fly.

histprice prepare BTCUSDT ETHUSDT SOLUSDT \
  --from 2021-01-01 \
  --to 2026-01-01 \
  --timeframe 35m

Dataset: hp_a823991
Status:  READY   Cache: HIT
Rows:    2,253,411

2Run the backtest

Pass the handle straight into a backtest. You see the result, not millions of price rows.

backtest run \
  --dataset hp_a823991 \
  --strategy strategies/momentum.py

Return          184%
Sharpe          1.92
Max Drawdown    13.4%
Win Rate        56.8%
Trades          842
Runtime         0.71 sec

3Iterate on the same data

Reuse one dataset across thousands of experiments without downloading market data again: sweep parameters, search past runs, drill into the trades that hurt, then validate out of sample.

# parameter sweep
backtest optimize --dataset hp_a823991 \
  --strategy strategies/momentum.py \
  --param fast=5:50:5 --param slow=20:200:10 \
  --metric sharpe

# find the strongest prior runs
backtest search --dataset hp_a823991 \
  --min-sharpe 1.8 --max-drawdown 0.15

# inspect the 20 worst trades of a run
backtest trades run_8291 --worst 20

# market context around one trade
backtest inspect run_8291 --trade-id trade_123 \
  --before 30 --after 30

# walk-forward validation
backtest walkforward --dataset hp_a823991 \
  --strategy strategies/momentum.py \
  --train 730d --test 180d
find data prepare dataset write strategy backtest optimise inspect validate

Behind the scenes: compressed Parquet, local NVMe caching and analytical engines like Polars and DuckDB, so repeated research runs work from local data instead of hitting the cloud every time. The data layer stays out of the way - for humans at a terminal and agents calling the same commands.

Free until you're running real volume

Every tier has the full dataset - same depth, same quality. You pay for throughput, not access. Prototype for nothing, upgrade when your pipeline does.

Free
$0/mo

1M bars / month

  • Full dataset, all asset classes
  • Daily + hourly bars
  • API, SDK and sample file packs
  • No card, no key to start
Start free
Desk
$399/mo

Unlimited bars

  • Everything in Quant
  • Unlimited API + bulk throughput
  • Perp funding + open interest history
  • Team keys, usage dashboard
  • SLA + support
Contact sales

Overage never cuts you off mid-backtest: requests soft-throttle at the cap and you choose to upgrade or wait for the reset.

Your next backtest starts with one call.

Three decades of survivorship-bias-free prices behind one schema, readable by you or your agent. Prototype free on 1M bars a month, scale to the full universe when your strategy earns it.

Start free