Previsione di mercato basata su indicatori macroeconomici - pagina 5

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

Ecco alcuni esempi. Indice Dow Jones con dati sui salari non agricoli.

Le frecce hanno segnato il pivot point, i dati includono una storia di oltre 20 anni.

Il modello si è verificato una volta, ed è possibile trovarne un altro nell'intervallo 2000-2001. È possibile programmarlo, ma due segnali in vent'anni sono troppo pochi per le statistiche.

 
gpwr:
Lo si può dire di qualsiasi modello, non solo di regressione, ma anche di modelli neurali, ARMA e altri. Se non c'è una relazione tra input e output, qualsiasi modello genererà una previsione, solo in modo impreciso.

Sono d'accordo, le reti neurali sono ancora meglio, non sono stato chiaro al momento

la regressione è utile per testare rapidamente un'idea se si può fare qualcosa con i dati

cioè per costruire-verificare rapidamente un modello empirico

ma le relazioni possono essere "inesistenti" o indirette non osservabili

Una volta ho costruito un modello simile:

Indice MICEX + Treasuries a 5 anni + LIBOR a 3 mesi + prezzo di BRENT + EU ZVR + qualcos'altro

si scopre che questa combinazione è un predittore relativamente buono del canadese

Perché? Qual è il legame? Nessuno lo sa...

 

Il mio calcolo dell'informazione reciproca:

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:

Ecco alcuni esempi. Indice Dow Jones con dati sui salari non agricoli.

Le frecce hanno segnato il pivot point, i dati includono una storia di oltre 20 anni.

Il modello si è verificato una volta, ed è possibile trovarne un altro nell'intervallo 2000-2001. È possibile programmare questo, ma due segnali per vent'anni è troppo poco per le statistiche.

Per utilizzare gli indicatori macroeconomici per il trading ad alta frequenza, dovremmo fare trading in base alle date del loro rilascio. Cioè, avendo un modello di questi indicatori, prevediamo il loro prossimo valore, lo confrontiamo con il valore pubblicato e apriamo una posizione appena prima del rilascio della notizia. Ad essere onesti, però, non sono interessato a questo tipo di commercio. Sono più interessato a prevedere gli incidenti. Tutti possono trarre profitto da un mercato in crescita, ma evitare le perdite nei crolli è un'arte che richiede la capacità di distinguere l'inizio di un crollo da una correzione.

Ecco un'immagine più interessante. Prima dei crolli, il numero di case PERMIT1 autorizzate ad essere costruite era in calo (le linee verticali grigie rappresentano le recessioni storiche):

L'unica recessione prima della quale il numero di case ammesse alla costruzione non è sceso bruscamente è stata quella del 2002-2003. Alcuni economisti sostengono che tecnicamente quel periodo di tempo non era una recessione perché non c'erano due trimestri consecutivi di crescita negativa del PIL. Ma il prezzo di mercato è ancora sceso abbastanza bruscamente (bolla dot com). Il mio modello è piuttosto scadente nel prevedere il 2002-2003. Quello che serve è un indicatore aggiuntivo che sia in grado di prevedere questo periodo.

Ecco un altro esempio interessante: curva di rendimento delle obbligazioni = GS5-GS3M, predice bene le recessioni.

 
transcendreamer:

Una volta ho costruito un modello come questo:

Indice MICEX + Treasuries a 5 anni + LIBOR a 3 mesi + prezzo del Brent + EU ZVR + qualcos'altro

si scopre che questa combinazione è un predittore relativamente buono del canadese

Perché? Qual è il legame? Nessuno lo sa...

))) E come ha "previsto" il canadoyen con questo?

Inoltre, so anche "qual è la connessione", ma la domanda è come hai previsto kanadoyen con esso?

Diciamo che avete una deviazione della previsione dal tasso reale della canadooena e questo modello "funziona" - e poi? Come prevedete che il tasso di cambio del canadooen andrà al tasso di questo sintetico, o il tasso del sintetico andrà al tasso del canadooen o andranno entrambi contro l'altro? Come?

 
gpwr:

Per utilizzare gli indicatori macroeconomici per il trading ad alta frequenza, è necessario fare trading entro la loro data di rilascio. Cioè, avendo un modello di questi indicatori, prevediamo il loro prossimo valore, lo confrontiamo con la stima pubblicata e apriamo una posizione poco prima del rilascio della notizia. Ad essere onesti, però, non sono interessato a questo tipo di commercio. Sono più interessato a prevedere gli incidenti. Tutti possono trarre profitto da un mercato in crescita, ma evitare le perdite nei crolli è un'arte che richiede la capacità di distinguere l'inizio di un crollo da una correzione.

Ecco un'immagine più interessante. Prima dei crolli, il numero di case PERMIT1 autorizzate ad essere costruite era in calo (le linee verticali grigie rappresentano le recessioni storiche):

L'unica recessione prima della quale il numero di case ammesse alla costruzione non è sceso bruscamente è stata quella del 2002-2003. Alcuni economisti sostengono che tecnicamente quel periodo di tempo non era una recessione perché non c'erano due trimestri consecutivi di crescita negativa del PIL. Ma il prezzo di mercato è ancora sceso abbastanza bruscamente (bolla dot com). Il mio modello è piuttosto scadente nel prevedere il 2002-2003. Quello che serve è un indicatore aggiuntivo che possa prevedere questo periodo.

Ecco un altro esempio interessante: la curva dei rendimenti, predice bene le recessioni.

Per quanto riguarda gli incidenti. Qui sotto c'è un grafico del Dow Jones con levendite di nuove case e i datiADP-EMPL-SEC.

L'ADP ha previsto un buon calo nel 2007, o meglio è caduto in sincronia con il Dow-Jones.

È interessante notare che le vendite di nuove case hanno rotto la tendenza alla fine del 2005, ma l'indice è salito ancora dopo, ma allora c'era già un segnale che tutto non andava bene nel mercato.

Per quanto riguarda le strategie. Si potrebbe provare:

  1. Uno basato su aspettative e dati reali. (Il problema è che finora ho trovato solo dati reali e nessun dato storico basato su aspettative, previsioni).
  2. Solo dati intraday reali.
  3. Solo dati reali a lungo termine.

P.S. Ho poca esperienza di programmazione. Leggo i dati dal file in int init() una volta costruito il buffer e riempio il buffer dell'indicatore con le date. Nel mio Expert Advisor ricevo i dati dell'indicatore una volta al giorno. Con questa ottimizzazione del design la velocità non è male.

Il problema è se usiamo dati intraday per costruire candele utilizzando questi dati, se disponibili. In questo caso la lettura del file sarà molto lunga.

Quali equazioni usate nella funzione che avete dato?

 

Per coloro che leggono questo thread, controllate il mio primo post, l'ho aggiornato un paio di giorni fa.

Per chiunque sia interessato a provare a prevedere il mercato manualmente usando indicatori economici, ecco una lista di indicatori: https://www.conference-board.org/data/bci/index.cfm?id=2160

È il seguente:

1.BCI-01Ore medie settimanali, produzione0.2781
2.BCI-05Richieste iniziali settimanali medie per l'assicurazione contro la disoccupazione0.0334
3.BCI-08Nuovi ordini dei produttori, beni di consumo e materiali0.0811
4.BCI-130Indice dei nuovi ordini ISM0.1651
5.BCI-33Nuovi ordini dei produttori, beni strumentali non destinati alla difesa, esclusi gli aerei0.0356
6.BCI-29Permessi di costruzione, nuove unità abitative private0.0272
7.BCI-19Prezzi delle azioni, 500 azioni comuni0.0381
8.BCI-107Indice del credito leader0.0794
9.BCI-129Spread dei tassi d'interesse, obbligazioni del Tesoro a 10 anni meno i fondi federali0.1069
10.BCI-125Media. esposizioni dei consumatori per le condizioni economiche e commerciali0.1551

È interessante che la fed resurv consideri lo S&P 500 come l'indicatore principale, come se prevedesse l'economia piuttosto che il contrario. L'unico indicatore leader di questa lista, secondo me, è quello dei permessi di costruzione, ma ha il peso minore tra tutti gli altri indicatori. A quanto pare la Fed non sa cosa sta facendo e quindi non può prevedere la recessione in arrivo e prevenirla con la sua politica monetaria.

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:

Il mio calcolo dell'informazione reciproca:

Su mql va più o meno così.

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);
  }
File:
 
gpwr:

Il mio calcolo dell'informazione reciproca:

Grazie per l'implementazione. Lo studierò.

Urain:

In mql è qualcosa del genere.


Doppio grazie a te Nikolay! MQL regna!