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

 
Vizard_:

Для понимания, исследование, выводы применимы и к обратному сигналу.
Как влияет не на результат, а на расстановку(отбор) предикторов...

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

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

Нет.

Давно использовал на реале доработанный JMA на мкл4 в части адаптации периода, но толку мало: протухает как и все остальное. Периодически приходилось вмешиваться ручками. 

Если про фильтры, то есть любопытный пакет smooth. Внутри сглаживания сидит Кальман с пространством состояний. Дает очень качественные машки, причем с экстраполяцией (forecast) на несколько шагов вперед.

Джурик вообще полная фигня.
А вот Калмана, видимо, надо слабать. Но, сдается, что Калман,в нашем случае, будет не лучше МАшек.
 
Yuriy Asaulenko:
Джурик вообще полная фигня.
А вот Калмана, видимо, надо слабать. Но, сдается, что Калман,в нашем случае, будет не лучше МАшек.

Что фигня, а что нет - неизвестно.

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

 
Aleksey Vyazmikin:

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

А то, что кто-то что-то должен, я сомневаюсь в этом весьма...

Ну а результат - кто ж его узнает, пока не наступит будущее...

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

Дело ваше, как поступать, но я бы все же подключил к этому процессу нейросеть(обученную).

 
На счет известно и не известно, если так рассуждать, вам тоже не известно как будут развиваться события, тут принятие решение вами или еще кем/чем то носит вероятностный характер, я к тому что надо исходить что принятое решение будет иметь исход 50 на 50, в таком случае не имеет значение кто его будет эпрувить, вы или нейросеть.
 
Vizard_:

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

Как предлагаете измерить вес и волатильность? Я не против экспериментов.

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

С кэтбустом целая эпопея, там экспериментирую с наборами предикторов (частично убирая - 512 комбинаций), со случайными весам выбора корневых предикторов (200) - это уже 100к моделей, а таких разбивок у меня две. Да, есть во всем этом интересные модели и есть полностью сливные (прибыльные на тестовой и обучаемой выборке, но на независимой сливают или близки к нулю), но так же нет гарантии, что они будут работать и дальше. Сейчас (22.12.2018) вот запустил по новой создание моделей, но пометил все предикторы как категориальные, какими они по моей задумке изначально являются (ибо уже многие порезаны на неравномерные интервалы и преобразованы в целые значения), в новый год по плану закончится обработка - посмотрю, есть ли разница, так-как модели с не категориальными признаками подготавливались в таком объеме за 1,5 дня, а тут не менее 10...

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

 
Farkhat Guzairov:

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

Дело ваше, как поступать, но я бы все же подключил к этому процессу нейросеть(обученную).

У меня есть точки входа, а входить или нет - я не знаю - это задача МО.

Как я уже говорил, не знаю быстрой нейросети, способной поглощать большой (300-500) объем входных нейронов... а вот дать допустим уже отобранные листья, можно нейросети или повторно дереву...

Про внесение изменений в код не понял, с чего бы это - думаете за 5 лет тенденции не менялись?
 
Vizard_:

Ничего не предлагаю, а написал как бы сам делал. А полученные три класса просто бы сунул в тс...

Как сунул? Нужно тогда делать какой то мост между питоном или R - для меня это темный лес.

 
Vizard_:

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

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

 
            if(Test_P!=1245)if(DonProc>=5.5 && TimeH< 10.5 && Levl_High_H4s1< 1.5) CalcBuy=CalcBuy+1; //(0.22513089 0.30366492 0.47120419)
            if(Test_P!=2030)if(Povtor_Low_M1>=0 && TimeH>=10.5 && TimeH< 21.5 && BB_iD_Center_H1< 0 && Levl_Close_D1>=-2.5 && Levl_Support_W1s1< 4.5 && LastBarPeresekD_Down_M15< 4.5) CalcBuy=CalcBuy+1; //(0.09111617 0.51252847 0.39635535)
            if(Test_P!=2537)if(Povtor_High_M1>=0 && rLevl_Down_iD_RSI< -6.5 && TimeH< 14.5) CalcBuy=CalcBuy+1; //(0.1990172 0.3832924 0.4176904)
            if(Test_P!=3243)if(Levl_Close_H1>=0 && TimeH<10.5 && Levl_Support_W1<-3.5) CalcBuy=CalcBuy+1; //(0.1153846 0.1538462 0.7307692)
            if(Test_P!=3314)if(Levl_Close_H1>=0 && TimeH< 10.5 && Levl_Low_W1s1N< 4.5 && Levl_Support_W1< -3.5) CalcBuy=CalcBuy+1; //(0.1153846 0.1538462 0.7307692)
            if(Test_P!=3583)if(Povtor_Type_M1>=0 && TimeH< 10.5 && Levl_Close_W1< -3.5) CalcBuy=CalcBuy+1; //(0.11428571 0.20000000 0.68571429)
            if(Test_P!=3857)if(Povtor_Type_M1>=0 && TimeH<10.5 && Levl_Support_W1<-3.5) CalcBuy=CalcBuy+1; //(0.07142857 0.17857143 0.75000000)
            if(Test_P!=6546)if(Povtor_Type_H1< 0 && Levl_Close_H1s1N>=0 && Levl_Close_H1s1N< 2.5 && Levl_High_W1s1>=2.5 && DonProc_M15>=5.5) CalcBuy=CalcBuy+1; //(0.1228070 0.4210526 0.4561404)
            if(Test_P!=6676)if(Povtor_Type_H1< 0 && Levl_Close_H1s1N>=0 && Levl_Close_MN1< 4.5 && TimeH< 21.5 && BB_iD_Center_H1< 0 && Povtor_Type_M15>=0 && Levl_Down_DC_M15>=-2.5) CalcBuy=CalcBuy+1; //(0.10619469 0.42477876 0.46902655)
            if(Test_P!=8673)if(Levl_Close_H1s1< 0 && Levl_Close_H1s1N>=0 && Part_H4>=2.5 && TimeHG< 3 && Levl_first_W1s1>=0.5) CalcBuy=CalcBuy+1; //(0.11607143 0.40178571 0.48214286)
            if(Test_P!=8840)if(TimeHG>=1.5 && RSI_Open_M1< 0.5 && BB_Peresek_Last_M1< 0.5 && RSI_Open_M1>=-0.5 && Levl_Support_W1s1>=-4.5 && Povtor_Low_H1>=0 && Levl_Support_H4>=0 && RegressorSpeed< 1.5) CalcBuy=CalcBuy+1; //(0.1606218 0.4145078 0.4248705)
            if(Test_P!=10002)if(rOpen_WormsDown>=0 && BB_Peresek_Last_M1< 0.5 && rDeltaWorms< 2.5 && DonProcVisota< 4.5 && Part_D1< 3.5 && BB_iD_Center_H1< 0 && Levl_Close_H1s1N>=0) CalcBuy=CalcBuy+1; //(0.1890244 0.3963415 0.4146341)
            if(Test_P!=10395)if(rOpen_WormsDown>=0 && Povtor_Type_M15>=0 && Levl_Low_H1< -4.5 && Levl_Close_H1s1N>=0) CalcBuy=CalcBuy+1; //(0.1990741 0.3888889 0.4120370)
            if(Test_P!=14244)if(rPeresek_Up<0.5 && BB_Peresek_Last_M1<0.5 && Polozhenie_M1>=0 && Povtor_High_H1<-2.5) CalcBuy=CalcBuy+1; //(0.1948052 0.3506494 0.4545455)
            if(Test_P!=14462)if(rPeresek_Up<0.5 && BB_Peresek_Last_M1<0.5 && Polozhenie_M1>=0 && DonProc_M15<9.5 && Levl_Support_H4s1<4.5 && Povtor_High_H1<-2.5) CalcBuy=CalcBuy+1; //(0.2112676 0.3239437 0.4647887)
            if(Test_P!=17944)if(Levl_Low_H1s1N< -1.5 && Levl_Close_H4>=0 && Levl_Close_H1s1N>=0 && BB_iD_Center_H1< 0 && Part_H1< 2.5) CalcBuy=CalcBuy+1; //(0.1408451 0.3239437 0.5352113)
            if(Test_P!=18382)if(Povtor_Low_M15< 3.5 && LowPerekH1s1_1< 0.5 && Polozhenie_M1>=0 && BB_iD_Down_M1>=-5.5 && DonProcVisota>=3.5 && Povtor_Low_M15< 1.5 && BB_iD_Down_M1>=-1.5) CalcBuy=CalcBuy+1; //(0.1659389 0.3842795 0.4497817)
            if(Test_P!=19123)if(rPeresek_Down< 0.5 && Povtor_Low_M15< 3.5 && LowPerekH1s1_1< 0.5 && Polozhenie_M1>=0 && rCalcLvlWorms< 1.5 && DonProcVisota>=3.5 && rLevl_UpPeresek_iD_RSI< 1.5 && RegressorCalc_S1>=-1.5 && Levl_first_W1s1>=-0.5) CalcBuy=CalcBuy+1; //(0.1225490 0.4313725 0.4460784)
            if(Test_P!=26038)if(Levl_Support_H1s1>=-3.5 && Part_H4< 2.5 && LowPerekH1s1_0>=0.5 && Part_H1>=1.5) CalcBuy=CalcBuy+1; //(0.1912568 0.4153005 0.3934426)

Если это железобетонный/фиксированный код на весь период (от 5 лет), тогда мои советы не актуальны.

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