O backtesting em modelação refere-se ao teste de um modelo preditivo utilizando dados históricos. O artigo trata da forma de o fazer no Microsoft Excel e não dos fundamentos teóricos do backtesting.
Como é que realizamos o backtesting? Rebobinamos o tempo até ao início da nossa série temporal, calibramos os parâmetros do modelo sujeito utilizando os dados disponíveis até essa instância de tempo e realizamos uma previsão (i.e., forecast) para o período seguinte. Em seguida, avançamos no tempo, recalibramos os valores dos parâmetros e fazemos outra projeção, e assim por diante. No final do nosso exercício, teremos um conjunto de previsões.
Note-se que, em cada ponto, a única suposição que fazemos é a definição geral do modelo (por exemplo, ARMA(1,1)). Ainda assim, calibraríamos os valores dos parâmetros usando apenas as informações disponíveis até aquele momento.
Esta abordagem é coerente com as práticas da vida real: primeiro, partimos de um modelo inicial e efectuamos uma previsão para o período seguinte. O tempo passa. Ocorreu um novo período, pelo que anexamos o novo ponto de dados ao conjunto de dados de entrada atual, recalibramos os parâmetros, efectuamos uma previsão para o período seguinte e repetimos.
O que é que isso me interessa?
Este artigo irá guiá-lo pelos passos necessários no Microsoft Excel para efetuar um backtesting. Utilizaremos principalmente duas poderosas funções incorporadas no Excel: INDEX(.) e SEQUENCE(.), e aproveitar o mecanismo de "Tabela de dados" do Excel para executar os diferentes cenários.
O backtesting gera o que teriam sido os erros de previsão, pelo que pode examinar de perto a série cronológica de erros de previsão para correlação em série, distribuições, outliers e outros, para compreender melhor a precisão e o desempenho do modelo.
Vamos lá!
Para esta questão, estamos a utilizar um conjunto de dados sintéticos estacionários com 200 observações. O conjunto de dados segue um processo ARMA(1,1), como se mostra de seguida.
O modelo proposto é o ARMA(1,1)
Procedimento de backtesting
Para cada iteração, temos de fazer o seguinte: (1) definir o conjunto de dados de entrada (como subconjunto da série temporal original), (2) usando o conjunto de dados em (1), calibrar os valores dos parâmetros do modelo ARMA(1,1), (3) Usando o modelo em (2) e o conjunto de dados em (1), calcular uma previsão para um período à frente.
1. Conjunto de dados de entrada
Para descrever completamente o conjunto de dados de entrada, necessitamos de dois índices: início e fim, depois, utilizando a função SEQUENCE(.), geramos um conjunto de índices entre o início e o fim. Agora, utilizamos a função INDEX(.) para devolver todos os intervalos de células no conjunto de dados original com índices de linha no conjunto de sequência.
Exemplo:
O conjunto de dados de entrada original é \$A\$3:\$A\$202. Para selecionar as células entre os índices 1 e 50.
=INDEX(\$A\$3:\$A\$202,SEQUENCE(50,1,1,1),1)
Note-se que é possível definir um nome para os dados de entrada e referenciar esse nome em vez do intervalo de células de entrada.
2. Calibrar o modelo
Utilizaremos a função ARMA_PARAM(.) do NumXL e especificaremos o tipo de retorno=2 para os parâmetros calibrados.
Note-se que ARMA_PARAM(.) devolve uma forma compacta dos parâmetros do modelo, pelo que, na figura acima, o processo ARMA é: \[\begin{array}{l} {X_t} = 1.485 + 0.401{X_{t - 1}} + 0.734{a_{t - 1}} + {a_t}\\ {a_t} \sim N(0,1.14) \end{array}\]
3. Previsão
Utilizando o ARMA_FORE(.), o conjunto de dados em (1) e os parâmetros do modelo calculados em 2, podemos calcular os valores de previsão para o período de 1 período seguinte.
Note-se que gerei a previsão média, o erro de previsão e o intervalo de confiança.
Tabela de dados
Agora, acabámos de completar o cálculo de um passo. Utilizaremos a funcionalidade "Tabela de dados" do Excel para efetuar o mesmo cálculo para os restantes períodos até ao passo 200.
Em primeiro lugar, temos de preparar a tabela de saída:
Agora, selecione toda a tabela de dados, começando com a linha de saída e incluindo a coluna de índice final, como mostrado abaixo:
Em seguida, vá para a barra de ferramentas "Dados" e localize o item "Tabela de dados" em "Cenário de variações hipotéticas".
Aparece a caixa de diálogo "Tabela de dados". Localize a "célula de entrada da coluna", introduza uma referência ao índice "final" do conjunto de dados e clique no botão OK.
A tabela de dados substituirá o valor do índice de chegada pelos valores da nossa tabela de dados e armazenará os resultados.
Note-se que "Std. Error" é gerado pela função ARMA_FORE(.), enquanto a coluna mais à direita ("Error") é o erro entre a previsão e o valor efetivamente realizado.
Análise de backtesting
Primeiro, vamos examinar visualmente os resultados das previsões do backtesting em relação aos valores efetivamente realizados e, em seguida, vamos aprofundar as propriedades estatísticas.
A área sombreada no gráfico corresponde ao intervalo de confiança de 95% da previsão.
O gráfico mostra um bom ajuste do modelo e, por conseguinte, a exatidão da previsão.
Em seguida, vamos examinar as propriedades estatísticas do erro de previsão (Previsão - Real) utilizando as estatísticas de resumo na barra de ferramentas NumXL.
O quadro das estatísticas sintéticas indica que o erro de previsão é um ruído gaussiano com média zero e desvio-padrão de 1,0
Em conclusão, o ARMA(1,1) é um modelo de previsão adequado para o conjunto de dados em causa.
O que é que se segue?
Neste momento, deve estar a questionar-se sobre os valores dos parâmetros do modelo? São estáveis?
Primeiro, construímos uma segunda "Tabela de dados", mas na linha de saída estão os valores dos parâmetros do modelo, e executamos a tabela de dados tal como fizemos anteriormente.
Agora, analise os valores de cada parâmetro como fizemos com o erro de previsão.
Os valores dos parâmetros (exceto theta) apresentam estabilidade e uma tendência para um valor constante. Os valores de theta (coeficiente MA) são mais voláteis, mas situam-se entre 0,6 e 0,9.
Em seguida, deveríamos examinar as estatísticas descritivas e as distribuições subjacentes dos valores dos parâmetros, mas deixaremos esse exercício para si.
Consultar a folha de cálculo em anexo para o conjunto de dados e a análise.
Conclusão
Este artigo demonstrou os passos para efetuar um backtesting para um modelo preditivo com um mínimo ou nenhum cálculo intermédio. Utilizámos as funções incorporadas do Excel: INDEX(.) e SEQUENCE(.) e aproveitámos a funcionalidade "Tabela de dados" para executar o cálculo para todos os índices predefinidos.
Depois de obtermos os resultados do backtesting, passamos à análise estatística e avaliamos as suas propriedades e distribuição para descobrir quaisquer enviesamentos (por exemplo, correlação serial) no resultado.
Comentários
iniciar sessão para comentar.