Exchange Wire Formats

Kraken Futures wire format

How Kraken Futures messages become rows in our Parquet files. Each data type below shows a real message next to the rows we publish for it, with the source and the rule for every column. Hover a line or a column to see how they connect.

Checked against our pipeline

These messages were captured from Kraken Futures on 2026-10-05. Our test suite replays each one through the production collector parser and postprocessor, and fails if the published rows differ from the rows on this page. Files written before a change to the pipeline can differ; see Known Gaps & Corrections.

Kraken Futures lists linear multi-collateral contracts (PF_ perpetuals, FF_ fixed maturity) sized in base asset units, and inverse contracts (PI_ perpetuals, FI_ fixed maturity) worth USD 1 each. The collector subscribes to the book, trade and ticker feeds. Kraken sends prices and sizes as JSON numbers; we parse them as 64-bit floats and write the shortest decimal that round-trips, so trailing .0 is dropped. Ticker, mark price and open interest rows all come from the same ticker messages.

  • Public WebSocket (book, trade, ticker feeds): wss://futures.kraken.com/ws/v1
  • REST (instrument metadata): https://futures.kraken.com/derivatives/api/v3/instruments

Exchange API reference: docs.kraken.com. Conventions shared by every exchange are on the wire formats overview.

Trades

One row per trade from the trade feed, including the trade_snapshot Kraken sends after each subscription.

  • WebSocket trade
  • WebSocket trade_snapshot

Trade

WebSocket messagereceived 2026-10-05 19:15:12.203326 UTC
{
"product_id": "PF_XBTUSD",
"feed": "trade",
"uid": "66e6153c-44ae-4985-bf0c-6943336aa975",
"side": "buy",
"type": "fill",
"time": 1791227712160,
"qty": 0.0129,
"price": 85664.0,
"seq": 1086905
}

Published row

received_time1791227712203326000—Our collector's clock when the message arrived, in nanoseconds since the Unix epoch. Not sent by Kraken.
event_time1791227712160timeCopied. Milliseconds. Kraken sends one trade time, so this equals trade_time.
symbolPF_XBTUSDproduct_idCopied.
trade_id9014014332971217442uidKraken's trade uid is a UUID string. We store a stable 63-bit FNV-1a hash of it, so the same uid always gives the same trade_id. IDs are not sequential.
price85664priceCopied. Kraken sends a JSON number; it is parsed as a 64-bit float and written as the shortest decimal that round-trips, so 85663.0 becomes 85663.
quantity0.0129qtyCopied, same number formatting as price. For PF_ and FF_ contracts this is base asset units (BTC for PF_XBTUSD); for inverse PI_ and FI_ contracts it is the number of USD 1 contracts.
trade_time1791227712160timeCopied. Milliseconds.
is_buyer_makerfalsesidetrue when side is sell. Kraken's side is the taker's side.
order_typeMarkettypeMarket for fill, Liquidation for liquidation, Termination for termination, Block for block. Any other type (Kraken also sends assignment) becomes Market.

Subscription trade snapshot

After each trade subscription, including every reconnect, Kraken sends the product's most recent trades in one trade_snapshot message. They fill trades missed while reconnecting. A trade whose uid was already received live or published in an earlier hour is dropped, and so is any trade timed more than 5 seconds before the hour being processed.

Abridged: Kraken sent 100 trades in this snapshot; the newest three are shown. Each trade becomes its own row.

WebSocket messagereceived 2026-10-05 19:15:12.203017 UTC
{
"feed": "trade_snapshot",
"product_id": "PF_XBTUSD",
"trades": [
{
"product_id": "PF_XBTUSD",
"feed": "trade",
"uid": "11f44e6c-6e7c-49fa-8e00-47504294b2e7",
"side": "buy",
"type": "fill",
"time": 1791227710087,
"qty": 0.0002,
"price": 85664.0,
"seq": 1086904
},
{
"product_id": "PF_XBTUSD",
"feed": "trade",
"uid": "1b1d6268-e685-4330-892c-30281aa88fab",
"side": "sell",
"type": "fill",
"time": 1791227705302,
"qty": 0.0002,
"price": 85663.0,
"seq": 1086903
},
{
"product_id": "PF_XBTUSD",
"feed": "trade",
"uid": "17bef1f0-d4ff-4672-8004-143ef54ac870",
"side": "sell",
"type": "fill",
"time": 1791227705302,
"qty": 0.0001,
"price": 85663.0,
"seq": 1086902
}
]
}

Published rows · 3

received_time1791227712203017000—Our collector's clock when the message arrived, in nanoseconds since the Unix epoch. Not sent by Kraken.
event_time1791227705302trades[].timeCopied. Milliseconds. Kraken sends one trade time, so this equals trade_time.
symbolPF_XBTUSDtrades[].product_idCopied.
trade_id4065018754971335323trades[].uidKraken's trade uid is a UUID string. We store a stable 63-bit FNV-1a hash of it, so the same uid always gives the same trade_id. IDs are not sequential.
price85663trades[].priceCopied. Kraken sends a JSON number; it is parsed as a 64-bit float and written as the shortest decimal that round-trips, so 85663.0 becomes 85663.
quantity0.0001trades[].qtyCopied, same number formatting as price. For PF_ and FF_ contracts this is base asset units (BTC for PF_XBTUSD); for inverse PI_ and FI_ contracts it is the number of USD 1 contracts.
trade_time1791227705302trades[].timeCopied. Milliseconds.
is_buyer_makertruetrades[].sidetrue when side is sell. Kraken's side is the taker's side.
order_typeMarkettrades[].typeMarket for fill, Liquidation for liquidation, Termination for termination, Block for block. Any other type (Kraken also sends assignment) becomes Market.

Subscription trade snapshot after the hour started

This snapshot arrived 8.8 seconds after 20:00 UTC. Trades timed up to 5 seconds before the hour are published in the new hour. The two oldest trades shown are 6.3 and 7.1 seconds older than the hour and are dropped: they belong to the previous hour, which was already processed.

Abridged: Kraken sent 100 trades in this snapshot; the newest trade and the four trades around the 5-second cutoff are shown.

WebSocket messagereceived 2026-10-05 20:00:08.768126 UTC
{
"feed": "trade_snapshot",
"product_id": "PF_XBTUSD",
"trades": [
{
"product_id": "PF_XBTUSD",
"feed": "trade",
"uid": "9735e2e3-bcd1-45e0-877b-3f4c4bd5a8e5",
"side": "buy",
"type": "fill",
"time": 1791230406349,
"qty": 0.0003,
"price": 85737.0,
"seq": 1092138
},
{
"product_id": "PF_XBTUSD",
"feed": "trade",
"uid": "a8e526ba-8336-4bb0-9849-0547959aca4e",
"side": "sell",
"type": "fill",
"time": 1791230395105,
"qty": 0.0001,
"price": 85719.0,
"seq": 1092074
},
{
"product_id": "PF_XBTUSD",
"feed": "trade",
"uid": "038370aa-388b-4e72-b694-abaf0cdcdf84",
"side": "sell",
"type": "fill",
"time": 1791230395105,
"qty": 0.0111,
"price": 85719.0,
"seq": 1092073
},
{
"product_id": "PF_XBTUSD",
"feed": "trade",
"uid": "95c75034-8f8e-482b-b4dc-2ba0831d1233",
"side": "buy",
"type": "fill",
"time": 1791230393740,
"qty": 0.0012,
"price": 85720.0,
"seq": 1092072
},
{
"product_id": "PF_XBTUSD",
"feed": "trade",
"uid": "8d6f2378-b87c-4a07-828e-fc5d6c3e714d",
"side": "buy",
"type": "fill",
"time": 1791230392891,
"qty": 0.0012,
"price": 85723.0,
"seq": 1092071
}
]
}

Published rows · 3

received_time1791230408768126000—Our collector's clock when the message arrived, in nanoseconds since the Unix epoch. Not sent by Kraken.
event_time1791230395105trades[].timeCopied. Milliseconds. Kraken sends one trade time, so this equals trade_time.
symbolPF_XBTUSDtrades[].product_idCopied.
trade_id5773866694003346668trades[].uidKraken's trade uid is a UUID string. We store a stable 63-bit FNV-1a hash of it, so the same uid always gives the same trade_id. IDs are not sequential.
price85719trades[].priceCopied. Kraken sends a JSON number; it is parsed as a 64-bit float and written as the shortest decimal that round-trips, so 85663.0 becomes 85663.
quantity0.0111trades[].qtyCopied, same number formatting as price. For PF_ and FF_ contracts this is base asset units (BTC for PF_XBTUSD); for inverse PI_ and FI_ contracts it is the number of USD 1 contracts.
trade_time1791230395105trades[].timeCopied. Milliseconds.
is_buyer_makertruetrades[].sidetrue when side is sell. Kraken's side is the taker's side.
order_typeMarkettrades[].typeMarket for fill, Liquidation for liquidation, Termination for termination, Block for block. Any other type (Kraken also sends assignment) becomes Market.

Notes

  • trade_id is a hash of Kraken's UUID uid, not a sequence number. You cannot find gaps from trade_id.
  • Kraken also sends trades with type assignment. They are published with order_type Market, like a normal fill.
  • Files written before the October 2026 pipeline update do not include trades recovered from trade_snapshot messages, so trades missed during a reconnect are missing there.
  • Trades whose type is liquidation or termination are also published in the liquidations file; see Liquidations below.

Column types and descriptions: Trades schema.

Order Book

One row per price level. book_snapshot messages give the full book after each subscription; each book message changes one level.

  • WebSocket book_snapshot
  • WebSocket book

Book snapshot

Kraken sends the book in one book_snapshot message after each book subscription, including every reconnect. Each level becomes one snapshot row.

Abridged: Kraken sent 2290 bid and 1181 ask levels; the best three of each side are shown.

WebSocket messagereceived 2026-10-05 19:15:12.258326 UTC
{
"feed": "book_snapshot",
"product_id": "PF_XBTUSD",
"timestamp": 1791227712104,
"seq": 232413555,
"tickSize": null,
"bids": [
{
"price": 85663.0,
"qty": 0.0844
},
{
"price": 85662.0,
"qty": 0.015
},
{
"price": 85661.0,
"qty": 0.014
}
],
"asks": [
{
"price": 85664.0,
"qty": 0.0129
},
{
"price": 85665.0,
"qty": 0.0002
},
{
"price": 85667.0,
"qty": 0.0674
}
]
}

Published rows · 6

received_time1791227712258326000—Our collector's clock when the message arrived, in nanoseconds since the Unix epoch. Not sent by Kraken.
event_time1791227712104timestampCopied. Milliseconds.
transaction_timenull—Null. Kraken sends one timestamp per message.
symbolPF_XBTUSDproduct_idCopied.
event_typesnapshotfeedsnapshot for book_snapshot messages.
first_update_idnull—Null. Kraken sends a single sequence number.
final_update_idnull—Null. Kraken sends a single sequence number.
prev_final_update_idnull—Null. Kraken sends a single sequence number.
last_update_id232413555seqCopied. The next book update usually carries seq + 1.
sideaskbidsasksbid for levels in bids, ask for levels in asks. One row per level.
price85664bids[].priceasks[].priceCopied. Kraken sends a JSON number; it is parsed as a 64-bit float and written as the shortest decimal that round-trips, so 85663.0 becomes 85663.
quantity0.0129bids[].qtyasks[].qtyCopied, same number formatting as price. Base asset units for PF_ contracts, USD 1 contracts for PI_.
order_countnull—Null. Kraken does not report order counts.

Book update (level removed)

Each book message changes one price level. qty is the new total at that price; 0.0 removes the level.

WebSocket messagereceived 2026-10-05 19:15:12.259671 UTC
{
"feed": "book",
"product_id": "PF_XBTUSD",
"side": "sell",
"seq": 232413575,
"price": 85664.0,
"qty": 0.0,
"timestamp": 1791227712162
}

Published row

received_time1791227712259671000—Our collector's clock when the message arrived, in nanoseconds since the Unix epoch. Not sent by Kraken.
event_time1791227712162timestampCopied. Milliseconds.
transaction_timenull—Null. Kraken sends one timestamp per message.
symbolPF_XBTUSDproduct_idCopied.
event_typeupdatefeedupdate for book messages.
first_update_idnull—Null. Kraken sends a single sequence number.
final_update_idnull—Null. Kraken sends a single sequence number.
prev_final_update_idnull—Null. Kraken sends a single sequence number.
last_update_id232413575seqCopied. Each book message for the product increases seq by 1; a jump is a gap.
sideasksidebid for buy, ask for sell.
price85664priceCopied. Kraken sends a JSON number; it is parsed as a 64-bit float and written as the shortest decimal that round-trips, so 85663.0 becomes 85663.
quantity0qtyCopied, same number formatting as price: 0.0 is published as 0, which removes the level.
order_countnull—Null. Kraken does not report order counts.

Notes

  • last_update_id holds Kraken's seq, which Kraken counts per product. Each book message increases it by 1, so a jump is a gap. The first update after a book_snapshot usually carries the snapshot's seq + 1 but can be higher; the pipeline accepts it.
  • Several book messages can share one event_time; order rows by received_time and then last_update_id.
  • Files can start with a checkpoint snapshot of the book carried over from the previous hour: its received_time is the hour start and last_update_id is the seq of the last message applied. It is only written when the book is proven current. Without it, continue from the previous hour's book or wait for the next snapshot in the file.
  • An empty book_snapshot is published as one snapshot row with side noop, price 0 and quantity 0 that carries its seq. Clear the book on it.

Column types and descriptions: Order Book schema.

Ticker

One row per ticker message. Kraken sends them at irregular intervals, several per second on busy markets, and consecutive messages can repeat the same time.

  • WebSocket ticker

Ticker, linear perpetual (PF_XBTUSD)

WebSocket message · tickerreceived 2026-10-05 19:15:12.159992 UTC
{
"time": 1791227712132,
"product_id": "PF_XBTUSD",
"funding_rate": 0.35319855164890357,
"funding_rate_prediction": 0.0612474778575,
"relative_funding_rate": 4.123429166667e-6,
"relative_funding_rate_prediction": 7.1475e-7,
"next_funding_rate_time": 1791230400000,
"leverage": "100x",
"premium": -0.0,
"feed": "ticker",
"bid": 85663.0,
"ask": 85664.0,
"bid_size": 0.0856,
"ask_size": 0.0129,
"volume": 5864.7333,
"dtm": 0,
"index": 85665.91,
"last": 85664.0,
"change": 0.34,
"suspended": false,
"tag": "perpetual",
"pair": "XBT:USD",
"openInterest": 2145.0821,
"markPrice": 85664.79402421133,
"maturityTime": 0,
"post_only": false,
"volumeQuote": 504231341.4699,
"open": 85376.0,
"high": 86990.0,
"low": 84963.0
}

Published row

received_time1791227712159992000—Our collector's clock when the message arrived, in nanoseconds since the Unix epoch. Not sent by Kraken.
event_time1791227712132timeCopied. Milliseconds.
symbolPF_XBTUSDproduct_idCopied.
price_change288lastopenlast − open, computed as an exact decimal: the absolute 24-hour change. Null when open is 0.
price_change_percent0.34changeCopied. Kraken's change is the 24-hour change in percent: 0.34 means +0.34 %.
weighted_average_pricenull—Null. Kraken's ticker has no VWAP.
last_price85664lastCopied. Kraken sends a JSON number; it is parsed as a 64-bit float and written as the shortest decimal that round-trips, so 85663.0 becomes 85663.
last_quantitynull—Null. Kraken's ticker has no last trade size.
open_price85376openCopied. The first traded price of the last 24 hours.
high_price86990highCopied.
low_price84963lowCopied.
base_asset_volume5864.7333volumevolume (contracts) × the contract size from Kraken's instruments endpoint (1 for PF_XBTUSD). Base asset units.
quote_asset_volume504231341.4699volumeQuoteCopied. Quote currency (USD).
statistics_open_timenull—Null. Kraken does not send the window bounds; the window is the last 24 hours.
statistics_close_timenull—Null. Kraken does not send the window bounds.
first_trade_idnull—Null. Not sent by Kraken.
last_trade_idnull—Null. Not sent by Kraken.
total_tradesnull—Null. Not sent by Kraken.

Ticker, inverse perpetual (PI_XBTUSD)

Inverse contracts are worth USD 1 each, so their volume cannot be stated in BTC.

WebSocket message · tickerreceived 2026-10-05 19:15:12.160236 UTC
{
"time": 1791227712067,
"product_id": "PI_XBTUSD",
"funding_rate": 3.85624173e-10,
"funding_rate_prediction": 3.7702427e-10,
"relative_funding_rate": 0.000033031220833333,
"relative_funding_rate_prediction": 0.0000323075,
"next_funding_rate_time": 1791230400000,
"leverage": "50x",
"premium": 0.0,
"feed": "ticker",
"bid": 85610.0,
"ask": 85777.5,
"bid_size": 10.0,
"ask_size": 10573.0,
"volume": 208456.0,
"dtm": 0,
"index": 85665.91,
"last": 85425.0,
"change": 0.07,
"suspended": false,
"tag": "perpetual",
"pair": "XBT:USD",
"openInterest": 2361300.0,
"markPrice": 85688.7933200642,
"maturityTime": 0,
"post_only": false,
"volumeQuote": 208456.0,
"open": 85369.5,
"high": 86931.0,
"low": 85064.0
}

Published row

received_time1791227712160236000—Our collector's clock when the message arrived, in nanoseconds since the Unix epoch. Not sent by Kraken.
event_time1791227712067timeCopied. Milliseconds.
symbolPI_XBTUSDproduct_idCopied.
price_change55.5lastopenlast − open, computed as an exact decimal: the absolute 24-hour change. Null when open is 0.
price_change_percent0.07changeCopied. Kraken's change is the 24-hour change in percent: 0.34 means +0.34 %.
weighted_average_pricenull—Null. Kraken's ticker has no VWAP.
last_price85425lastCopied. Kraken sends a JSON number; it is parsed as a 64-bit float and written as the shortest decimal that round-trips, so 85663.0 becomes 85663.
last_quantitynull—Null. Kraken's ticker has no last trade size.
open_price85369.5openCopied. The first traded price of the last 24 hours.
high_price86931highCopied.
low_price85064lowCopied.
base_asset_volumenullvolumeNull. volume counts USD 1 contracts on inverse markets, which have no exact base asset volume.
quote_asset_volume208456volumeQuoteCopied. On inverse markets Kraken sends the contract count here too, which equals the USD volume.
statistics_open_timenull—Null. Kraken does not send the window bounds; the window is the last 24 hours.
statistics_close_timenull—Null. Kraken does not send the window bounds.
first_trade_idnull—Null. Not sent by Kraken.
last_trade_idnull—Null. Not sent by Kraken.
total_tradesnull—Null. Not sent by Kraken.

Notes

  • price_change is absolute (last − open) and price_change_percent is Kraken's percentage. Files before the 2026-09 data-integrity release had Kraken's percentage in price_change; they were corrected on 2026-09-30.
  • Files written before the October 2026 pipeline update hold the contract count in base_asset_volume for inverse PI_ and FI_ contracts. Current files leave it null, because those contracts are USD amounts.

Column types and descriptions: Ticker schema.

Mark Price

One row per ticker message, from the same messages as the ticker rows.

  • WebSocket ticker
WebSocket message · tickerreceived 2026-10-05 19:15:12.159992 UTC
{
"time": 1791227712132,
"product_id": "PF_XBTUSD",
"funding_rate": 0.35319855164890357,
"funding_rate_prediction": 0.0612474778575,
"relative_funding_rate": 4.123429166667e-6,
"relative_funding_rate_prediction": 7.1475e-7,
"next_funding_rate_time": 1791230400000,
"leverage": "100x",
"premium": -0.0,
"feed": "ticker",
"bid": 85663.0,
"ask": 85664.0,
"bid_size": 0.0856,
"ask_size": 0.0129,
"volume": 5864.7333,
"dtm": 0,
"index": 85665.91,
"last": 85664.0,
"change": 0.34,
"suspended": false,
"tag": "perpetual",
"pair": "XBT:USD",
"openInterest": 2145.0821,
"markPrice": 85664.79402421133,
"maturityTime": 0,
"post_only": false,
"volumeQuote": 504231341.4699,
"open": 85376.0,
"high": 86990.0,
"low": 84963.0
}

Published row

received_time1791227712159992000—Our collector's clock when the message arrived, in nanoseconds since the Unix epoch. Not sent by Kraken.
event_time1791227712132timeCopied. Milliseconds.
symbolPF_XBTUSDproduct_idCopied.
mark_price85664.79402421133markPriceCopied. Kraken sends a JSON number; it is parsed as a 64-bit float and written as the shortest decimal that round-trips, so 85663.0 becomes 85663.
index_price85665.91indexCopied.
estimated_settle_pricenull—Null. Kraken does not send one.
funding_rate0.000004123429166667relative_funding_rateCopied: Kraken's relative funding rate, a fraction per funding period (4.123429166667e-6 is 0.000412 %), written in plain decimal notation. Kraken's funding_rate field is an absolute amount per contract and is not published. Null when Kraken omits the field, which it does when the rate is zero and for fixed-maturity contracts.
next_funding_time1791230400000next_funding_rate_timeCopied. Milliseconds since the Unix epoch: the next funding time.

Notes

  • funding_rate is Kraken's relative_funding_rate, comparable with other venues. Files before the 2026-09 data-integrity release held the absolute funding_rate; see the venue notes.
  • Kraken's API documentation describes next_funding_rate_time as the time until the next funding. The values it sends are Unix timestamps in milliseconds, as in this example.

Column types and descriptions: Mark Price schema.

Open Interest

One row per ticker message, from Kraken's openInterest field.

  • WebSocket ticker

Ticker, linear perpetual (PF_XBTUSD)

WebSocket message · tickerreceived 2026-10-05 19:15:12.159992 UTC
{
"time": 1791227712132,
"product_id": "PF_XBTUSD",
"funding_rate": 0.35319855164890357,
"funding_rate_prediction": 0.0612474778575,
"relative_funding_rate": 4.123429166667e-6,
"relative_funding_rate_prediction": 7.1475e-7,
"next_funding_rate_time": 1791230400000,
"leverage": "100x",
"premium": -0.0,
"feed": "ticker",
"bid": 85663.0,
"ask": 85664.0,
"bid_size": 0.0856,
"ask_size": 0.0129,
"volume": 5864.7333,
"dtm": 0,
"index": 85665.91,
"last": 85664.0,
"change": 0.34,
"suspended": false,
"tag": "perpetual",
"pair": "XBT:USD",
"openInterest": 2145.0821,
"markPrice": 85664.79402421133,
"maturityTime": 0,
"post_only": false,
"volumeQuote": 504231341.4699,
"open": 85376.0,
"high": 86990.0,
"low": 84963.0
}

Published row

received_time1791227712159992000—Our collector's clock when the message arrived, in nanoseconds since the Unix epoch. Not sent by Kraken.
symbolPF_XBTUSDproduct_idCopied.
sum_open_interest2145.0821openInterestCopied. Base asset units (BTC) for PF_ contracts.
sum_open_interest_value183758016.26152269openInterestmarkPriceopenInterest × contract size × markPrice, as an exact decimal rounded to 8 decimal places. Quote currency (USD for PF_XBTUSD).
timestamp1791227712132timeCopied. Milliseconds.

Ticker, inverse perpetual (PI_XBTUSD)

WebSocket message · tickerreceived 2026-10-05 19:15:12.160236 UTC
{
"time": 1791227712067,
"product_id": "PI_XBTUSD",
"funding_rate": 3.85624173e-10,
"funding_rate_prediction": 3.7702427e-10,
"relative_funding_rate": 0.000033031220833333,
"relative_funding_rate_prediction": 0.0000323075,
"next_funding_rate_time": 1791230400000,
"leverage": "50x",
"premium": 0.0,
"feed": "ticker",
"bid": 85610.0,
"ask": 85777.5,
"bid_size": 10.0,
"ask_size": 10573.0,
"volume": 208456.0,
"dtm": 0,
"index": 85665.91,
"last": 85425.0,
"change": 0.07,
"suspended": false,
"tag": "perpetual",
"pair": "XBT:USD",
"openInterest": 2361300.0,
"markPrice": 85688.7933200642,
"maturityTime": 0,
"post_only": false,
"volumeQuote": 208456.0,
"open": 85369.5,
"high": 86931.0,
"low": 85064.0
}

Published row

received_time1791227712160236000—Our collector's clock when the message arrived, in nanoseconds since the Unix epoch. Not sent by Kraken.
symbolPI_XBTUSDproduct_idCopied.
sum_open_interest2361300openInterestCopied. Number of USD 1 contracts for PI_ contracts.
sum_open_interest_value2361300openInterestopenInterest × contract size (USD 1), as an exact decimal rounded to 8 decimal places. USD.
timestamp1791227712067timeCopied. Milliseconds.

Notes

  • The contract size and type come from Kraken's instruments endpoint when the hour is processed. If an instrument is not listed there, or the endpoint cannot be reached, the symbol prefix decides: PI_/FI_ are USD 1 inverse contracts, PF_/FF_ are linear with contract size 1. For other prefixes sum_open_interest_value is null.
  • Inverse sum_open_interest_value before the 2026-09 data-integrity release was contracts × price; it was corrected to contracts × contract size on 2026-09-30.

Column types and descriptions: Open Interest schema.

Liquidations

One row per trade whose type is liquidation or termination, from the trade feed and from trade_snapshot messages.

  • WebSocket trade
  • WebSocket trade_snapshot

No example yet

No liquidation arrived on any Kraken Futures market while the examples for this page were captured, so this section has no example yet. The notes below describe the mapping, taken from the conversion code.

Notes

  • Each such trade is published both in the trades file and in the liquidations file, after the same deduplication. received_time is our receive time of the message, event_time and trade_time are the trade's time in milliseconds, and symbol is its product_id.
  • side is Kraken's taker side upper-cased (BUY, SELL). price and average_price are the fill price. quantity, last_filled_quantity and filled_quantity are the fill's qty, in the same units as trade quantity (base asset for PF_/FF_, USD 1 contracts for PI_/FI_).
  • order_type Market, time_in_force IOC and order_status FILLED are fixed placeholders.
  • A liquidation that fills at several prices gives one row per fill.

Column types and descriptions: Liquidations schema.