Previsão de mercado com base em indicadores macroeconômicos - página 5

 
gpwr:

É difícil de explicar em poucas palavras. Leia aqui primeiro

https://ru.wikipedia.org/wiki/%D0%92%D0%B7%D0%B0%D0%B8%D0%BC%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F

e depois aqui (o capítulo sobre informação mútua, onde a fórmula é dada):

http://www.jclinbioinformatics.com/content/2/1/16

Como são calculadas as informações mútuas e a entropia?

ЗЫ А сори нашёл https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%8D%D0%BD%D1%82%D1%80%D0%BE%D0%BF%D0%B8%D1%8F

Информационная энтропия — Википедия
  • ru.wikipedia.org
Информацио́нная энтропи́я — мера неопределённости или непредсказуемости информации, неопределённость появления какого-либо символа первичного алфавита. При отсутствии информационных потерь численно равна количеству информации на символ передаваемого сообщения. Например, в последовательности букв, составляющих какое-либо предложение на русском...
 

Aqui estão alguns exemplos. Índice Dow Jones com dados da folha de pagamento Non-Farm.

As setas marcam o ponto pivô, os dados incluem um histórico de mais de 20 anos.

O padrão aconteceu uma vez, e é possível encontrar outro no intervalo de 2000-2001. É possível programá-lo, mas dois sinais em vinte anos é muito pouco para estatísticas.

 
gpwr:
Você pode dizer isso sobre qualquer modelo, não apenas regressão, mas também modelos neurais, ARMA e outros. Se não houver relação entre entradas e saídas, qualquer modelo gerará uma previsão, apenas imprecisa.

Concordo, as redes neurais são ainda melhores, eu não estava claro na época

A regressão é útil para testar rapidamente uma idéia de se algo pode ser feito com os dados

ou seja, para construir rapidamente - checar um modelo empírico

mas as relações podem ser "inexistentes" ou inobserváveis indiretamente

Uma vez eu construí tal modelo:

Índice MICEX + Tesouros 5 anos + LIBOR 3 meses + preço Brent + EU ZVR + outra coisa

acontece que esta combinação é um preditor relativamente bom do canadense

por quê? qual é a conexão? ninguém sabe...

 

Meu cálculo de informações mútuas:

function I = KMI(x,y,h)
% Calculate Mutual Information between x and y based on Gaussian kernels
n=numel(y);
if nargin<3
    h=(4/3/n)^0.2;
end
q=1/(2*h^2);
I=0;
for i=1:n
    Mx=1;
    My=1;
    Jxy=1;
    for j=1:n
        if j>i
            Kx(i,j)=exp(-q*(x(i)-x(j))^2);
            Ky(i,j)=exp(-q*(y(i)-y(j))^2);
            Kx(j,i)=Kx(i,j);
            Ky(j,i)=Ky(i,j);
        end
        if i~=j
            Mx=Mx+Kx(i,j);
            My=My+Ky(i,j);
            Jxy=Jxy+Kx(i,j)*Ky(i,j);
        end
    end
    I=I+log(n*Jxy)-log(Mx)-log(My);
end
I=I/n;
 
forexman77:

Aqui estão alguns exemplos. Índice Dow Jones com dados da folha de pagamento Non-Farm.

As setas marcaram o ponto pivô, os dados incluem um histórico de mais de 20 anos.

O padrão aconteceu uma vez, e é possível encontrar outro no intervalo de 2000-2001. É possível programar isto, mas dois sinais para vinte anos é muito pouco para estatísticas.

Para utilizar indicadores macroeconômicos para o comércio de alta freqüência, devemos negociar por datas de sua liberação. Ou seja, tendo um modelo destes indicadores, prevemos seu próximo valor, comparamos com o valor publicado e abrimos uma posição imediatamente antes da divulgação da notícia. Para ser honesto, porém, não estou interessado em tal comércio. Estou mais interessado em prever os acidentes. Todos podem lucrar em um mercado em ascensão, mas evitar perdas em acidentes é uma arte que requer a capacidade de distinguir o início de um acidente de uma correção.

Aqui está uma imagem mais interessante. Antes dos acidentes, o número de casas PERMIT1 permitidas a serem construídas estava caindo (as linhas cinzas verticais representam recessões históricas):

A única recessão antes da qual o número de casas permitidas a serem construídas não caiu drasticamente foi a recessão de 2002-2003. Alguns economistas argumentam que tecnicamente esse período de tempo não foi uma recessão porque não houve dois trimestres consecutivos de crescimento negativo do PIB. Mas o preço de mercado ainda caiu bastante acentuadamente (bolha ponto com). Meu modelo é muito ruim em prever 2002-2003. O que é necessário é um indicador adicional que seja capaz de prever este período.

Aqui está outro exemplo interessante: a curva de juros das obrigações = GS5-GS3M, prediz bem as recessões.

 
transcendreamer:

Uma vez eu construí um modelo como este:

Índice MICEX + Tesouros 5 anos + LIBOR 3 meses + preço do BRENT + EU ZVR + outra coisa

acontece que esta combinação é um preditor relativamente bom do canadense

por quê? qual é a conexão? ninguém sabe...

))) E como você "previu" o canadoyen com isso?

Além disso, eu até SABIA "qual é a conexão", mas a questão é COMO você previu o Kanadoyen com ele?

Digamos que você tem um desvio da previsão em relação à taxa real da canadooena e este modelo "funciona" - e a seguir? Como você prevê que a taxa de câmbio do canadooen irá para a taxa deste sintético, ou a taxa do sintético irá para a taxa do canadooen ou ambos irão um contra o outro? Como?

 
gpwr:

Para utilizar indicadores macroeconômicos para o comércio de alta freqüência, é necessário negociar até sua data de lançamento. Ou seja, tendo um modelo destes indicadores, prevemos seu próximo valor, comparamos com a estimativa publicada e abrimos uma posição imediatamente antes do lançamento da notícia. Para ser honesto, porém, não estou interessado em tal comércio. Estou mais interessado em prever os acidentes. Todos podem lucrar em um mercado em ascensão, mas evitar perdas em acidentes é uma arte que requer a capacidade de distinguir o início de um acidente de uma correção.

Aqui está uma imagem mais interessante. Antes dos acidentes, o número de casas PERMIT1 permitidas a serem construídas estava caindo (as linhas cinzas verticais representam recessões históricas):

A única recessão antes da qual o número de casas permitidas a serem construídas não caiu drasticamente foi a recessão de 2002-2003. Alguns economistas argumentam que tecnicamente esse período de tempo não foi uma recessão porque não houve dois trimestres consecutivos de crescimento negativo do PIB. Mas o preço de mercado ainda caiu bastante acentuadamente (bolha ponto com). Meu modelo é muito ruim em prever 2002-2003. O que é necessário é um indicador adicional que possa prever este período.

Aqui está outro exemplo interessante: a curva de juros, prevê bem as recessões.

Em relação aos acidentes. Abaixo está um gráfico do Dow Jones com asvendas de casas novas e os dadosda ADP-EMPL-SEC.

O ADP previu uma boa queda em 2007, ou melhor, ela caiu em sincronia com o Dow Jones.

É interessante notar que as vendas de casas novas quebraram a tendência no final de 2005, mas o índice ainda subiu depois disso, mas já havia um sinal de que nem tudo estava bem no mercado.

Em relação às estratégias. Poder-se-ia tentar:

  1. Um baseado em expectativas e dados reais. (O problema é que até agora eu só encontrei dados reais e nenhum dado histórico baseado em expectativas, previsões).
  2. Somente dados intraday reais.
  3. Somente dados factuais a longo prazo.

P.S. Tenho pouca experiência em programação. Eu leio os dados do arquivo em int init() construo buffer uma vez e depois preencho buffer indicador com datas correspondentes. Em meu Expert Advisor recebo dados indicadores uma vez por dia. Com este projeto, a velocidade de otimização não é ruim.

O problema é se usarmos dados intraday para construir castiçais usando esses dados, se disponíveis. Neste caso, a leitura do arquivo será muito longa.

Que equações você usa na função que você deu?

 

Para aqueles que leram este tópico, confira meu primeiro post, eu o atualizei há alguns dias.

Para qualquer pessoa interessada em tentar prever o mercado manualmente usando indicadores econômicos, aqui está uma lista de indicadores: https://www.conference-board.org/data/bci/index.cfm?id=2160

É o seguinte:

1.BCI-01Média semanal de horas, fabricação0.2781
2.BCI-05Média semanal de reivindicações iniciais de seguro-desemprego0.0334
3.BCI-08Novos pedidos dos fabricantes, bens de consumo e materiais0.0811
4.BCI-130Índice de novos pedidos do ISM0.1651
5.BCI-33Novos pedidos dos fabricantes, bens de capital não-defensivos excluindo aeronaves0.0356
6.BCI-29Licenças de construção, novas unidades habitacionais privadas0.0272
7.BCI-19Preços de ações, 500 ações ordinárias0.0381
8.BCI-107Índice de crédito líder0.0794
9.BCI-129spread das taxas de juros, títulos do Tesouro a 10 anos menos fundos federais0.1069
10.BCI-125Avg. exposição do consumidor às condições comerciais e econômicas0.1551

É interessante que o fedor ressurge considerando o S&P 500 como o principal indicador, como se ele previsse a economia ao invés do contrário. O único indicador principal nesta lista, em minha opinião, é o de Licenças de Construção, mas é o que tem menos peso entre todos os outros indicadores. Aparentemente, o Fed não sabe o que está fazendo e, portanto, não pode prever a próxima recessão e impedi-la com sua política monetária.

Description of Components | The Conference Board
  • www.conference-board.org
The composite indexes of leading, coincident, and lagging indicators produced by The Conference Board are summary statistics for the U.S. economy. They are constructed by averaging their individual components in order to smooth out a good part of the volatility of the individual series.  Historically, the cyclical turning points in the leading...
 
gpwr:

Meu cálculo de informações mútuas:

Em mql vai algo parecido com isto.

struct SDoubleArrayKMI{ double m[]; };
//+------------------------------------------------------------------+
double KMI(const double &x[],const double &y[])
  {
   return(KMI(x,y,pow(4./3./ArraySize(y),0.2)));
  }
//+------------------------------------------------------------------+
double KMI(const double &x[],const double &y[],double h)
  {
// Calculate Mutual Information between x and y based on Gaussian kernels
   int n=ArraySize(y);   

   SDoubleArrayKMI Kx[],Ky[]; ArrayResize(Kx,n); ArrayResize(Ky,n);
   for(int i=0;i<n;i++) { ArrayResize(Kx[i].m,n); ArrayResize(Ky[i].m,n); }
//---

   double q=1/(2*h*h);
   double I=0;
   for(int i=0;i<n;i++)
     {
      double Mx=1;
      double My=1;
      double Jxy=1;
      for(int j=0;j<n;j++)
        {
         if(j>i)
           {
            Kx[i].m[j]=exp(-q*pow(x[i]-x[j],2));
            Ky[i].m[j]=exp(-q*pow(y[i]-y[j],2));
            Kx[j].m[i]=Kx[i].m[j];
            Ky[j].m[i]=Ky[i].m[j];
           }
         if(i!=j)
           {
            Mx+=Kx[i].m[j];
            My+=Ky[i].m[j];
            Jxy+=Kx[i].m[j]*Ky[i].m[j];
           }
        }
      I+=log(n*Jxy)-log(Mx)-log(My);
     }
   return(I/n);
  }
Arquivos anexados:
 
gpwr:

Meu cálculo de informações mútuas:

Obrigado pela implementação. Vou estudá-la.

Urain:

Em mql vai algo parecido com isto.


Duplo graças a você Nikolay! Regras MQL!