Dealer Hedge Flow API
Dealer Hedge Flow API は、Deribit の BTC オプションにおけるオプションディーラーのポジショニングと、価格が動いた場合にディーラーのヘッジが何をもたらすかを返します。具体的には、各価格水準について、そこに至るまでデルタヘッジを維持するためにディーラーが何米ドル分の BTC を 買う か 売る か、そしてそのフローが値動きを 増幅 するのか 抑制 するのかを示します。あわせて、ネットのガンマエクスポージャー(GEX)、ゼロガンマ水準、いくつかのレガシーのオプション統計も返します。新しいスナップショットは 1 時間ごとに計算されます。
ディーラーポジションの再構築方法、計算式、前提については、 Dealer Hedge Flow の方法論 をご覧ください。
Dealer Hedge Flow はディーラーのポジショニングの記述的モデルであり、目標価格や取引シグナルではありません。
エンドポイント
| メソッド | パス | 説明 |
|---|---|---|
GET | /v1/options/gex | 日次シリーズ:1 日 1 行(00:00 UTC のスナップショット) |
GET | /v1/options/gex/hourly | 1 時間ごとのすべてのスナップショット(Pro) |
GET | /v1/options/gex/profile | 1 つのスナップショットの価格別ヘッジフロー(デフォルト:最新) |
GET | /v1/options/gex/heatmap | ヒートマップ用の時刻 × 価格のインパクト行列 |
ベース URL:https://api.blocklens.co。すべてのレスポンスは {"success": true, "data": …} というエンベロープの JSON です。シリーズでは data は行のリストで、その横に count、access、message が付きます。/profile と /heatmap では access を含むオブジェクトです。エラーは {"success": false, "message": {…}, "timestamp": "…"} の形式で返されます
(エラー を参照)。
認証
すべてのリクエストに API キーが必要です。
Authorization: Bearer YOUR_API_KEY
API キーについては 認証 を、API アクセスを含むティアとリクエスト制限については レート制限とプラン をご覧ください。
符号と単位
- 金額はすべて USD 建てです。GEX の値(
net_gex、gex[]、strikes[].call_gex/put_gex)は 1% の値動きあたり の USD、ヘッジフローとインパクトは現在価格からその水準までの値動き全体に対する USD です。 hedge_flow> 0 — ディーラーはその水準に至るまでに BTC を 買う。< 0 — 売る。impact=hedge_flow× sign(level − spot):> 0 — 増幅(フローが値動きをさらに押し進める)、< 0 — 抑制(フローが値動きに逆らう)。net_gex> 0 — ディーラーは差し引きでロングガンマ(抑制レジーム)。< 0 — 差し引きでショートガンマ(増幅レジーム)。spotはスナップショット時点の BTC インデックス価格です。水準は、その ±30% の範囲で絶対値の $500 グリッド上にあります。zero_gammaはspotの ±50% の範囲で探索するため、水準のグリッドの外側にあることがあります。その範囲で GEX 曲線の符号が変わらない場合はnullです。
ティアと履歴
ティアのルールは Lab の画面上だけでなく、API 側でも適用されます。
| Free | Pro, Enterprise | |
|---|---|---|
/v1/options/gex(日次) | 直近 30 日間 | 2026-03-16 以降の全履歴 |
/v1/options/gex/hourly | —(403) | あり |
/v1/options/gex/profile | 最新 のスナップショットのみ、strikes なし | 任意のスナップショット、strikes あり |
/v1/options/gex/heatmap | resolution=1d、直近 30 日間 | 1h、6h、1d、全履歴 |
すべてのレスポンスには access ブロックが含まれます。
"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— 呼び出し元が閲覧できる最初の日(全履歴の場合はnull)。resolutions、profile_history、strikes、hourly— 呼び出し元のティアで許可されている内容。clipped— 日次シリーズまたはヒートマップでhistory_fromより前の日が要求され、それらが切り捨てられた場合にtrue。この 2 つのエンドポイントはこの理由で 403 を返すことはなく、許可された範囲を返します。/profileの過去のスナップショット(最新以外のすべて)、/hourly、6h/1hのヒートマップは、Free では 403 を返します(エラー を参照)。
スナップショットと時刻
- Deribit の BTC オプションボードのスナップショットは 1 時間に 1 回、正時の数秒後に取得されます。履歴は 2026-03-16 から始まります。2026-06-08 … 2026-07-07 は欠損しており(データ収集の障害)、ボードが不完全だった時間は個別にスキップされます。データは毎時 :20 UTC 頃に更新されます。
- 時刻は UTC、ISO 8601 形式です。スナップショット時刻は、スナップショットが持っている場合は マイクロ秒 まで含みます(
"2026-10-24T09:00:02.418731Z")。ts/times[]の値をそのまま/profile?ts=に渡すと、まさにそのスナップショットが選択されます。小数秒のないtsは、その 1 秒以内の任意のスナップショットに一致します。 - 日(日次シリーズ、
/profile?date=、1dのヒートマップ)は、その日の 00:00 UTC のスナップショットです(00:00 がない場合はその日の最初のスナップショット)。08:00 UTC の日次満期からは離れているため、ある日の行は一度表示されると変わりません。
GET /v1/options/gex
日次シリーズ、新しい順。
| パラメータ | デフォルト | 説明 |
|---|---|---|
from_date | 許可された最初の日 | YYYY-MM-DD(UTC)。ティアの期間制限より前 → 切り捨てられ、access.clipped = true |
to_date | 最新の日 | YYYY-MM-DD(UTC、その日を含む) |
limit | 100 | 日数(1–10,000)、新しい順 |
fields | すべて | カンマ区切りのフィールド名(date は常に含まれます) |
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)"
}
| フィールド | 意味 |
|---|---|
date | UTC 日付 |
hedge_snapshot_ts, spot | ヘッジフローのフィールドに使用したその日のスナップショットと、その BTC インデックス価格 |
net_gex | spot におけるディーラーのネット GEX(Black-Scholes、1% の値動きあたりの USD)— 公開されているネット GEX |
zero_gamma | 再計算した GEX 曲線の、spot に最も近い符号反転点(±50%)。ない場合は null |
flow_up5, flow_dn5, flow_up10, flow_dn10 | 価格が spot から +5% / −5% / +10% / −10% 動いた場合の USD 建てヘッジフロー。spot × 1.05 / 0.95 / 1.10 / 0.90 ちょうどにおける厳密値 |
snapshot_ts, btc_price | レガシーフィールドのスナップショットと、その BTC 価格 |
top_support_strike, top_support_gex | プラスの GEX が最大のストライク(Deribit のガンマ。|GEX| が $1,000 未満のストライクは除外) |
top_resist_strike, top_resist_gex | マイナスの GEX が最大のストライク(同じルール) |
pc_ratio_oi, pc_ratio_vol_24h | 建玉ベースおよび 24 時間取引高ベースのプット・コール・レシオ |
max_pain, max_pain_expiry | 最も近い満期のマックスペイン・ストライクと、その満期 |
legacy_total_gex, legacy_call_gex, legacy_put_gex | Deribit が公表するガンマ(1e-5 に丸められており、Black-Scholes に対して偏りがある)に基づく GEX。net_gex を使用してください |
legacy_flip_point | 価格を挟む 2 つのストライク間におけるストライク別 GEX の符号反転点 — ガンマフリップでは ありません。zero_gamma を使用してください |
日次の net_gex、zero_gamma、flow_*、top_*_strike の各列は、カタログのメトリクス(options_*、カテゴリ options)でもあり、/v1/metrics と MCP ツール get_metric から利用できます。
GET /v1/options/gex/hourly
1 時間ごとのすべてのスナップショット、新しい順(Pro)。フィールドは日次シリーズと同じで、キーは date ではなく timestamp(スナップショット時刻)です。同じスナップショットのレガシー値とヘッジフローの値は 1 つの行にまとめられます。
| パラメータ | デフォルト | 説明 |
|---|---|---|
from_date, to_date | — | YYYY-MM-DD(UTC、to_date はその日を含む) |
limit | 168 | スナップショット数(1–10,000)。デフォルトは 1 週間分 |
fields | すべて | カンマ区切りのフィールド名(timestamp は常に含まれます) |
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
1 つのスナップショットの価格別ヘッジフロー。
| パラメータ | デフォルト | 説明 |
|---|---|---|
ts | 最新 | スナップショット時刻(ISO 8601。オフセットがなければ UTC):その時刻以前の最新のスナップショット。date とは併用できません |
date | — | YYYY-MM-DD(UTC):その日の 00:00 UTC のスナップショット(その日の最初のもの)。ts とは併用できません |
Free の呼び出し元は最新のスナップショットのみ取得できます。ts / date を省略してください(最新のスナップショットに解決される ts / date も受け付けます)。
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}
}
}
この例は短縮されています。実際のプロファイルには約 100 の水準があります。
| フィールド | 意味 |
|---|---|
ts, spot | スナップショット時刻と BTC インデックス価格 |
step, levels | グリッドの刻み($500)と、spot の ±30% の範囲にある価格水準(昇順) |
hedge_flow[i] | 価格が spot から levels[i] まで動いた場合にディーラーが売買する USD(> 0 買い、< 0 売り) |
impact[i] | 値動きの方向で符号付けした hedge_flow[i](> 0 増幅、< 0 抑制) |
gex[i] | 価格が levels[i] にあると仮定して再計算したディーラーのネット GEX(1% あたりの USD) |
net_gex | spot における GEX |
zero_gamma, flips | spot の ±50% の範囲における、spot に最も近い GEX 曲線の符号反転点と、すべての符号反転点(昇順)(ない場合は null / []) |
flow | spot × 1.05 / 0.95 / 1.10 / 0.90 ちょうどにおけるヘッジフロー(up5、dn5、up10、dn10) |
max_amplify_level, max_dampen_level | 増幅 / 抑制の限界フローが最大となる $500 の水準帯(ない場合は null) |
method_version | 計算手法のバージョン |
legacy | 同じスナップショットのレガシー値(Deribit のガンマ):flip_point、top_support_strike、top_resist_strike、total_gex |
strikes | ストライク別のネット GEX。コールとプットを分け、満期をまたいで合計(Pro。Free では null) |
hedge_flow は価格経路に沿った累積値です。2 つの水準の間の水準帯を読むには差を取ってください。複数の水準の値を合計してはいけません。
GET /v1/options/gex/heatmap
| パラメータ | デフォルト | 説明 |
|---|---|---|
resolution | 1d | 1d、6h または 1h(Pro):バケットごとに 1 つのスナップショット — その最初のもの(1d = 00:00 UTC のスナップショット) |
from | 1d:全履歴、6h:直近 180 日間、1h:直近 30 日間 | ISO 形式の日付または日時(UTC)。ティアの期間制限より前 → 切り捨てられ、access.clipped = true |
to | 現在 | ISO 形式の日付(その日を含む)または日時(その時刻を含まない) |
price_min, price_max | すべての水準 | 価格範囲を絞り込みます。USD(有限値、≥ 0、price_min < price_max) |
from / to は、resolution の完全なバケットに合わせて外側に丸められます。
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]— スナップショットtimes[t]におけるlevels[l]のインパクト(USD の整数。> 0 増幅、< 0 抑制)。 そのスナップショット自身の ±30% の範囲外、またはそのグリッドの穴ではnull。timesは実際のスナップショット時刻(昇順)です。データの欠損期間の前後では間隔が不規則になります(空の行はありません)。levels— 返されるすべてのスナップショットをカバーする、共通の $500 グリッド。overlays.price— 各行のspot。overlays.zero_gamma— そのゼロガンマ水準(ない場合はnull)。ゼロガンマ水準はlevelsの外側にあることがあるため、描画時にはラインをクリップしてください。scale— |impact| の 98 パーセンタイルと最大値。カラースケールの上限はp98にしてください。
制限とペイロードサイズ
resolution=1hで 1 回のリクエストがカバーできるのは最大 90 日間 です(超えると 400 — より長い期間には6hまたは1dを使用してください)。- 1 回のヒートマップリクエストでカバーできるのは最大 2,000,000 セル(スナップショット数 × 水準数)です。これを超えるリクエストは 400 を返します — より粗い解像度、より短い期間、または
price_min/price_maxを使用してください。 - 1 時間ごとの全履歴は、非圧縮 JSON で約 10 MB になります。レスポンスは転送時に gzip 圧縮されます。初回表示には
1dか6h、または短い1hのウィンドウを使用してください。 - API キーごとのリクエスト制限:レート制限とプラン。
更新とキャッシュ
- 新しいスナップショットは当社側で 1 時間ごとに計算され、:20 UTC 頃に公開されます。それまでは前の時間のものが最新として返されます。
- レスポンスはサーバー側でキャッシュされ、新しいデータが届くと更新されます。
- 同じ URL でもティアによって異なるデータが返されるため、レスポンスには
Cache-Control: private, max-age=600とVary: Authorizationが付与されます — 共有キャッシュに保存されることはありません。
エラー
エラーは {"success": false, "message": {…}, "timestamp": "…"} というエンベロープで返されます。表には message を示します。
| ステータス | 発生条件 | message |
|---|---|---|
| 400 | 不正な日付または時刻、to_date が from_date より前、ts と date の両方を指定、不明な resolution、price_min / price_max が有限値でない・負の値・price_min >= price_max、水準と重ならない範囲、1h で 90 日を超える期間、2,000,000 セルを超えるヒートマップ | {"error": "Invalid parameter", "message": "resolution must be one of 1h, 6h, 1d"} |
| 401 | API キーがない、または無効 | |
| 403 | Free:/profile の過去のスナップショット、/hourly、6h / 1h のヒートマップ | {"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"} |
| 404 | 要求された日または時刻のスナップショットがない、または要求された範囲にデータがない | {"error": "Not found", "message": "no profile on 2026-06-20"} |
| 429 | レート制限を超過 | レート制限とプラン を参照 |