Skip to main content

Hyperliquid Open Interest: How It Is Counted, Caps and History Since 2023

Hyperliquid counts open interest on both sides in contracts and Lighter on one side in dollars. How to compare them, read caps and pull history since 2023.

10 min read
Explore with your agent

Key findings

  1. Step 3: pull the history$7.67BHyperliquid's record open interest a side, on daily averages, 28 July 2025.
  2. Step 4: watch a cascade in the data-62.9%Fall in Hyperliquid open interest in 7.7 hours on 10 October 2025.
  3. Step 2: read Lighter's number correctly2xLighter's own open_interest_usd counts both sides, twice the one-side figure.
  4. Short answer1,273 rowsDaily BTC open interest since May 2023, in two requests.

Open interest is the size of every position still open in a market. On Hyperliquid, an onchain crypto exchange, it peaked at $7.67 billion a side on 28 July 2025 and lost 62.9% in under eight hours on 10 October 2025. Reading numbers like these correctly starts with one detail most dashboards skip: Hyperliquid and Lighter count open interest in different units. This guide shows how each venue counts it, how to put both on one scale, where the caps are, and how to pull the full history back to May 2023. Every request ran on 13 November 2026.

Short answer

  • Hyperliquid counts both sides, in coins. BTC open interest of 39,886 coins meant about 19,943 coins long and the same short. One side in dollars is open_interest / 2 × mark_price: $1.38 billion.
  • Lighter counts one side, in dollars. Its own API also reports a dollar figure that counts both sides, which is twice ours. Compare like with like.
  • History reaches May 2023. Daily BTC open interest since 20 May 2023 is 1,273 rows in two requests. Hyperliquid's own API returns the current value only.
  • Caps are live state. On 13 November one listed core market was at its open interest cap. The largest HIP-3 deployer had used 41.8% of its $10 billion cap.

What open interest measures

Every perpetual futures position has a long side and a short side of the same size. Open interest is the total of those positions that have not been closed. It rises when traders open new positions and falls when they close them or get liquidated. Volume counts trades; open interest counts what is left open after them.

Because every long has a matching short, there are two ways to state the number: the size of one side, or the two sides added together. Both are common, and venues pick differently.

What you need

  • Python 3 with requests. The snippets are short prototypes without retry logic.
  • A 0xArchive API key in OXARCHIVE_API_KEY. The Free plan covers the open interest routes with a rolling 30 days of history. The full archive back to 2023 needs a paid plan; see pricing.
  • No key for Hyperliquid's API at https://api.hyperliquid.xyz/info or Lighter's at https://mainnet.zklighter.elliot.ai.

Step 1: read Hyperliquid's number correctly

Hyperliquid reports open interest in coins, counting both sides. That is the venue's own convention, and the 0xArchive route serves the same value. Check it against the long and short totals from the positions summary:

import os, requests
from datetime import datetime, timezone
H = {"X-API-Key": os.environ["OXARCHIVE_API_KEY"]}
B = "https://api.0xarchive.io/v1"

oi = requests.get(f"{B}/hyperliquid/openinterest/BTC/current", headers=H, timeout=30).json()["data"]
pos = requests.get(f"{B}/hyperliquid/positions/BTC/summary", headers=H, timeout=30).json()["data"][0]
coins, mark = float(oi["open_interest"]), float(oi["mark_price"])
print("open_interest", coins, "| longs", pos["long_size"], "| shorts", pos["short_size"])
print("one side in USD: %.0f" % (coins / 2 * mark), "| served:", oi["open_interest_one_side_usd"])
open_interest 39886.35588 | longs 19944.33936 | shorts 19944.33936
one side in USD: 1375540812 | served: 1375540812.055620

Longs and shorts were equal, 19,944.34 BTC each, and open_interest is about their sum. The two routes were read a moment apart, so they differ by 2.3 BTC. Halve it and multiply by the mark price to get one side in dollars: $1.38 billion. The route also returns that figure directly as open_interest_one_side_usd. HIP-3 markets such as xyz:NVDA follow the same convention.

Step 2: read Lighter's number correctly

Lighter, also an onchain crypto exchange, works differently. 0xArchive serves Lighter open interest as US dollars for one side. Lighter's own API returns one side in coins and a dollar figure for both sides:

li = requests.get(f"{B}/lighter/openinterest/BTC/current", headers=H, timeout=30).json()["data"]
nat = requests.get("https://mainnet.zklighter.elliot.ai/api/v1/orderBookDetails", timeout=30).json()
btc = next(m for m in nat["order_book_details"] if m["symbol"] == "BTC")
print("0xArchive Lighter BTC open_interest: %.0f" % float(li["open_interest"]))
print("Lighter native open_interest (BTC): %s | open_interest_usd: %s" % (btc["open_interest"], btc.get("open_interest_usd")))
0xArchive Lighter BTC open_interest: 130301803
Lighter native open_interest (BTC): 1888.75944 | open_interest_usd: 260611027.531200

1,888.76 BTC at the mark price is about $130 million, which matches our one-side figure. Lighter's open_interest_usd of $261 million is twice that, because it counts both sides. We checked BTC, ETH, SOL and HYPE and the ratio was 2.000 on each.

To compare the venues on one scale, use one side in dollars: open_interest / 2 × mark_price on Hyperliquid and open_interest as served on Lighter. On that scale, BTC had $1.38 billion open on Hyperliquid and $130 million on Lighter at the same moment.

Step 3: pull the history

Hyperliquid's metaAndAssetCtxs call returns the current value for every market in one request, and nothing older. A startTime parameter is ignored. The 0xArchive route returns history from 20 May 2023, raw at about one row a minute or averaged into intervals from 5 minutes to 1 day:

r = requests.get(f"{B}/hyperliquid/openinterest/BTC", headers=H, timeout=60, params={
    "start": "2023-05-20T00:00:00Z", "end": "2026-11-13T00:00:00Z",
    "interval": "1d", "limit": 1000})
rows, meta = r.json()["data"], r.json()["meta"]
while meta.get("has_more"):
    r = requests.get(f"{B}/hyperliquid/openinterest/BTC", headers=H, timeout=60, params={
        "start": "2023-05-20T00:00:00Z", "end": "2026-11-13T00:00:00Z",
        "interval": "1d", "limit": 1000, "cursor": meta["next_cursor"]})
    rows += r.json()["data"]
    meta = r.json()["meta"]
usd = [(x["timestamp"][:10], float(x["open_interest_one_side_usd"])) for x in rows]
top = max(usd, key=lambda d: d[1])
print(len(usd), "days | first", usd[0], "| record", top, "| latest", usd[-1])
1273 days | first ('2023-05-20', 19232.20144785923) | record ('2025-07-16', 2254705744.658474) | latest ('2026-11-12', 1440671422.5702384)

BTC open interest was $19,232 a side on 20 May 2023. It peaked at $2.25 billion on 16 July 2025 and stood at $1.44 billion on 12 November 2026. Interval rows are averages over the bucket, stamped at its start, so a daily row is the day's mean, not its close.

Coins and dollars tell different stories. BTC's record in dollars came on 16 July 2025, but its record in coins, 45,449 BTC both sides, came on 22 September 2026, after the price had fallen. ETH's dollar record was August 2025 and its coin record October 2026. Chart both if you want to know whether positioning grew or the price did.

The whole venue, 2023 to 2026

We ran the same daily pull for all 235 core perps, including the 56 that are now delisted, and added up one side in dollars:

DateOpen interest, one sideMarkets with positions
20 May 2023$97,00421
31 Dec 2023$44.6M100
31 Dec 2024$1.60B166
28 Jul 2025 (record)$7.67B201
9 Feb 2026 (low after the record)$2.05Babout 190
12 Nov 2026$4.17B178

The record depends on resolution. On daily averages it is 28 July 2025. On 4-hour averages it is the 04:00 UTC bucket on 14 August 2025, at $7.93 billion. On 12 November 2026, BTC, ETH, HYPE and ZEC held 75.9% of the total.

Step 4: watch a cascade in the data

On 10 October 2025 open interest fell faster than at any other time in the archive. Five-minute averages show the BTC move:

r = requests.get(f"{B}/hyperliquid/openinterest/BTC", headers=H, timeout=60, params={
    "start": "2025-10-10T12:00:00Z", "end": "2025-10-11T00:00:00Z", "interval": "5m", "limit": 1000})
five = [(x["timestamp"][11:16], float(x["open_interest"]), float(x["mark_price"])) for x in r.json()["data"]]
peak = max(five, key=lambda d: d[1])
low = min(five, key=lambda d: d[1])
print("peak", peak, "| low", low, "| change %.1f%%" % (100 * (low[1] / peak[1] - 1)))
for t, c, m in five:
    if t in ("20:50", "21:00", "21:10", "21:15", "21:20", "21:30", "22:00"):
        print(t, round(c), round(m))
peak ('12:05', 39358.542116000004, 121590.6) | low ('22:30', 18844.749480000006, 112393.0) | change -52.1%
20:50 39026 116088
21:00 38588 114565
21:10 38212 113353
21:15 35125 109602
21:20 22311 106296
21:30 21458 110304
22:00 20569 113191

BTC open interest halved, from 39,359 coins at midday to 18,845 by 22:30 UTC. Most of the drop came in two five-minute buckets, 21:15 and 21:20, as the mark price fell to $106,296. Across all 217 markets with positions that day, one-side open interest fell from $7.77 billion to $2.88 billion, a 62.9% drop in 7.7 hours. Lighter's BTC open interest fell 55.7% over the same night.

Open interest alone cannot tell a forced close from a voluntary one. To see which positions were liquidated, pair it with the liquidation history guide.

Step 5: read open interest against price

Open interest says how much is open, not who opened it. Read it with price:

  • Price down, open interest up: new positions are opening into the fall. On 5 November 2026 BTC fell 6.02% while open interest rose 4.60%. At 16:00 UTC open interest jumped 6.2% in one hour with the price still falling.
  • Price up, open interest down: positions are closing into a rally. On 4 November BTC rose 4.31% while open interest fell 7.25%.
  • Both falling fast: rapid deleveraging, as on 10 October 2025. Check liquidation records to see how much was forced.

Over the 29 full days to 13 November 2026, BTC had 11 days of falling price and rising open interest, the most common pattern of the four.

Step 6: check the caps

Hyperliquid limits how much open interest a market can hold. When a market reaches its cap, new positions that would add to it are refused. The cap state comes from Hyperliquid's own API:

N = "https://api.hyperliquid.xyz/info"
print("core markets at cap:", requests.post(N, json={"type": "perpsAtOpenInterestCap"}, timeout=30).json())
lim = requests.post(N, json={"type": "perpDexLimits", "dex": "xyz"}, timeout=30).json()
caps = dict(lim["coinToOiCap"])
print("xyz total cap", lim["totalOiCap"], "| NVDA cap", caps.get("xyz:NVDA"), "| per-asset caps", len(caps))
core markets at cap: ['CANTO', 'FTM', 'JELLY', 'LOOM', 'RLB', 'SOPH', 'VINE', 'ZEREBRO']
xyz total cap 10000000000.0 | NVDA cap 1000000000.0 | per-asset caps 138

Eight core markets were listed at their cap, but seven of them were delisted with no positions. SOPH was the only live market at its cap. HIP-3 markets have caps set by their deployer, as a total for the deployer and per market, measured as size times mark price. The xyz deployer, which lists most of Hyperliquid's stock perps, had $4.18 billion open against a $10 billion total cap. Its closest market to a cap was xyz:ANT at 72.1%, and xyz:NVDA had used 40% of its $1 billion cap, which is measured on both sides, not the one-side figure.

Side by side: native APIs and 0xArchive

We ran the same jobs against each source on 13 November 2026.

JobHyperliquid APILighter API and public data0xArchive
Current open interest, every market1 request, 0.26 s, 235 markets1 request, 209 perps1 request per market
Daily history since launchNot in the API. Requester-pays S3 files, updated about monthly.Hourly files, free, from 17 January 2025BTC since May 2023: 1,273 rows, 2 requests
Hourly BTC since May 2023Not availableNot applicable30,268 rows, 31 requests, 8.1 s
UnitsCoins, both sidesCoins one side; dollars both sidesAs the venue, plus one side in dollars on every row
Cap stateYes, livePer-market limit fieldNot served

Hyperliquid's API is enough for a live dashboard of current open interest, or for a bot that records its own history from today. It cannot answer a question about the past. Lighter publishes hourly open interest from its launch in a free public bucket, which reaches seven months earlier than our Lighter series starting 25 August 2025. Our Lighter series adds raw updates about every 10 seconds and the same routes as Hyperliquid. For the full comparison, see Hyperliquid's native API vs 0xArchive.

What to know before you build

  • Never add Hyperliquid and Lighter numbers directly. Convert both to one side in dollars first.
  • Intervals are averages. A daily row is the mean of the day, stamped at 00:00. For a closing value, take the last raw row of the day.
  • Timestamps changed format. Hyperliquid rows are stamped to the whole minute through 19 January 2026 and to the millisecond from 20 January 2026. The cadence stayed about one row a minute.
  • Lighter update speed changed. Raw Lighter rows were sub-second in 2025 and about 10 seconds apart in 2026.
  • HIP-3 starts per market. HIP-3 open interest starts on 16 February 2026, but each market starts when it was first recorded: xyz:NVDA on 26 February, xyz:SP500 on 18 March.
  • Early history is small and real. BTC had 1.76 coins open on 2 June 2023. The day's volume on those rows matches Hyperliquid's own candles within about 1%.

FAQ

Is Hyperliquid open interest one side or both sides?

Both. Hyperliquid's openInterest is the long side plus the short side, in coins. Divide by two for one side.

How do I get Hyperliquid open interest history?

Hyperliquid's API only returns the current value. Use the 0xArchive open interest route, which goes back to 20 May 2023 at one row a minute, or Hyperliquid's monthly S3 files.

Why is 0xArchive's Lighter open interest half of Lighter's open_interest_usd?

Lighter's open_interest_usd counts both sides. 0xArchive serves one side, which is the same convention as Hyperliquid's one-side figure.

What was Hyperliquid's highest open interest?

$7.67 billion a side on daily averages, on 28 July 2025, or $15.33 billion counting both sides. On 4-hour averages the peak was $7.93 billion on 14 August 2025.

What happens when a market hits its open interest cap?

Hyperliquid refuses orders that would add to open interest in that market until it falls below the cap. Orders that reduce positions still work. The perpsAtOpenInterestCap call lists the markets at their cap.

Next steps