Long-Short através de Cointegração – Parte 4

Após uma longa pausa, aqui está o quarto e último post desta série sobre operações de long-short/pares utilizando cointegração.

Recapitulando: no primeiro post da série, introduzi intuitivamente o conceito de cointegração, que permite encontrar pares (ou outras combinações) de ativos que “andam juntos”. No segundo post, expliquei conceitualmente um teste simples de estacionariedade, conhecido como teste de Dickey-Fuller (DF), apresentei sua versão “aumentada”, e introduzi o Método de Engle-Granger, que permite testar se duas séries não-estacionárias são cointegradas. No terceiro post, mostrei um exemplo prático da aplicação deste teste utilizando o Excel e dei uma ideia de como seria uma possível estratégia de operação de pares usando cointegração.

O objetivo deste post é apresentar uma aplicação completa dos conceitos de cointegração para criar um modelo de operações com pares. Para isto, construirei um modelo de pares muito similar aos modelos utilizados na literatura (e na prática), e farei uma simulação (backtest) dos resultados do modelo. Uma ressalva importante é que este post não é exaustivo, no sentido de que muitas variações e refinamentos podem e devem ser feitos à uma estratégia destas antes da produção. O objetivo é simplesmente ilustrar os conceitos. O modelo apresentado aqui é bastante similar ao utilizado no artigo de Caldeira e Moura (2013). Recomendo fortemente ao leitor interessado em se aprofundar no assunto a leitura do artigo e das referências nele citadas.

Em um post anterior, apresentei o conceito de um modelo básico de pares de ações. Naquele post, utilizei o seguinte diagrama:

ModeloPairsTrading

Criação de uma estratégia de operação com pares

Este diagrama será interessante para explicar a estratégia de pares através de cointegração utilizada, pois ele utiliza-se de simulação para escolher os melhores pares dentro da janela de treinamento (período in-sample ou dentro da amostra) para posteriormente operar na janela de operação (fora da amostra), ou seja, existe uma interação entre o modelo de operação e o de seleção de pares, conforme mostrado do diagrama. Vamos à descrição do modelo:

Modelo de Pares via Cointegração

Partimos de um universo com N ativos observados ao longo de T períodos. Os parâmetros do modelo são os seguintes:
1. Janela de treinamento: período no qual serão determinados os pares cointegrados
2. Janela de operação: período no qual os pares são operados com sinais de entrada e saída
3. Número de pares: o modelo utiliza os n melhores pares de acordo com o índice de Sharpe dentro do período de treinamento.
4. Sinal de entrada: valor do z-spread para iniciar um trade, ou seja, o valor no qual assumimos que o spread do par divergiu do seu comportamento histórico.
5. Sinal de saída: valor do z-spread para encerrar um trade, ou seja, o valor no qual assumimos que o spread do par reverteu à sua média.
6. Duração máxima: maior período em que um trade pode ficar aberto.
7. Stop Loss: perda máxima que um trade pode ter. Se um trade apresentar uma perda maior do que o stop loss, ele é encerrado.

Os pares são selecionados na janela de treinamento através de dois critérios. Primeiramente são selecionados os pares que estão cointegrados através da aplicação da metodologia de Engle-Granger. Em seguida, os pares cointegrados são “operados” nesta janela (dentro da amostra) e os pares com melhor índice de Sharpe são selecionados para operação na janela de operação. Os parâmetros do spread (parâmetros da regressão e a média e desvio padrão do spread) na janela de treinamento (dentro da amostra) são utilizados para calcular os z-scores dos pares na janela de operação (fora da amostra). Este procedimento garante que na nossa simulação, estaremos utilizando apenas valores conhecidos em cada momento (ou seja, não estamos incorrendo no look-ahead bias).

Por exemplo, se a janela de treinamento é de 12 meses e de operação é de 1 mês, então os melhores pares nos primeiros 12 meses são operados no mês seguinte. As janelas são então roladas um mês para frente e o processo reinicia, até o final da amostra. A figura abaixo ilustra este procedimento de janelas móveis:

Esquema treinamento operacao.png

A dinâmica de operação é baseada no valor do z-score, que é o spread do par (resultado da cointegração) normalizado, isto é, subtraído da sua média e dividido pelo desvio padrão. Quando o z-score é muito alto e positivo, o par é vendido (abre-se simultaneamente uma posição vendida na primeira ação e comprada na segunda ação). Quando o z-score é muito negativo, a operação oposta é realizada, isto é, o par é comprado. Uma operação é encerrada se pelo menos uma das condições a seguir ocorre: (i) o z-score do par retorna ao patamar pré-definido; (ii) o P&L da operação cai abaixo do valor de stop-loss; (iii) a operação excede a duração máxima definida pelo modelo; (iv) a janela de operação é encerrada.

No final da simulação, temos o resultado simulado de todas operações realizadas, o que permite calcular estatísticas de rentabilidade e risco do modelo no período.

Detalhes da Simulação

Parâmetros do modelo – Os seguintes valores foram utilizados:

Janela de treinamento: 12 meses
Janela de operação: 1 mês
Número de pares: 20
Sinal de entrada: |z-spread| > 1.7
Sinal de saída: |z-spread| < 1.2
Duração máxima: 1 mês (20 dias)
Stop Loss: 7%

Custos operacionais – Foram considerados custos de bid-ask spread de 0.1% para cada operação, de 2% ao ano para o aluguel de ações, e de 0.05% de corretagem. Os trades foram abertos com o mesmo financeiro em cada ação, ou seja, o modelo é financeiro-neutro (a outra possibilidade é operar beta-neutro). Um comentário sobre os valores de entrada e saída do z-score: eu testei os valores considerados por Caldeira e Moura (2013) (abrir trade em 2 e fechar em 0.5/0.75), porém os resultados foram piores.

Universo de ativos – Para realizar a simulação, é preciso primeiramente definir um universo de ativos. Os trabalhos acadêmicos (como por exemplo o artigo mencionado acima) geralmente utilizam as ações que pertencem a um certo índice como o IBOVESPA no Brasil. Na prática, esta restrição não é necessária. Nesta simulação, eu utilizei os dados diários de preço de fechamento e volume de todas as ações, ETFs e FIIs disponíveis no mercado brasileiro de janeiro de 2001 até maio de 2016, incluindo ações que deixaram de existir, o que elimina o viés de sobrevivência. Para evitar ações ilíquidas, em cada janela de treinamento eu utilizei os 70 ativos com maior volume. Isto significa que o número total de ativos considerados será maior do que 70.

Teste de Cointegração – foi utilizada a metodologia de Engle-Granger com teste ADF, descrita nos posts anteriores.

Cálculo de Retornos – calcular o retorno de operações com pares não é algo trivial. Teoricamente, os retornos de operações long-short não são definidos, uma vez que o investimento inicial pode ser igual a zero. Há duas medidas diferentes de reportar o “retorno” de uma operação de pares. A primeira consiste  em adotar a convenção de que o retorno é dado pelo lucro ou prejuízo da operação (P&L) dividido pelo valor inicial investido em cada ponta. Chamaremos isto de retorno líquido. Se usarmos o valor de R$1, o próprio P&L tem a interpretação de retorno. A segunda consiste em considerar como denominador o capital alocado para manter a operação. Por exemplo, se uma operação consiste em comprar R$10,000 da ação A e vender R$10,000 da ação B, o valor necessário para montar esta operação é igual a R$0. Na prática, as corretoras requerem uma quantia em margem que limita a alavancagem. Esta quantia pode ser usada como denominador para definir um retorno sobre o capital. É importante ressaltar que este capital pode ficar investido em outros ativos que geram retornos (por exemplo, títulos do governo), o que tornará a estratégia mais rentável. Como o número máximo de pares em qualquer período de operação é de 20 pares, eu calculo e reporto os retornos considerando 1/20 do capital investido em cada par, ou seja, a alavancagem máxima da carteira é 1 (esta restrição não é necessária). Reportarei tanto os retornos líquidos (ou seja os retornos apenas das operações com pares) como os retornos sobre o capital, considerando que o capital excedente renderia 100% do CDI. Caldeira e Moura (2013) consideram um esquema “fully invested” no qual um certo capital é 100% investido nos pares que estão abertos, e a carteira é rebalanceada para manter 100% do capital investido.

Resultados da Simulação (01/2002 – 05/2016)

O modelo foi simulado de janeiro de 2001 até maio de 2016. Isto significa que o primeiro período de operação foi janeiro de 2002. A tabela abaixo resume os resultados considerando os retornos líquidos das operações. Observação: o P&L abaixo não está normalizado para a duração de cada operação.

Número de ações 162
Número de pares operados 1212
Número de operações 3817
P&L médio por operação (financeiro de R$1,00) 1.12%
Desvio padrão P&L 9.34%
Razão de informação 0.12
% operações ganhadoras 57.20%
% operações perdedoras 42.80%
Pior P&L -58.90%
Melhor P&L 84%
Mediana P&L 1.33%
Duração média (dias) 5.35
Duração mediana (dias) 4

Vemos que a estratégia parece capaz de gerar ganhos financeiros razoáveis, com uma convergência rápida da maioria das operações. O gráfico abaixo mostra o histograma da duração em dias das operações. Mais de 85% das operações encerra em menos de 10 dias. duracao

Resultados com Retornos Líquidos

Os resultados abaixo são baseados nos retornos líquidos da carteira que investe 1/20 do capital em cada par, sem considerar a remuneração do capital. Como mencionei antes, esta estratégia não ficará com 100% do capital alocado nos pares, a não ser que todos os 20 pares estejam abertos simultaneamente. Vemos que a estratégia apresentou um retorno médio de 11.4% com volatilidade de 11.21%, o que não é ruim considerando que a estratégia não toma risco direcional. O drawdown máximo foi de -14.5%. Vemos que, apesar de a estratégia ser financeiro-neutra, o que é confirmado pela exposição média da carteira de 0.35%, ela teve períodos em que chegou as estar quase 10% comprada e quase 16% vendida. O maior valor short foi de -68.66% e o maior long foi de 74.92%, confirmando que não tivemos nenhum período em que todos os 20 pares estavam abertos simultaneamente. Estes resultados são conservadores, pois assumem que o capital fica parado, ou seja, poderia estar sendo investido nos pares que estão abertos. Apesar de a estratégia diferir da de Caldeira e Moura (2013) em vários aspectos, os resultados para o período do artigo (2002 a 2006) são muito similares (não reportados).

Retorno médio 11.40%
Volatilidade 11.21%
Retorno total 327.89%
Índice de Sharpe 1.02
Drawdown máximo -14.50%
Pior mês -7.58%
Melhor mês 19.89%
% dias positivos 45.96%
% meses positivos 61.27%
Exposição média carteira 0.35%
Exposição máxima carteira 9.67%
Exposição mínima carteira -15.98%
Máximo short carteira -68.66%
Máximo long carteira 74.92%

A tabela abaixo mostra os retornos por ano. Notamos que a estratégia foi positiva em todos os anos, com retornos muito altos entre 2008 e 2010. Isto não é surpreendente, já que estratégias long-short tendem a ser muito boas em períodos de volatilidade alta.

Ano Retorno líquido (%)
2002 3.37
2003 6.96
2004 10.25
2005 8.68
2006 10.5
2007 9.22
2008 16.74
2009 37.85
2010 18.9
2011 8.49
2012 5.45
2013 0.43
2014 9.48
2015 4.38
2016 6.53

Finalmente, a figura abaixo mostra a evolução do P&L acumulado.

pnlacumulado.png

Resultados com Remuneração do Capital (2002-2016)

Na prática, uma estratégia de pares requer pouco capital, o que significa que quase 100% do capital poderia ficar investido em títulos (ou qualquer ativo que seja aceito como margem) a maior parte do tempo. Os fundos em geral definem um target  de alavancagem ou volatilidade para a estratégia. Os resultados abaixo consideram que o capital livre é remunerado a 100% do CDI. O investimento nos pares segue a mesma regra de 1/20 do capital, ou seja, a alavancagem nunca é superior a 1.

Os resultados abaixo mostram a grande contribuição de investir o capital livre. Vemos que o retorno médio, muito mais alto, é uma combinação do retorno da estratégia pura (mostrado anteriormente) com a rentabilidade do CDI. Obviamente, os resultados são bastante aumentados pelo alto valor do CDI, principalmente no início do período. Os resultados por ano (tabela seguinte) corroboram isto. O retorno total é muito alto devido à natureza dos juros compostos, uma vez que a estratégia reinveste os lucros a cada período.

Retorno médio 26.38%
Volatilidade 11.36%
Retorno total 2497.02%
Índice de Sharpe 2.32
Drawdown máximo -14.74%
Pior mês -6.66%
Melhor mês 20.97%
% dias positivos 59.89%
% meses positivos 85.55%
Exposição média carteira 0.35%
Exposição máxima carteira 9.71%
Exposição mínima carteira -16.46%
Máximo short carteira -70.54%
Máximo long carteira 75.21%
Ano Retorno líquido (%)
2002 22.64
2003 31.6
2004 27.88
2005 29.04
2006 27.46
2007 22.65
2008 31.59
2009 51.41
2010 30.62
2011 21.14
2012 14.31
2013 8.53
2014 21.34
2015 18.17
2016 11.21

O gráfico abaixo mostra o retorno acumulado da carteira e do CDI. pnlacumulado-com-capital

Resultados com Remuneração do Capital (2010-2016)

Os resultados acima mostram que a estratégia funciona em um período longo (15 anos), durante a qual houve períodos atípicos (juros muito altos, crise de 2007-2008 etc). Por este motivo, é interessante avaliar o resultado da estratégia em um período mais recente. Para isto rodamos a simulação de 2010 a 2016. Os resultados (tabela e gráfico abaixo) mostram um resultado muito consistente. Tanto a volatilidade como o retorno são mais baixos, reflexo da exclusão do período de alta volatilidade da crise de 2007-2008 e do período de CDI muito alto. O drawdown máximo é cerca de metade do observado no período anterior.

Retorno médio 20.07%
Volatilidade 9.44%
Retorno total 208.97%
Índice de Sharpe 2.13
Drawdown máximo -7.25%
Pior mês -4.10%
Melhor mês 7.79%
% dias positivos 59.13%
% meses positivos 85.71%
Exposição média carteira 0.35%
Exposição máxima carteira 9.06%
Exposição mínima carteira -5.68%
Máximo short carteira -67.73%
Máximo long carteira 74.48%

pnlacumulado-com-capital-2010-2016

Considerações Finais

Este post encerra a série de Long-Short através de cointegração e teve o objetivo de apresentar um exemplo de um modelo completo usando este conceito. O modelo apresentado teve desempenho muito forte ao longo de um período de 15 anos, com uma consistência impressionante. Alguns comentários são importantes:

  • Refinamentos – o modelo apresentado é bastante simplista. Uma implementação deste modelo na vida real requer um estudo mais aprofundado em termos dos parâmetros. Em especial, destacaria os seguintes pontos: a estabilidade da relação de cointegração e testes alternativos de cointegração (como o teste de Johansen); estudo das regras de abertura e fechamento das operações); modelagem do spread através de modelos de séries temporais (ver Tsay 2010) e estimação do z-score.
  • Caveats da simulação – a simulação usando os dados de fechamento é simplista demais. Mesmo que o horizonte do modelo seja dados diários, o ideal seria utilizar os preços da ações em um determinado horário do dia, e capturar o bid-ask observado das ações, que reflete melhor o custo de compra e venda dos ativos de maneira. Além disto, usando dados de alta frequência é possível simular se um par daria sinais de entrada ou saída durante o dia.
  • Operacionalização – fazer a simulação é o primeiro passo, mas implementar uma estratégia destas requer sofisticação no controle da carteira de pares e principalmente habilidade de executar ordens de maneira automática e rápida.
  • Controle de riscos – uma estratégia destas requer controles de riscos ativo, principalmente no que toca à concentração em ativos e setores.

Update – comparação β-neutro vs $-neutro

Os resultados mostrados acima foram obtidos com a abordagem $-neutra, ou seja, as operações são abertas com o mesmo valor financeiro comprado e vendido. Do ponto de vista teórico, existe um argumento a favor de utilizar a abordagem β-neutra, na qual opera-se uma quantidade β de um dos ativos para cada uma quantidade do outro (onde o β é obtido da regressão de cointegração), já que desta maneira, a posição operada (desde que o par seja cointegrado) é estacionária. Na abordagem β-neutra, a exposição líquida da carteira pode variar mais e a carteira pode ficar net comprada ou net vendida, pois o valor financeiro nas pontas não é necessariamente igual. Uma vantagem de manter a carteira $-neutra é que o valor líquido da carteira é mais previsível e não está sujeito ao erro de estimação do beta.

Para comparar as duas abordagens, rodei o modelo β-neutro e o modelo $-neutro para o período 2010-2016, ajustando as exposições dos dois modelos para obter a mesma volatilidade de 12% (um valor arbitrário, mas que garante comparabilidade e alavancagem relativamente baixa). Os resultados obtidos com o modelo β-neutro foram piores do que os do modelo $-neutro. O retorno médio do modelo β-neutro foi de 17.31%, enquanto o do modelo $-neutro foi de 23.70%. Os índices de Sharpe e Sortino também foram piores, apesar de o modelo $-neutro apresentar um drawdown máximo maior.

Outro ponto interessante é a exposição líquida da carteira. Conforme esperado, a carteira $-neutra, por construção, mantém uma alocação líquida próxima de zero, com uma exposição média de 0.46% do capital, máxima de 12.32% e mínima de -5.44%. Ela não fica completamente zerada devido às movimentações dos ativos nas operações abertas, já que uma vez que uma operação é aberta, ela não é rebalanceada. Já a carteira β-neutra fica net vendida 7% do capital, na média, com uma exposição net máxima de 0.62% e mínima net de -56.12%. Isto significa que o custo de aluguel desta operação é maior, pois é preciso carregar uma posição short maior do que a posição long.

β-neutro $-neutro
Retorno médio 17.31% 23.7%
Volatilidade 12% 12%
Retorno total 162.06% 266.58%
Índice de Sharpe 0.57% 1.1%
Drawdown máximo -8.38% -9.83%
Pior mês -5.18% -6.56%
Melhor mês 8.94% 12.88%
% dias positivos 56.94% 58.32%
% meses positivos 72.73% 77.92%
Exposição média carteira -7.00% 0.46%
Exposição máxima carteira 0.62% 12.32%
Exposição mínima carteira -56.12% -5.44%
Máximo short carteira -116.14% -89.01%
Máximo long carteira 79.21% 100.19%

O gráfico abaixo apresenta a comparação do P&L acumulado das duas versões. beta-neutro

Referências

Os artigos abaixo são úteis para aprofundar o estudo deste tipo de modelo. Este post possui links para o download destes artigos.

Caldeira, J. F. e Moura, G.V. (2013), Rev. Bras. Finanças, Vol. 11, No. 1, March 2013, pp. 49–80.

Gatev, E., Goetzmann, W. N., & Rouwenhorst, K. G. (2006). Pairs Trading: Performance of a Relative Value Arbitrage Rule. The Review of Financial Studies, 19, 797–827.

Avellaneda, M., & Lee, J. (2010). Statistical arbitrage in the US equities market. Quantitative Finance, 10, 1–22.

Tsay, R. (2010). Analysis of Financial Time Series. Wiley.

 

 

 

 

Anúncios

Backtest de uma estratégia quantitativa

No post anterior, eu introduzi um tipo simples de estratégia quant, o trade de pares, e dei um exemplo da estratégia para o par PETR3-PETR4. Mostrei os pontos de entrada e saída de dois trades de acordo com o critério de divergência adotado no exemplo, de acompanhar o spread entre as duas ações, padronizados pela média e desvio-padrão locais. Mas apenas dois trades positivos não são suficientes para decidir se o  par é realmente explorável. Além disso, escolhemos apenas um par entre muitos pares possíveis. Algumas perguntas que poderíamos fazer:

  • Que outros pares seriam bons para esta estratégia?
  • Qual o retorno esperado dos trades por par?
  • Qual(is) o(s) risco(s) das posições?
  • A estratégia dá retorno positivo consistentemente? Se não, é possível identificar em que períodos ela não funciona?
  • Como muda o desempenho da estratégia com mudanças nos parâmetros?

Essa perguntas podem ser respondidas fazendo-se o backtest¹ da estratégia. O backtest é simplesmente uma simulação histórica dos trades que uma estratégia teria feito ao longo do tempo, usando em cada ponto do tempo apenas os dados disponíveis até lá. No nosso exemplo de PETR3-PETR4, significaria percorrer a série temporal do spread entre as ações ao longo de um período pré-determinado, para um conjunto fixo de parâmetros, e anotar o desempenho de todos os trades gerados pelo modelo. As estatísticas desses trades nos ajudarão a responder as perguntas acima. Um bom backtest é um passo fundamental no desenvolvimento de uma estratégia de investimento bem sucedida, e muitos erros e problemas podem ser detectados neste estágio, antes de o trader colocar dinheiro em risco. O backtest depende, basicamente, de três fatores:

  • Dados
  • Plataforma
  • Modelo de trading\parâmetros
  • Custos

Vamos falar brevemente de cada um deles a seguir.

Dados

Uma estratégia de investimento quant é um algoritmo que toma como valores de entrada dados (por exemplo, preços de ações) e retorna como saída uma ação (comprar, vender, zerar) a ser executada. Para que a saída do algoritmo seja confiável, é preciso que os dados sejam confiáveis. Isso se chama de “Princípio GIGO” (Garbage-In, Garbage-Out). Se os dados tiverem problemas, a saída do algoritmo provavelmente também terá, e as conclusões do backtest perdem o sentido. Há muitos lugares onde é possível obter dados de ações, mas sempre cabe ao usuário checá-los. Em geral, usamos nos backtests os preços corrigidos das ações, que incorporam proventos como dividendos, splits etc. Sendo possível, é sempre melhor obter dados em alta frequência e o book de ofertas. Isso permite um grau de sofisticação maior no backtest, pois é possível chegar mais próximo do que se observaria na prática. Na realidade, tudo vai depender do tipo de estratégia que está sendo considerada. Para uma estratégia de trading em alta frequência, onde segundos podem fazer a diferença, é essencial ter dados no maior nível possível, de preferência os preços e livro de ofertas a cada negócio (tick-by-tick). Já para uma estratégia de mais longo prazo, onde o horizonte é de vários dias ou mesmo meses, podemos até usar os preços de fechamento. Um cuidado que se deve ter quando se testa uma estratégia com muitas ações é incluir um conjunto de ações o mais próximo possível do que teria sido realmente utilizado no período estudado, inclusive usando ações que podem ter “morrido” (a empresa deixou de existir). Um exemplo menos drástico: a ação NETC4, por volta de 1999, parecia valer muito e, alguns anos depois, seu preço foi quase a zero. Se o backtest contempla o período em questão, a decisão de excluir a ação da base de dados pode introduzir um viés na análise.

Plataforma

A plataforma é o motor no qual os testes serão rodados. Na prática, a plataforma é uma aplicação, um programa de computador que vai realizar a simulação. Quanto mais sofisticada a plataforma e o nível de conhecimento de programação do trader,  maior o nível de detalhe e realismo será possível alcançar no backtest. Além disso, será possível fazer a simulação de estratégias mais complexas, com maior número de ativos, e em menor tempo. Algumas plataformas possíveis:

  • Excel – uma das mais viáveis e baratas. Se o trader souber programar em VBA, ganhará bastante versatilidade. Além disso, algumas corretoras têm um link DDE que permite a visualização de preços, livro de ofertas etc diretamente na planilha, tornando o Excel uma possibilidade também como plataforma de execução.
  • Matlab – um dos preferidos no mundo quant, por sua versatilidade, facilidade de uso, interface gráfica e pelo grande número de ferramentas analíticas pré-instaladas. O grande senão é o preço: uma licença custa na casa de milhares de dólares. Mesmo assim, muitas universidades mantém licenças, e existe uma versão para estudante com preço reduzido. Existem alguns clones grátis ou mais baratos, como SciLab, Octave etc.
  • R – o R é um software livre com muitos pacotes estatísticos criados por usuários. É uma ótima opção, e de graça.
  • Plataformas dedicadas – de corretoras ou empresas especializadas. Eu já usei o Metastock, que tem uma grande quantidade de indicadores técnicos, mas como plataforma de backtest acho meio limitado.
  • C, C++, C# – para quem sabe programar nestas linguagens, é possível criar backtests muito eficientes e complexos.

Qualquer que seja a plataforma de execução, o importante é tomar muito cuidado na hora do backtest para não deixar passar erros. A maior parte do tempo, quando uma estratégia parece boa demais para ser verdade, há um erro de programação ou na base de dados.

Modelo de Trading e Parâmetros

Uma vez que temos os dados e escolhemos uma plataforma para realizar o backtest, é hora de traduzir a ideia de trading em regras analíticas, quantitativas e sem ambiguidade. No nosso exemplo anterior, decidimos visualmente (e de maneira um tanto subjetiva) onde entrar nos trades. Na realidade, o processo de construção de uma estratégia desse tipo passaria por uma etapa em que os cálculos a serem feitos serão especificados, assim como os parâmetros do modelo. No exemplo anterior, teríamos pelo menos três parâmetros: o tamanho da janela para calcular a média e desvio padrão do spread, o valor para entrar nos trades, e o valor para sair. Uma das vantagens do backtest é que podemos estudar como a estratégia se comporta quando estes parâmetros são alterados. Claro que sempre gostaríamos de escolher o “melhor” conjunto de parâmetros (ou seja, o que dá maior retorno por unidade de risco), mas é preciso muito cuidado, pois às vezes, alguns pontos no espaço paramétrico de um modelo parecem bons demais devido a apenas um pequeno número de trades, ou ao período escolhido. O ideal é que a estratégia funcione bem para várias escolhas diferentes dos parâmetros. A introdução de mais critérios e parâmetros, em geral, melhora o desempenho de um modelo, mas é preciso atenção para não deixar o modelo complexo demais, a ponto de ele começar a capturar idiossincrasias do período estudado. Quando isso acontece, o modelo pode se sair muito bem no período usado no backtest, mas performar mal no futuro (ou seja, quando o dinheiro estiver no jogo). Isso se chama overfitting. É sempre bom definir parâmetros, regras etc usando um pedaço da amostra, reservando uma parte mais recente para fazer um teste “fora da amostra”.

Custos

Existem vários custos envolvidos em qualquer estratégia de investimento. Os de operação incluem não só corretagem, emolumentos, aluguel de ações, como também a diferença entre o preço observado e o que será realizado no trade (o chamado slippage). Dependendo da estratégia, os custos de operação são extremamente significantes ou até insignificantes. Para uma estratégia de alta frequência, onde o ganho por trade é baixo e o número de trades é alto, o custo tem alto impacto e pode fazer a diferença entre uma estratégia lucrativa e outra perdedora. De maneira geral, quanto maior o horizonte do trade, menor o impacto dos custos transacionais. Um bom backtest inclui o custo de operação nas contas.

Resultados

Uma vez que as regras de trading (isto é, o modelo) foi definido (e programado em alguma plataforma), o backtest será rodado, e o resultado será uma lista com os trades, e os respectivos P&Ls (profit and loss), ou seja, quanto dinheiro cada trade ganhou ou perdeu. A análise da estratégia é feita em cima desses números. Existem inúmeras medidas de performance que podem ser usadas. Algumas delas:

  • retorno (ou P&L – profit and loss) médio por trade – quanto de retorno a estratégia dá?
  • drawdown – mede o pior período em termos de perda. Deve ser o mais baixo possível.
  • razão de informação – retorno médio dividido pelo desvio padrão; mede o retorno por unidade de risco.
  • razão de Sharpe – se a estratégia usa caixa, este poderia estar investido em títulos do governo, isso é, rendendo CDI. A razão de Sharpe mede a diferença entre o retorno médio da estratégia e o retorno de um ativo sem risco, divido pelo desvio padrão.
  • razão de Sortino – similar a de Sharpe, mas com risco definido pelo desvio padrão apenas dos retornos negativos. Não penaliza variância devido a ganhos.
  • % de trades positivos

Bom, espero que o post seja útil. No futuro pretendo postar algum exemplo de backtest em Excel. ¹ Eu prefiro sempre que possível usar termos em português, mas desconheço um termo adequado para backtest. Estou tentado a usar “simulação”. Se alguém tiver alguma outra ideia, favor avisar.