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:
| 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—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, כולל) |
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 | GEX נטו של הדילרים ב-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_gex | GEX לפי הגמא ש-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 כולל) |
limit | 168 | מספר תמונות המצב (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 |
strikes | GEX נטו לפי סטרייק, לקולים ולפוטים בנפרד, מסוכם על פני כל הפקיעות (Pro; null במסלול Free) |
hedge_flow מצטבר לאורך מסלול המחיר: כדי לקרוא רצועה בין שתי רמות, חשבו את ההפרש — לעולם לא את הסכום
של כמה רמות.
GET /v1/options/gex/heatmap
| פרמטר | ברירת מחדל | תיאור |
|---|---|---|
resolution | 1d | 1d, 6h או 1h (Pro): תמונת מצב אחת לכל דלי — הראשונה בו (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]— ההשפעה בדולרים שלמים ב-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 חסר או לא תקין | |
| 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 | חריגה ממגבלת הקצב | ראו מגבלות קצב ושכבות מנוי |