ResourceGuide

Trade[XYZ] historical data: complete history, free, in S3

Last updated: July 2026 · Hydromancer team

Every fill, liquidation, TWAP execution, 1-second candle, daily position snapshot, and 20-level orderbook snapshot for every Trade[XYZ] market — xyz:MSFT, xyz:AAPL, xyz:NVDA, xyz:SP500, all of them — sits in a public S3 bucket:

s3://hydromancer-reservoir/by_dex/xyz/

Trade[XYZ] — the first and largest HIP-3 deployer on Hyperliquid, often written TradeXYZ — launched on October 13, 2025, and the archive starts on October 13, 2025. Complete means complete: the entire life of the venue, from its first trade. It's part of Reservoir, our free-forever archive: no API key, no signup, requester-pays S3.

Why this archive is unlike other equity data

Trade[XYZ] runs USDC-margined perpetual markets on stocks, indices, and commodities — a venue expanding across asset classes including FX and pre-IPO names — and they trade 24/7. When the NYSE closes on Friday afternoon, xyz:MSFT keeps printing.

The consequence for anyone who works with data: this archive contains equity and commodity price discovery for hours that don't exist in any traditional dataset. Weekends. Overnights. Holidays. When weekend oil perps made Bloomberg and the WSJ during the Iran tensions — Hyperliquid was the most liquid weekend trading venue in the world that Saturday — the fills behind those headlines landed in this bucket.

And because the venue is young, the whole thing fits in a notebook. Every trade a market type has ever seen, queryable on a laptop.

What's in the archive

DatasetPath
All fillsby_dex/xyz/fills/perp/all/date=YYYY-MM-DD/fills.parquet
Liquidationsby_dex/xyz/fills/perp/liquidations/date=YYYY-MM-DD/fills.parquet
ADLby_dex/xyz/fills/perp/adl/date=YYYY-MM-DD/fills.parquet
Builder fillsby_dex/xyz/fills/perp/builder_fills/date=YYYY-MM-DD/fills.parquet
TWAP fillsby_dex/xyz/fills/perp/twap_fills/date=YYYY-MM-DD/fills.parquet
1-second candlesby_dex/xyz/candles/1s/date=YYYY-MM-DD/candles.parquet
Daily positioning snapshotsby_dex/xyz/snapshots/perp/date=YYYY-MM-DD/*.parquet
20-level L2 orderbook (1-min)by_dex/xyz/orderbook/1m/perps/date=YYYY-MM-DD/{coin}.parquet

Sub-datasets like liquidations only get a file for dates that have events — a missing file means nothing happened that day, not a gap. Fills carry both the full coin string (xyz:MSFT) and a base_symbol column (MSFT), so you can group by whichever you need. Column definitions: fills · candles · snapshots.

Orderbook snapshots, too

The archive even includes the book, not just the tape: 20-level L2 orderbook snapshots at 1-minute cadence for every Trade[XYZ] market — the top 20 bid and ask levels at each snapshot, with price, total size, and order count per level. Updated weekly, one file per coin per day:

by_dex/xyz/orderbook/1m/perps/date=YYYY-MM-DD/{coin}.parquet

One naming rule to know: in the orderbook dataset, HIP-3 coin names do not carry the xyz: prefix — the {dex} path segment is the venue identifier. NVDA's book lives at by_dex/xyz/orderbook/1m/perps/date=…/NVDA.parquet.

Each row is one complete snapshot: block_time_ms, block_number, and bids / asks as list-of-struct columns (px, sz, n), best price first. px and sz are decimal strings for lossless precision, and a side with fewer than 20 populated levels just has a shorter list — no padding. Parquet stores the struct fields as separate physical columns, so a query that only touches bids[1].px (the best bid over time) only loads that one column:

INSTALL httpfs;
LOAD httpfs;
SET s3_region = 'ap-northeast-1';

-- Best bid / best ask / spread / mid for NVDA over a day
SELECT
    block_time_ms,
    CAST(bids[1].px AS DOUBLE) AS best_bid,
    CAST(asks[1].px AS DOUBLE) AS best_ask,
    CAST(asks[1].px AS DOUBLE) - CAST(bids[1].px AS DOUBLE) AS spread,
    (CAST(bids[1].px AS DOUBLE) + CAST(asks[1].px AS DOUBLE)) / 2 AS mid
FROM read_parquet('s3://hydromancer-reservoir/by_dex/xyz/orderbook/1m/perps/date=2026-04-06/NVDA.parquet')
ORDER BY block_time_ms;

Rows within a file are written in block order, so streaming reconstructions can iterate without sorting. Full details — depth-within-bps queries, multi-coin scans, Polars examples — are in the orderbook schema reference.

Query it in place with DuckDB

No download step needed — DuckDB reads the bucket directly:

INSTALL httpfs;
LOAD httpfs;
SET s3_region = 'ap-northeast-1';

-- MSFT fills for a day
SELECT timestamp, side, price, size, direction, address
FROM read_parquet('s3://hydromancer-reservoir/by_dex/xyz/fills/perp/all/date=2026-03-22/fills.parquet')
WHERE coin = 'xyz:MSFT'
ORDER BY timestamp;

-- All Trade[XYZ] volume by market
SELECT base_symbol, sum(price * size) AS volume_usd, count(*) AS trades
FROM read_parquet('s3://hydromancer-reservoir/by_dex/xyz/fills/perp/all/date=2026-03-22/fills.parquet')
GROUP BY base_symbol
ORDER BY volume_usd DESC;

-- 1-minute MSFT candles, rolled up from 1-second
SELECT time_bucket(INTERVAL '1 minute', timestamp) AS minute,
       first(open) AS open, max(high) AS high,
       min(low) AS low, last(close) AS close, sum(volume) AS volume
FROM read_parquet('s3://hydromancer-reservoir/by_dex/xyz/candles/1s/date=2026-03-22/candles.parquet')
WHERE coin = 'xyz:MSFT'
GROUP BY minute ORDER BY minute;

Or download it

aws s3 ls s3://hydromancer-reservoir/by_dex/xyz/fills/perp/all/ --request-payer requester

aws s3 cp \
  s3://hydromancer-reservoir/by_dex/xyz/fills/perp/all/date=2026-03-22/fills.parquet . \
  --request-payer requester

The full mechanics — pandas, boto3, and what requester-pays actually costs (cents from a laptop, zero transfer if you run compute in ap-northeast-1) — are in the main guide: How to get Hyperliquid historical data — for free.

Charts are on TradingView; the data is here

As of this month, Trade[XYZ] and Hyperliquid market data are live on TradingView — pull up symbol search on Supercharts and type the HIP3XYZ: or HYPERLIQUID: prefix. That's the right tool for watching xyz:NVDA over the weekend.

TradingView answers “what does it look like.” The archive answers everything else — how big the prints were, who was levered, where the liquidations clustered, what the 3am spread did. Charts for looking, parquet for computing.

What people build with it

  • Weekend and overnight price discovery — how does xyz:SP500 trade on Saturday, and what does it say about Sunday's futures open? Gap studies, lead-lag analysis, event reactions while traditional markets are dark.
  • 24/7 equity strategy backtests — 1-second candles for signals, validated against real fills, liquidations and ADLs included, from the venue's first trade.
  • Risk research on levered equity perps — the liquidations sub-dataset for a market structure young enough that its complete history is still tractable.
  • Deployer and builder analytics — builder fills and TWAP flow for attribution and revenue accounting.
  • Microstructure on 24/7 equities — 20-level book snapshots for spread, depth, and liquidity studies across hours the NYSE doesn't have.

FAQ

Is Trade[XYZ] historical data really free?

Yes. Reservoir is free, forever — no subscription, no per-query fees. The bucket is requester-pays, so AWS bills you for transfer, typically cents.

How far back does the data go?

To the venue's launch: October 13, 2025. Complete history since the first trade.

How often is the archive updated?

Daily.

Which Trade[XYZ] markets are covered?

All of them — xyz:MSFT, xyz:AAPL, xyz:NVDA, xyz:SP500, and every other market the venue runs.

What format is the data in?

Date-partitioned parquet under by_dex/xyz/ — fills (with liquidations, ADL, builder, and TWAP sub-datasets), 1-second candles, daily positioning snapshots, and 20-level L2 orderbook snapshots at 1-minute cadence.

Can I get live Trade[XYZ] data?

For charts, TradingView now carries it under the HIP3XYZ: prefix. For programmatic real-time trades and books, use our websocket feeds.

Where are the column schemas?

In the schema reference — fills, candles, and snapshots each have a page.

Open it:

aws s3 ls s3://hydromancer-reservoir/by_dex/xyz/ --request-payer requester

Launch to last week, every market, no key. And if you find something interesting in the weekend prints, post it in Discord — we read all of it.