Previsão de mercado com base em indicadores macroeconômicos

 

Assim, a tarefa é prever o índice S&P 500 com base nos indicadores econômicos disponíveis.

Passo 1: Encontre os indicadores. Os indicadores estão disponíveis publicamente aqui: http://research.stlouisfed.org/fred2/ Existem 240.000 deles. O mais importante é o crescimento do PIB. Este indicador é calculado trimestralmente. Daí o nosso passo - 3 meses. Todos os indicadores para um período menor são recalculados para um período de 3 meses, o restante (anual) é descartado. Também descartamos indicadores para todos os países, exceto os Estados Unidos e indicadores que não tenham um histórico profundo (pelo menos 15 anos). Então, com trabalho meticuloso, filtramos um monte de indicadores e obtemos cerca de 10 mil indicadores. Formulamos uma tarefa mais específica de prever o índice S&P 500 um ou dois trimestres à frente, tendo disponíveis 10 mil indicadores econômicos com período trimestral. Faço tudo em MatLab, embora seja possível em R.

Passo 2: Converta todos os dados para a forma estacionária por diferenciação e normalização. Existem muitos métodos aqui. O principal é que os dados originais podem ser restaurados a partir dos dados convertidos. Sem estacionaridade, nenhum modelo funcionará. A série S&P 500 antes e depois da conversão é mostrada abaixo.

Passo 3: Escolha um modelo. Talvez uma rede neural. Pode-se fazer regressão linear multivariável . Você pode fazer regressão polinomial multivariável. Após testar modelos lineares e não lineares, chegamos à conclusão de que os dados são tão ruidosos que não faz sentido entrar em um modelo não linear. O gráfico y(x), onde y = S&P 500 e x = um dos 10 mil indicadores, é uma nuvem quase circular. Assim, formulamos a tarefa ainda mais especificamente: prever o índice S&P 500 um ou dois trimestres à frente, com 10 mil indicadores econômicos com período trimestral, usando regressão linear multivariada.

Passo 4: Selecionamos os indicadores econômicos mais importantes de 10 mil (reduzimos a dimensão do problema). Este é o passo mais importante e difícil. Digamos que levemos a história do S&P 500 até 30 anos (120 trimestres). Para representar o S&P 500 como uma combinação linear de indicadores econômicos de vários tipos, basta ter 120 indicadores para descrever com precisão o S&P 500 ao longo desses 30 anos. Além disso, os indicadores podem ser absolutamente qualquer um para criar um modelo tão preciso de 120 indicadores e 120 valores S&P 500. Portanto, você precisa reduzir o número de entradas abaixo do número de valores de função descritos. Por exemplo, estamos procurando os 10-20 indicadores de entrada mais importantes. Tais tarefas de descrever dados com um pequeno número de entradas selecionadas de um grande número de bases candidatas (dicionário) são chamadas de codificação esparsa.

Existem muitos métodos para selecionar entradas de preditores. Eu tentei todos eles. Aqui estão os dois principais:

  1. Classificamos todos os 10.000 dados por seu poder preditivo do S&P 500. O poder preditivo pode ser medido pelo coeficiente de correlação ou informações mútuas.
  2. Percorremos todos os 10 mil indicadores na parte inferior e escolhemos aquele que deu o modelo linear y_mod = a + b*x1 descrevendo o S&P 500 com o menor erro. Em seguida, selecionamos a segunda entrada novamente classificando os 10 mil indicadores -1 restantes para que ela descreva o restante y - y_mod = c + d*x2 com o menor erro. etc. Esse método é chamado de regressão gradual ou busca de correspondência.

Aqui estão os 10 principais indicadores com o maior coeficiente de correlação com o S&P 500:

ID da série Atraso Corrente Mudar informações
'PPICRM' 2 0,315 0,102
'CWUR0000SEHE' 2 0,283 0,122
'CES1021000001' 1 0,263 0,095
'B115RC1Q027SBEA' 2 0,262 0,102
'CES1000000034' 1 0,261 0,105
'A371RD3Q086SBEA' 2 0,260 0,085
'B115RC1Q027SBEA' 1 0,256 0,102
'CUUR0000SAF111' 1 0,252 0,117
'CUUR0000SEHE' 2 0,251 0,098
'USMINE' 1 0,250 0,102

Aqui estão os 10 principais indicadores com as informações mais mútuas com o S&P 500:

ID da série Atraso Corrente Mudar informações
'CPILEGSL' 3 0,061 0,136
'B701RC1Q027SBEA' 3 0,038 0,136
'CUSR0000SAS' 3 0,043 0,134
'GDPPOT' 3 0,003 0,134
'NGDPPOT' 5 0,102 0,134
'OTHSEC' 4 0,168 0,133
'LNU01300060' 3 0,046 0,132
'LRAC25TTUSM156N' 3 0,046 0,132
'LRAC25TTUSQ156N' 3 0,046 0,131
'CUSR0000SAS' 1 0,130 0,131

Lag é o atraso da série de entrada em relação à série simulada do S&P 500. Como pode ser visto nessas tabelas, diferentes métodos de escolha das entradas mais importantes resultam em diferentes conjuntos de entradas. Como meu objetivo final é minimizar o erro do modelo, escolhi o segundo método de seleção de entrada, ou seja, enumeração de todas as entradas e seleção da entrada que deu o menor erro.

Passo 5: Escolha um método para calcular o erro e os coeficientes do modelo. O método mais simples é o método COEX, razão pela qual a regressão linear usando este método é tão popular. O problema com o método RMS é que ele é sensível a outliers, ou seja, esses outliers afetam significativamente os coeficientes do modelo. Para reduzir essa sensibilidade, a soma dos valores dos erros absolutos pode ser utilizada no lugar da soma dos erros quadrados, levando ao método dos módulos mínimos (LSM) ou regressão robusta. Este método não possui uma solução analítica para os coeficientes do modelo ao contrário da regressão linear. Normalmente os módulos são substituídos por funções de aproximação suaves/diferenciáveis e a solução é realizada por métodos numéricos e leva muito tempo. Tentei os dois métodos (regressão enxuta e MHM) e não notei muita vantagem do MHM. Em vez de MHM, fiz um desvio. Na segunda etapa de obtenção de dados estacionários diferenciando-os, adicionei uma operação de normalização não linear. Ou seja, a série original x[1], x[2], ... x[i-1], x[i] ... é primeiro convertida em uma série de diferenças x[2]-x[1] . .. x [i]-x[i-1] ... e então cada diferença é normalizada substituindo-a por sign(x[i]-x[i-1])*abs(x[i]-x[ i-1] )^u, onde 0 < u < 1. Para u=1, obtemos o método COSE clássico com sua sensibilidade a valores discrepantes. Em u=0, todos os valores da série de entrada são substituídos por valores binários +/-1 com quase nenhum outlier. Para u=0,5, obtemos algo próximo a MNM. O valor ótimo de u está em algum lugar entre 0,5 e 1.

Deve-se notar que um dos métodos populares para converter dados em uma forma estacionária é substituir os valores da série pela diferença nos logaritmos desses valores, ou seja, log(x[i]) - log(x[i-1]) ou log(x[i]/x[i-1]). A escolha de tal transformação é perigosa no meu caso, pois o dicionário de 10 mil verbetes possui muitas linhas com zero e valores negativos. O logaritmo também tem o benefício de reduzir a sensibilidade do método RMS a valores discrepantes. Essencialmente, minha função de transformação sign(x)*|x|^u tem o mesmo propósito que log(x), mas sem os problemas associados a zero e valores negativos.

Etapa 6: Calcule a previsão do modelo substituindo os novos dados de entrada e calculando a saída do modelo usando os mesmos coeficientes do modelo que foram encontrados pela regressão linear nos segmentos anteriores do histórico. Aqui é importante ter em mente que os valores trimestrais dos indicadores econômicos e do S&P 500 vêm quase simultaneamente (com precisão de 3 meses). Portanto, para prever o S&P 500 para o próximo trimestre, o modelo deve ser construído entre o valor trimestral atual do S&P 500 e entradas atrasadas em pelo menos 1 trimestre (Lag>=1). Para prever o S&P 500 um trimestre à frente, o modelo deve ser construído entre o valor trimestral atual do S&P 500 e as entradas atrasadas em pelo menos 2 trimestres (Lag>=2). etc. A precisão das previsões diminui significativamente com o aumento do atraso maior que 2.

Passo 7: Verifique a precisão das previsões sobre o histórico anterior. A técnica original descrita acima (colocar cada entrada no histórico anterior, escolher a entrada que fornece o menor MSD e calcular a previsão a partir do novo valor dessa entrada) produziu uma previsão MSD que foi ainda pior do que as previsões aleatórias ou nulas. Eu me fiz esta pergunta: por que uma entrada que se encaixa bem no passado deve ter uma boa capacidade de previsão para o futuro? Faz sentido selecionar entradas de modelo com base em seu erro de previsão anterior, em vez de com base no menor erro de regressão nos dados conhecidos.

No final, meu modelo pode ser descrito passo a passo assim:

  1. Upload de dados econômicos do stlouisfed (cerca de 10 mil indicadores).
  2. Preobrazeum dados para uma forma estacionária e normalize.
  3. Escolhemos um modelo linear do índice S&P 500, resolvido analiticamente pelo método RMS (regressão linear).
  4. Escolhemos a duração do histórico (1960 - Q2 2015) e dividimos em um segmento de treinamento (1960 - Q4 1999) e um segmento de teste (Q1 2000 - Q2 2015).
  5. Começamos as previsões a partir de 1960 + N + 1, onde N*4 é o número inicial de valores trimestrais conhecidos do S&P 500.
  6. Nos primeiros N dados, um modelo linear é construído y_mod = a + b*x para cada indicador econômico, onde y_mod é o modelo S&P 500 e x é um dos indicadores econômicos.
  7. Prevemos N + 1 bar com cada modelo.
  8. Calculamos os erros de previsão de N + 1 barras por cada modelo. Lembramos desses erros.
  9. Aumentamos o número de valores conhecidos do S&P 500 em 1, ou seja, N + 1 e repita os passos 6-9 até chegarmos ao final do segmento de treinamento (Q4 1999). Nesta etapa, armazenamos os erros de previsão de 1960 + N +1 ao quarto trimestre de 1999 para cada indicador econômico.
  10. Começamos a testar o modelo no segundo período da história (Q1 2000 - Q2 2015).
  11. Para cada uma das 10 mil entradas, calculamos o erro padrão das previsões para 1960 - Q4 1999.
  12. De 10 mil entradas, selecionamos aquela que teve a menor previsão RMS para 1960 - Q4 1999.
  13. Construímos um modelo linear y_mod = a + b*x para cada indicador econômico para 1960 - Q4 1999.
  14. Prevemos o primeiro trimestre de 2000 por cada modelo.
  15. A previsão da entrada selecionada com o menor RMS de previsões para o intervalo de tempo anterior (1960 - Q4 1999) é escolhida como nossa principal previsão do Q1 2000.
  16. Calculamos os erros de previsão de todas as entradas para o primeiro trimestre de 2000 e os adicionamos ao RMS das mesmas entradas para o intervalo de tempo anterior (1960 - quarto trimestre de 1999).
  17. Passe para o segundo trimestre de 2000 e repita as etapas 12 a 17 até chegarmos ao final da área de teste (2º trimestre de 2015) com um valor desconhecido para o S&P 500, que é nosso principal objetivo de previsão.
  18. Acumulamos erros de previsão para Q1 2000 - Q4 2014 feitos pelas entradas com o menor desvio padrão das previsões nos segmentos anteriores. Esse erro (err2) é nosso modelo de erro de previsão fora da amostra.

Em suma, a escolha de um preditor depende de seu RMS das previsões anteriores do S&P 500. Não há previsão de futuro. O preditor pode mudar ao longo do tempo, mas no final do segmento de teste, ele basicamente para de mudar. Meu modelo selecionou PPICRM com um atraso de 2 trimestres como a primeira entrada para prever Q2 2015. A regressão linear do S&P 500 com a entrada PPICRM(2) selecionada para 1960 - Q4 2014 é mostrada abaixo. Círculos pretos - regressão linear. Círculos multicoloridos - dados históricos para 1960 - Q4 2014. A cor do círculo indica a hora.


Previsões estacionárias do S&P 500 (linha vermelha):

Previsões do S&P 500 em forma bruta (linha vermelha):

O gráfico mostra que o modelo prevê o crescimento do S&P 500 no segundo trimestre de 2015. Adicionar uma segunda entrada aumenta o erro de previsão:

1 erro1=0,900298 erro2=0,938355 PPICRM (2)

2 err1=0,881910 err2=0,978233 PERMIT1 (4)

onde err1 é o erro de regressão. É óbvio que diminui com a adição de uma segunda entrada. err2 é o erro de previsão quadrático médio dividido pelo erro de previsão aleatório. Ou seja, err2>=1 significa que a previsão do meu modelo não é melhor do que as previsões aleatórias. err2<1 significa que a previsão do meu modelo é melhor do que as previsões aleatórias.

PPICRM = Índice de Preços ao Produtor: Materiais Brutos para Processamento Adicional

PERMIT1 = Novas Unidades Habitacionais Privadas Autorizadas por Alvarás de Construção - Em Estruturas com 1 Unidade

O modelo descrito acima pode ser reformulado desta forma. Reunimos 10 mil economistas e pedimos que prevejam o mercado para o próximo trimestre. Cada economista apresenta sua própria previsão. Mas em vez de escolher uma previsão com base no número de livros que escreveram ou no número de Prêmios Nobel que ganharam no passado, esperamos alguns anos coletando suas previsões. Após um número significativo de previsões, vemos qual economista é mais preciso e começamos a acreditar em suas previsões até que algum outro economista o ultrapasse em precisão.

Federal Reserve Economic Data - FRED - St. Louis Fed
Federal Reserve Economic Data - FRED - St. Louis Fed
  • fred.stlouisfed.org
Download, graph, and track 240,000 economic time series from 77 sources.
 
gpwr:
A continuar ...
Não é embaraçoso que o governo americano em geral e o Comitê de Mercado Aberto em particular tenham sido repetidamente suspeitos de falsificar e manipular as estatísticas macroeconômicas do mercado de trabalho e do PIB dos EUA a fim de influenciar os mercados financeiros?
 
Demi:
É confuso que o governo americano em geral e o Comitê de Mercado Aberto em particular tenham sido repetidamente suspeitos de falsificar e manipular as estatísticas macroeconômicas do mercado de trabalho e do PIB dos EUA a fim de influenciar os mercados financeiros?
Sim, é embaraçoso. Também é desconcertante que os dados publicados sejam ajustados muitas vezes após seu lançamento. Mas, por outro lado, os comerciantes reagem aos dados que lhes são dados pelo governo dos EUA, movendo o mercado em uma ou outra direção, quer esses dados sejam falsificados ou incompletos ou prematuros. Portanto, a técnica de prever o mercado com base nestes dados deve, em princípio, funcionar.
 
gpwr:
Sim, é confuso. Também é confuso o fato de que os dados publicados são ajustados muitas vezes após sua liberação. Mas, por outro lado, os comerciantes reagem aos dados que lhes são dados pelo governo dos EUA, movendo o mercado em uma ou outra direção, quer esses dados sejam falsificados ou incompletos ou prematuros. Portanto, a técnica de prever o mercado com base nestes dados deve, em princípio, funcionar.

Você está interessado apenas no S&P ou ele é apenas tomado como exemplo?

É que a S&P tem um padrão de movimento peculiar, não muito diferente da relação da moeda.

 
Urain:

Você está interessado apenas no S&P ou ele é apenas tomado como exemplo?

É que a S&P tem um padrão peculiar de movimento, não diferente da relação entre as moedas.

Ele é tomado como exemplo devido à facilidade de encontrar (publicamente disponível) dados de entrada. Qualquer coisa pode ser modelada desta forma: a economia russa, taxas de câmbio, etc. Os preços de mercado são mais difíceis de se prever porque há muito barulho neles. Prever processos físicos é muito mais fácil.
 
gpwr:
Sim, é confuso. Também é confuso o fato de que os dados publicados são ajustados muitas vezes após a sua publicação. Mas, por outro lado, os comerciantes reagem aos dados que o governo dos EUA lhes fornece, movendo o mercado em uma direção ou outra, quer esses dados sejam falsificados ou incompletos ou prematuros. Portanto, a técnica de prever o mercado com base nestes dados deve, em princípio, funcionar.

OK, vamos dar uma olhada. Eu também tenho feito isso.

Um persistente teste de avanço

 
gpwr:

Portanto, a tarefa de prever o índice S&P 500 com base nos dados econômicos disponíveis.

Um tema bastante interessante. Eu tentei fazer indicadores baseados no arquivo de dados: emprego, construção de novas casas, vendas de novas casas etc. E você sabe, você pode ver a olho nu que alguns dados têm alguma correlação com o mercado de ações. Mas, parece não haver correlação com o mercado de moedas. Tenho usado algumas estatísticas básicas dos EUA.

Você não acha que você escolheu muitos tipos de dados? Na minha opinião, é preciso excluir os dados sem importância dos que valem a pena, os que afetam o mercado.

Entretanto, não estou familiarizado com a análise neural. Comecei a ler sobre isso, mas não encontrei nenhuma explicação clara sobre seu funcionamento.

 
O algoritmo de regressão ajudará a prever qualquer indicador a partir de qualquer dado, mesmo que não haja uma relação óbvia entre eles
 
forexman77:

É um tema bastante interessante. Eu tentei fazer indicadores baseados no arquivo de dados: emprego, construção de casas novas, vendas de casas novas etc. E você sabe, você pode ver a olho nu que alguns dados têm alguma correlação com o mercado de ações. Mas, parece não haver correlação com o mercado de moedas. Tenho usado algumas estatísticas básicas dos EUA.

Você não acha que você escolheu muitos tipos de dados? Na minha opinião, é preciso excluir os dados sem importância dos que valem a pena, aqueles que afetam o mercado.


Grandes ou pequenas quantidades de dados de entrada são todos relativos.

A outra é mais importante.

Todas as entradas se enquadram em duas categorias:

  • aqueles com impacto sobre a variável-alvo
  • aqueles que não têm influência ou têm pouca influência.

Eu uso deliberadamente a palavra influência em vez de correlação. A correlação é uma ferramenta vazia porque a correlação sempre tem algum valor e nenhum valor é NA, o que é fundamental para determinar o impacto dos dados brutos sobre a variável alvo.

As variáveis que não têm (tendo um baixo impacto - note que esta é uma característica qualitativa) são ruídos na determinação do efeito sobre a variável alvo. A armadilha aqui é que começando com alguma quantidade não determinada algoritmicamente, este ruído "obstrui" as variáveis importantes e então as variáveis "importantes" não podem ser extraídas algoritmicamente desta quantidade agregada.

Portanto, é preciso olhar manualmente toda a lista de variáveis de entrada e decidir intuitivamente, ou com base em alguma outra consideração, que "esta variável de entrada é susceptível de afetar e esta provavelmente não".

Conheço várias dúzias de algoritmos para determinar a importância das variáveis, que experimentei em um conjunto a partir de meu papel e livro (até 100 variáveis de entrada). O resultado é exatamente como descrito. Selecionei manualmente alguma lista, depois filtrei-a com o algoritmo e consegui a lista. E o valor de tal lista é fundamental: modelos que utilizam tal conjunto de dados de entrada "influenciadores" (utilizando 3 tipos diferentes de modelos) NÃO têm a propriedade de sobre-aprendizagem, que é o principal problema. O excesso de equipamento é a principal conseqüência do uso de dados de entrada "ruidosos".

PS.

A estacionariedade não tem nenhum papel em meus modelos, que são randomForest, ada, SVM.

 
gpwr:

...

.... Nenhum modelo funcionará sem estacionaridade.

...

A exigência de estacionaridade é muito rígida e completamente injustificada.

.

E os modelos "não estacionários" funcionam muito bem ;)

 
transcendreamer:
Um algoritmo de regressão pode ajudar a prever qualquer indicador a partir de qualquer dado, mesmo que não haja uma relação explícita entre eles
Isto pode ser dito de qualquer modelo, não apenas de regressão, mas também de modelos neurais, ARMA e outros. Se não houver relação entre entradas e saídas, qualquer modelo gerará uma previsão, apenas imprecisa.