Il mese scorso qualcuno del team di ricerca mi ha chiesto perché i nostri agenti per le opzioni continuassero a rifiutare un'idea long gamma del tutto ragionevole. Il segnale era valido. La previsione della volatilità era valida. Il problema erano due campi nel flusso dei dati di mercato e un numero che nel flusso non compare affatto.
Ecco quindi l'oggetto concreto di cui discutevamo. Risposta ticker di Deribit, BTC-25SEP26-110000-C, rilevata alle 11:20 UTC di un lunedì, con diciotto giorni alla scadenza del contratto. Ho tolto i campi deprecati e mantenuto tutto ciò che conta.
{
"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: quattro fatti, una stringa
BTC-25SEP26-110000-C. Sottostante BTC, scadenza 25 settembre 2026, strike 110,000, call. Quello che la stringa non dice, e che ogni nuovo backtest sulle opzioni sbaglia almeno una volta, è il resto delle specifiche del contratto: un contratto corrisponde a 1 BTC di sottostante, il premio è quotato e pagato in BTC e la scadenza è alle 08:00 UTC, non alle 16:00 di una qualsiasi ora locale.
È proprio la quotazione in BTC a nascondere l'insidia. Un mark di 0.0041 equivale a 0.0041 BTC, circa $395 all'indice. Se memorizzate quella colonna come un prezzo e poi la unite al P&L di una strategia denominato in USD, avete creato di nascosto una posizione il cui valore in dollari varia con lo spot anche quando l'opzione non varia. Ho visto un backtest in cui la gamba long call guadagnava in una giornata di ribasso di BTC, solo perché il premio era stato interpretato in dollari e il ricercatore era in realtà short sul premio denominato in coin, pur usando una contabilità in dollari. Ci abbiamo messo due giorni a scoprirlo.
index_price e underlying_price: $568 di differenza, ma solo uno è quello giusto
La differenza è di $568.26 e non è un errore. index_price è l'indice BTC di Deribit: il riferimento spot, una combinazione di grandi exchange e il valore su cui si basa il regolamento finale del contratto. underlying_price è il prezzo del forward sintetico per quella specifica scadenza, SYN.BTC-25SEP26, ricavato dal mercato dei futures con la stessa data. Diciotto giorni di costo di carry, a un tasso annualizzato di circa 12%, spiegano quei $568.
Tutte le greche nel payload e la mark IV sono calcolate sul forward. Se ricalcolate voi la volatilità implicita usando lo spot solo perché è la serie che avevate già caricato, otterrete un valore diverso per ogni strike e l'errore sarà sistematicamente direzionale: in termini di volatilità le call sembreranno più economiche di quanto siano, le put più care. Su un contratto a 18 giorni con una base dello 0.6%, a questo strike sbagliereste la mark IV di circa un punto e mezzo. È più dell'entità della maggior parte dei vantaggi sulla volatilità attorno a cui si costruiscono le strategie.
interest_rate: 0.0Deribit vi sta dicendo che applica l'attualizzazione tramite il forward, non tramite un tasso. Non cercate una curva risk-free da inserire: finireste per conteggiare due volte lo stesso effetto.
mark_price e mark_iv: un prezzo senza controparte
0.0041 BTC. Nessuno li ha pagati. Deribit calcola il mark da una superficie di volatilità interpolata, ancorata al book degli ordini ma smussata tra strike e scadenze, così che margini e liquidazioni non oscillino quando si muove una singola quotazione molto ampia. Il mark è usato per il margine, per il P&L non realizzato e compare in ogni endpoint delle posizioni.
Per questo è il prezzo di esecuzione più seducente nella ricerca sulle opzioni crypto, e anche il più sbagliato. Un backtest che compra al mark e vende al mark negozia contro una spline di smoothing. Produrrà uno Sharpe. Quello Sharpe descrive l'algoritmo che interpola la superficie e non dice nulla sulla possibilità di eseguire davvero le operazioni.
La regola che abbiamo deciso di codificare: il mark serve per margini, rischio e attribuzione mid-to-mid. Non è mai un prezzo di esecuzione. Se il backtest richiede un prezzo di esecuzione e per quell'istante non esiste uno snapshot del book, la simulazione viene segnalata come priva di prezzo anziché riempita al mark. Preferiamo perdere quella riga.
best_bid 0.0038 / best_ask 0.0045: lo spread in tre unità
Sette tick di ampiezza in BTC. Sono $67.50 su un'opzione da $395, cioè il 17% del premio. In termini di volatilità sono 3.5 punti, 40.4 in acquisto contro 43.9 in vendita: il dato che un trader di opzioni vi darà se chiedete quanto è ampio lo spread.
Le quantità contano quanto i prezzi: 4.9 contratti in acquisto, 12.1 in vendita. Le quantità sulle opzioni Deribit sono espresse in contratti, quindi 4.9 BTC di sottostante, circa $472k di nozionale, ma solo 0.47 BTC di delta a questo strike. Se la vostra strategia vuole un'esposizione gamma significativa, servono decine di contratti, mentre la quantità visibile al miglior prezzo rappresenta solo una frazione. Il secondo livello dista in genere altri due o tre tick. Un backtest sulle opzioni che modella le quantità deve scorrere il book oppure assumere prezzi RFQ o block; i due approcci danno risposte molto diverse.
last_price: 0.0043è un'operazione avvenuta in un momento qualsiasi delle ultime 24 ore, forse diciannove ore fa, con lo spot a un livello molto diverso. Per definizione è un dato obsoleto per uno strumento che scambia 61 contratti al giorno. Non costruiteci una serie di rendimenti.
greche: cinque numeri, quattro convenzioni di unità
Questo blocco provoca più danni silenziosi del resto del payload messo insieme, perché ogni valore è dimensionalmente corretto e nessuno è espresso nelle unità che vi aspettereste.
| Campo | Valore | Unità | Errore di interpretazione comune |
|---|---|---|---|
| delta | 0.0962 | BTC di sottostante per contratto | Interpretato come delta in dollari |
| gamma | 0.0000189 | Δdelta per $1 di variazione del sottostante | Interpretato come valore per una variazione dell'1% |
| vega | 36.77 | USD per 1 punto di volatilità | Interpretato come valore per il 100% di volatilità o in BTC |
| theta | -42.91 | USD per giorno di calendario | Interpretato come valore per giorno di contrattazione |
| rho | 4.61 | USD per 1% di tasso | Ignorato, correttamente |
Il delta è in coin, vega e theta sono in dollari, gamma è per ogni dollaro di variazione dello spot. Mescolare un delta denominato in coin con un aggregato di rischio in dollari è il modo in cui un portafoglio che sembra neutrale finisce per essere long 40 BTC. E il fatto che theta sia calcolato per giorno di calendario è ciò che penalizza le strategie del fine settimana: da venerdì alla chiusura a lunedì all'apertura maturano tre giorni di decadimento, circa $129 per contratto in questo caso, senza sessioni di contrattazione. Se il vostro backtest procede per barre e applica theta a ogni passo, i fine settimana scompaiono e ogni strategia short premium risulta silenziosamente peggiore di quanto fosse davvero.
open_interest 812.7, volume 61.2: dove si concentra davvero l'attività sulla chain
Ottocento contratti di open interest su uno strike che ieri ne ha scambiati sessantuno. È uno strike attivo e concreto: 110,000 è un numero tondo a tre settimane, esattamente dove si concentra il flusso. Avanzate di due strike fino a 120,000 e l'open interest crolla di un ordine di grandezza; passate a uno strike non tondo con una scadenza non mensile e trovate strumenti con un bid, un ask distante del 40% e nessuno scambio da una settimana.
Un backtest sull'intera chain che scorre ogni strumento quotato vi farà eseguire operazioni su tutti senza problemi. Alla fine abbiamo imposto una condizione congiunta: spread quotato inferiore al 20% del mark, almeno 1 contratto per lato e volume non nullo nelle 24 ore precedenti. In una giornata tipica, circa un terzo della chain BTC quotata supera i filtri. È nell'altro terzo che si annida l'alfa fittizia.
Il campo che non compare nel payload
In questo oggetto non c'è nulla che vi dica quanto costa un'operazione. Deribit applica 0.0003 BTC per contratto di opzione, sia maker sia taker: lo 0.03% del sottostante, non del premio, con un tetto pari al 12.5% del prezzo dell'opzione. Per questo contratto sono $28.92 per lato, senza applicare il tetto, perché il 12.5% di 0.0041 è 0.000513 e la commissione fissa è inferiore.
La commissione è calcolata sul nozionale e il premio sulla volatilità: di conseguenza, man mano che l'opzione esce dal denaro, il costo in percentuale di quanto avete pagato cresce a dismisura.
Comprate all'ask a 0.0045 ($434), vendete al bid a 0.0038 ($366) e pagate due volte la commissione: per fare andata e ritorno spendete $125.80 su un contratto con mark di $395. La vostra previsione deve valere il 31% del premio solo per arrivare al pareggio. Ecco perché l'idea long gamma è stata respinta: non c'entrava nulla il segnale.
La questione si fa più interessante se chiedete quanto costa un delta, dato che le commissioni scalano con i contratti e il numero di contratti scala in modo inverso rispetto al delta. Per i calcoli teniamo fissa la mark IV al 42.1% su tutti gli strike (una chain reale presenta skew e, nel mondo crypto, l'ala delle call di solito scambia sopra l'ATM, il che rende ottimistica questa tabella):
| Strumento | Mark (BTC) | Delta | Contratti per 1 BTC di delta | Commissione per lato | Costo per BTC di 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 (con tetto) | $383 |
| BTC perp | — | 1.0 | 1.0 | $48.21 | $48.21 |
Il tetto del 12.5% fa davvero la differenza nella riga in fondo: senza, l'ala molto OTM costerebbe $2,300 per BTC di delta e le strategie da biglietto della lotteria sarebbero impossibili per calcolo, anziché semplicemente pessime. Anche con il tetto, comprare esposizione tramite lo strike 120,000 costa circa otto volte quanto un perpetual. Le opzioni non sono un modo economico per esprimere una view direzionale e qualsiasi backtest che sostenga il contrario ha omesso questa tabella.
08:00 UTC, 25 settembre
L'ultima cosa che il ticker non vi dice è come si conclude la posizione. Deribit regola le opzioni sulla media dell'indice nei 30 minuti che precedono le 08:00 UTC del giorno di scadenza e applica una commissione di consegna di 0.00015 BTC sui contratti in-the-money, anch'essa limitata al 12.5% del valore di regolamento.
Due conseguenze per un backtest. Primo, quella finestra di media è concreta e potete sbagliarvi: un'opzione che alle 07:59 è $300 in-the-money può scadere senza valore se l'ultima mezz'ora è stata sfavorevole; un backtest che regola sul prezzo delle 08:00 non coinciderà con il vostro conto simulato di qualche punto base nella maggior parte delle scadenze, e di molto in alcune. Secondo, la commissione di consegna si applica che vogliate o meno il regolamento: una strategia mantenuta fino a scadenza paga tre commissioni a ciclo, mentre una che chiude alle 07:30 ne paga due più uno spread. Quale costa meno dipende dallo strike e il punto di svolta è circa 0.0012 BTC di premio. Lo calcoliamo per ogni posizione invece di scegliere una regola unica.
La versione di questo post che avrei voluto scrivere parlava di previsione della volatilità. Invece ho passato una settimana sulle unità e sui tetti alle commissioni: più o meno il giusto rapporto tra glamour e realtà nella ricerca sulle opzioni.
Venti campi. Due prezzi che differiscono per progetto, un prezzo a cui non si è mai negoziato, greche in quattro sistemi di unità e il modello dei costi interamente fuori dal payload, nascosto in una pagina della documentazione. Se state avviando un backtest sulle opzioni, dedicate il primo giorno a scrivere una singola funzione che trasformi uno di questi oggetti in una posizione con costi calcolati e denominazioni corrette: spread, commissione, tetto, consegna, coin contro dollari. Ogni strategia che scriverete in seguito erediterà le ipotesi di quella funzione.
← Tutti gli articoli

