En fra researchteamet spurgte mig i sidste måned, hvorfor vores optionsagenter blev ved med at afvise en helt fornuftig idé med lang gamma. Signalet var fint. Volprognosen var fin. Problemet var to felter i markedsdatafeedet og et tal, der slet ikke findes i feedet.
Her er så det konkrete objekt, vi diskuterede. Deribits tickerrespons for BTC-25SEP26-110000-C, hentet kl. 11:20 UTC en mandag med 18 dage tilbage af kontrakten. Jeg har fjernet de forældede felter og beholdt alt det vigtige.
{
"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: fire fakta, én streng
BTC-25SEP26-110000-C. Underliggende BTC, udløb 25. september 2026, strike 110,000, call. Strengen fortæller ikke, hvad enhver ny options-backtest tager fejl af mindst én gang: resten af kontraktspecifikationen. Én kontrakt svarer til 1 BTC i underliggende, præmien noteres og betales i BTC, og udløbet er kl. 08:00 UTC — ikke kl. 16:00 lokal tid eller noget i den retning.
At præmien noteres i BTC, er den skarpe kant her. En markpris på 0.0041 er 0.0041 BTC, cirka $395 ved indekskursen. Hvis du gemmer den kolonne som en pris og senere joiner den med et strategiafkast opgjort i USD, har du i al stilhed bygget en position, hvis dollarværdi bevæger sig med spot, selv når optionen ikke gør. Jeg har set en backtest, hvor long-call-positionen tjente penge på en dag, hvor BTC faldt, udelukkende fordi præmiekolonnen blev fortolket som dollar, og researcheren reelt var short den BTC-denominerede præmie i et regnskab opgjort i dollar. Det tog to dage at opdage.
index_price vs underlying_price: 568 dollar fra hinanden, og kun én er rigtig
De afviger med $568.26, og det er ikke en fejl. index_price er Deribits BTC-indeks — spotreferencen, et gennemsnit af store børser og det, kontrakten i sidste ende afregnes mod. underlying_price er prisen på den syntetiske forward for netop dette udløb, SYN.BTC-25SEP26, beregnet ud fra futuresmarkedet for samme dato. 18 dages carry ved cirka 12% annualiseret giver de $568.
Alle greeks i payloaden samt mark-IV beregnes ud fra forwardkursen. Hvis du selv beregner implicit volatilitet ud fra spot, fordi det var den serie, du havde indlæst, får du et andet tal for hver strike, og fejlen går systematisk i én retning: calls ser billigere ud målt på volatilitet, end de er, mens puts ser dyrere ud. På en 18-dages kontrakt med en basis på 0.6% ville du fejlprissætte mark-IV med cirka halvandet volpoint ved denne strike. Det er mere end de fleste volfordele, folk bygger strategier omkring.
interest_rate: 0.0 fortæller, at Deribit diskonterer gennem forwardkursen og ikke med en rente. Du behøver ikke finde en risikofri rentekurve at sætte ind; så tæller du effekten dobbelt.
mark_price og mark_iv: en pris uden modpart
0.0041 BTC. Ingen betalte den pris. Deribit beregner markprisen ud fra en tilpasset voloverflade, forankret i ordrebogen, men udjævnet på tværs af strikes og udløb, så margin og likvideringer ikke hopper rundt, når en enkelt bred kurs ændrer sig. Markprisen bruges til din margin og dit urealiserede afkast, og den vises i alle positionsendpoints.
Derfor er den den mest tillokkende fillpris i kryptooptionsresearch — og den mest misvisende. En backtest, der køber til markpris og sælger til markpris, handler mod en udjævnende spline. Den giver en Sharpe. Den Sharpe beskriver overfladetilpasningen og siger intet om, hvorvidt du kunne have handlet til prisen.
Reglen, vi endte med at implementere: markprisen bruges til margin, risiko og mid-to-mid-attribution. Den bruges aldrig som fill. Hvis backtesten kræver en fill, men der ikke findes et snapshot af ordrebogen for det tidspunkt, markeres kørslen som uprissat i stedet for at bruge markprisen. Vi vil hellere miste rækken.
best_bid 0.0038 / best_ask 0.0045: spreadet i tre enheder
Syv ticks bredt målt i BTC. Det er $67.50 på en option til $395, eller 17% af præmien. Målt i vol er spreadet 3.5 point, 40.4 på bud mod 43.9 på udbudssiden — det tal, en optionshandler faktisk giver dig, hvis du spørger, hvor bredt noget er.
Størrelserne er lige så vigtige som priserne: 4.9 kontrakter på buddet og 12.1 på udbudssiden. Størrelsen på Deribit-optioner angives i kontrakter, altså 4.9 BTC i underliggende, cirka $472k i nominel værdi — men kun 0.47 BTC i delta ved denne strike. Hvis din strategi kræver meningsfuld gamma, skal du bruge snesevis af kontrakter, mens den synlige ordrebog ved bedste bud og udbud kun rummer en brøkdel. Andet niveau ligger som regel yderligere to eller tre ticks væk. En options-backtest med en størrelsesmodel skal enten gå gennem ordrebogen eller antage RFQ-/blokpriser, og de to antagelser giver meget forskellige svar.
last_price: 0.0043 er en handel, der fandt sted på et tidspunkt inden for de seneste 24 timer, måske for 19 timer siden ved et helt andet spotniveau. Den er pr. definition forældet på et instrument, der handles 61 kontrakter om dagen. Byg ikke en afkastserie ud fra den.
greeks: fem tal, fire enhedskonventioner
Denne blok giver mere ubemærket skade end resten af payloaden tilsammen, fordi hver værdi er dimensionsmæssigt korrekt, men ingen af dem bruger de enheder, du ville gætte på.
| Felt | Værdi | Enheder | Typisk fejlfortolkning |
|---|---|---|---|
| delta | 0.0962 | BTC i underliggende pr. kontrakt | Fortolkes som delta i dollar |
| gamma | 0.0000189 | Δdelta pr. $1 bevægelse i underliggende | Antages at være pr. 1% bevægelse |
| vega | 36.77 | USD pr. 1 volpoint | Antages at være pr. 100% vol eller målt i BTC |
| theta | -42.91 | USD pr. kalenderdag | Antages at være pr. handelsdag |
| rho | 4.61 | USD pr. 1% rente | Ignoreres, med god grund |
Delta er angivet i coins, vega og theta i dollar, gamma pr. dollar i spotbevægelse. Hvis du blander en delta angivet i coins ind i en risikoopgørelse i dollar, kan en bog, der ser neutral ud, vise sig at være long 40 BTC. Og theta pr. kalenderdag er det, der rammer weekendstrategier: fra fredag ved luk til mandag ved åbning løber der tre dages tidsværdi ud, cirka $129 pr. kontrakt her, selvom der ikke er nogen handelssessioner. Hvis din backtest går frem bar for bar og anvender theta pr. trin, forsvinder weekenderne, og alle strategier med short præmie bliver i det skjulte dårligere, end de reelt er.
open_interest 812.7, volume 61.2: sådan ser kæden faktisk ud
800 kontrakter i open interest på en strike, der blev handlet 61 gange i går. Det er en aktiv strike — 110,000 er et rundt tal tre uger fremme, præcis dér hvor flowet samler sig. Gå to strikes længere ud til 120,000, og open interest falder med en størrelsesorden. Gå til en strike, der ikke er et rundt tal, på et udløb uden for månedsskiftet, og du finder instrumenter med et bud, et udbud 40% derfra og ingen handler i en uge.
En backtest af hele optionskæden, der gennemløber hvert noteret instrument, udfylder uden videre handler i dem alle. Vi endte med at bruge et samlet filter: quoted spread under 20% af markprisen, mindst 1 kontrakt på begge sider og volumen større end nul inden for de seneste 24 timer. På en typisk dag består cirka en tredjedel af den noterede BTC-kæde filteret. Det er i de andre to tredjedele, den falske alpha gemmer sig.
Feltet, der mangler i payloaden
Intet i dette objekt fortæller dig, hvad en handel koster. Deribit opkræver 0.0003 BTC pr. optionskontrakt, uanset om du er maker eller taker — 0.03% af det underliggende, ikke af præmien — dog højst 12.5% af optionens pris. For denne kontrakt er det $28.92 pr. side uden loft, fordi 12.5% af 0.0041 er 0.000513, og det faste gebyr er lavere.
Når gebyret beregnes af den nominelle værdi, mens præmien afhænger af volatiliteten, vokser omkostningen som andel af det, du betalte, voldsomt, jo længere du går out of the money.
Køb til udbudsprisen 0.0045 ($434), sælg til budprisen 0.0038 ($366), og betal gebyret to gange: $125.80 for en tur-retur på en kontrakt med en markpris på $395. Dit syn på markedet skal være 31% af præmien værd, før du går i nul. Det er hele grunden til, at idéen med lang gamma blev afvist, og det havde intet med signalet at gøre.
Det bliver endnu mere interessant, hvis man spørger, hvad delta koster, for gebyrerne følger antallet af kontrakter, og antallet af kontrakter vokser omvendt proportionalt med delta. Her antager vi en konstant mark-IV på 42.1% på tværs af strikes for at lave regnestykket (en virkelig kæde har skævhed, og i krypto handles call-wingen typisk over ATM, hvilket gør denne tabel optimistisk):
| Instrument | Mark (BTC) | Delta | Kontrakter pr. 1 BTC delta | Gebyr pr. side | Omkostning pr. 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 (loft) | $383 |
| BTC perp | — | 1.0 | 1.0 | $48.21 | $48.21 |
Loftet på 12.5% gør en reel forskel i den nederste række; uden det ville den dybe wing koste $2,300 pr. BTC delta, og lotteriseddelstrategier ville være matematisk umulige i stedet for blot dårlige. Selv med loftet koster det omkring otte gange så meget at købe eksponering gennem 120,000-striken som via den evige futureskontrakt. Optioner er ikke en billig måde at udtrykke en retningsbestemt holdning på, og enhver backtest, der siger noget andet, har udeladt denne tabel.
08:00 UTC, 25. september
Det sidste, tickeren ikke fortæller dig, er, hvordan positionen afsluttes. Deribit afregner optioner mod et gennemsnit af indekset over de 30 minutter frem til kl. 08:00 UTC på udløbsdagen og opkræver et leveringsgebyr på 0.00015 BTC for kontrakter, der er in the money. Gebyret er også begrænset til 12.5% af afregningsværdien.
Det har to konsekvenser for en backtest. For det første er gennemsnitsperioden reel, og du kan tage fejl af den: En option, der er $300 in the money kl. 07:59, kan ende med en værdiløs afregning, hvis den sidste halve time var dårlig. En backtest, der afregner mod kursen kl. 08:00, vil afvige fra din paperkonto med nogle få basispoint på de fleste udløb og meget på enkelte. For det andet gælder leveringsgebyret, uanset om du ønskede afregningen. En strategi, der holder til udløb, betaler tre gebyrer pr. cyklus, mens en strategi, der lukkes kl. 07:30, betaler to gebyrer plus spreadet. Hvad der er billigst, afhænger af striken, og skæringspunktet ligger omkring 0.0012 BTC i præmie. Vi beregner det for hver position i stedet for at vælge en fast regel.
Den version af dette indlæg, jeg gerne ville skrive, handlede om volprognoser. I stedet brugte jeg en uge på enheder og gebyrlofter, hvilket nogenlunde svarer til det rigtige forhold mellem glamour og virkelighed i optionsresearch.
20 felter. To priser, der med vilje afviger fra hinanden, én pris, der aldrig blev handlet, greeks i fire enhedssystemer og en omkostningsmodel, der kun findes uden for payloaden på en dokumentside. Hvis du er ved at sætte en options-backtest op, så brug din første dag på at skrive én funktion, der omsætter et af disse objekter til en position med fuldt medregnede omkostninger og korrekte enheder — spread, gebyr, loft, levering, coin kontra dollar. Alle strategier, du skriver bagefter, arver funktionens antagelser.
← Alle indlæg

