Modelos de previsão com caraterísticas de atualização automática

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:

Esta figura mostra os retornos logarítmicos mensais do S&P 500 desde janeiro de 2010 até novembro de 2019. O conjunto de dados tem um componente de data e valor.

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.

Nesta figura, demonstramos o processo de adicionar pontos de dados de espaço reservado no final do conjunto de dados de séries temporais. Cada novo ponto de dados tem uma data válida e um valor de #N/A.

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.

Nesta figura, mostramos o assistente GARCH apresentado. O conjunto de dados de entrada faz referência ao intervalo de células das séries cronológicas de entrada, incluindo os pontos de dados de marcadores de posição inseridos no final do conjunto de dados.

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.

Esta figura mostra a tabela do modelo GARCH(2,2), conforme gerado pelo assistente NumXL GARCH.

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

Esta figura mostra o solver da Microsoft com valores inicializados para otimizar a qualidade do ajuste do modelo GARCH com o conjunto de dados.

O solucionador da Microsoft procura uma solução óptima para o processo GARCH.

Esta figura mostra as janelas de resultados do Solver depois de o Solver encontrar uma solução óptima.

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.

Esta figura mostra a fórmula para calcular a dimensão efectiva do conjunto de dados de entrada utilizando as funções COUNT e RMNA.

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.

Esta figura mostra a fórmula para calcular a data da última observação com valor não omisso no nosso conjunto de dados utilizando a função INDEX e o tamanho efetivo do conjunto de dados de entrada.

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.

Esta figura mostra o assistente de previsão para o modelo GARCH. Note-se que a última obs está a fazer referência ao conjunto de dados de entrada, incluindo os pontos de dados de placeholders.

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.

Esta figura mostra a tabela de previsões gerada pelo assistente NumXL para os 36 meses seguintes. Note que utiliza o passo (por exemplo, mês) como unidade de tempo.

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:

Esta figura mostra a fórmula para calcular a data do calendário para cada período na tabela de previsão usando a função NxEDATE.

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(.)).

Esta figura mostra a fórmula para ajustar a data calculada ao dia útil seguinte mais próximo, utilizando a função NxAdjust(.).

É isso mesmo! Vamos examinar a tabela de previsão e a curva da estrutura a termo da volatilidade mensal.

Esta figura mostra a tabela de previsão com uma coluna de calendário de datas e uma previsão de estrutura a termo de volatilidade para os 36 meses seguintes.

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.

This figure shows the plug in process of new data point and replacing a given placeholder.

Etapa 2: Observar

Esta figura mostra o cálculo atualizado da dimensão do conjunto de dados e da data final, bem como a tabela de previsão e a curva da estrutura temporal da volatilidade.

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.

Esta figura demonstra o processo de recalibração do modelo GARCH utilizando um conjunto de dados com um novo ponto de dados.

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).

  Anexos

Comentários

iniciar sessão para comentar.

Este artigo foi útil?
1 de 1 acharam isto útil