Le mois dernier, quelqu’un de l’équipe recherche m’a demandé pourquoi nos agents d’options rejetaient sans cesse une idée de long gamma qui semblait tout à fait raisonnable. Le signal était bon. La prévision de vol aussi. Le problème venait de deux champs du flux de données de marché et d’un chiffre qui n’y figure pas du tout.
Voici donc l’objet dont nous discutions. Réponse ticker de Deribit, BTC-25SEP26-110000-C, récupérée à 11:20 UTC un lundi, alors qu’il restait dix-huit jours avant l’échéance. J’ai retiré les champs obsolètes et gardé tout ce qui compte.
{
"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 : quatre informations, une chaîne
BTC-25SEP26-110000-C. Sous-jacent BTC, échéance le 25 septembre 2026, strike à 110,000, call. Ce que la chaîne ne précise pas, et ce que tout nouveau backtest d’options se trompe à interpréter au moins une fois, c’est le reste des spécifications du contrat : un contrat représente 1 BTC de sous-jacent, la prime est cotée et payée en BTC, et l’échéance est à 08:00 UTC, pas à 16:00 heure locale, quelle qu’elle soit.
C’est le fait que la cotation soit en BTC qui pose problème. Un mark de 0.0041 représente 0.0041 BTC, soit environ $395 au cours de l’indice. Si vous stockez cette colonne comme un prix puis la joignez à un P&L de stratégie libellé en USD, vous avez discrètement créé une position dont la valeur en dollars évolue avec le spot, même lorsque l’option ne bouge pas. J’ai vu un backtest où le call long était gagnant un jour où BTC baissait, uniquement parce que la prime était interprétée en dollars et que le chercheur était en réalité vendeur de la prime libellée en BTC, dans un cadre comptable en dollars. Il a fallu deux jours pour le trouver.
index_price vs underlying_price : $568 d’écart, et un seul des deux est le bon
L’écart entre les deux est de $568.26, et ce n’est pas une erreur. index_price correspond à l’indice BTC de Deribit : la référence spot, calculée à partir des principales plateformes d’échange, et le prix auquel le contrat est finalement réglé. underlying_price est le prix du forward synthétique pour cette échéance précise, SYN.BTC-25SEP26, déduit du marché à terme pour la même date. Dix-huit jours de portage à environ 12% annualisés expliquent ces $568.
Tous les greeks des données, ainsi que la mark IV, sont calculés à partir du forward. Si vous recalculez vous-même la volatilité implicite à partir du spot parce que c’est la série que vous aviez chargée, vous obtiendrez un chiffre différent pour chaque strike, avec une erreur systématiquement orientée : les calls paraîtront moins chers en termes de vol qu’ils ne le sont, et les puts plus chers. Sur un contrat de 18 jours avec une base de 0.6%, vous fausseriez la mark IV d’environ un point et demi à ce strike. C’est davantage que la plupart des avantages de vol autour desquels les gens construisent leurs stratégies.
interest_rate: 0.0Deribit vous indique ainsi qu’il actualise à partir du forward, et non d’un taux. N’allez pas chercher une courbe sans risque à intégrer : vous compteriez l’effet deux fois.
mark_price et mark_iv : un prix sans contrepartie
0.0041 BTC. Personne n’a payé ce prix. Deribit calcule le mark à partir d’une surface de vol ajustée, ancrée sur le carnet d’ordres mais lissée entre strikes et échéances, afin que la marge et les liquidations ne varient pas brusquement lorsqu’une seule cotation très large bouge. C’est le mark qui sert au calcul de votre marge, de votre P&L latent et qui apparaît dans chaque endpoint de position.
C’est donc le prix d’exécution le plus séduisant pour la recherche sur les options crypto, et le plus trompeur. Un backtest qui achète au mark et revend au mark négocie contre une spline de lissage. Il produira un Sharpe. Ce Sharpe décrit l’ajustement de la surface et ne renseigne en rien sur votre capacité à exécuter la transaction.
La règle que nous avons fini par intégrer : le mark sert pour la marge, le risque et l’attribution mid-to-mid. Ce n’est jamais un prix d’exécution. Si le backtest a besoin d’un prix d’exécution et qu’aucun instantané du carnet n’est disponible pour cet horodatage, l’exécution est signalée comme non tarifée au lieu d’être remplie au mark. Nous préférons perdre cette ligne.
best_bid 0.0038 / best_ask 0.0045 : le spread exprimé dans trois unités
Sept ticks d’écart en BTC. Cela représente $67.50 sur une option à $395, soit 17% de la prime. En vol, l’écart est de 3.5 points : 40.4 à l’achat contre 43.9 à la vente. C’est le chiffre qu’un trader d’options vous donnera si vous lui demandez quelle est la largeur du spread.
Les tailles comptent autant que les prix : 4.9 contrats à l’achat, 12.1 à la vente. Sur les options Deribit, les tailles sont exprimées en contrats, soit 4.9 BTC de sous-jacent, environ $472k de notionnel — mais seulement 0.47 BTC de delta à ce strike. Pour qu’une stratégie ait un gamma significatif, il faut des dizaines de contrats, et la taille visible au meilleur prix n’en représente qu’une fraction. Le deuxième niveau se trouve généralement deux ou trois ticks plus loin. Tout backtest d’options intégrant un modèle de taille doit parcourir le carnet ou supposer un prix RFQ ou de bloc, et ces deux hypothèses donnent des résultats très différents.
last_price: 0.0043 correspond à une transaction effectuée à un moment quelconque au cours des dernières 24 heures, peut-être dix-neuf heures plus tôt, alors que le spot était très différent. Par construction, cette donnée est obsolète pour un instrument qui s’échange à raison de 61 contrats par jour. N’en faites pas une série de rendements.
greeks : cinq chiffres, quatre conventions d’unités
Ce bloc cause plus de dégâts invisibles que le reste des données réuni, car chaque valeur est dimensionnellement correcte et aucune n’est exprimée dans l’unité à laquelle on s’attendrait.
| Champ | Valeur | Unités | Interprétation erronée fréquente |
|---|---|---|---|
| delta | 0.0962 | BTC de sous-jacent par contrat | Pris pour un delta en dollars |
| gamma | 0.0000189 | Δdelta par variation de $1 du sous-jacent | Supposé calculé pour une variation de 1% |
| vega | 36.77 | USD par point de vol | Supposé calculé pour 100% de vol, ou exprimé en BTC |
| theta | -42.91 | USD par jour calendaire | Supposé calculé par jour de cotation |
| rho | 4.61 | USD par variation de 1% du taux | Ignoré, à juste titre |
Le delta est en coins, le vega et le theta en dollars, et le gamma correspond à une variation de 1 dollar du spot. Mélanger un delta exprimé en coins à une mesure du risque en dollars peut donner un portefeuille qui semble neutre alors qu’il est en réalité acheteur de 40 BTC. Le theta calculé par jour calendaire est le piège des stratégies de week-end : une clôture le vendredi et une réouverture le lundi impliquent trois jours de décroissance, soit environ $129 par contrat ici, sans aucune séance de cotation. Si votre backtest avance barre par barre et applique le theta à chaque étape, les week-ends disparaissent et les stratégies vendeuses de prime se dégradent discrètement par rapport à la réalité.
open_interest 812.7, volume 61.2 : la réalité de la chaîne
Huit cents contrats d’intérêt ouvert sur un strike qui en a vu 61 s’échanger hier. C’est un strike réellement actif : 110,000 est un chiffre rond à trois semaines de l’échéance, précisément là où les flux se concentrent. Avancez de deux strikes jusqu’à 120,000 et l’intérêt ouvert chute d’un ordre de grandeur ; passez à un strike non rond sur une échéance hors mensuelle et vous trouverez des instruments avec un bid, un ask à quarante pour cent d’écart et aucune transaction depuis une semaine.
Un backtest de toute la chaîne qui parcourt chaque instrument coté vous exécutera volontiers sur chacun d’eux. Nous avons fini par appliquer une condition conjointe : spread coté inférieur à 20% du mark, au moins 1 contrat de chaque côté et volume non nul au cours des 24 heures précédentes. Environ un tiers de la chaîne BTC cotée passe ces critères un jour habituel. C’est dans les deux autres tiers que se cache le faux alpha.
Le champ absent des données
Rien dans cet objet ne vous indique le coût d’une transaction. Deribit facture 0.0003 BTC par contrat d’option, que l’on soit maker ou taker — 0.03% du sous-jacent, et non de la prime — avec un plafond fixé à 12.5% du prix de l’option. Pour ce contrat, cela fait $28.92 par côté, sans plafond, car 12.5% de 0.0041 équivaut à 0.000513 et les frais fixes sont inférieurs.
Des frais calculés sur le notionnel et une prime liée à la vol : le coût relatif à ce que vous avez payé explose à mesure que vous vous éloignez de la monnaie.
Achetez à l’offre à 0.0045 ($434), revendez au bid à 0.0038 ($366), puis payez les frais deux fois : cela coûte $125.80 pour un aller-retour sur un contrat marqué à $395. Votre scénario doit rapporter 31% de la prime avant que vous soyez à l’équilibre. C’est toute la raison pour laquelle l’idée de long gamma a été rejetée, et cela n’avait rien à voir avec le signal.
La question du coût d’un delta est encore plus intéressante, puisque les frais varient avec le nombre de contrats et que le nombre de contrats varie en sens inverse du delta. Pour le calcul, gardons la mark IV constante à 42.1% sur tous les strikes (une vraie chaîne présente un skew et, en crypto, l’aile des calls se négocie généralement au-dessus de l’ATM, ce qui rend ce tableau optimiste) :
| Instrument | Mark (BTC) | Delta | Contrats par delta de 1 BTC | Frais par côté | Coût par BTC de 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 (plafonné) | $383 |
| BTC perp | — | 1.0 | 1.0 | $48.21 | $48.21 |
Le plafond de 12.5% joue un rôle réel dans la dernière ligne : sans lui, l’aile très éloignée coûterait $2,300 par BTC de delta, et les stratégies de loterie seraient mathématiquement impossibles plutôt que simplement mauvaises. Même avec ce plafond, acheter une exposition via le strike 120,000 coûte environ huit fois plus cher qu’avec le perpétuel. Les options ne sont pas un moyen peu coûteux de prendre une position directionnelle, et tout backtest qui prétend le contraire a omis ce tableau.
08:00 UTC, 25 septembre
Le ticker ne vous dit pas non plus comment la position prend fin. Deribit règle les options sur la base d’une moyenne de l’indice calculée sur les 30 minutes précédant 08:00 UTC le jour de l’échéance, et facture des frais de livraison de 0.00015 BTC sur les contrats dans la monnaie, également plafonnés à 12.5% de la valeur de règlement.
Deux conséquences pour un backtest. Premièrement, cette fenêtre de calcul est bien réelle et peut vous faire commettre une erreur : une option dans la monnaie de $300 à 07:59 peut être réglée sans valeur si la dernière demi-heure a été mouvementée, et un backtest qui utilise le cours de 08:00 ne correspondra pas à votre compte fictif de quelques points de base sur la plupart des échéances, et de beaucoup plus sur certaines. Deuxièmement, les frais de livraison s’appliquent même si vous ne vouliez pas aller jusqu’au règlement. Une stratégie conservée jusqu’à l’échéance paie trois frais par cycle ; une stratégie clôturée à 07:30 en paie deux, plus un spread. Le coût le plus faible dépend du strike et le point d’inversion se situe autour d’une prime de 0.0012 BTC. Nous le calculons pour chaque position au lieu d’imposer une règle générale.
Je voulais consacrer cette publication à la prévision de vol. Au lieu de cela, j’ai passé une semaine sur les unités et les plafonds de frais, ce qui correspond à peu près au bon rapport entre glamour et réalité dans la recherche sur les options.
Vingt champs. Deux prix qui diffèrent par conception, un prix auquel personne n’a négocié, des greeks exprimés selon quatre systèmes d’unités et un modèle de coûts entièrement absent des données, relégué dans une page de documentation. Si vous mettez en place un backtest d’options, consacrez votre première journée à écrire une fonction qui transforme l’un de ces objets en une position dont les coûts sont entièrement calculés et les unités correctes : spread, frais, plafond, livraison, coin ou dollar. Toutes les stratégies que vous écrirez ensuite hériteront des hypothèses de cette fonction.
← Tous les articles


