Iemand van het onderzoeksteam vroeg me vorige maand waarom onze optiesagents een heel redelijk ogend long-gamma-idee steeds afwezen. Het signaal klopte. De volprognose klopte. Het probleem zat in twee velden van de marktdatafeed en één getal dat helemaal niet in die feed staat.
Hier is dus het object waar we het werkelijk over hadden. De tickerrespons van Deribit voor BTC-25SEP26-110000-C, opgehaald om 11:20 UTC op een maandag, met nog achttien dagen tot expiratie. Ik heb de verouderde velden weggelaten en alles wat ertoe doet behouden.
{
"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: vier feiten, één tekenreeks
BTC-25SEP26-110000-C. Onderliggende waarde BTC, expiratie 25 september 2026, strike 110,000, call. Wat de tekenreeks niet vermeldt, en wat elke nieuwe optietest minstens één keer verkeerd doet, is de rest van de contractspecificatie: één contract vertegenwoordigt 1 BTC aan onderliggende waarde, de premie wordt genoteerd en betaald in BTC, en de expiratie is om 08:00 UTC, niet om 16:00 lokale tijd of iets dergelijks.
Dat de premie in BTC wordt genoteerd, is hier de valkuil. Een markprijs van 0.0041 is 0.0041 BTC, ongeveer $395 tegen de indexprijs. Als je die kolom als een prijs opslaat en later koppelt aan een strategie-P&L in USD, heb je ongemerkt een positie gebouwd waarvan de dollarwaarde met de spotprijs meebeweegt, zelfs wanneer de optie dat niet doet. Ik heb een backtest gezien waarin de long-callpositie geld opleverde op een dag dat BTC daalde, puur omdat de premie kolom als dollars was geïnterpreteerd en de onderzoeker in werkelijkheid short zat in de in munten uitgedrukte premie binnen een boekhouding in dollars. Het kostte twee dagen om dat te vinden.
index_price versus underlying_price: $568 verschil, en maar één is juist
Deze waarden verschillen $568.26, en dat is geen fout. index_price is de BTC-index van Deribit: de spotreferentie, een mix van grote exchanges en de prijs waartegen het contract uiteindelijk wordt afgerekend. underlying_price is de prijs van de synthetische future voor precies die expiratie, SYN.BTC-25SEP26, afgeleid van de futuresmarkt voor dezelfde datum. Achttien dagen carry tegen ongeveer 12% op jaarbasis leveren die $568 op.
Elke greek in de payload, en de mark-IV, wordt berekend op basis van de forward. Als je zelf de impliciete volatiliteit opnieuw berekent met spot omdat dat de reeks is die je toevallig hebt ingeladen, krijg je voor elke strike een ander getal. De fout is bovendien systematisch: calls lijken in volatiliteitstermen goedkoper dan ze zijn, en puts duurder. Bij een contract met een looptijd van 18 dagen en een basis van 0.6% zou je de mark-IV bij deze strike ongeveer anderhalf punt verkeerd prijzen. Dat is meer dan de meeste volatiliteitsvoordelen waarop mensen hun strategieën baseren.
interest_rate: 0.0 betekent dat Deribit de discontering via de forward uitvoert en niet via een rente. Ga dus niet op zoek naar een risicovrije rentecurve om in te voeren; dan tel je dubbel.
mark_price en mark_iv: een prijs zonder tegenpartij
0.0041 BTC. Niemand heeft dat betaald. Deribit berekent de markprijs op basis van een gepast volatiliteitsoppervlak, verankerd aan het orderboek maar gladgestreken over strikes en expiraties, zodat margin en liquidaties niet alle kanten op schieten wanneer één brede quote verschuift. De markprijs wordt gebruikt voor je margin, je ongerealiseerde P&L en alles wat in elk positie-endpoint verschijnt.
Daardoor is het de verleidelijkste fillprijs in crypto-optieonderzoek, en de minst juiste. Een backtest die koopt tegen de markprijs en verkoopt tegen de markprijs, handelt tegen een gladstrijkende spline. Die levert een Sharpe op. Die Sharpe beschrijft de oppervlaktetool en zegt niets over de vraag of je daadwerkelijk had kunnen handelen.
De regel die we uiteindelijk hebben vastgelegd: de markprijs is voor margin, risico en mid-to-mid-toerekening. Het is nooit een fill. Heeft de backtest een fill nodig en is er voor dat tijdstip geen orderboeksnapshot, dan markeren we de run als ongeprijsd in plaats van te vullen tegen de markprijs. We laten liever die rij weg.
best_bid 0.0038 / best_ask 0.0045: de spread in drie eenheden
Zeven ticks breed in BTC. Dat is $67.50 op een optie van $395, oftewel 17% van de premie. In volatiliteitstermen is het 3.5 punten, 40.4 bied tegenover 43.9 laat: het getal dat een optiehandelaar je noemt als je vraagt hoe breed iets is.
De volumes zijn net zo belangrijk als de prijzen: 4.9 contracten aan de biedzijde, 12.1 aan de laatzijde. De volumes van Deribit-opties zijn uitgedrukt in contracten, dus 4.9 BTC aan onderliggende waarde, ongeveer $472k notioneel — maar bij deze strike slechts 0.47 BTC aan delta. Heeft je strategie betekenisvolle gamma nodig, dan zijn tientallen contracten nodig, terwijl het zichtbare orderboek op de beste bied- en laatprijs maar een fractie daarvan biedt. Het tweede niveau ligt meestal nog twee of drie ticks verderop. Elke optietest met een volumemodel moet door het orderboek lopen of uitgaan van RFQ-/blokprijzen, en die twee aannames leveren heel verschillende uitkomsten op.
last_price: 0.0043 is een transactie die ergens in de afgelopen 24 uur plaatsvond, mogelijk negentien uur geleden bij een heel andere spotprijs. Bij een instrument dat 61 contracten per dag verhandelt, is die prijs per definitie verouderd. Bouw er geen rendementsreeks mee op.
greeks: vijf getallen, vier eenheidsconventies
Dit blok veroorzaakt meer verborgen schade dan de rest van de payload bij elkaar, omdat elke waarde dimensioneel klopt en geen ervan de eenheden heeft die je zou verwachten.
| Veld | Waarde | Eenheden | Veelvoorkomende verkeerde interpretatie |
|---|---|---|---|
| delta | 0.0962 | BTC aan onderliggende waarde per contract | Aangezien voor dollar-delta |
| gamma | 0.0000189 | Δdelta per $1 beweging van de onderliggende waarde | Aangezien voor een beweging van 1% |
| vega | 36.77 | USD per 1 volatiliteitspunt | Aangezien voor 100% volatiliteit of uitgedrukt in BTC |
| theta | -42.91 | USD per kalenderdag | Aangezien voor een handelsdag |
| rho | 4.61 | USD per 1% rente | Genegeerd, terecht |
Delta is uitgedrukt in munten, vega en theta in dollars, en gamma per dollar spotbeweging. Een delta in munten mengen met een risico-aggregaat in dollars is hoe een boek dat vlak lijkt uiteindelijk 40 BTC long blijkt te zijn. Theta per kalenderdag is de valkuil voor weekendstrategieën: van vrijdag bij sluiting tot maandag bij opening verstrijken drie dagen tijdswaarde, hier ongeveer $129 per contract, terwijl er nul handelsessies zijn. Als je backtest per bar rekent en theta per stap toepast, verdwijnen de weekenden en wordt elke short-premiestrategie ongemerkt slechter voorgesteld dan ze werkelijk is.
open_interest 812.7, volume 61.2: waar de liquiditeit in de chain zit
Achthonderd contracten open interest bij een strike die gisteren eenenzestig contracten verhandelde. Dat is een echte, actieve strike: 110,000 is een rond getal met nog drie weken te gaan, precies waar de orderstroom zich concentreert. Ga twee strikes verder naar 120,000 en de open interest daalt met een orde van grootte; ga naar een niet-rond getal met een niet-maandelijkse expiratie en je vindt instrumenten met een biedprijs, een laatprijs die 40% hoger ligt en een week lang geen transacties.
Een backtest over de hele chain die elk genoteerd instrument doorloopt, zal je zonder aarzeling overal laten handelen. Uiteindelijk hebben we een gecombineerde voorwaarde ingesteld: de genoteerde spread moet minder dan 20% van de markprijs bedragen, er moet aan beide kanten minstens 1 contract staan en er moet in de afgelopen 24 uur volume zijn geweest. Op een doorsneedag haalt ongeveer een derde van de genoteerde BTC-chain die drempel. In de andere twee derde zit de nep-alpha.
Het veld dat niet in de payload staat
Niets in dit object vertelt je wat een transactie kost. Deribit rekent 0.0003 BTC per optiecontract, voor maker en taker allebei: 0.03% van de onderliggende waarde, niet van de premie, met een maximum van 12.5% van de optieprijs. Voor dit contract is dat $28.92 per kant zonder maximum, want 12.5% van 0.0041 is 0.000513 en de vaste vergoeding is lager.
Omdat de kosten over de notionele waarde worden berekend en de premie samenhangt met volatiliteit, schieten de kosten als deel van je betaling omhoog naarmate je verder out of the money gaat.
Koop de laatprijs op 0.0045 ($434), verkoop de biedprijs op 0.0038 ($366) en betaal tweemaal de kosten: $125.80 voor een volledige transactie in een contract met een markprijs van $395. Je visie moet 31% van de premie waard zijn voordat je quitte speelt. Daarom werd het long-gamma-idee afgewezen, en dat had niets met het signaal te maken.
Het wordt nog interessanter als je vraagt wat delta kost, omdat de kosten meegroeien met het aantal contracten en het aantal contracten omgekeerd evenredig is met delta. Voor de berekening houden we de mark-IV op alle strikes gelijk aan 42.1% (een echte chain heeft skew, en in crypto wordt de call-wing meestal boven de ATM verhandeld, waardoor deze tabel optimistisch is):
| Instrument | Markprijs (BTC) | Delta | Contracten per 1 BTC delta | Kosten per kant | Kosten per BTC delta |
|---|---|---|---|---|---|
| 97000-C (ATM) | 0.0373 | 0.518 | 1.93 | $28.92 | $55.80 |
| 110000-C | 0.0041 | 0.096 | 10.4 | $28.92 | $301 |
| 120000-C | 0.0004 | 0.013 | 79.4 | $4.82 (met maximum) | $383 |
| BTC-perpetual | — | 1.0 | 1.0 | $48.21 | $48.21 |
Het maximum van 12.5% doet in die onderste rij echt werk; zonder dat maximum zouden de diepe wings $2,300 per BTC delta kosten en zouden loterijticketstrategieën rekenkundig onmogelijk zijn in plaats van alleen maar slecht. Zelfs met het maximum kost blootstelling via de 120,000-strike ongeveer acht keer zoveel als via de perpetual. Opties zijn geen goedkope manier om een richting in te nemen, en elke backtest die het tegendeel beweert, heeft deze tabel overgeslagen.
08:00 UTC, 25 september
Het laatste wat de ticker je niet vertelt, is hoe de positie afloopt. Deribit rekent opties af op basis van het gemiddelde van de index over de 30 minuten voorafgaand aan 08:00 UTC op de expiratiedag. Voor ITM-contracten rekent Deribit ook leveringskosten van 0.00015 BTC, met een maximum van 12.5% van de afrekenwaarde.
Dat heeft twee gevolgen voor een backtest. Ten eerste is dat gemiddelde over 30 minuten een echte factor waar je naast kunt zitten: een optie die om 07:59 $300 ITM is, kan waardeloos aflopen als het laatste halfuur slecht verliep. Een backtest die afrekent tegen de koers om 08:00 wijkt bij de meeste expiraties een paar basispunten af van je papieren account, en bij sommige een stuk meer. Ten tweede gelden de leveringskosten ook als je de afrekening niet wilde. Een strategie die tot expiratie aanhoudt, betaalt drie soorten kosten per cyclus; een strategie die om 07:30 sluit, betaalt er twee plus de spread. Wat goedkoper is, hangt af van de strike en slaat ergens rond 0.0012 BTC premie om. We berekenen het per positie in plaats van één vaste regel te kiezen.
De versie van dit stuk die ik wilde schrijven, ging over volatiliteitsprognoses. In plaats daarvan heb ik een week besteed aan eenheden en kostenplafonds. Dat is ongeveer de juiste verhouding tussen glamour en werkelijkheid in optieonderzoek.
Twintig velden. Twee prijzen die bewust verschillen, één prijs waartegen nooit is gehandeld, greeks in vier eenheidssystemen en een kostenmodel dat volledig buiten de payload op een documentatiepagina staat. Als je een optietest opzet, besteed dan je eerste dag aan één functie die zo'n object omzet in een volledig doorgerekende positie met de juiste eenheden: spread, kosten, maximum, levering, munten versus dollars. Elke strategie die je daarna schrijft, erft de aannames van die functie.
← Alle artikelen


