One row per settled Deribit expiry since 2026-03-07, daily ones included. Max pain is frozen from the open-interest snapshot a day before settlement and then set against the official settlement price, so nothing is fitted after the fact.
Rates use the 468 rows with t1_snapshot = ok; 2 rows with a late snapshot stay in the file and are flagged. 166 rows also carry a frozen Bybit max pain.
| Date | Asset | Type | Max pain | Settlement | Deviation | Verdict | MM range | Held |
|---|---|---|---|---|---|---|---|---|
| 2026-10-27 | ETH | daily | 2,320 | 2,308 | -0.51% | exact | 2,260-2,400 | yes |
| 2026-10-27 | BTC | daily | 80,000 | 79,635 | -0.46% | exact | 78,500-82,000 | yes |
| 2026-10-26 | ETH | daily | 2,400 | 2,316 | -3.64% | miss | 2,280-2,480 | yes |
| 2026-10-26 | BTC | daily | 81,000 | 79,947 | -1.32% | miss | 79,000-82,500 | yes |
| 2026-10-25 | ETH | daily | 2,400 | 2,345 | -2.34% | miss | 2,340-2,460 | yes |
| 2026-10-25 | BTC | daily | 81,500 | 80,566 | -1.16% | miss | 80,000-83,000 | yes |
| 2026-10-24 | ETH | daily | 2,400 | 2,375 | -1.04% | miss | 2,300-2,480 | yes |
| 2026-10-24 | BTC | daily | 82,500 | 80,705 | -2.22% | miss | 80,500-84,500 | yes |
| Column | Type | Meaning |
|---|---|---|
asset | string | BTC or ETH |
expiry_code | string | Deribit expiry code, e.g. 27OCT26 |
settlement_date | date | Settlement day (Deribit settles at 08:00 UTC) |
expiry_type | string | daily, weekly (Friday), monthly (last Friday) or quarterly (last Friday of Mar/Jun/Sep/Dec) |
max_pain_deribit_usd | number | Deribit max pain frozen from the open-interest snapshot about 24h before settlement |
max_pain_bybit_usd | number | Bybit max pain frozen before settlement; empty where we had no Bybit snapshot (our Bybit capture starts in August 2026) |
settlement_price_usd | number | Official Deribit delivery price |
settlement_source | string | official = Deribit delivery price; proxy = 08:00 UTC spot |
deviation_pct | number | (settlement - max pain) / settlement x 100 |
max_pain_verdict | string | exact: |deviation| < 1%; near: 1-3% and the gap to max pain shrank from T-1 to settlement; miss: everything else |
mm_range_low_usd | number | Lower bound of the market-maker breakeven range at T-1 |
mm_range_high_usd | number | Upper bound of the market-maker breakeven range at T-1 |
mm_range_held | boolean | true if settlement closed inside the range frozen at T-1 |
call_wall_result | string | Largest call strike by OI at T-1: untested / held (touched within 0.5% or crossed intraday, settled inside) / broken (settled beyond) |
put_wall_result | string | Same test for the largest put strike by OI |
high_significance | boolean | Fixed before the run: notional in the top 25% for its asset and type, or one wall holding 20%+ of total OI |
t1_snapshot | string | ok = T-1 snapshot within 2h of settlement minus 24h; proxy = further off, excluded from the summary rates |
Every hour we save open interest per expiry from Deribit, along with max pain, the call and put walls and the market-maker breakeven range. For each expiry we take the snapshot closest to 24 hours before the 08:00 UTC settlement (T-1). If that snapshot is more than 2 hours off, the row is flagged proxy and left out of the rates.
The actual outcome is the official Deribit delivery price. The thresholds (1% and 3% for max pain, 0.5% for a wall touch, top 25% notional for significance) were written down before the first run in July 2026 and have not been changed since. Rows are appended by code once a day and are not edited afterwards.
The market-maker breakeven range is the band where the premium collected by option sellers still covers what they pay out. Walls are tested against hourly spot over the final 24 hours, so a spike inside one hour can be missed.
Not in the file: open interest and notional per expiry, spot at T-1, wall strikes, and expiries that have not settled yet. Live levels for open expiries are on /en/levels.
Free to reuse, including commercially, with a credit line and a link to this page. Questions or a mistake in a row: [email protected].