דלג לתוכן הראשי

Dealer Hedge Flow API

ה-Dealer Hedge Flow API מראה כיצד ממוצבים דילרים של אופציות באופציות BTC של Deribit, ומה יעשה הגידור שלהם אם המחיר יזוז: עבור כל רמת מחיר — בכמה דולרים של BTC הדילרים יקנו או ימכרו כדי להישאר מגודרי דלתא בדרך אליה, והאם הזרימה הזו מגבירה את התנועה או מרסנת אותה. ה-API מחזיר גם את חשיפת הגמא (GEX) נטו, את רמת ה-zero gamma וכמה סטטיסטיקות אופציות מסוג legacy. תמונת מצב חדשה מחושבת מדי שעה.

כיצד משוחזרות פוזיציות הדילרים, הנוסחאות וההנחות: מתודולוגיית Dealer Hedge Flow.

לא אות מסחר

ה-Dealer Hedge Flow הוא מודל תיאורי של פוזיציות הדילרים, לא יעד מחיר ולא אות מסחר.

נקודות קצה​

מתודהנתיבתיאור
GET/v1/options/gexסדרה יומית: שורה אחת לכל יום (תמונת המצב של 00:00 UTC)
GET/v1/options/gex/hourlyכל תמונת מצב שעתית (Pro)
GET/v1/options/gex/profileזרימת הגידור לפי מחיר עבור תמונת מצב אחת (ברירת מחדל: האחרונה)
GET/v1/options/gex/heatmapמטריצת זמן × מחיר של ההשפעה עבור מפת חום

כתובת בסיס: https://api.blocklens.co. כל התגובות הן JSON במעטפת {"success": true, "data": …}: בסדרות 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) הם ב-USD לתנועה של 1%; זרימת הגידור וההשפעה הן ב-USD עבור התנועה כולה מהמחיר הנוכחי ועד הרמה.
  • hedge_flow > 0 — הדילרים קונים BTC בדרך אל הרמה; < 0 — הם מוכרים.
  • impact = hedge_flow × sign(level − spot):‏ > 0 — הגברה (הזרימה דוחפת את התנועה הלאה), < 0 — ריסון (היא נשענת נגד התנועה).
  • net_gex > 0 — הדילרים בלונג גמא נטו (משטר ריסון); < 0 — בשורט גמא נטו (משטר הגברה).
  • spot הוא מחיר מדד ה-BTC בתמונת המצב; הרמות נמצאות על רשת מוחלטת של $500 בטווח ±30% ממנו.
  • את zero_gamma מחפשים בטווח ±50% מ-spot, ולכן הוא עשוי להיות מחוץ לרשת הרמות; null כאשר עקומת ה-GEX שומרת שם על סימן אחד.

מסלולים והיסטוריה​

כללי המסלולים נאכפים על ידי ה-API עצמו, ולא רק בממשק ה-Lab:

FreePro, Enterprise
/v1/options/gex (יומי)30 הימים האחרוניםהיסטוריה מלאה מאז 2026-03-16
/v1/options/gex/hourly— (403)כן
/v1/options/gex/profileתמונת המצב האחרונה בלבד, ללא strikesכל תמונת מצב, עם strikes
/v1/options/gex/heatmapresolution=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 — true כאשר הסדרה היומית או מפת החום התבקשו עבור ימים שלפני history_from והם הושמטו. שתי נקודות הקצה האלה לעולם אינן מחזירות 403 מסיבה זו: הן מחזירות את החלק המותר.
  • תמונת מצב קודמת מ-/profile (כל אחת מלבד האחרונה), /hourly ומפת חום ברזולוציה 6h / 1h מחזירות 403 במסלול Free (ראו שגיאות).

תמונות מצב וזמן​

  • תמונת מצב אחת של לוח אופציות ה-BTC של Deribit בכל שעה, כמה שניות אחרי השעה העגולה. ההיסטוריה מתחילה ב-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 ללא שברי שנייה מתאים לכל תמונת מצב בתוך אותה שנייה.
  • יום (הסדרה היומית, /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, כולל)
limit100מספר הימים (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_gexGEX נטו של הדילרים ב-spot, לפי Black-Scholes, ב-USD לתנועה של 1% — ה-GEX נטו המפורסם
zero_gammaהחלפת הסימן של עקומת ה-GEX המחושבת מחדש הקרובה ביותר ל-spot (±50%); null אם אין כזו
flow_up5, flow_dn5, flow_up10, flow_dn10זרימת הגידור ב-USD אילו המחיר זז ב-+5% / −5% / +10% / −10% מ-spot, בדיוק ב-spot × 1.05 / 0.95 / 1.10 / 0.90
snapshot_ts, btc_priceתמונת המצב של שדות ה-legacy ומחיר ה-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יחס פוט/קול לפי Open Interest ולפי נפח ב-24 השעות האחרונות
max_pain, max_pain_expiryסטרייק ה-max pain של הפקיעה הקרובה, ואותה פקיעה
legacy_total_gex, legacy_call_gex, legacy_put_gexGEX לפי הגמא ש-Deribit מפרסמת (מעוגלת ל-1e-5 — מוטה ביחס ל-Black-Scholes); השתמשו ב-net_gex
legacy_flip_pointהחלפת הסימן של ה-GEX לפי סטרייק בין שני הסטרייקים שסביב המחיר — אינה gamma flip; השתמשו ב-zero_gamma

העמודות היומיות net_gex, zero_gamma, flow_* ו-top_*_strike הן גם מדדי קטלוג (options_*, קטגוריה options) הזמינים דרך /v1/metrics ודרך כלי ה-MCP‏ get_metric.

GET /v1/options/gex/hourly​

כל תמונת מצב שעתית, מהחדשה לישנה (Pro). אותם שדות כמו בסדרה היומית, עם המפתח timestamp (זמן תמונת המצב) במקום date; ערכי ה-legacy וערכי זרימת הגידור של אותה תמונת מצב חולקים שורה אחת.

פרמטרברירת מחדלתיאור
from_date, to_date—YYYY-MM-DD (UTC, to_date כולל)
limit168מספר תמונות המצב (1–10,000); ברירת המחדל היא שבוע אחד
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​

זרימת הגידור לפי מחיר עבור תמונת מצב אחת.

פרמטרברירת מחדלתיאור
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}
}
}

הדוגמה מקוצרת: בפרופיל אמיתי יש כמאה רמות.

שדהמשמעות
ts, spotזמן תמונת המצב ומחיר מדד ה-BTC
step, levelsצעד הרשת ($500) ורמות המחיר, בסדר עולה, בטווח ±30% מ-spot
hedge_flow[i]הסכום ב-USD שהדילרים יסחרו בו אם המחיר יזוז מ-spot אל levels[i] (> 0 קנייה, < 0 מכירה)
impact[i]hedge_flow[i] כשהסימן שלו נקבע לפי כיוון התנועה (> 0 הגברה, < 0 ריסון)
gex[i]GEX נטו של הדילרים, מחושב מחדש כאילו המחיר נמצא ב-levels[i], ב-USD לכל 1%
net_gexה-GEX ב-spot
zero_gamma, flipsהחלפת הסימן של עקומת ה-GEX הקרובה ביותר ל-spot וכל החלפות הסימן, בסדר עולה, בטווח ±50% מ-spot (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ערכי legacy של אותה תמונת מצב (גמא של Deribit):‏ flip_point, top_support_strike, top_resist_strike, total_gex
strikesGEX נטו לפי סטרייק, לקולים ולפוטים בנפרד, מסוכם על פני כל הפקיעות (Pro; null במסלול Free)

hedge_flow מצטבר לאורך מסלול המחיר: כדי לקרוא רצועה בין שתי רמות, חשבו את ההפרש — לעולם לא את הסכום של כמה רמות.

GET /v1/options/gex/heatmap​

פרמטרברירת מחדלתיאור
resolution1d1d, 6h או 1h (Pro): תמונת מצב אחת לכל דלי — הראשונה בו (1d = תמונת המצב של 00:00 UTC)
from1d: כל ההיסטוריה; 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] — ההשפעה בדולרים שלמים ב-levels[l] עבור תמונת המצב times[t] (> 0 הגברה, < 0 ריסון). null מחוץ לטווח ה-±30% של תמונת המצב עצמה או בחור ברשת שלה.
  • times הם זמני תמונות המצב בפועל, בסדר עולה; המרווחים אינם אחידים סביב פערים בנתונים (אין שורות ריקות).
  • levels — רשת משותפת אחת של $500 שמכסה את כל תמונות המצב המוחזרות.
  • overlays.price — ה-spot של כל שורה; overlays.zero_gamma — רמת ה-zero gamma שלה (null כשאין כזו). רמת ה-zero gamma עשויה להיות מחוץ ל-levels: חתכו את הקו בעת הציור.
  • scale — האחוזון ה-98 והמקסימום של |impact|; השתמשו ב-p98 כתקרה של סולם הצבעים.

מגבלות וגודל התגובה​

  • resolution=1h מכסה לכל היותר 90 יום לבקשה (אחרת 400 — לטווחים ארוכים יותר השתמשו ב-6h או ב-1d).
  • בקשת מפת חום יכולה לכסות לכל היותר 2,000,000 תאים (תמונות מצב × רמות); בקשות גדולות יותר מחזירות 400 — השתמשו ברזולוציה גסה יותר, בתקופה קצרה יותר או ב-price_min / price_max.
  • ההיסטוריה השעתית המלאה היא כ-10 MB של JSON לא דחוס. התגובות נדחסות ב-gzip בזמן ההעברה. לתצוגה ראשונה השתמשו ב-1d או ב-6h, או בחלון 1h קצר.
  • מגבלות בקשות לכל מפתח API: מגבלות קצב ושכבות מנוי.

עדכונים ושמירה במטמון​

  • תמונת מצב חדשה מחושבת אצלנו מדי שעה ומתפרסמת בסביבות :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, טווח שאינו חופף לרמות, יותר מ-90 יום ב-1h, מפת חום מעל 2,000,000 תאים{"error": "Invalid parameter", "message": "resolution must be one of 1h, 6h, 1d"}
401מפתח API חסר או לא תקין
403Free: תמונת מצב קודמת מ-/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חריגה ממגבלת הקצבראו מגבלות קצב ושכבות מנוי