Na manhã de terça-feira, a nossa estratégia de tendência em futuros de crude estava comprada no contrato prestes a vencer. O sinal fazia exatamente aquilo que lhe tínhamos pedido: manter a posição enquanto a tendência se mantivesse positiva. O backtest mostrava um ganho modesto. A conta de simulação mostrava uma venda, uma compra no contrato seguinte, duas comissões e uma entrada pior do que o gráfico sugeria.
Não havia nada de misterioso no sinal. O backtest tratara «o preço dos futuros» como se fosse uma coisa contínua. A conta tinha de fechar um contrato e abrir outro, em dois livros de ordens diferentes, a dois preços diferentes.
Encontrámos a discrepância ao rever uma posição que atravessou a janela de rolagem. A estratégia usava um contrato líquido do mês mais próximo e mantinha-o até uma regra de calendário o transferir para o mês seguinte. A regra era razoável. A contabilização à sua volta não era.
A nossa série contínua tinha sido ajustada retroativamente para eliminar o intervalo entre contratos. Isso tornava o gráfico útil para calcular uma tendência. Também significava que a série não continha nenhum preço real a que pudéssemos fechar o contrato antigo ou abrir o novo. O backtest usara o nível ajustado para avaliar a posição durante a rolagem e depois retomara a negociação como se a posição simplesmente tivesse continuado.
Para um sinal, uma série contínua pode ser uma medida útil. Para uma execução, é ficção. Uma rolagem são duas transações, e o spread entre contratos faz parte da estrutura do mercado, não é um salto cosmético a suavizar.
Recriámos o evento com os dois contratos cotados. O mês antigo tinha uma oferta de compra de 79.98 e uma oferta de venda de 80.00. O mês seguinte tinha uma oferta de compra de 80.42 e uma oferta de venda de 80.45. A nossa posição comprada tinha de vender o contrato antigo à oferta de compra e depois comprar o novo à oferta de venda. O spread de calendário era de 44 cêntimos entre esses preços executáveis.
Esse valor não correspondia automaticamente a uma perda de 44 cêntimos. Os contratos tinham meses de entrega diferentes, e o spread refletia o custo de carregamento, o armazenamento, o financiamento e as expectativas de oferta. Uma posição mantida durante a rolagem continua exposta à evolução do preço do novo contrato; não paga todo o spread cotado como comissão. Mas a estratégia tem de realizar a saída do contrato antigo e estabelecer a entrada no novo. Se o cálculo do retorno comparar esses preços como se fossem do mesmo instrumento, pode inventar ou apagar P&L.
Separámos as funções na reprodução. A série contínua continuou a gerar o sinal de tendência. Os preços específicos de cada contrato passaram a determinar as avaliações e as ordens. Na rolagem, o simulador enviava uma ordem de fecho para o mês prestes a vencer e uma ordem de abertura para o mês seguinte, aplicava as comissões de cada contrato e usava o spread e a profundidade disponível de cada livro.
A primeira reprodução continuava a divergir da conta de simulação. Tínhamos sincronizado ambas as execuções no mesmo instante, apesar de as ordens terem sido submetidas sequencialmente. A ordem de fecho do mês antigo foi executada, mas a oferta de venda do mês seguinte mudou antes de a compra chegar ao livro. A rolagem pode ser executada como spread de calendário, quando a plataforma o permite, ou como duas pernas, com exposição entre ambas. São pressupostos de execução diferentes. Para a comparação, usámos a sequência real de ordens da conta de simulação.
Depois percebemos que a própria regra de calendário estava insuficientemente definida. «Rolar 5 dias antes do vencimento» parece preciso até um feriado alterar o calendário de negociação, a liquidez migrar mais cedo ou a convenção de vencimento variar entre contratos. Tínhamos programado uma contagem de dias de calendário num sítio e de dias úteis noutro. A estratégia em simulação rolava na quinta sessão antes do último dia de negociação; o backtest rolava 5 dias de calendário antes.
A data de rolagem é uma regra de negociação. Especifique o calendário da bolsa e o evento que a desencadeia, caso contrário o backtest e a conta acabarão por divergir sobre o contrato que detêm.
Alterámos a instrução de rolagem para indicar a data do último dia de negociação do contrato, contar sessões segundo o calendário da respetiva bolsa e exigir uma verificação mínima de liquidez antes da transferência. Esse limite era uma salvaguarda prática, não uma promessa de melhor execução: o volume e o interesse em aberto são indicadores imperfeitos do que a nossa ordem consegue executar. Registámos o contrato selecionado e os preços de ambas as pernas para que cada reprodução pudesse explicar a passagem.
Depois destas alterações, o retorno histórico da estratégia diminuiu. A diferença não resultou de uma única perda enorme na rolagem. Veio de muitas pequenas correções: o contrato certo, a sessão de negociação certa, comissões reais nas duas pernas e saídas e entradas cotadas nos respetivos livros. Uma rolagem com pouca liquidez foi especialmente dispendiosa, por isso mantivemo-la visível em vez de a diluir numa média.
Se o seu backtest de futuros usa um gráfico contínuo, pergunte-se para que pode servir esse gráfico. Pode fornecer uma entrada consistente para um sinal. Não pode substituir um contrato que poderia ter comprado ou vendido. Para cada posição que atravesse o vencimento, o registo de investigação deve identificar o contrato antigo, o contrato novo, o gatilho da rolagem, o modelo de execução e os dois fluxos de caixa resultantes.
Aquela negociação de terça-feira não foi uma falha sofisticada. Era uma linha de aspeto rentável num gráfico que ignorava o momento em que a conta tinha de mudar aquilo que detinha. Quando voltámos a incluir esse momento na reprodução, o resultado tornou-se menos favorável e muito mais útil.
← Todos os artigos


