Fundos Quantitativos Brasil

Não está um bom ano para os fundos quant por aqui. Todos abaixo do CDI (Bloomberg: BZACCETP).

(Clique para ampliar)

 

Anúncios

Planilha de operação e backtest de pares

Decidi colocar à disposição dos leitores uma planilha para operações com pares de ações. O modelo utilizado é o de bandas de Bollinger, e a planilha permite fazer simulações (backtests) de operações com pares específicos ou para todos os pares possíveis, assim como otimização dos parâmetros do modelo.

Esta planilha tem finalidade apenas educacional, e pode conter erros. Quem utilizá-la, deve concordar com o disclaimer do blog.

Bom, vamos aos detalhes. A planilha contém 5 abas: Preços, Monitoramento, Resultados Backtest um par, Backtest todos os pares, e Otimização. Segue uma descrição de cada uma:

  • Preços – contem os preços históricos das ações. A primeira coluna deve conter as datas, e cada coluna adicional, o nome de cada ação, e os preços das ações a cada dia. A suposição é de que a frequência do monitoramento é diária. O leitor pode alterar esta aba para colocar seus próprios dados, adicionar outras ações e, o mais importante, se tiver um link DDE com a sua corretora, pode colocar na última linha os preços em tempo real das ações, para fazer o monitoramento dos pares em tempo real
  • Monitoramento – é a aba principal. Ela permite:
    • Fazer o monitoramento de um par específico. Para isso, basta digitar os nomes das duas ações nas células adequadas. O exemplo na planilha contém o par formado por LIGT3 e TBLE3 (elétrica x elétrica).
    • Alterar os parâmetros do modelo e dos backtests:  tamanho da janela utilizada para calcular as bandas, largura das bandas (número de desvios-padrão usados para formar as badas), taxa de corretagem, valor de slippage (diferença assumida entre valor de compra e de venda), taxa de aluguel, duração máxima do trade, financeiro utilizado na operação, datas do backtest etc. A célula “Alavancagem” indica se o usuário quer abrir novos trades a cada dia, se houver oportunidade (VERDADEIRO), ou se irá sempre esperar um trade finalizar antes de abrir outro (FALSO). Se este parâmetro estiver como verdadeiro, todos as operações possíveis são marcadas, portanto as simulações demoram mais.
    • Rodar a simulação de um par com os parâmetros fixos. Basta clicar em “Rodar Backtest (1 par)”. A aba “Resultados Backtest um par” é ativada para mostrar os resultados.
    • Rodar a simulação de todos os pares possíveis com os parâmetros fixos. Basta clicar em “Rodar Backtest (todos os pares)”. Lembre-se de que, se o número de ações for muito grande, isto pode demorar (o número de pares possíveis com N ações é N(N-1)/2). A aba “Backtest todos os pares” é ativada para mostrar os resultados.
    • Rodar uma otimização simples nos parâmetros tamanho da janela (N) e número de desvios (largura da banda). A aba “Otimização” é ativada para mostrar os resultados.
  • Resultados Backtest um par – mostra os resultados da simulação do modelo para o par escolhido na aba “Monitoramento”. É mostrada uma tabela com algumas medidas-resumo, e um gráfico com o P&L por operação e o P&L acumulado.
  • Backtest todos os pares – mostra os resultados da simulação do modelo para todos os pares possíveis. A tabela é ordenada pela razão de informação (média de P&L dividida pelo desvio padrão do P&L). Esta é uma medida simples da relação retorno-risco do par.
  • Otimização – mostra os resultados da otimização para um par. Os parâmetros otimizados são Tamanho da janelaLargura da banda. O usuário pode alterar os valores sugeridos para os parâmetros, ou mesmo incluir mais valores. Os valores mostrados na tabela são as razões de informação de cada combinação dos parâmetros. O gráfico mostra o mapa de calor do par, útil para identificar quais combinações de parâmetros são boas. É importante notar que a otimização é feita usando-se as datas definidas na aba “Monitoramento”. É uma boa ideia fazer testes de otimização fora-da-amostra, ou seja, usando-se uma amostra para obter os parâmetros ótimos, e outra para verificar se eles continuam performando fora da amostra original. Também é importante notar que, se a largura da banda for muito alta (muito maior do que 2), os resultados do backtest ficam menos confiáveis, pois o número de operações diminui.
A planilha contém algumas macros que fazem as contas, e o código não está otimizado, já que não sou programador. O leitor pode (e deve) alterar a planilha e as macros à vontade, para servir melhor ao seu proprósito. Uma ideia interessante é criar outra aba com o monitoramento de vários pares, por exemplo. Outra ideia, para tornar a simulação mais realista, é utilizar dados históricos de bid e ask. A função de cálculo de P&L permite esta possibilidade, e o leitor que conhece VBA pode facilmente alterar a planilha. Comentários, sugestões, correções etc são bem-vindos.
Finalmente, o link para a planilha.Planilha de trade de pares. Não esqueça de habilitar as macros para a planilha funcionar.
Aba Monitoramento:
Aba “Resultados Backtest 1 par”
Aba “Otimização”