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

 
Alexey Burnakov:

В том, что вы делаете есть цимус.

Однако вы попробуйте еще сделать отложенную выборку. Это же классика. Train, Test, Validation.

И еще усложните процедуру. Для каждой модели, которая как-бы хорошо работает с точки зрения обучения и тестирования, назовем эту модель X, сделайте валидацию на отложенных данных. Вы таким образом получаете представление о том, верно вы выбираете модель или нет, используя только обучение и тест. Сделайте много моделей с разными параметрами, выберите лучшие (10, 100, 1000). Провалидируйте. Вы поймете, ваша "лучшая" метрика отражается на будущих данных или нет. Только после этого в бой. 

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

 результат торговли за вчера можно посмотреть? 

А это за сегодня. Не без ошибок конечно, но в итоге вполне даже....

 

 
Mihail Marchukajtes:

А это за сегодня. Не без ошибок конечно, но в итоге вполне даже....

 

не плохо, а что это за кружки зеленые и что стрелочки означают

 
СанСаныч Фоменко:
Если имеется много значений одной случайной величины, то можно считать доверительные интервалы, а потом вместо "близкие значения" оперировать "пересечением/совпадением доверительных интервалов. 

СанСан, поясню еще разок. И всем думаю понятнее будет.

Ниже таблица - лог эксперимента. Каждый эксперимент у меня пишется в таблицу. До столбца J идут переменные. Модель, loss function обучения, инструмент, горизонт прогноза, параметры модели (GBM), параметры еще, которые не оптимизируются в caret, но я их тоже оптимизирую в цикле: количество фолдов кроссвалид., количество предикторов отобранных для обучения, рандомизация для дерева, обрубание доли прогнозов как входящих в серую зону неопредленности.

 

Потом идут мои метрики качества: на обучении (весь массив 10 лет), на тестовых фолдах кроссвалид., и на отложенных выборках. Пометил самые интересные столбцы красным. 

 

Дальше. Я могу показать лучшие модели, которые на отложенных выборках сделали офигенный плюс. Но - это жесткая подгонка!

В условиях консистентных данных и подходящего метода обучения я просто ожидаю получить связь между метрикой на отложенных выборках и метрикой на кроссвалидации (тесте). Смотрим, что у меня получилось:

 

Объективно - качество отобранных моделей на отложенной выборке (которая эмулирует период реальной торговли) почти никак не связана с метрикой качества на тесте (тестовые фолды кроссвалид.).

Выводы, друзья: если я выберу лучшую модель по следующей эвристике "модель должна быть лучше на тесте", я получаю нулевую определенность относительно того, как модель будет работать в будущем.

Это определение распространяется и на такой сценарий: я выбираю модель по эвристике "лучшая модель покажет хорошее качество на отложенной выборке"; такой выбор, друзья, точно также приведет к неопределенности. Все вероятностно, конечно, может и повезти, но статистику не обманешь.

В этом и только в этом польза от отложенных выборок. Проверка работоспособности модели, проверка эвристики отбора лучшей модели. 

PS: думаю, как улучшить результат. По-хорошему, нужно элиптическое наклонное облако. Из него можно из правого края брать комитеты и т.д. и в среднем будет работать. 

 

Хороший у вас выработался инструментарий для оценки эвристики, солидно. Вы доказали что выработанный вами способ обучения модели (комитета) не подходит для форекс, но что дальше?

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

У меня похожая ситуация, я например перебираю разные способы предобработки данных, разные пакеты для тренировки/предсказания, разные функции для оценки качества предсказания. Всё это важно, и всего этого бесконечные комбинации. Стараюсь придерживаться правила бритвы Оккама - чем меньше нужно предикторов, и чем меньше параметров у модели - тем лучше.

 

Ещё моё субъективное мнение, что ваши предикторы не могут быть использованы для предсказания ваших целевых значений. По крайней мере работая с вашим файлом dat_train_final_experimental1.csv - я не могу получить положительный результат для моей фитнесс функции при подборе параметров gbm. То есть какую бы модель, с какими бы параметрами я не построил - результаты на кроссвалидации меня не устраивают. Доказать не могу, просто личное мнение, советую взять больше предикторов, и при построении модели пытаться уменьшать их количество.

У меня например в обучающей таблице по 150 предикторов на каждый бар, всего 100 баров, итого 15000 предикторов. Дальше генетикой перебираю предикторы и параметры модели, добиваясь лучшего результата фитнесс фунцкции. Таким образом подберутся именно те предикторы, которые действительно имеют какую-то связь с целевыми значениями, и опираясь на которые модель что-то может предсказать. В конце подбора у меня остаётся всего 10-20 предикторов. Результат фитнесс функции обязательно немного снижается за каждый используемый предиктор, я вчера примерный R код фитнесс функции писал тут на форуме, там наглядней.

 
mytarmailS:

не плохо, а что это за кружки зеленые и что стрелочки означают

PЗелёные точки говорят о том что сигналу быть, каждая серия зелёных точек заканчивается либо синей, либо красной точкой, что означает сигнал Секвенты на покупку или на продажу соотвественно. Ну а стрелки это работа классификатора Решетова, который говорит истиный сигнал или ложный....

Кстати Секвента  в атаче, пользуйтесь на здоровье....

Файлы:
 
Dr.Trader:

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

Я, кажется, смог сформулировать это более лучше -

Результаты прогноза на самих обучающих выборках в среднем плохо коррелируют с результатами на тестовых выборках.

 

Есть пакет ForeCA, и в нём функция Omega которая оценивает "предсказуемость" сигнала.  Если оценит в 100% - сигнал отвечает каким-то требованиям, и его легко предсказывать. Оценка в 0% - сигнал это просто шум, предсказать его невозможно.

У меня ещё осталась ваша таблица dat_test_features_experimental.RData, где последняя колонка - прирост цены. Например оценка для eurusd = 0.83% (не 83%, а именно 0.83%, меньше единицы). Согласно ForeCA предсказать этот временной ряд невозможно. Не то чтоб я очень доверял этому пакету, но его автор явно что-то понимает, я бы прислушался.

Omega(dat_test_features[dat_test_features[,109] == "eurusd", 110])

Не помню таймфрейм с которым вы работаете, но если это M1 - есть веские причины попробовать больше, H1 например.

 
Dr.Trader,

Услышал вас. Я работаю с горизонтом неск.часов.

На минутах хорошо получается регрессия, но не хватает МО сделки. На часе абсолютная разница цен примерно 8 пунктов. Куда-уж там.... Понимаете? Надо точность угадывания 65_70%. А на 9 часах 53-53% хватает, чтобы спред одолеть.
 
Dr.Trader:

... 

Есть пакет ForeCA, и в нём функция Omega которая оценивает "предсказуемость" сигнала.  Если оценит в 100% - сигнал отвечает каким-то требованиям, и его легко предсказывать. Оценка в 0% - сигнал это просто шум, предсказать его невозможно.

...

Что значит "предсказуемость" в этом пакете? Мне показалось, что это означает способность к экстраполированности (вот такое слово) предыдущего (предыдущих) значений. Если берем приращения, то широчайше применяемый инструмент,очень хорошо проработанный с массой нюансов: ARIMA, если не проходит эта модель, то самые разные ARCH. И сравнивать пакет ForeCA надо с этими моделями.

 

Вообще мне кажется, что потеряна первоначальная мысль. По мне эта первоначальная мысль состояла в том, что необходимы методы, которые бы НЕ ЗАВИСИМО ОТ МОДЕЛИ определяли способность каждого из используемых предикторов предсказывать целевую переменную. Обязательно в связке "предиктор(ы)/целевая переменная". А когда мы отсеяли шум, то используем модели или их комитеты .... Но только после отсеивания шума. А факт отсутствия шума определяется примерной неизменностью показателей результативности модели на разных выборках. Не абсолютная величина ошибки предсказания, а факт примерного равенства показателей результативности, которое (равенство) трактуем как доказательство отсутствия переобученности модели. ОТСУТСТВИЕ ПЕРЕОБУЧЕННОСТИ наше все. Если на данном наборе предикторов модель переобучается, то все остальное - это игра в цифирь. Интерес представляют только не переобученные модели.    

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