Aster Liquidation Dataset

Aster Historical Liquidation Data

Aster forced-liquidation events as published on the venue's public feed, with side, price, and quantity, normalized for cross-venue research.

No credit card · The sample is one real hourly Parquet file and needs no API key

Sample

See the data before you sign up

The first rows of one real hour: BTCUSDT on Aster Futures, 2026-09-02 at 08:00 UTC. One row per forced liquidation order.

aster_futures/2026-09-02/08/BTCUSDT_liquidations.parquetDownload full file
received_timeevent_timesymbolsideorder_typetime_in_forcequantitypriceaverage_priceorder_statuslast_filled_quantityfilled_quantitytrade_time
17883377946210416081788337794493BTCUSDTSELLLIMITIOC0.03477031.877227.7FILLED0.0330.0341788337794450
17883378267119065291788337826584BTCUSDTSELLLIMITIOC0.02476999.177201.8FILLED0.0140.0241788337826550
17883378417549695001788337841625BTCUSDTSELLLIMITIOC0.24376927.677139.7FILLED0.0020.2431788337841600
17883379575586740611788337957430BTCUSDTSELLLIMITIOC0.50976861.777109.2FILLED0.5090.5091788337957400
17883391577647278431788339157638BTCUSDTSELLLIMITIOC0.00376555.176735.7FILLED0.0030.0031788339157600
Showing 5 of 5 rows in this hourTimestamps are raw integers; units are in the schema below

Wire format

From exchange message to Parquet row

Every row starts as a message on the exchange's WebSocket or REST API. Point at a line or a column to see where each value comes from and how we convert it. Our test suite replays these messages through the production pipeline, so the rows shown are the rows you download.

Aster Futures

Exchange sends

WebSocket message · !forceOrder@arrreceived 2026-10-05 19:24:36.372586 UTC

{
"stream": "!forceOrder@arr",
"data": {
"e": "forceOrder",
"E": 1791228276231,
"o": {
"s": "PAIDUSDT",
"S": "SELL",
"o": "LIMIT",
"f": "IOC",
"q": "14270",
"p": "0.0037107",
"ap": "0.0040600",
"X": "FILLED",
"l": "14270",
"z": "14270",
"T": 1791228276200
}
}
}

You download

Parquet row · liquidations

Point at a line in the message or a column in the row to trace where each value comes from. Click a column to pin it.

Our tests replay this message through the production pipeline

All Aster Futures mapping rules →

Conventions for every exchange are in the wire formats overview. Column types and units for liquidation data are in the schema below.

Use cases

What you can build with liquidation data

Liquidation cascades
Detect clusters of forced orders and study how they propagate through price and across venues.
Long vs. short pressure
Separate liquidated longs from liquidated shorts by side to measure which positioning is being flushed out.
Risk and event studies
Align liquidation bursts with trades, funding, and open interest to explain sharp moves after the fact.

Coverage

Liquidation coverage

Every venue is stored under its own exchange ID, so spot and derivatives never mix. Bars show each venue's history from its first hourly file to today, or to its last file for a venue that is no longer collected. Symbol counts are live from the symbols API.

Liquidation coverage by venue, exchange ID, market, history start, and live symbol count
VenueExchange IDMarketHistoryLiquidation symbols
Aster Futuresaster_futuresFutures
2025-09-2913 mo
640

Other exchanges

Liquidations data on other exchanges

The same schema on every venue, so switching exchange is a one-argument change.

Or compare every venue on the cross-exchange liquidation overview.

Schema · 13 columns

Normalized liquidation schema

Every liquidation row is a forced order as published on the exchange's public feed, with side, price, quantity, and timing fields. Order type and fill-state fields are placeholders on venues that do not publish them.

Columns in every liquidation Parquet file
ColumnTypeDescription
received_timeINT64Unix timestamp (nanoseconds) when our system received the liquidation event
event_timeINT64Unix timestamp when the exchange generated the event (the time unit changes with the exchange)
symbolSTRINGTrading pair symbol (for example, 'BTCUSDT')
sideSTRINGSide of the liquidation order ("BUY" = the exchange liquidated a short position, "SELL" = the exchange liquidated a long position)
order_typeSTRINGType of liquidation order (for example, "MARKET", "LIMIT"), if the venue publishes it. On venues that do not publish it (for example, Bybit and OKX), it is a fixed placeholder
time_in_forceSTRINGTime-in-force policy of the order (for example, "IOC", "FOK", "GTC"), if the venue publishes it. If not, it is a fixed placeholder
quantitySTRINGTotal order quantity that the exchange liquidates (stored as string for precision). OKX sizes are in contracts (refer to the venue notes)
priceSTRINGLiquidation order price (stored as string for precision). Bybit and OKX publish the bankruptcy price
average_priceSTRINGAverage execution price, if the venue publishes it, for example Binance and Aster (stored as string for precision). Bybit and OKX repeat the bankruptcy price here. It is not an execution price
order_statusSTRINGStatus of the liquidation order (for example, "FILLED", "PARTIALLY_FILLED"), if the venue publishes it. On Bybit and OKX, it is a fixed "FILLED" placeholder and not an execution status
last_filled_quantitySTRINGQuantity filled in the most recent execution (stored as string for precision)
filled_quantitySTRINGTotal quantity filled until now (stored as string for precision)
trade_timeINT64Unix timestamp when the liquidation trade occurred

Quickstart

From pip install to DataFrame in a minute

The example loads BTCUSDT from Aster Futures for 2026-09-02. Change the symbol, exchange, or dates to pull any other slice of the archive.

  1. Install the Python SDK

    pip install cryptohftdata
  2. Create a free API key

    Sign up with email or Google, then generate a key from your dashboard. No credit card.

    Create account
  3. Call get_liquidations()

    Paste the snippet, replace YOUR_API_KEY, and you get a pandas DataFrame with the columns listed above.

aster_liquidation_data.py
import cryptohftdata as chd

client = chd.CryptoHFTDataClient(api_key="YOUR_API_KEY")

df = client.get_liquidations(
    symbol="BTCUSDT",
    exchange=chd.exchanges.ASTER_FUTURES,
    start_date="2026-09-02",
    end_date="2026-09-02",
)

print(df.head())
print(f"Liquidations: {len(df):,}")
REST · no API key needed for single files
curl --fail --location \
  "https://api.cryptohftdata.com/download?file=aster_futures/2026-09-02/08/BTCUSDT_liquidations.parquet" \
  -o BTCUSDT_liquidations_08.parquet

Caveats

Know this before you backtest

Exchange feeds differ in subtle ways. These are the details that matter for accurate backtests, replay pipelines, and features. Missing hours and pending corrections for every venue are listed on Known Gaps & Corrections.

  1. Liquidations cover derivatives venues only; spot markets do not produce liquidation events.

  2. Exchanges control what they broadcast. Binance and Aster push at most one liquidation snapshot per symbol per second (the latest within each 1,000 ms window), so their rows are a sample and totals are a lower bound.

  3. Bybit and OKX publish the bankruptcy price, not an average execution price; their order status fields are placeholders, not execution status.

  4. OKX can deliver liquidations hours late (up to about 4 hours observed). Files are keyed by arrival hour, so a liquidation can sit in a later hour's file than its event_time.

  5. Hourly liquidation files exist only for hours in which the venue published at least one liquidation event for that symbol.

  6. This page starts on 2025-09-29 based on the earliest stored hourly files for its covered exchange IDs and grows as new hourly files are published.

FAQ

Frequently asked questions

Is Aster liquidation data free to download?

Yes. A free CryptoHFTData account with no credit card gives API access to Aster liquidation data and every other dataset. Individual hourly files can also be downloaded without an API key on the rate-limited free tier.

How far back does Aster liquidation data go?

The earliest hourly files start on 2025-09-29, and new files are added every hour. Start dates differ by venue; the coverage table on this page lists each one.

What format are the files in?

Each file holds one symbol for one UTC hour, stored as Zstd-compressed Parquet under {exchange_id}/{YYYY-MM-DD}/{HH}/{SYMBOL}_liquidations.parquet. Parquet reads directly into pandas, Polars, DuckDB, and Arrow.

How do I load Aster liquidation data in Python?

Install the SDK with pip install cryptohftdata, create a client with your API key, and call client.get_liquidations() with a symbol, exchange, and date range. It returns a pandas DataFrame.

Does the data capture every liquidation?

No. It captures what each exchange publishes on its public liquidation feed. Binance and Aster push at most one liquidation per symbol per second (the latest in each window), so their rows are a sample and totals are a lower bound on actual liquidation volume.

Start using liquidation data today.

One free API key covers every exchange and every data type. $0.00.