No mês passado, alguém da equipe de pesquisa me perguntou por que nossos agentes de opções continuavam rejeitando uma ideia de long gamma que parecia perfeitamente razoável. O sinal estava bom. A previsão de vol estava boa. O problema eram dois campos no feed de dados de mercado e um número que não aparece no feed.
Então, aqui está o objeto real sobre o qual estávamos discutindo. Resposta do ticker da Deribit, BTC-25SEP26-110000-C, capturada às 11:20 UTC de uma segunda-feira, com dezoito dias restantes até o vencimento do contrato. Removi os campos obsoletos e mantive tudo o que importa.
{
"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: quatro fatos, uma string
BTC-25SEP26-110000-C. Ativo subjacente BTC, vencimento em 25 de setembro de 2026, strike 110,000, call. O que a string não diz — e o que todo backtest de opções novo erra pelo menos uma vez — é o restante das especificações do contrato: cada contrato equivale a 1 BTC do ativo subjacente, o prêmio é cotado e pago em BTC, e o vencimento ocorre às 08:00 UTC, não às 16:00 em algum horário local.
A cotação em BTC é o ponto crítico. Um mark de 0.0041 equivale a 0.0041 BTC, cerca de $395 pelo índice. Se você armazena essa coluna como preço e depois a combina com o P&L de uma estratégia denominado em USD, acaba criando, sem perceber, uma posição cujo valor em dólares varia com o spot mesmo quando a opção não varia. Já vi um backtest em que a perna de long call deu lucro num dia de queda do BTC, simplesmente porque o prêmio foi interpretado como dólares e, na verdade, o pesquisador estava vendido no prêmio denominado em moeda contra uma contabilidade em dólares. Levamos dois dias para descobrir.
index_price vs underlying_price: diferença de 568 dólares, e só um está correto
A diferença entre eles é de $568.26, e isso não é um erro. index_price é o índice de BTC da Deribit — a referência de spot, uma combinação de grandes exchanges e o valor usado na liquidação final do contrato. underlying_price é o preço do forward sintético para aquele vencimento específico, SYN.BTC-25SEP26, derivado do mercado futuro para a mesma data. Dezoito dias de carregamento a cerca de 12% anualizados resultam nesses $568.
Todas as gregas do payload e a IV do mark são calculadas com base no forward. Se você recalcular a volatilidade implícita usando o spot porque foi essa série que carregou, vai obter um número diferente para cada strike, e o erro terá uma direção sistemática: calls parecerão mais baratas em termos de vol do que realmente são, e puts parecerão mais caras. Num contrato de 18 dias com uma base de 0.6%, você erraria a IV do mark em cerca de 1.5 ponto nesse strike. Isso é maior que a maioria das vantagens de vol em torno das quais as pessoas criam estratégias.
interest_rate: 0.0 indica que a Deribit faz o desconto usando o forward, e não uma taxa. Não procure uma curva livre de risco para inserir; você contará o efeito duas vezes.
mark_price e mark_iv: um preço sem contraparte
0.0041 BTC. Ninguém pagou esse preço. A Deribit calcula o mark a partir de uma superfície de vol ajustada, ancorada no livro de ofertas, mas suavizada entre strikes e vencimentos para que a margem e as liquidações não oscilem quando uma única cotação muito aberta se move. O mark é usado na sua margem e no P&L não realizado, e aparece em todos os endpoints de posição.
Por isso ele é o preço de execução mais sedutor na pesquisa de opções de cripto — e o mais errado. Um backtest que compra no mark e vende no mark está negociando contra uma spline de suavização. Vai produzir um Sharpe. Esse Sharpe descreve o ajuste da superfície e não informa se você conseguiria realizar a operação.
A regra que acabamos codificando: o mark serve para margem, risco e atribuição de mid a mid. Nunca é um preço de execução. Se o backtest precisa de um preço de execução e não há snapshot do livro naquele horário, a execução é sinalizada como sem preço, em vez de usar o mark. Preferimos perder a linha.
best_bid 0.0038 / best_ask 0.0045: o spread em três unidades
Sete ticks de largura em BTC. São $67.50 numa opção de $395, ou 17% do prêmio. Em termos de vol, são 3.5 pontos: 40.4 no bid contra 43.9 no ask, que é o número que um operador de opções realmente vai citar se você perguntar qual é a abertura do spread.
Os tamanhos importam tanto quanto os preços: 4.9 contratos no bid, 12.1 no ask. O tamanho nas opções da Deribit é expresso em contratos, então são 4.9 BTC do ativo subjacente, cerca de $472k de valor nocional — mas apenas 0.47 BTC de delta nesse strike. Se sua estratégia precisa de gamma relevante, são necessárias dezenas de contratos, e o livro visível no melhor preço oferece só uma fração disso. O segundo nível costuma ficar a mais dois ou três ticks. Qualquer backtest de opções com modelo de tamanho precisa percorrer o livro ou assumir preços de RFQ/bloco, e essas duas premissas dão respostas bem diferentes.
last_price: 0.0043 é uma negociação que aconteceu em algum momento nas últimas 24 horas, possivelmente dezenove horas atrás, com o spot num nível bem diferente. É obsoleto por definição num instrumento que negocia 61 contratos por dia. Não crie uma série de retornos com isso.
gregas: cinco números, quatro convenções de unidade
Este bloco causa mais danos silenciosos do que o restante do payload somado, porque cada valor está dimensionalmente correto e nenhum está nas unidades que você imaginaria.
| Campo | Valor | Unidades | Interpretação comum equivocada |
|---|---|---|---|
| delta | 0.0962 | BTC do ativo subjacente por contrato | Interpretado como delta em dólares |
| gamma | 0.0000189 | Δdelta por $1 de variação do ativo subjacente | Assumido por variação de 1% |
| vega | 36.77 | USD por 1 ponto de vol | Assumido por 100% de vol, ou em BTC |
| theta | -42.91 | USD por dia corrido | Assumido por dia de negociação |
| rho | 4.61 | USD por variação de 1% na taxa | Ignorado, corretamente |
Delta é expresso em moedas, vega e theta em dólares, e gamma por dólar de variação do spot. Misturar um delta denominado em moeda num agregado de risco em dólares é como um livro que parece neutro acaba ficando comprado em 40 BTC. E theta por dia corrido é o que afeta as estratégias de fim de semana: de sexta no fechamento até segunda na abertura são três dias de decaimento, cerca de $129 por contrato aqui, sem nenhuma sessão de negociação. Se seu backtest avança por barras e aplica theta por barra, os fins de semana desaparecem e toda estratégia de prêmio vendido fica silenciosamente pior do que deveria.
open_interest 812.7, volume 61.2: onde está a liquidez da chain
Oitocentos contratos em aberto num strike que negociou sessenta e um ontem. Esse é um strike ativo de verdade — 110,000 é um número redondo a três semanas do vencimento, exatamente onde o fluxo se concentra. Avance dois strikes até 120,000 e o open interest cai uma ordem de grandeza; vá para um strike não redondo num vencimento fora do ciclo mensal e encontrará instrumentos com bid, ask 40% distante e nenhuma negociação há uma semana.
Um backtest de toda a chain que percorre cada instrumento listado vai executar ordens em todos eles sem dificuldade. Acabamos aplicando um filtro com condições simultâneas: spread cotado abaixo de 20% do mark, pelo menos 1 contrato dos dois lados e volume diferente de zero nas 24 horas anteriores. Num dia típico, cerca de um terço da chain listada de BTC passa pelo filtro. É nos outros dois terços que mora o alfa falso.
O campo que não está no payload
Nada neste objeto informa quanto custa uma negociação. A Deribit cobra 0.0003 BTC por contrato de opção, tanto maker quanto taker — 0.03% do ativo subjacente, não do prêmio — com teto de 12.5% do preço da opção. Neste contrato, são $28.92 por lado, sem aplicar o teto, porque 12.5% de 0.0041 é 0.000513 e a taxa fixa é menor.
Taxa sobre o nocional e prêmio baseado em vol fazem o custo explodir como proporção do valor pago à medida que você avança para fora do dinheiro.
Compre no ask a 0.0045 ($434), venda no bid a 0.0038 ($366), pague a taxa duas vezes: $125.80 para fazer uma ida e volta num contrato marcado a $395. Sua tese precisa valer 31% do prêmio para você chegar ao zero a zero. Foi esse o motivo da rejeição da ideia de long gamma, e não teve nada a ver com o sinal.
A coisa fica mais interessante se você perguntar quanto custa obter delta, já que as taxas escalam com o número de contratos e a quantidade de contratos varia inversamente com o delta. Para fazer a conta, mantemos a IV do mark constante em 42.1% entre strikes (uma chain real tem skew e, em cripto, a ponta de calls costuma negociar acima do ATM, o que torna esta tabela otimista):
| Instrumento | Mark (BTC) | Delta | Contratos por 1 BTC de delta | Taxa por lado | Custo por 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 (com teto) | $383 |
| BTC perp | — | 1.0 | 1.0 | $48.21 | $48.21 |
O teto de 12.5% faz diferença real na linha de baixo; sem ele, a ponta fora do dinheiro custaria $2,300 por BTC de delta, e estratégias de bilhete de loteria seriam impossíveis até do ponto de vista aritmético, em vez de apenas ruins. Mesmo com o teto, comprar exposição pelo strike 120,000 custa cerca de oito vezes mais que pelo perpétuo. Opções não são uma forma barata de expressar uma direção, e qualquer backtest que diga o contrário deixou esta tabela de fora.
08:00 UTC, 25 de setembro
A última coisa que o ticker não informa é como a posição termina. A Deribit liquida opções com base numa média de 30 minutos do índice até as 08:00 UTC do dia do vencimento e cobra uma taxa de entrega de 0.00015 BTC nos contratos dentro do dinheiro, também limitada a 12.5% do valor de liquidação.
Duas consequências para um backtest. Primeiro, essa janela de média existe e você pode errar ao modelá-la: uma opção que está $300 dentro do dinheiro às 07:59 pode liquidar sem valor se a última meia hora tiver sido ruim, e um backtest que use o preço das 08:00 para liquidar vai divergir da sua conta simulada por alguns pontos-base na maioria dos vencimentos e bastante em alguns. Segundo, a taxa de entrega se aplica mesmo que você não quisesse a liquidação; portanto, uma estratégia mantida até o vencimento paga três taxas por ciclo, enquanto uma que fecha às 07:30 paga duas taxas mais um spread. Qual sai mais barato depende do strike, e o resultado muda perto de 0.0012 BTC de prêmio. Calculamos isso por posição em vez de adotar uma regra única.
A versão deste post que eu queria escrever era sobre previsão de vol. Em vez disso, passei uma semana lidando com unidades e tetos de taxas, o que representa mais ou menos a proporção correta entre glamour e realidade na pesquisa de opções.
Vinte campos. Dois preços que divergem por definição, um preço que nunca foi negociado, gregas em quatro sistemas de unidades e um modelo de custo que mora inteiramente fora do payload, numa página de documentação. Se você está montando um backtest de opções, passe o primeiro dia escrevendo uma única função que transforme um desses objetos numa posição com custos completos e denominação correta — spread, taxa, teto, entrega, moeda ou dólar. Toda estratégia que você escrever depois vai herdar as premissas dessa função.
← Todos os artigos


