O tópico deste boletim informativo é sobre a configuração de um modelo de previsão (por exemplo, ARMA, GARCH, Regressão) de forma a que o utilizador (ou outra pessoa) possa prontamente actualizá-lo à medida que novos pontos de dados ficam disponíveis e as previsões são actualizadas automaticamente.
Para o demonstrar, definimos um modelo GARCH para os retornos mensais do ETF S&P 500, calibrámos os valores dos parâmetros e construímos uma estrutura temporal de previsão da volatilidade para os 36 meses seguintes. Em seguida, introduzimos um novo ponto de dados e observámos o modelo a avançar a data de início da previsão e a atualizar os valores da previsão.
Porque é que isso lhe interessa?
Na prática, criamos muitos modelos baseados em Excel, alguns dos quais para utilização única, mas muitas folhas de cálculo são frequentemente partilhadas com colegas, revistas ocasionalmente e permanecem durante muito tempo. Preparar a sua folha de cálculo para uma atualização automática é relativamente simples. Uma vez concluída, pode facilmente adicionar novos pontos de dados ou rever os existentes e ver os seus cálculos actualizados com um esforço mínimo.
Pronto, vamos lá!
Preparação de dados
Para este tutorial, estamos a utilizar os retornos logarítmicos mensais do S&P 500 ETF (SPY) entre janeiro de 2010 e novembro de 2019:
Primeiro, devemos anexar o conjunto de dados atual com marcadores de posição. Fazemo-lo avançando datas (por exemplo, Dez. 2019, Jan. 2019) e introduzindo "#N/A" como valores.
Modelação
Escolhemos um GARCH(2,2) com as inovações do aluno para captar a dinâmica da volatilidade mensal variável no tempo para este conjunto de dados. Para definir o modelo, localize uma célula vazia na sua folha de cálculo e, em seguida, clique no ícone "GARCH" na barra de ferramentas "NumXL", e o assistente GARCH aparece.
Na secção "Input Data" (Dados de entrada), selecione o intervalo de células dos retornos mensais, incluindo os marcadores de posição que adicionou anteriormente. Não se preocupe, as funções NumXL descartarão as observações com valores "#N/A" em qualquer extremidade do intervalo de células de entrada.
Selecione ARCH e GARCH na secção Especificações do modelo e defina a ordem para 2. Clique em "Student t-distribution" na secção de inovações. Agora, clique no botão "OK" para confirmar a sua seleção.
O assistente GARCH gera a tabela de modelos e inicializa os valores de seus parâmetros para valores válidos, mas abaixo do ideal. Para encontrar um conjunto ótimo de valores para os parâmetros GARCH, selecione a célula de cabeçalho da tabela modelo e clique no ícone "Calibrar" na barra de ferramentas "NumXL". O Microsoft Solver aparece com todos os seus valores definidos. Clique em Solve
O solucionador da Microsoft procura uma solução óptima para o processo GARCH.
Exploração de dados
Anteriormente, mencionámos que as funções NumXL descartam qualquer observação no intervalo de células de entrada com um valor igual a "#N/A". Como é que sabe onde termina o conjunto de dados?
Para responder à pergunta acima, é necessário calcular primeiro o tamanho do conjunto de dados com duas funções: RMNA(.) e COUNT(.). A função RMNA(.) elimina os pontos de dados com "#N/A" e devolve um conjunto de todas as observações não omissas, e a função COUNT(.) devolve o tamanho deste conjunto.
Também pode calcular a data final do conjunto de dados utilizando a função INDEX(.) incorporada no Excel e o tamanho do conjunto de dados acima.
Em suma, tem um conjunto de dados com 119 valores não omissos, e a última observação caiu em novembro de 2019.
Previsão
Para este tutorial, é necessário construir a previsão da volatilidade mensal para os 36 meses seguintes. Para isso, selecione a linha de cabeçalho da tabela do modelo e clique no ícone "Previsão" na barra de ferramentas NumXL.
Na secção "Latest obs.", selecione o intervalo de células na coluna "B", incluindo a observação com valores em falta (ou seja, #N/A).
Para a volatilidade, deixe-a em branco e o NumXL utilizará a volatilidade da amostra calculada pelo próprio modelo GARCH. Clique no botão "OK".
O assistente de previsão gera uma tabela de previsão que expressa a unidade de tempo em termos de etapas (ou seja, mês) medidas após o fim do conjunto de dados de entrada.
Ao longo do tempo, a adição de novos pontos de dados avança a data da última observação (com valor não omisso), afectando a nossa interpretação da unidade de passo na tabela de previsão. Para contrariar este problema, acrescentámos uma coluna à esquerda da tabela de previsões para designar a data de calendário correspondente.
Para calcular a data correspondente a cada passo, utilizamos as funções NxEDATE(.) e CONCAT(.), como se mostra abaixo:
Utilizando a data final do conjunto de dados, a função NxEDATE(.) devolve os dados que caem após N meses, em que N é o número de etapas na tabela de previsões.
O que acontece se os novos dados coincidirem com um fim de semana ou um feriado? Uma vez que o nosso conjunto de dados é uma série cronológica financeira, a data deve cair num dia útil; caso contrário, mova a data para a data útil mais próxima (NxAdjust(.)).
É isso mesmo! Vamos examinar a tabela de previsão e a curva da estrutura a termo da volatilidade mensal.
O modelo GARCH revela um ambiente de baixa volatilidade - relativamente ao nível histórico (ou seja, 3,8%) - mas prevê um aumento constante da volatilidade no próximo ano.
Adicionar pontos de dados
Vejamos o que acontece quando temos o retorno mensal de dezembro de 2019, digamos -0,6%.
Etapa 1: Introduzir o novo valor no conjunto de dados.
Etapa 2: Observar
O tamanho do conjunto de dados de entrada aumentou para 120 e a data final é agora dezembro de 2019.
No quadro de previsões, a data correspondente à primeira etapa é agora janeiro de 2020 (era dezembro de 2019) e a estrutura temporal da volatilidade é diferente (menos suave).
Etapa 3: Avançado
A tabela de previsões acima utiliza o mesmo processo GARCH que calibrámos anteriormente, especialmente o valor dos parâmetros.
Para efeitos de argumentação, vamos assumir que pretende recalibrar o modelo mas manter as ordens ARCH/GARCH (i.e., P e Q) e a distribuição da inovação (e.g., student t) iguais.
Tal como fizemos anteriormente, localize e selecione a linha de cabeçalho da tabela do modelo GARCH e clique no ícone "Calibrar" na barra de ferramentas do NumXL.
O Solver aparece, mas, desta vez, a otimização começa (ou seja, o valor inicial) com os valores óptimos dos parâmetros da última execução. Assim, espera-se uma conversão rápida.
Clique no botão "Solver" para iniciar o processo de otimização.
Após a conclusão, o Solver apresenta uma caixa de diálogo "Encontrar solução". Clique no botão OK e os valores dos novos parâmetros serão copiados para a tabela do modelo.
Para examinar o impacto da recalibração na sua previsão, observe os seus valores de previsão no quadro (e gráfico).
Conclusão
Neste tutorial, examinamos as duas etapas para configurar seus modelos para atualização automática:
- Adição de pontos de dados de espaço reservado no final do conjunto de dados de entrada,
- Selecionar o conjunto de dados com os pontos de dados do marcador de posição no modelo e na previsão.
À medida que o tempo avança e novas observações são realizadas, introduzimos os seus valores reais no conjunto de dados (em vez do #N/A) e o Excel actualiza o cálculo de todas as células de referência (por exemplo, a tabela de previsões).
Comentários
iniciar sessão para comentar.