Предсказание рынка на основе макроэкономических показателей - страница 5

 
gpwr:

В двух словах трудно объяснить. Почитайте сначала здесь

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

а потом здесь (глава о mutual information, там дана формула): 

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

А как высчитывается взаимная информация и энтропия? формулы есть?

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

 Вот, пожалуйста из примеров. Индекс Доу-Джонса с данными Nonfarm payrolls(Количество новых рабочих мест вне сельского хозяйства).

Стрелками отметил место разворота, данные включают историю  20 с лишним лет.

Паттерн случился один раз, ну и с натяжкой можно еще один найти в промежутке 2000-2001. Такое возможно запрограммировать, но два сигнала за двадцать лет это слишком мало, для статистики.

 
gpwr:
Так можно сказать о любой моделе, не только регрессии но и нейроных моделях, ARMA и прочих. Если связи между входами и выходом нет, любая модель сгенерирует предсказание, только неточное.

согласен, нейросети даже лучше, я нечетко написал тогда

регрессией удобно пользоваться чтобы быстро проверить идею - можно ли с этими данными что-то сделать

то есть быстро построить-посмотреть эмпирическую модель

но связи могут быть "несуществующие" или непрямые неочевидные

мне однажды я построил такую модель:

индекс ММВБ + 5-летние трэжерис + 3-месячная ЛИБОР + цена БРЕНТ + ЗВР ЕС + чтото еще

оказалось эта комбинация относительно неплохо предсказывает канадойену

почему? какая связь? никто не знает... 

 

Мой расчёт взаимной информации:

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:

 Вот, пожалуйста из примеров. Индекс Доу-Джонса с данными Nonfarm payrolls(Количество новых рабочих мест вне сельского хозяйства).

Стрелками отметил место разворота, данные включают историю  20 с лишним лет.

Паттерн случился один раз, ну и с натяжкой можно еще один найти в промежутке 2000-2001. Такое возможно запрограммировать, но два сигнала за двадцать лет это слишком мало, для статистики.

Чтобы использовать макроэкономические показатели для высоко-частотной торговли нужно торговать по датам их выпуска. То есть, имея модель этих показателей, предсказываем их следующее значение, сравнимваем с опубликованной оценкой и открываем позицию перед самым выспуском новости. Хотя честно говоря меня такая торговля не интересует. Меня более интересеует предсказание крахов. Зарабатывать на растущем рынке все могут, а избежать потерь при крахах это искусство требующее умение различать начало краха от коррекции.

Вот более интересная картинка.  Перед крахами количество разрешённых к построению домов PERMIT1 падало (вертикальные серые линии определяют исторические рецессии):

 

Единственной рецессией, перед началом которой количество разрешённых к построению домов резко не упало, была рецессия 2002-2003. Некоторые экономисты утверждают что техически это период времени не был рецессией так как не было два последовательных квартала отрицательного роста GDP. Но цена рынка всё равно упала довольно резко (dot com bubble). Моя модель довольно плохо предсказывает 2002-2003. Нужен дополнительный индикатор, который способен предсказать этот период.

Вот ещё один интересный пример: bond yield curve = GS5-GS3M, хорошо предсказывает рецессии.

 

 
transcendreamer:

мне однажды я построил такую модель:

индекс ММВБ + 5-летние трэжерис + 3-месячная ЛИБОР + цена БРЕНТ + ЗВР ЕС + чтото еще

оказалось эта комбинация относительно неплохо предсказывает канадойену

почему? какая связь? никто не знает... 

))) И как ты этим "предсказывал" канадоену?

Причем, я даже ЗНАЮ "какая связь", но вопрос - КАК ты этим предсказывал канадоену?

Вот, допустим, у тебя есть отклонение прогноза от реального курса канадоены и эта модель действительно "работает" - что дальше? Как ты предсказываешь - курс канадоены пойдет к курсу этого синтетика или курс синтетика пойдет к курсу канадоены или они оба пойдут навстречу друг-другу? Как?  

 
gpwr:

Чтобы использовать макроэкономические показатели для высоко-частотной торговли нужно торговать по датам их выпуска. То есть, имея модель этих показателей, предсказываем их следующее значение, сравнимваем с опубликованной оценкой и открываем позицию перед самым выспуском новости. Хотя честно говоря меня такая торговля не интересует. Меня более интересеует предсказание крахов. Зарабатывать на растущем рынке все могут, а избежать потерь при крахах это искусство требующее умение различать начало краха от коррекции.

Вот более интересная картинка.  Перед крахами количество разрешённых к построению домов PERMIT1 падало (вертикальные серые линии определяют исторические рецессии):

 

Единственной рецессией, перед началом которой количество разрешённых к построению домов резко не упало, была рецессия 2002-2003. Некоторые экономисты утверждают что техически это период времени не был рецессией так как не было два последовательных квартала отрицательного роста GDP. Но цена рынка всё равно упала довольно резко (dot com bubble). Моя модель довольно плохо предсказывает 2002-2003. Нужен дополнительный индикатор, который способен предсказать этот период.

Вот ещё один интересный пример: yield curve, хорошо предсказывает рецессии.

 

 По поводу крахов. Ниже график Доу-Джонса с данными New home sales(Продажи новых домов) и ADP-EMPL-SEC(Занятость).

ADP неплохо предсказал в 2007 году падение, вернее он падал синхронно с Доу-Джонсом.

Интересно отметить, что продажи новых домов сломали тренд в конце 2005, но индекс после этого еще вырос, но тогда уже появился сигнал, что на рынке не так все радужно.

По поводу стратегий. Можно попробовать:

  1. Основанную на ожиданиях и фактических данных. (Проблема, что пока нашел только данные фактические, а нет исторических данных основанных на ожиданиях, прогнозах)
  2. Только фактические данные интрадей.
  3. Только фактические данные долгосрочные.

P.S. Оптыт программирования у меня небольшой. Данные считываю с файла в  int init() один раз строю буфер и потом сверяя даты заполняю буфер индикатора. В советнике данные индикатора получаю раз в суточный период. С помощью такой конструкции скорость оптимизации неплохая.

Проблема, если использовать внутридневные данные строить по ним свечи, если таковые имеются. Тут чтение с файла будет очень долгим. 

Какие уравнения Вы используете в функции, что привели? 

 

Для тех кто читает эту ветку, посмотрите мой первый пост, я его обновил пару дней назад.

Кому интересно попробовать предсказать рынок вручную, используя экономические показатели, здесь перечень leading показателей: https://www.conference-board.org/data/bci/index.cfm?id=2160 

Он таков:

1.BCI-01Average weekly hours, manufacturing0.2781
2.BCI-05Average weekly initial claims for unemployment insurance0.0334
3.BCI-08Manufacturers' new orders, consumer goods and materials0.0811
4. BCI-130ISM new order index0.1651
5. BCI-33Manufacturers' new orders, non-defense capital goods excl. aircraft0.0356
6.BCI-29Building permits, new private housing units0.0272
7. BCI-19Stock prices, 500 common stocks0.0381
8.BCI-107Leading Credit Index0.0794
9.BCI-129Interest rate spread, 10-year Treasury bonds less federal funds0.1069
10.BCI-125Avg. consumer expactations for business and economic conditions0.1551

 

Интересно что фед резёрв считает S&P 500 лидирующим показателем как будто он предсказывает экономику, а не наоборот. Единственный, по моему мнению, лидирующий показатель в этом списке это Building Permits, но он имеет наименьший вес среди всех остальных показателей. Видимо фед резёрв не знают что они делают и поэтому толком не умеют предсказать наступающие рецессии и предовратить их своей монетарной политикой.

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:

Мой расчёт взаимной информации:

На mql это как то так.

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);
  }
Файлы:
 
gpwr:

Мой расчёт взаимной информации:

Спасибо за реализацию. Буду изучать.

Urain:

На mql это как то так.


Двойное тебе спасибо Николай! MQL рулит!