Библиотеки: RL GMDH - страница 3

 
Maxim Dmitrievsky:

Еще будут эксперименты с разными вариантами...

Я пробую эти алгоритмы с набором индикаторов и смесь(индикаторы+цены закрытия). Если возможно и в русле ваших изысканий, реализуйте первоначальный отброс коррелированых данных, т.е. проверка на корреляцию. При вашем методе два близких индикатора пройдут в отбор (если достаточно влияют на результат), хотя по хорошему один должен уступить место независимому индикатору.

 
mov:

Я пробую эти алгоритмы с набором индикаторов и смесь(индикаторы+цены закрытия). Если возможно и в русле ваших изысканий, реализуйте первоначальный отброс коррелированых данных, т.е. проверка на корреляцию. При вашем методе два близких индикатора пройдут в отбор (если достаточно влияют на результат), хотя по хорошему один должен уступить место независимому индикатору.

Можно будет попробовать. На данный момент версия recursive и Logistic recursive (логит регрессия вместо RDF) реализует перебор приращений цен, т.е. при заданном массиве предикторов в 1000 цен закрытия, например, она нулевой бар делит на каждое последующее значение цены, тем самым получается большой набор приращений с разным лагом, из них выбирает лучшие. Т.е. подавать различные осцилляторы вроде моментума или рси с разными периодами не имеет большого смысла в данном случае

 
Maxim Dmitrievsky:

Можно будет попробовать...

Поправьте, если ошибаюсь в рассуждениях (по ценам):

В нескольких выложенных методах используется что-то типа:

CDForest::DFBuildRandomDecisionForest(m,RDFpolicyMatrix.Size(),1,2,trees,r,RDFinfo,mRDF,mRep); 

С отбором по минимуму ошибки. Это можно рассматривать как проверку корреляции с результатом.

Допустим есть волновой процесс (коридор, клин и др.). 100 значений на часовом таймфрейме это ~4 суток, велика вероятность, что в интервале более 1 волны. Тогда имеем 2 (или более) коррелирующих между собой точек. Если одна из них сильно влияет на результат, то вторая тоже пройдет такую проверку. А есть еще полуволны с отрицательной корреляцией. В результате из десяти отобранных для дальнейшего построения показаний независимы 2-3 (остальные сильно с ними коррелируют и дают малое улучшение распознавания). Требуется вначале отобрать мало коррелирующие между собой показания (рассчитать хоть для всех пар не проблема, а вот как правильно из этого свинства вырезать кусок ветчины представляю пока слабо)

Как косвенное подтверждение, в серьезных руководствах указывается что метод бустинга деревьев дает результат на пару % наже случайного леса (бэгинг). Правда это сильно зависит от реализации и внутренних алгоритмов построения деревьев (в приведенном выше результате в обоих методах использовали CART).

В итоге эффективность одного метода сильно зависит от подбора тестового периода. Кстати наклон канала полностью не спасет от этой проблемы.
 

В догон,

Может стоит использовать ту же логит регрессию или иной метод вместо усреднения показаний агентов? Вроде по теории такое применяется.

 
mov:

В догон,

Может стоит использовать ту же логит регрессию или иной метод вместо усреднения показаний агентов? Вроде по теории такое применяется.

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

по мультиколлинеарности предикторов - согласен. Нужно строить ковариационную матрицу и делать отбор по ней, позже подумаю как лучше делать

 
Спасибо, буду ждать
 
Igor Makanu:

потестировал, впечатление неоднозначное, тестировал на кастомном графике сгенерированном по ф-ции Вейерштрасса по формуле

в теории на этом кастомном графике RandomForest долден был найти точки входов очень близкие к ЗигЗагу, ну или хотя бы вообще не иметь убыточных ордеров, на ТФ Н1 периодичность прослеживается явно, но RF вроде как и нашел эту закономерность, но и убыточные ордера присутствуют

тестировал ране в МТ4 на таких же данных старый советник GoldWarrior (на англ. форуме нашел) - советник по ЗигЗагу, в оптимизаторе МТ4 на всех ТФ до М15 четко находит закономерности и исключительно в + все ордера

тестировал индикаторный советник по пересечению линий регрессии (увы, под заказ делал, код не могу), и этот советник в оптимизаторе быстро находил закономерности на ф-ции Вейерштрасса 

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

при всем уважении, к автору, но сомнительный результат, вернее пример работы с RandomForest отличный. но есть еще куда приложить свои силы ;)

ЗЫ: обучал с 2000.01.01 по 2001.01.01 тестировал с 2001.01.01 по 2002.01.01

ЗЫ: скрипт для кастомного графика приатачил, библиотека Symbol в КБ

Раскусываю Вейерштрасса на раз-два, немного адаптированный вариант, весь участок - оос. Не видел смысла дальше продолжать, и так очевидно. Но позабавило :)

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


Линейная модель справляется так же непринужденно, т.е. для предсказания этой ф-ии даже нейросеть не нужна


Реверс сделок, для проверки.

Насчет наличия или отсутствия убыточных сделок - вопрос чисто риторический и трейд офф между accuracy и overfitting

 
Maxim Dmitrievsky:

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

;) ... я об этом, наверное с полгода талдычу

я математику "грызу", есть нестандартные идеи - негладкий анализ и с удивлением обнаружил, что довольно интересное художественное чтиво Р.Ловенстайн  "Когда гений терпит поражение" - читаю чтобы отвлечься

очень интересует Ваш код, если можете, дайте подглядеть в ЛС

 
Igor Makanu:

;) ... я об этом, наверное с полгода талдычу

я математику "грызу", есть нестандартные идеи - негладкий анализ и с удивлением обнаружил, что довольно интересное художественное чтиво Р.Ловенстайн  "Когда гений терпит поражение" - читаю чтобы отвлечься

очень интересует Ваш код, если можете, дайте подглядеть в ЛС

негладкий и непушистый? :) вечером соберу в 1 файл, расшарю общий проект.. может вместе поделаем чего-нибудь

 
Maxim Dmitrievsky:

...по мультиколлинеарности предикторов - согласен. Нужно строить ковариационную матрицу и делать отбор по ней, позже подумаю как лучше делать

Возможно стучусь в открытую дверь, но т.к. в исходном не было...

Рекомендуют перед приведением к диапазону [0,1] предобработку:

1. удаление периодичности, выполнил в periodicityArrays() - из ряда вычитается профиль, составленный по дням недели и часу за месяц (правда для пробы сделал только для часового таймфрейма).

2.Удаление линейного тренда в linearTrendArrays() как рекомендуют a[i]=a[i]-a[i+1].

3.А вот здесь и должна быть проверка автокорреляции (пока не реализовано)


предсказательность после 1и 2 действий повысилась значительно. Код прикладываю.
Файлы: