Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 694

 

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

Я просто Оуел, если честно от результатов которые получил. Да из 110 входов были выбраны от 3 до 5 при разных обстоятельствах, и соотвественно модели которые получились оказались достаточно не большими, НО как они отработали это что то с чем то. Во первых, ВСЕ модели построенные на выбраных входах прошли мой тест на 100%. Такой результат я смог получить лишь однажды и то походу случайно, а тут прям стабильно все........

Да, сами полиномы оказались уж больно маленькими но какая хрен разница. На войне все средства хороши. Знамо будем лупить по рынку из небольших полиномов, если они работают, яж не виноват......

Но это опять же всё на скорую руку и для подтверждения теории нужно больше времени, однако вот наглядный пример работы ТС на участке ООС за последние две недели.

Это конечно же не грааль обсуждаемый в соседней ветке, но результат на лидцо, Эквити стабильно выше нуля на всём участке ООС!!!!

Хочу сказать всем спасибо, кто откликнулся на мою просьбу помочь с R. Вы мне реально помогли съкономить массу времени. Теперь осталось выруливать свой сигнал в зелёную зону!!!!!

 
Dr. Trader:

jPrediction например шкалирует данные в интервал [-1;1], и уже на этих числах обучается. Можно и в R шкалировать к этому-же интервалу перед оценкой входов.

Методы оценки основанные на деревьях наверное не изменят результат, лесам не особо важно в каком интервале пришли данные, но лучше проверить. vtreat тоже не привередлив к интервалу. 


Но вообще, он говорит о нелинейном преобразовании входов ещё до подачи в нейронку. Нейронки очень чувствительны ко входам, и если как-то особо обработать входные данные - её результаты могут улучшиться. Например слышал такой трюк - преобразовать входы через сигмоиду.

Построенные модели уже имеют такую функцию, если я не ошибаюсь. Выглядет она вот так....

double sigmoid(double x) {
   if (MathAbs(x) < 1.0) {
      return 2.0 * signum(x) - x;
   }
   return signum(x);
}
 
Mihail Marchukajtes:

Выглядет она вот так....

Какая-то особая "Сигмоида Решетова" :)

Вот интересная картинка с разными преобразованиями данных.
Говорят что если у всех предикторов будут примерно одинаковые столбики, то нейронка очень обрадуется и легко обучится. Последняя треть предикторов на scale()x2->Sigmoid() выглядит вроде неплохо, но с первой половиной предикторов нужно что-то делать, а то нейронка подавится.
А если посмотреть boxplot на шкалирование в [-1;1] как в jPrediction, то там как-то совсем нехорошо.


Файлы:
 

Сегодня прям день Граалей, но мы то знаем как он выглядет и скольких трудов стоит чтобы держать его в руках!!!!

Не побоюсь этого слова, но сегодня я нашёл грааль для себя. Провёл неоднократные тесты и результаты меня просто паразили. Особая благодарность Dr. Trader за оказанную поддержку которая собственно и привела к открытию. Не побоюсь этого слова........ С помощью R удалось эффективно находить набор вахных предикторов, а с учётом того что целевая имеет одинаковое количество классов, то подыграв её немного (прибавив или удалив единичку) набор важных предикторов можно расширить на один, два столбца. Один раз попробовал и прям так нормально добавилось их. Далее начинаем оптить и выбираем модель с максимальными показателями результата обучения.


 Смущает конечно не великий размер полинома, но и проработает он в теории 50% интервала обучения, то бишь неделю, а мне и этого достаточно!!!!!! Но вот ведь какая штука.... И я сейчас обращаюсь здесь к тем людям, которые ищют надёжные и стабильные закономерности. Проще объяснить на примере.........

Я сохраняю таблицу данных в размере 1000 строк и 111 столбцов, где 110 предикторов и соотвественно выход. НО я не беру всю таблицу, а беру небольшой свежий участок в размере 40 записей (это 2 недели работы ТС примерно) В итоге имею обучающий набор размера 40 на 110 плюс целевая. По сути я беру срез рынка именно в этот день именно на этом интервале. Этот срез стационарен. Далее не без помощи выдающегося гения своего дела мистера Dr. Trader в среде програмирования R произвожу выбор значимых входных переменных по отношению к выходу и получаю от 3 до 5 столбцов в которых, я так понимаю, есть та самая пресловутая альфа позволяющая иметь преимущество перед другими участниками рынка. А теперь самое главное.... К чему собственно был весь этот базар. Стоит мне добавить ещё одну строчку в таблицу данных для обучения, как набор столбцов резко изменится, то есть альфа убежит в другой набор столбцов. Может быть и не сразу, а после добавления не одной, а нескольких строчек. Тобишь сигналов ТС!!!! Альфа это как раз таки та самая закономерность в чистом виде которая минимальна и достаточна для целевой функции. НО эта закономерность в не явном виде, тоесть увидеть её не вооружоным глазом крайне сложно. Именно на этом этапе и подключается ИИ и делает свою работу.

А теперь представьте как может скакать альфа на всем поле данных которое я выгружаю, если она редко содержится более чем в пяти входах, а общее поле 110 входов. Другими словами, при каждом новом срезе я получаю совершенно разные наборы предикторов. И как Вы хотите за ней угнатся да ещё и на дистанции в ГОДА!!!!!!! если её тут на недели то хрен словишь нормально....... Но Вы абсалютно правы Грааль существует, только у каждого он свой и для того чтобы его держать нужно парой прилагать не малые усилия.......

И опять же обращаясь к теоретикам демо счетов, делается это вот как.......

Я проработал теорию и сделал по ней коекакие тесты. Тесты показали хороший результат. Модели обучены ВПС-ка с роботом заряжена. Следите за моим сигналом на этой неделе и сразу будет видно чего стоит мои предположения.

 

Замечательно!

Слава R!

 
Mihail Marchukajtes:

А теперь представьте как может скакать альфа на всем поле данных которое я выгружаю, если она редко содержится более чем в пяти входах, а общее поле 110 входов. Другими словами, при каждом новом срезе я получаю совершенно разные наборы предикторов.

А теперь включите мозг )

 
Комбинатор:

А теперь включите мозг )

Если действительно последовать Вашему совету и поразмыслить над этим, то напрашивается пока только один ответ. Срез стационарный и любое его изменение просто перекидывает Вас в другое измерение (образно выражаясь) , где действуют совершенно другие законы. Именно поэтому заработать на рынке очень сложно. Это же и называется нестационарностью. Когда та информация которая способна спрогнозировать составляет лишь 5% от максимально возможного набора данных и на следующем сигнале набор может сменится координально или не сменится вообще. Причём я сохраняю дельту и объём для 11 инструментов из которых только 5% работают здесь и сейчас и когда сменятся не известно, но и понятно что когда начнётся замещение другими столбцами этот момент можно отслеживать и соотвественно определить момент когда модель сдуется...... Нужно делать больше тестов.....а времени нет...

 

OOS, 15 min tf

нашел недодумки в стратегии №2, исправил, вроде работает

осталась стр.№3 и еще RL добавился, в котором чувствую огромный потенциал но придется много думать над реализацией


 

Любопытная статья по исследованию восьми моделей машинного обучения

Specifically, we consider the following algorithms: multilayer perceptron (MLP), logistic regression, naïve Bayes, knearest neighbors, decision trees, random forests, and gradient-boosting trees. These models are applied to time series from eight data generating processes (DGPs) – reflecting different linear and nonlinear dependencies (base case). Additional complexity is introduced by adding discontinuities and varying degrees of noise. 


А вот результаты

First, we find machine learning models to achieve solid performance on unknown underlying DGPs, compared to the ambition level set by optimal forecasts. In absence of noise (base case), the results achieved with the machine learning models almost resemble those of the optimal forecast. Model-wise, MLPs and GBT provide the best results for both, linear and nonlinear DGPs. For processes with no or only small nonlinearities, the LR presents a good alternative, especially when considering its low computational cost. We find NB and single decision trees to deliver worse performance and hence recommend the aforementioned techniques for time series prediction tasks.

 

Second, it is better to include too many lagged values in the feature space than to include too few. We find most machine learning models to be fairly robust to exceeding the number of required lags suggested by the process equation of the DGP. In case of the RF, the inclusion of additional features even increases the predictive accuracy. We recommend to start with one lag and to gradually increase the number of lags monitoring the performance on a hold out set or with cross validation.

 

Third, we find jumps to have a very strong negative effect on predictive accuracy with LR being the most robust machine learning model. To mitigate the negative effects, both adding first differences to the features space (DIFF) as well as removal of jumps based on the LOF algoirthm have shown good results. We recommend the combination of both techniques.

 

Fourth, polluting the time series with noise has the most detrimental effect on predictive accuracy across all machine learning models. Again, we find that the LR is the most robust machine learning model in the presence of noise. Moreover, additional mitigation measures, such as the inclusion of first differences (DIFF) and moving averages (MA) in the feature space yield improved results.

 
СанСаныч Фоменко:

Любопытная статья по исследованию восьми моделей машинного обучения

Model-wise, MLPs and GBT provide the best results for both, linear and nonlinear DGPs. For processes with no or only small nonlinearities, the LR presents a good alternative, especially when considering its low computational cost. We find NB and single decision trees to deliver worse performance and hence recommend the aforementioned techniques for time series prediction tasks.

Прям капитаны очевидность, учитывая то что CART вообще не работает на заранее линейных задачах

Причина обращения: