Predicción de mercado basada en indicadores macroeconómicos - página 5

 
gpwr:

Es difícil de explicar en pocas palabras. Lea primero aquí

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

y luego aquí (el capítulo sobre la información mutua, donde se da la fórmula):

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

¿Cómo se calcula la información mutua y la entropía?

ЗЫ А сори нашёл 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
Информацио́нная энтропи́я — мера неопределённости или непредсказуемости информации, неопределённость появления какого-либо символа первичного алфавита. При отсутствии информационных потерь численно равна количеству информации на символ передаваемого сообщения. Например, в последовательности букв, составляющих какое-либо предложение на русском...
 

He aquí algunos ejemplos. Índice Dow Jones con datos de nóminas no agrícolas.

Las flechas marcan el punto de giro, los datos incluyen una historia de más de 20 años.

El patrón se produjo una vez, y es posible encontrar otro en el intervalo de 2000-2001. Es posible programarlo, pero dos señales en veinte años es muy poco para las estadísticas.

 
gpwr:
Eso se puede decir de cualquier modelo, no sólo de regresión, sino también de modelos neuronales, ARMA y otros. Si no hay relación entre las entradas y las salidas, cualquier modelo generará una predicción, sólo que inexacta.

Estoy de acuerdo, las redes neuronales son aún mejores, no lo tuve claro en su momento

la regresión es útil para probar rápidamente una idea de si se puede hacer algo con los datos

es decir, construir-comprobar rápidamente un modelo empírico

pero las relaciones pueden ser "inexistentes" o indirectamente inobservables

Una vez construí un modelo de este tipo:

Índice MICEX + bonos del Tesoro a 5 años + LIBOR a 3 meses + precio del Brent + ZVR de la UE + algo más

resulta que esta combinación es un predictor relativamente bueno de la

¿Por qué? ¿Cuál es la conexión? Nadie lo sabe...

 

Mi cálculo de la información mutua:

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:

He aquí algunos ejemplos. Índice Dow Jones con datos de nóminas no agrícolas.

Las flechas marcan el punto de giro, los datos incluyen una historia de más de 20 años.

El patrón se produjo una vez, y es posible encontrar otro en el intervalo de 2000-2001. Es posible programar esto, pero dos señales durante veinte años es demasiado poco para las estadísticas.

Para utilizar los indicadores macroeconómicos en la negociación de alta frecuencia, debemos operar por las fechas de su publicación. Es decir, teniendo un modelo de estos indicadores, predecimos su próximo valor, lo comparamos con el valor publicado y abrimos una posición justo antes de la publicación de la noticia. Sin embargo, para ser sincero, no me interesa ese tipo de comercio. Me interesa más predecir los choques. Todo el mundo puede obtener beneficios en un mercado alcista, pero evitar las pérdidas en las caídas es un arte que requiere la capacidad de distinguir el comienzo de una caída de una corrección.

Aquí hay una imagen más interesante. Antes de los choques, el número de viviendas PERMIT1 que se permitía construir disminuía (las líneas verticales grises representan las recesiones históricas):

La única recesión antes de la cual el número de viviendas permitidas para ser construidas no cayó bruscamente fue la de 2002-2003. Algunos economistas argumentan que técnicamente ese periodo de tiempo no fue una recesión porque no hubo dos trimestres consecutivos de crecimiento negativo del PIB. Pero el precio del mercado siguió cayendo con fuerza (burbuja de las punto com). Mi modelo es bastante malo en la predicción de 2002-2003. Lo que se necesita es un indicador adicional que sea capaz de predecir este periodo.

He aquí otro ejemplo interesante: la curva de rendimiento de los bonos = GS5-GS3M, predice bien las recesiones.

 
transcendreamer:

Una vez construí un modelo como este:

Índice MICEX + Bonos del Tesoro a 5 años + LIBOR a 3 meses + precio del BRENT + ZVR de la UE + algo más

resulta que esta combinación es un predictor relativamente bueno de la

¿Por qué? ¿Cuál es la conexión? Nadie lo sabe...

))) ¿Y cómo has "predicho" el canadoyen con eso?

Es más, incluso SÉ "cuál es la conexión", pero la pregunta es ¿CÓMO predijo kanadoyen con ella?

Supongamos que se tiene una desviación de la previsión del tipo real de la canadooena y que este modelo "funciona", ¿qué sigue? ¿Cómo predice que el tipo de cambio del canadooen irá al tipo de este sintético, o que el tipo del sintético irá al tipo del canadooen o que ambos irán en contra? ¿Cómo?

 
gpwr:

Para utilizar los indicadores macroeconómicos en la negociación de alta frecuencia, es necesario operar antes de su fecha de publicación. Es decir, teniendo un modelo de estos indicadores, predecimos su próximo valor, lo comparamos con la estimación publicada y abrimos una posición justo antes de la publicación de la noticia. Sin embargo, para ser sincero, no me interesa ese tipo de comercio. Me interesa más predecir los choques. Todo el mundo puede obtener beneficios en un mercado alcista, pero evitar las pérdidas en las caídas es un arte que requiere la capacidad de distinguir el comienzo de una caída de una corrección.

Aquí hay una imagen más interesante. Antes de los choques, el número de viviendas PERMIT1 que se permitía construir caía (las líneas verticales grises representan las recesiones históricas):

La única recesión antes de la cual el número de viviendas permitidas para ser construidas no cayó bruscamente fue la de 2002-2003. Algunos economistas argumentan que técnicamente ese periodo de tiempo no fue una recesión porque no hubo dos trimestres consecutivos de crecimiento negativo del PIB. Pero el precio del mercado siguió cayendo con fuerza (burbuja de las punto com). Mi modelo es bastante malo en la predicción de 2002-2003. Lo que se necesita es un indicador adicional que pueda predecir este periodo.

He aquí otro ejemplo interesante: la curva de rendimiento, predice bien las recesiones.

En cuanto a los choques. A continuación se muestra un gráfico del Dow Jones con lasventas de viviendas nuevas y los datos deADP-EMPL-SEC.

El ADP predijo una buena caída en 2007, o más bien cayó en sincronía con el Dow Jones.

Es interesante observar que las ventas de viviendas nuevas rompieron la tendencia a finales de 2005, aunque el índice siguió subiendo después, pero entonces ya había una señal de que no todo iba bien en el mercado.

En cuanto a las estrategias. Se podría intentar:

  1. Uno basado en las expectativas y los datos reales. (El problema es que hasta ahora sólo he encontrado datos reales y ningún dato histórico basado en expectativas, previsiones).
  2. Sólo datos reales intradía.
  3. Sólo datos objetivos a largo plazo.

P.S. Tengo poca experiencia en programación. Leo los datos del archivo en int init() construyo el buffer una vez y luego lleno el buffer del indicador con las fechas correspondientes. En mi Asesor Experto obtengo los datos del indicador una vez al día. Con este diseño la velocidad de optimización no es mala.

El problema es cuando se utilizan datos intradía para construir velas utilizando estos datos, si están disponibles. En este caso, la lectura del archivo será muy larga.

¿Qué ecuaciones utiliza en la función que ha dado?

 

Para los que lean este hilo, revisen mi primer post, lo actualicé hace un par de días.

Para quien esté interesado en tratar de predecir el mercado manualmente utilizando indicadores económicos, he aquí una lista de indicadores: https://www.conference-board.org/data/bci/index.cfm?id=2160

Es lo siguiente:

1.BCI-01Media de horas semanales, industria manufacturera0.2781
2.BCI-05Promedio semanal de solicitudes iniciales de seguro de desempleo0.0334
3.BCI-08Nuevos pedidos de los fabricantes, bienes de consumo y materiales0.0811
4.BCI-130Índice de nuevos pedidos del ISM0.1651
5.BCI-33Nuevos pedidos de los fabricantes, bienes de capital no destinados a la defensa, excluyendo aeronaves0.0356
6.BCI-29Permisos de construcción, nuevas viviendas privadas0.0272
7.BCI-19Precios de las acciones, 500 acciones ordinarias0.0381
8.BCI-107Índice de crédito principal0.0794
9.BCI-129Diferencia de tipos de interés, bonos del Tesoro a 10 años menos fondos federales0.1069
10.BCI-125Avg. riesgos para el consumidor por las condiciones comerciales y económicas0.1551

Es interesante que la Fed resurva que el S&P 500 es el indicador principal como si predijera la economía y no al revés. En mi opinión, el único indicador adelantado de esta lista es el de permisos de construcción, pero es el que menos peso tiene entre todos los demás indicadores. Por lo visto, la Fed no sabe lo que hace y, por tanto, no puede predecir la recesión que se avecina y evitarla con su política 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:

Mi cálculo de la información mutua:

En mql es algo así.

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

Mi cálculo de la información mutua:

Gracias por la implementación. Lo estudiaré.

Urain:

En mql es algo así.


¡Doblemente gracias a ti Nikolay! ¡El MQL manda!
Razón de la queja: