arena_get_max_pain
shallowio.github.Schoasch/backtesting-arena · Verify this server
What happened at the last Deribit expiry? Max pain and how spot settled against it: max_pain_strike, spot_at_expiry, %-diff, put_call_ratio, notional. Plus up to 10 upcoming expiries, each with current live max-pain level, days_to_expiry and open_interest_contracts. On days_to_expiry, mind the clamp: it is floored at 0 and therefore CANNOT tell "expiry is today, still hours away" from "expiry was today, already settled" — the same reading covers a live state and a post-mortem. Use settles_at (full ISO timestamp of the settlement moment) and hours_to_settlement (SIGNED — negative means already settled but not yet finalized, so the row is still listed here) whenever that distinction matters. settlement_time_utc names the settlement time assumed for this market; it is 08:00:00Z for DERIBIT_BTC, measured against the exchange itself (public/get_instruments: 868 of 868 open instruments across 13 expiry dates, daily through quarterly, all exactly 08:00:00 UTC). For a market whose settlement time is not evidenced, all three fields are null rather than guessed — a precise-looking wrong timestamp would be worse than none. Read the OI: a max-pain level is only as meaningful as the open interest behind it — a daily expiry with 2,000 contracts and a quarterly with 154,000 are not the same observation. `oi_available` distinguishes "null" from "not collected". Upcoming expiries also carry open_notional_usd together with notional_spot and notional_spot_date. The two contract fields are the SAME measurement at different observation times, not two different quantities: open_interest_contracts on an upcoming expiry is the open interest at the LATEST daily snapshot, total_contracts on a settled one is the open interest at the LAST snapshot BEFORE expiry (verified in the cron: total_contracts is filled from lastSnap.total_oi_contracts). contracts_as_of names the snapshot those contracts came from. Where it equals expiry_date, contracts and settlement price are same-day — measured on all 64 finalized expiries, so a vintage mix inside total_notional_usd is structurally possible but has never occurred; the field exists so that a future cron gap becomes visible instead of passing silently. Mind the deliberate name split: total_notional_usd on a settled expiry is computed against the SETTLEMENT spot and never changes again, while open_notional_usd uses the CURRENT spot and therefore moves with spot every day, even if not a single contract trades. Same formula, different quantity — which is why the reference spot travels with it. Every expiry — upcoming ones included — now carries is_monthly, is_quarterly and expiry_type (daily | weekly | monthly | quarterly). These NEST rather than partition: quarterly ⊂ monthly ⊂ weekly ⊂ daily, so a quarterly expiry also has is_monthly=true. Filter on the booleans, read expiry_type as the label — it is the only field that separates a Friday expiry from a mid-week one (measured: Fri 18,613 contracts vs. Sat 2,852, and both used to read as false/false). All three are derived from the calendar (last Friday of the month; quarterly in Mar/Jun/Sep/Dec), which is why upcoming expiries can carry them at all — they have no settlement row yet. Cron collects daily 02:00 UTC from Deribit Public API. Related: arena_get_max_pain_history (base rates + daily snapshots of open expiries), arena_get_iv_snapshot (implied vol for the same expiries). [Free tier]
1 trials · measured 8 days ago
arena_get_max_pain scores 100.0/100 on Vouch's measured behaviour index, from 1 real invocation trials against io.github.Schoasch/backtesting-arena, measured 25 Aug 2026 under methodology v0.2.0. Every measured component scored 100.
Component breakdown
| Component | Weight | Value |
|---|---|---|
| Reliability | 35% | not applicable |
| Schema integrity | 25% | 100.0 |
| Failure behaviour | 15% | not applicable |
| Latency | 15% | not applicable |
| Concurrency | 10% | not applicable |
Tool details
- Transport
- remote
- Credential class
- gated
- Category
- Finance & compliance
- Input schema
- not declared
- Output schema
- not declared
- Side-effect classification
- unclassified
Score history
| Day | Score | Tier | Methodology |
|---|---|---|---|
| 2026-08-25 | 100.0 | shallow | v0.2.0 |
Probe evidence
| Probe | Outcomes |
|---|---|
| schema_integrity | pass: 1 |
Raw request/response logs are not archived yet — the outcome counts above are drawn directly from every recorded trial.
Embed this score
Available for every tool, scored or not — not a verification perk. Always links back to this page.
[](https://vouch.tools/tools/8ac960b0-ab69-4e54-b985-953dcbc32b20)