7 सितंबर 2026 · options

आपकी options backtest जिस row पर बनी है: Deribit का एक BTC call, हर field का ब्योरा

आपकी options backtest जिस row पर बनी है: Deribit का एक BTC call, हर field का ब्योरा

पिछले महीने रिसर्च टीम में किसी ने मुझसे पूछा कि हमारे options agents एक बिल्कुल वाजिब दिखने वाले long-gamma विचार को बार-बार क्यों ठुकरा रहे थे। Signal ठीक था। Vol forecast भी ठीक था। समस्या market data feed के दो fields और एक ऐसी संख्या में थी जो feed में है ही नहीं।

तो यह रहा वह असली object जिस पर हमारी बहस हो रही थी। Deribit ticker response, BTC-25SEP26-110000-C, सोमवार को 11:20 UTC पर लिया गया, जब contract खत्म होने में 18 दिन बाकी थे। मैंने पुराने fields हटाकर वे रखे हैं जो मायने रखते हैं।

{
  "instrument_name": "BTC-25SEP26-110000-C",
  "index_price": 96412.18,
  "underlying_price": 96980.44,
  "underlying_index": "SYN.BTC-25SEP26",
  "estimated_delivery_price": 96412.18,
  "mark_price": 0.0041,
  "mark_iv": 42.14,
  "best_bid_price": 0.0038,  "best_bid_amount": 4.9,
  "best_ask_price": 0.0045,  "best_ask_amount": 12.1,
  "bid_iv": 40.42,           "ask_iv": 43.94,
  "last_price": 0.0043,
  "interest_rate": 0.0,
  "open_interest": 812.7,
  "greeks": {
    "delta": 0.0962, "gamma": 0.0000189,
    "vega": 36.77,   "theta": -42.91,  "rho": 4.61
  },
  "stats": { "volume": 61.2, "high": 0.0051, "low": 0.0036 }
}

instrument_name: एक string, चार तथ्य

BTC-25SEP26-110000-C। Underlying BTC, expiry 25 September 2026, strike 110,000, call। String यह नहीं बताती—और हर नई options backtest कम-से-कम एक बार यही बात गलत समझती है—कि contract spec के बाकी हिस्से क्या हैं: एक contract में underlying का 1 BTC होता है, premium BTC में quote और अदा किया जाता है, और expiry 08:00 UTC पर है, किसी स्थानीय समय के 16:00 पर नहीं।

यहाँ BTC में quote होना सबसे अहम पेच है। 0.0041 का mark, 0.0041 BTC है—index के भाव पर करीब $395। अगर आप इस column को price के रूप में store करके बाद में USD में दर्ज strategy P&L से जोड़ते हैं, तो चुपचाप ऐसी position बना लेते हैं जिसकी डॉलर कीमत spot के साथ बदलती है, भले ही option न बदले। मैंने ऐसी backtest देखी है जिसमें long-call leg ने BTC गिरने वाले दिन भी पैसा कमाया, सिर्फ इसलिए कि premium column को डॉलर समझा गया था और शोधकर्ता असल में डॉलर वाले accounting frame में coin-denominated premium के मुकाबले short था। इसे ढूँढ़ने में दो दिन लगे।

index_price और underlying_price: $568 का फ़र्क, और सही सिर्फ एक

इनमें $568.26 का फ़र्क है, और यह कोई गलती नहीं। index_price Deribit का BTC index है—spot reference, बड़े exchanges का मिश्रित भाव, और वह कीमत जिसके आधार पर contract का अंतिम settlement होता है। underlying_price उस खास expiry के synthetic forward की कीमत है, SYN.BTC-25SEP26, जो उसी तारीख़ के futures market से निकाली जाती है। करीब 12% सालाना दर पर 18 दिन का carry आपको यह $568 का अंतर देता है।

Payload के हर greek और mark IV की गणना forward के आधार पर होती है। अगर आप अपनी लोड की हुई series के आधार पर spot इस्तेमाल करके implied vol दोबारा निकालते हैं, तो हर strike के लिए अलग संख्या मिलेगी। यह गलती एक ही दिशा में व्यवस्थित रूप से जाती है: calls vol के लिहाज़ से असल से सस्ते और puts महँगे दिखते हैं। 0.6% basis वाले 18-दिन के contract में इस strike पर mark IV करीब डेढ़ point गलत निकलेगा। यह उन vol edges से बड़ा है जिनके आसपास लोग अक्सर strategies बनाते हैं।

interest_rate: 0.0 Deribit बता रहा है कि discounting वह rate से नहीं, forward के ज़रिए करता है। लगाने के लिए risk-free curve मत ढूँढ़िए; उससे दोहरी गिनती होगी।

mark_price और mark_iv: बिना counterparty वाली कीमत

0.0041 BTC। किसी ने इतनी कीमत नहीं चुकाई। Deribit fitted vol surface से mark निकालता है। यह order book पर आधारित होता है, मगर strikes और expiries के बीच smooth किया जाता है, ताकि कोई एक चौड़ा quote margin और liquidations को अचानक न हिला दे। आपके margin और unrealised P&L की गणना में mark इस्तेमाल होता है, और हर position endpoint में यही दिखता है।

इसीलिए crypto options research में यह सबसे लुभावनी fill price है—और सबसे गलत। Mark पर खरीदने और mark पर बेचने वाली backtest smoothing spline के साथ trade कर रही होती है। उससे Sharpe निकलेगा। वह Sharpe surface fitter का ब्योरा है; उससे यह पता नहीं चलता कि आप सचमुच trade कर पाते या नहीं।

हमने जो नियम लागू किया: mark का इस्तेमाल margin, risk और mid-to-mid attribution के लिए है। यह कभी fill नहीं होता। Backtest को fill चाहिए और उस timestamp का book snapshot नहीं है, तो run को mark पर fill करने के बजाय unpriced चिह्नित किया जाता है। हम उस row को छोड़ देना बेहतर समझते हैं।

best_bid 0.0038 / best_ask 0.0045: तीन इकाइयों में spread

BTC के हिसाब से सात ticks चौड़ा। $395 के option पर यह $67.50 है, यानी premium का 17%। Vol के हिसाब से 3.5 points—bid 40.4 और offer 43.9—यही वह संख्या है जो options trader आपको बताएगा, अगर आप पूछें कि spread कितना चौड़ा है।

कीमत जितना ही size भी मायने रखता है: bid पर 4.9 contracts, offer पर 12.1। Deribit options में size contracts में होता है, यानी underlying का 4.9 BTC, करीब $472k notional—लेकिन इस strike पर सिर्फ 0.47 BTC का delta। अगर आपकी strategy को उल्लेखनीय gamma चाहिए, तो दर्जनों contracts चाहिए; touch पर दिख रही book में उसका बस एक अंश है। आम तौर पर दूसरा level दो या तीन ticks और दूर होता है। Size model वाली किसी भी options backtest को book पर आगे बढ़ना होगा या RFQ/block pricing माननी होगी; इन दोनों मान्यताओं से बहुत अलग नतीजे निकलते हैं।

last_price: 0.0043 पिछले 24 घंटों में कभी हुआ एक trade है—हो सकता है 19 घंटे पहले, जब spot का स्तर बहुत अलग था। ऐसा instrument जो दिन में 61 contracts trade करता है, उसमें यह स्वभाव से ही पुराना है। इससे return series मत बनाइए।

greeks: पाँच संख्याएँ, इकाइयों के चार तरीक़े

यह block बाकी पूरे payload से ज़्यादा चुपचाप गड़बड़ी पैदा करता है, क्योंकि हर value इकाइयों के लिहाज़ से सही है, लेकिन कोई भी उस इकाई में नहीं है जिसका आप अंदाज़ा लगाएंगे।

FieldValueUnitsआम ग़लतफ़हमी
delta0.0962हर contract पर underlying का BTCइसे dollar delta मान लेना
gamma0.0000189underlying में हर $1 बदलाव पर Δdeltaइसे हर 1% बदलाव के हिसाब से मान लेना
vega36.77हर 1 vol point पर USDइसे हर 100% vol पर या BTC में मान लेना
theta-42.91हर calendar day पर USDइसे हर trading day पर मान लेना
rho4.61हर 1% rate पर USDइसे नज़रअंदाज़ करना, सही तरीक़े से

Delta coins में, vega और theta dollars में, और gamma spot में हर dollar बदलाव के हिसाब से है। Coin में दर्ज delta को dollar में दर्ज risk aggregate के साथ मिलाना ही वह तरीक़ा है जिससे लगभग flat दिखने वाली book असल में 40 BTC long निकलती है। Theta का हर calendar day के हिसाब से होना weekend strategies को चुभता है: शुक्रवार के close से सोमवार के open तक decay के तीन दिन लगते हैं—यहाँ हर contract पर करीब $129—जबकि trading sessions शून्य होते हैं। अगर आपकी backtest bars के हिसाब से आगे बढ़ती है और हर step पर theta लगाती है, तो weekends ग़ायब हो जाते हैं और हर short-premium strategy असल से चुपचाप ज़्यादा ख़राब दिखती है।

open_interest 812.7, volume 61.2: chain की असली तस्वीर

ऐसे strike पर 800 contracts का open interest, जिस पर कल 61 trade हुए। यह सचमुच सक्रिय strike है—110,000, expiry में तीन हफ़्ते बाकी, एक गोल संख्या; flow ठीक यहीं केंद्रित होता है। दो strikes आगे 120,000 तक जाएँ, तो open interest दस गुना घट जाता है। किसी गैर-मासिक expiry पर गैर-गोल strike तक जाएँ, तो ऐसे instruments मिलते हैं जिनका bid है, ask उससे 40% दूर है, और पूरे हफ़्ते कोई trade नहीं हुआ।

हर listed instrument पर चलने वाली chain-wide backtest आपको ख़ुशी-ख़ुशी उन सबमें fill दे देगी। हमने एक साथ लागू होने वाली शर्तें रखीं: quoted spread mark के 20% से कम, दोनों तरफ़ कम-से-कम 1 contract, और पिछले 24 घंटों में non-zero volume। आम दिन में BTC chain के करीब एक-तिहाई listed instruments इन शर्तों पर टिकते हैं। बाकी दो-तिहाई में ही नकली alpha छिपा है।

वह field जो payload में नहीं है

यह object आपको नहीं बताता कि trade की लागत क्या है। Deribit हर option contract पर 0.0003 BTC लेता है, maker और taker दोनों से—premium का नहीं, underlying का 0.03%—और यह fee option की कीमत के 12.5% पर capped है। इस contract पर cap नहीं लगेगा: शुल्क हर तरफ़ $28.92 है, क्योंकि 0.0041 का 12.5% 0.000513 होता है और flat fee उससे कम है।

Fee notional पर और premium vol पर होने का मतलब है कि out of the money जाते-जाते, चुकाई गई रकम के अनुपात में लागत तेज़ी से बढ़ती है।

$67.50quoted spread (mark का 17%)
$28.92हर contract पर, हर तरफ़ fee
31%premium के अनुपात में round trip की लागत
3.5 ptsvol में bid/ask का अंतर

0.0045 ($434) पर offer खरीदें, 0.0038 ($366) पर bid बेचें, और दो बार fee दें: $395 mark वाले contract पर round trip की लागत $125.80 है। लागत बराबर होने तक आपकी राय premium के 31% के बराबर फ़ायदा देनी चाहिए। Long-gamma विचार ठुकराए जाने की पूरी वजह यही थी, signal का इससे कोई लेना-देना नहीं था।

Delta की एक इकाई लेने की लागत पूछें, तो बात और दिलचस्प हो जाती है: fees contracts के साथ बढ़ती हैं और delta के साथ contracts उलटे अनुपात में बदलते हैं। गणना के लिए strikes के पार mark IV को 42.1% पर स्थिर रखें (असली chain में skew होता है, और crypto में call wing आम तौर पर ATM से ऊपर trade करती है, इसलिए यह table लागत को कम आँकती है):

InstrumentMark (BTC)Delta1 BTC delta के लिए contractsFee/sideहर BTC delta की लागत
97000-C (ATM)0.03730.5181.93$28.92$55.80
110000-C0.00410.09610.4$28.92$301
120000-C0.00040.01379.4$4.82 (cap के बाद)$383
BTC perp—1.01.0$48.21$48.21

आख़िरी row में 12.5% cap सचमुच काम कर रहा है; इसके बिना deep wing पर हर BTC delta की लागत $2,300 होती और lottery-ticket strategies सिर्फ़ ख़राब नहीं, हिसाब से ही नामुमकिन होतीं। Cap के बावजूद 120,000 strike के ज़रिए exposure खरीदने की लागत perpetual के मुकाबले करीब आठ गुना है। Options दिशा पर दाँव लगाने का सस्ता तरीक़ा नहीं हैं; कोई backtest ऐसा कहती है, तो उसने यह table छोड़ दी है।

08:00 UTC, 25 September

Ticker यह भी नहीं बताता कि position का अंत कैसे होगा। Deribit expiry वाले दिन 08:00 UTC से ठीक पहले के 30 मिनट के index average पर options का settlement करता है। In-the-money contracts पर 0.00015 BTC delivery fee भी लेता है, जो settlement value के 12.5% पर capped है।

Backtest के लिए इसके दो नतीजे हैं। पहला, averaging window सचमुच मायने रखती है और आप इसे गलत समझ सकते हैं: 07:59 पर $300 in the money option बेकार settle हो सकता है, अगर पिछले आधे घंटे में भाव बिगड़ा हो। 08:00 के भाव पर settlement करने वाली backtest आपके paper account से ज़्यादातर expiries में कुछ basis points और कुछ में काफ़ी ज़्यादा अलग नतीजा देगी। दूसरा, delivery fee तब भी लगती है जब आप settlement चाहते न हों। इसलिए expiry तक position रखने वाली strategy हर cycle में तीन fees देती है; 07:30 पर बंद करने वाली दो fees और एक spread। कौन सस्ता पड़ेगा, यह strike पर निर्भर करता है; premium के 0.0012 BTC के आसपास हिसाब पलटता है। हम हर position की लागत अलग निकालते हैं, कोई एक तय नियम नहीं चुनते।

मैं इस post में vol forecasting के बारे में लिखना चाहता था। इसके बजाय पूरा हफ़्ता इकाइयों और fee caps पर लगाया—options research में दिखावे और हक़ीक़त का अनुपात लगभग यही होना चाहिए।

बीस fields। जानबूझकर अलग दो कीमतें, एक ऐसी कीमत जिस पर कभी trade नहीं हुआ, चार इकाई प्रणालियों में greeks, और लागत का model जो payload के बाहर, पूरी तरह docs page में है। अगर आप options backtest शुरू कर रहे हैं, तो पहला दिन ऐसा एक function लिखने में लगाएँ जो इनमें से किसी एक object को पूरी लागत और सही इकाइयों वाली position में बदले—spread, fee, cap, delivery, coin बनाम dollar। इसके बाद लिखी हर strategy उसी function की धारणाएँ अपना लेगी।

crypto optionsderibitimplied volatilityfeesbacktesting
साझा करेंXLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← सभी पोस्ट