Zum Hauptinhalt springen

Dealer Hedge Flow API

Die Dealer Hedge Flow API zeigt, wie Options-Dealer in Deribit-BTC-Optionen positioniert sind und was ihr Hedging bei einer Kursbewegung bewirken würde: für jedes Preisniveau, für wie viele US-Dollar Dealer auf dem Weg dorthin BTC kaufen oder verkaufen würden, um delta-gehedgt zu bleiben, und ob dieser Flow die Bewegung verstärkt oder dämpft. Außerdem liefert sie das Netto-GEX (Gamma-Exposure), das Zero-Gamma-Niveau und einige Legacy-Optionskennzahlen. Jede Stunde wird ein neuer Snapshot berechnet.

Wie die Dealer-Positionen rekonstruiert werden, die Formeln und die Annahmen: Methodik des Dealer Hedge Flow.

Kein Handelssignal

Der Dealer Hedge Flow ist ein deskriptives Modell der Dealer-Positionierung, kein Kursziel und kein Handelssignal.

Endpoints​

MethodePfadBeschreibung
GET/v1/options/gexTägliche Zeitreihe: eine Zeile pro Tag (der Snapshot um 00:00 UTC)
GET/v1/options/gex/hourlyJeder stündliche Snapshot (Pro)
GET/v1/options/gex/profileHedge-Flow nach Preis für einen Snapshot (Standard: der neueste)
GET/v1/options/gex/heatmapMatrix Zeit × Preis des Impacts für eine Heatmap

Basis-URL: https://api.blocklens.co. Alle Antworten sind JSON im Format {"success": true, "data": …}: Bei den Zeitreihen ist data eine Liste von Zeilen (daneben stehen count, access und message), bei /profile und /heatmap ein Objekt, das access enthält. Fehler verwenden {"success": false, "message": {…}, "timestamp": "…"} (siehe Fehler).

Authentifizierung​

Alle Anfragen erfordern einen API-Schlüssel:

Authorization: Bearer YOUR_API_KEY

Siehe Authentifizierung zu API-Schlüsseln und Rate Limits & Tarife dazu, welche Tarife API-Zugriff enthalten und welche Anfragelimits gelten.

Vorzeichen und Einheiten​

  • Alle Beträge sind in USD. GEX-Werte (net_gex, gex[], strikes[].call_gex / put_gex) sind USD je 1 % Bewegung; Hedge-Flow und Impact sind USD für die gesamte Bewegung vom aktuellen Preis bis zum Niveau.
  • hedge_flow > 0 — Dealer kaufen auf dem Weg zum Niveau BTC; < 0 — sie verkaufen.
  • impact = hedge_flow × sign(Niveau − Spot): > 0 — Verstärkung (der Flow treibt die Bewegung weiter), < 0 — Dämpfung (er stemmt sich gegen die Bewegung).
  • net_gex > 0 — Dealer sind netto Long Gamma (dämpfendes Regime); < 0 — netto Short Gamma (verstärkendes Regime).
  • spot ist der BTC-Indexpreis des Snapshots; die Niveaus liegen auf einem absoluten $500-Raster innerhalb von ±30 % davon.
  • zero_gamma wird innerhalb von ±50 % um spot gesucht und kann daher außerhalb des Niveaurasters liegen; null, wenn die GEX-Kurve dort ein Vorzeichen beibehält.

Tarife und Historie​

Die Tarifregeln erzwingt die API selbst, nicht erst die Lab-Oberfläche:

FreePro, Enterprise
/v1/options/gex (täglich)die letzten 30 Tagevollständige Historie seit 2026-03-16
/v1/options/gex/hourly— (403)ja
/v1/options/gex/profilenur der neueste Snapshot, ohne strikesjeder Snapshot, mit strikes
/v1/options/gex/heatmapresolution=1d, die letzten 30 Tage1h, 6h, 1d, vollständige Historie

Jede Antwort enthält einen access-Block:

"access": {"tier": "free", "grade": 0, "full_history": false, "history_from": "2026-09-24",
"resolutions": ["1d"], "profile_history": false, "strikes": false, "hourly": false,
"required_grade": 1, "clipped": false}
  • history_from — der erste Tag, den der Aufrufer sehen darf (null bei voller Historie).
  • resolutions, profile_history, strikes, hourly — was der Tarif des Aufrufers erlaubt.
  • clipped — true, wenn bei der täglichen Zeitreihe oder der Heatmap Tage vor history_from angefragt und abgeschnitten wurden. Diese beiden Endpoints liefern aus diesem Grund nie 403, sondern geben den erlaubten Teil zurück.
  • Ein vergangener Snapshot von /profile (alles außer dem neuesten), /hourly sowie eine 6h- / 1h-Heatmap liefern im Free-Tarif 403 (siehe Fehler).

Snapshots und Zeit​

  • Ein Snapshot des Deribit-BTC-Options-Boards pro Stunde, wenige Sekunden nach der vollen Stunde. Die Historie beginnt am 2026-03-16; 2026-06-08 … 2026-07-07 fehlt (Ausfall der Datenerfassung), und einzelne Stunden werden übersprungen, wenn das Board unvollständig war. Die Daten werden stündlich gegen :20 UTC aktualisiert.
  • Zeitangaben sind UTC, ISO 8601. Snapshot-Zeitpunkte enthalten Mikrosekunden, sofern der Snapshot sie hat ("2026-10-24T09:00:02.418731Z"): Übergeben Sie einen Wert aus ts / times[] unverändert an /profile?ts=, dann wählt er genau diesen Snapshot aus. Ein ts ohne Sekundenbruchteile trifft jeden Snapshot innerhalb dieser Sekunde.
  • Ein Tag (die tägliche Zeitreihe, /profile?date=, die 1d-Heatmap) ist der Snapshot um 00:00 UTC dieses Tages — bzw. der erste Snapshot des Tages, falls 00:00 fehlt. Er liegt mit Abstand zum täglichen Verfall um 08:00 UTC, daher ändert sich die Zeile eines Tages nicht mehr, sobald sie erschienen ist.

GET /v1/options/gex​

Tägliche Zeitreihe, neueste zuerst.

ParameterStandardBeschreibung
from_dateerster erlaubter TagYYYY-MM-DD (UTC); früher als das Tariffenster → abgeschnitten, access.clipped = true
to_dateneuester TagYYYY-MM-DD (UTC, einschließlich)
limit100Anzahl der Tage (1–10.000), neueste zuerst
fieldsalleKommagetrennte Feldnamen (date bleibt immer erhalten)
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.blocklens.co/v1/options/gex?from_date=2026-10-01&fields=btc_price,net_gex,zero_gamma,flow_up5,flow_dn5"
{
"success": true,
"data": [
{"date": "2026-10-23", "snapshot_ts": "2026-10-23T00:00:02Z", "btc_price": 80712.4,
"legacy_total_gex": 30112000.0, "legacy_call_gex": 41870000.0, "legacy_put_gex": -11758000.0,
"top_support_strike": 80000.0, "top_support_gex": 9120000.0,
"top_resist_strike": 76000.0, "top_resist_gex": -3410000.0, "legacy_flip_point": 80551.2,
"pc_ratio_oi": 0.62, "pc_ratio_vol_24h": 0.81, "max_pain": 82000.0, "max_pain_expiry": "24OCT26",
"hedge_snapshot_ts": "2026-10-23T00:00:02Z", "spot": 80712.4, "net_gex": 35700000.0, "zero_gamma": 59300.0,
"flow_up5": -219000000.0, "flow_dn5": 288000000.0, "flow_up10": -402000000.0, "flow_dn10": 515000000.0}
],
"count": 1,
"access": {"tier": "pro", "grade": 1, "full_history": true, "history_from": null, "resolutions": ["1h", "6h", "1d"],
"profile_history": true, "strikes": true, "hourly": true, "required_grade": 1, "clipped": false},
"message": "Options GEX and dealer hedge flow, daily (Deribit BTC)"
}
FeldBedeutung
dateUTC-Tag
hedge_snapshot_ts, spotDer Snapshot des Tages, der für die Hedge-Flow-Felder verwendet wird, und sein BTC-Indexpreis
net_gexNetto-Dealer-GEX bei spot, Black-Scholes, USD je 1 % Bewegung — das veröffentlichte Netto-GEX
zero_gammaDer spot nächstgelegene Vorzeichenwechsel der neu berechneten GEX-Kurve (±50 %); null, falls keiner vorhanden
flow_up5, flow_dn5, flow_up10, flow_dn10Hedge-Flow in USD bei einer Kursbewegung um +5 % / −5 % / +10 % / −10 % ab spot, exakt bei spot × 1.05 / 0.95 / 1.10 / 0.90
snapshot_ts, btc_priceDer Snapshot der Legacy-Felder und sein BTC-Kurs
top_support_strike, top_support_gexDer Strike mit dem größten positiven GEX (Deribit-Gamma; Strikes mit |GEX| unter $1,000 werden ausgelassen)
top_resist_strike, top_resist_gexDer Strike mit dem am stärksten negativen GEX (gleiche Regeln)
pc_ratio_oi, pc_ratio_vol_24hPut/Call-Ratio nach Open Interest und nach 24-Stunden-Volumen
max_pain, max_pain_expiryMax-Pain-Strike des nächstgelegenen Verfalls und dieser Verfall
legacy_total_gex, legacy_call_gex, legacy_put_gexGEX auf Basis des von Deribit veröffentlichten Gammas (auf 1e-5 gerundet — gegenüber Black-Scholes verzerrt); verwenden Sie net_gex
legacy_flip_pointVorzeichenwechsel des Strike-GEX zwischen den beiden Strikes um den Preis — kein Gamma-Flip; verwenden Sie zero_gamma

Die täglichen Spalten net_gex, zero_gamma, flow_* und top_*_strike sind außerdem Katalogmetriken (options_*, Kategorie options), verfügbar über /v1/metrics und das MCP-Tool get_metric.

GET /v1/options/gex/hourly​

Jeder stündliche Snapshot, neueste zuerst (Pro). Dieselben Felder wie in der täglichen Zeitreihe, jedoch mit timestamp (dem Snapshot-Zeitpunkt) statt date als Schlüssel; die Legacy- und die Hedge-Flow-Werte desselben Snapshots stehen in einer Zeile.

ParameterStandardBeschreibung
from_date, to_date—YYYY-MM-DD (UTC, to_date einschließlich)
limit168Anzahl der Snapshots (1–10.000); der Standard entspricht einer Woche
fieldsalleKommagetrennte Feldnamen (timestamp bleibt immer erhalten)
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.blocklens.co/v1/options/gex/hourly?limit=24&fields=spot,net_gex,zero_gamma"

GET /v1/options/gex/profile​

Hedge-Flow nach Preis für einen Snapshot.

ParameterStandardBeschreibung
tsneuesterSnapshot-Zeitpunkt (ISO 8601, UTC ohne Offset): der neueste Snapshot zu diesem Zeitpunkt oder davor. Nicht zusammen mit date
date—YYYY-MM-DD (UTC): der Snapshot um 00:00 UTC dieses Tages (der erste des Tages). Nicht zusammen mit ts

Free-Aufrufer erhalten nur den neuesten Snapshot: Lassen Sie ts / date weg (ein ts / date, das auf den neuesten Snapshot verweist, wird ebenfalls akzeptiert).

curl -H "Authorization: Bearer YOUR_API_KEY" https://api.blocklens.co/v1/options/gex/profile
{
"success": true,
"data": {
"ts": "2026-10-24T09:00:02Z", "spot": 80712.4, "step": 500.0,
"levels": [80000.0, 80500.0, 81000.0, 81500.0],
"hedge_flow": [21400000.0, 4900000.0, -6800000.0, -27300000.0],
"impact": [-21400000.0, -4900000.0, -6800000.0, -27300000.0],
"gex": [36900000.0, 35900000.0, 35200000.0, 34100000.0],
"net_gex": 35700000.0, "zero_gamma": 59300.0, "flips": [59300.0],
"flow": {"up5": -219000000.0, "dn5": 288000000.0, "up10": -402000000.0, "dn10": 515000000.0},
"max_amplify_level": null, "max_dampen_level": 74000.0, "method_version": 1,
"legacy": {"flip_point": 80551.2, "top_support_strike": 80000.0, "top_resist_strike": 76000.0,
"total_gex": 30112000.0},
"strikes": [{"strike": 80000.0, "call_gex": 6200000.0, "put_gex": 2920000.0}],
"access": {"tier": "pro", "grade": 1, "full_history": true, "history_from": null, "resolutions": ["1h", "6h", "1d"],
"profile_history": true, "strikes": true, "hourly": true, "required_grade": 1, "clipped": false}
}
}

Das Beispiel ist gekürzt: Ein echtes Profil hat etwa hundert Niveaus.

FeldBedeutung
ts, spotSnapshot-Zeitpunkt und BTC-Indexpreis
step, levelsRasterweite ($500) und die Preisniveaus, aufsteigend, innerhalb von ±30 % um spot
hedge_flow[i]USD, die Dealer handeln, wenn sich der Preis von spot auf levels[i] bewegt (> 0 Kauf, < 0 Verkauf)
impact[i]hedge_flow[i], mit dem Vorzeichen der Bewegungsrichtung versehen (> 0 Verstärkung, < 0 Dämpfung)
gex[i]Netto-Dealer-GEX, neu berechnet, als läge der Preis bei levels[i], USD je 1 %
net_gexGEX bei spot
zero_gamma, flipsDer spot nächstgelegene Vorzeichenwechsel der GEX-Kurve und alle Vorzeichenwechsel, aufsteigend, innerhalb von ±50 % um spot (null / [], falls keine vorhanden)
flowHedge-Flow exakt bei spot × 1.05 / 0.95 / 1.10 / 0.90 (up5, dn5, up10, dn10)
max_amplify_level, max_dampen_levelDas $500-Band mit dem größten verstärkenden / dämpfenden marginalen Flow (null, falls keines vorhanden)
method_versionVersion der Berechnungsmethode
legacyLegacy-Werte desselben Snapshots (Deribit-Gamma): flip_point, top_support_strike, top_resist_strike, total_gex
strikesNetto-GEX nach Strikes, Calls und Puts getrennt, summiert über alle Verfälle (Pro; null im Free-Tarif)

hedge_flow ist entlang des Preispfads kumulativ: Für ein Band zwischen zwei Niveaus bilden Sie die Differenz, niemals die Summe mehrerer Niveaus.

GET /v1/options/gex/heatmap​

ParameterStandardBeschreibung
resolution1d1d, 6h oder 1h (Pro): ein Snapshot je Bucket — jeweils der erste (1d = der Snapshot um 00:00 UTC)
from1d: die gesamte Historie; 6h: die letzten 180 Tage; 1h: die letzten 30 TageISO-Datum oder Datum mit Uhrzeit (UTC). Früher als das Tariffenster → abgeschnitten, access.clipped = true
tojetztISO-Datum (einschließlich) oder Datum mit Uhrzeit (ausschließlich)
price_min, price_maxalle NiveausBegrenzen den Preisbereich, USD (endlich, ≥ 0, price_min < price_max)

from / to werden nach außen auf ganze Buckets von resolution erweitert.

curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.blocklens.co/v1/options/gex/heatmap?resolution=6h&from=2026-09-01"
{
"success": true,
"data": {
"resolution": "1d", "times": ["2026-10-22T00:00:01Z", "2026-10-23T00:00:02Z"], "step": 500.0,
"levels": [80000.0, 80500.0, 81000.0],
"matrix": [[-18200000, null, -5100000], [-21400000, -4900000, -6800000]],
"overlays": {"price": [80310.0, 80712.4], "zero_gamma": [null, 59300.0]},
"scale": {"p98": 310000000, "max": 612000000},
"access": {"tier": "pro", "grade": 1, "full_history": true, "history_from": null, "resolutions": ["1h", "6h", "1d"],
"profile_history": true, "strikes": true, "hourly": true, "required_grade": 1, "clipped": false}
}
}
  • matrix[t][l] — der Impact in ganzen USD bei levels[l] für den Snapshot times[t] (> 0 Verstärkung, < 0 Dämpfung). null außerhalb des eigenen ±30-%-Bereichs dieses Snapshots oder in einer Lücke seines Rasters.
  • times sind die tatsächlichen Snapshot-Zeitpunkte, aufsteigend; um Datenlücken herum sind die Abstände unregelmäßig (keine leeren Zeilen).
  • levels — ein gemeinsames $500-Raster, das jeden zurückgegebenen Snapshot abdeckt.
  • overlays.price — spot jeder Zeile; overlays.zero_gamma — ihr Zero-Gamma-Niveau (null, wo keines vorhanden ist). Das Zero-Gamma-Niveau kann außerhalb von levels liegen: Schneiden Sie die Linie beim Zeichnen ab.
  • scale — das 98. Perzentil und das Maximum von |impact|; kappen Sie eine Farbskala bei p98.

Limits und Antwortgröße​

  • resolution=1h umfasst höchstens 90 Tage pro Anfrage (sonst 400 — verwenden Sie für längere Zeiträume 6h oder 1d).
  • Eine Heatmap-Anfrage darf höchstens 2.000.000 Zellen (Snapshots × Niveaus) umfassen; größere Anfragen liefern 400 — verwenden Sie eine gröbere Auflösung, einen kürzeren Zeitraum oder price_min / price_max.
  • Die vollständige stündliche Historie umfasst etwa 10 MB unkomprimiertes JSON. Antworten werden bei der Übertragung gzip-komprimiert. Verwenden Sie für die erste Ansicht 1d oder 6h oder ein kurzes 1h-Fenster.
  • Anfragelimits pro API-Schlüssel: Rate Limits & Tarife.

Aktualisierungen und Caching​

  • Ein neuer Snapshot wird bei uns jede Stunde berechnet und gegen :20 UTC veröffentlicht; bis dahin ist die vorherige Stunde die neueste.
  • Antworten werden serverseitig gecacht und aktualisiert, sobald neue Daten eintreffen.
  • Dieselbe URL liefert für verschiedene Tarife unterschiedliche Daten, daher werden Antworten mit Cache-Control: private, max-age=600 und Vary: Authorization gesendet — geteilte Caches speichern sie also nie.

Fehler​

Fehler werden im Format {"success": false, "message": {…}, "timestamp": "…"} geliefert; die Tabelle zeigt message.

StatusWannmessage
400Ein ungültiges Datum oder eine ungültige Uhrzeit, to_date vor from_date, sowohl ts als auch date, unbekannte resolution, price_min / price_max nicht endlich, negativ oder price_min >= price_max, ein Bereich, der sich nicht mit den Niveaus überschneidet, mehr als 90 Tage bei 1h, eine Heatmap mit mehr als 2.000.000 Zellen{"error": "Invalid parameter", "message": "resolution must be one of 1h, 6h, 1d"}
401Fehlender oder ungültiger API-Schlüssel
403Free: ein vergangener Snapshot von /profile, /hourly, eine 6h- / 1h-Heatmap{"error": "Insufficient tier", "message": "Profiles of past snapshots requires Pro", "required_grade": 1, "current_tier": "free", "current_grade": 0, "history_from": "2026-09-24", "upgrade_url": "https://blocklens.co/pricing"}
404Kein Snapshot für den angefragten Tag oder Zeitpunkt oder keine Daten im angefragten Bereich{"error": "Not found", "message": "no profile on 2026-06-20"}
429Rate Limit überschrittenSiehe Rate Limits & Tarife