---
title: "Hyperliquid Open Interest: Units, Caps and History"
description: "How Hyperliquid and Lighter count open interest, how to convert both to one scale, which markets are at their cap, and full history since May 2023."
canonical_url: "https://0xarchive.io/resources/market-data-guides/hyperliquid-open-interest"
markdown_url: "https://0xarchive.io/resources/market-data-guides/hyperliquid-open-interest.md"
route: "/resources/market-data-guides/hyperliquid-open-interest"
robots: "index, follow, max-image-preview:large"
generated_from: "prerendered_html"
---

# 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.

By

[0xArchive Team](https://0xarchive.io/authors/0xarchive-team)

November 14, 2026

10 min read

- [Lighter](https://0xarchive.io/resources?topic=lighter)
- [Hyperliquid](https://0xarchive.io/resources?topic=hyperliquid)

## Key findings

1. [Step 3: pull the history](https://0xarchive.io/resources/market-data-guides/hyperliquid-open-interest#article-section-step-3-pull-the-history) $7.67B Hyperliquid's record open interest a side, on daily averages, 28 July 2025.
2. [Step 4: watch a cascade in the data](https://0xarchive.io/resources/market-data-guides/hyperliquid-open-interest#article-section-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 correctly](https://0xarchive.io/resources/market-data-guides/hyperliquid-open-interest#article-section-step-2-read-lighters-number-correctly) 2x Lighter's own open_interest_usd counts both sides, twice the one-side figure.
4. [Short answer](https://0xarchive.io/resources/market-data-guides/hyperliquid-open-interest#article-section-short-answer) 1,273 rows Daily 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](https://0xarchive.io/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:

| Date | Open interest, one side | Markets with positions |
| --- | --- | --- |
| 20 May 2023 | $97,004 | 21 |
| 31 Dec 2023 | $44.6M | 100 |
| 31 Dec 2024 | $1.60B | 166 |
| 28 Jul 2025 (record) | $7.67B | 201 |
| 9 Feb 2026 (low after the record) | $2.05B | about 190 |
| 12 Nov 2026 | $4.17B | 178 |

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](https://0xarchive.io/resources/market-data-guides/hyperliquid-liquidations-data).

## 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.

| Job | Hyperliquid API | Lighter API and public data | 0xArchive |
| --- | --- | --- | --- |
| Current open interest, every market | 1 request, 0.26 s, 235 markets | 1 request, 209 perps | 1 request per market |
| Daily history since launch | Not in the API. Requester-pays S3 files, updated about monthly. | Hourly files, free, from 17 January 2025 | BTC since May 2023: 1,273 rows, 2 requests |
| Hourly BTC since May 2023 | Not available | Not applicable | 30,268 rows, 31 requests, 8.1 s |
| Units | Coins, both sides | Coins one side; dollars both sides | As the venue, plus one side in dollars on every row |
| Cap state | Yes, live | Per-market limit field | Not 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](https://0xarchive.io/resources/comparisons/native-hyperliquid-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

- The dataset: [open interest data](https://0xarchive.io/data-types/open-interest) and the [open interest reference](https://docs.0xarchive.io/rest-api/open-interest) .
- Who is long and short: [Hyperliquid long/short ratio and trader positioning](https://0xarchive.io/resources/market-data-guides/hyperliquid-trader-positioning) .
- What forced closes look like: [Hyperliquid liquidation data](https://0xarchive.io/resources/market-data-guides/hyperliquid-liquidations-data) .
- Pair it with funding: [funding rates on Hyperliquid and Lighter](https://0xarchive.io/resources/market-data-guides/funding-rate-arbitrage) .
- Start with a [free API key](https://0xarchive.io/pricing) .
