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

 
Комбинатор:
А как вам мнение, что если вы пойдете по пути Саныча, вы заметно снижаете и так низкую вероятность попадания в заветный 1%?

Каждый индикатор несёт в себе какую-то дополнительную информацию, и она полезна вся, а не только какой-то один процент. Для RSI вообще нету такой стратегии "покупать при >0.99, продавать при <0.01", это был неудачный пример.

Скажем, можно взять индикатор, сделать на его основе советник, оптимизировать его параметры для лучшего результата. Но такой советник всегда сольёт в будущем. Чтобы советник не слил, нужно десятки индикаторов (может и меньше, но у меня проще не выходит), где значения индикаторов будут проверяться по сложной логике с разными условиями. Например, если MA(20)>MA(16) то покупать если  RSI>0.3. А если  MA(20)<MA(16), то смотреть не на rsi а на стохастик. Логика должна быть как-то так, но ещё сложнее и витиеватее. Модель random forest может строить такую логику, что очень хорошо. 

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

 
Dr.Trader:

Каждый индикатор несёт в себе какую-то дополнительную информацию, и она полезна вся, а не только какой-то один процент.

С принципом бритвы Оккама знакомы?

 

Если у индикатора есть некий диапазон значений, то любое значение в этом диапазоне о чём-то говорит, несёт свой дополнительный смысл. Не рекомендую просто взять 1% из верхней и нижней границ индикатора, и решить торговать только в них. Попробовать, конечно, можно, но окажется что это не прибыльно, и нужно опять набирать ещё много других индикаторов чтобы добавить в стратегию ещё кучу условий. То есть можно или торговать в полном диапазоне значений RSI с помощью ещё кучи индикаторов. Или можно торговать только в определённом диапазоне значений RSI, с помощью ещё кучи индикаторов. Я не вижу как второй способ даст мне какие-то преимущества.

Но когда первоначально имеется десятки индикаторов, и все с сотней вариантов лагов или параметров, то часть из них нужно отсеять, тут бритва Оккама действует во всю силу. Благодаря этому у меня из почти 9000 предикторов остаётся всего сотня (десяток индикаторов, с разными лагами (shift)). И эти оставшиеся предикторы дают прогноз с точностью как минимум 60%. 

 
Dr.Trader:

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

Переобучение априори, отсутствием которого так хвастается Саныч

 
Комбинатор:

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

Переобучение априори, отсутствием которого так хвастается Саныч

На счет шумовых предикторов я скорее был не точен.

Я тут хвастаюсь, что у меня есть алгоритм, который отсеивает шумовые предикторы. Но это не совсем точно, в том смысле, что по мне не бывает 100% шумовых и 100% не шумовых предикторов. Все предикторы, которые я видел (несколько сотен, свыше 10 наборов от разных людей), частично шумовые или частично не шумовые. Всегда. Других я не видел. Ниже поясню на цифрах.

Теперь, за что боремся?

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

У меня каждый предиктор имеет абстрактное значение "шумности". Если это значение от 0 до 1, то шум и полная безнадега. Если от 1 до 2, можно, но лучше не пользоваться. Следует брать с моей мерой свыше 3. Свыше 6 не видел ни разу.

Итак, предположим, что отобрали предикторы с моей мерой "шумности свыше 3. Если построить модель, то я получал для разных наборов предикторов ошибку от 25 до 35%. На всех типах выборки (обучение-тестирование-валидация - все со случайным перемешиванием, и вневыборки - строго по порядку поступления баров) примерно равные, например, 32-30-33-35%. Улучшить ошибку, например, в два раза на этом же  конкретном наборе предикторов не удается. Т.е. величина ошибки модели определяется конкретным набором предикторов. Если не нравится величина ошибки, то нужен некий другой набор предикторов, который быть может даст другую ошибку.

Ошибка, которую я получал, конечно, великовата, го для меня важно, что вне выборки ошибка примерно равна при обучении и тестировании. Но я делаю самый главный для себя вывод: данный набор предикторов не порождает переобученность модели - в будущем я буду иметь примерно такую же ошибку предсказания..  Это апробировано на разных вариациях случайны лесов, ada, SVM. Другие модели не пробовал.

 
Комбинатор:

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

Переобучение априори, отсутствием которого так хвастается Саныч

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

Отбор предикторов из шума работает.
 
Vladimir Perervenko:2. В rminer есть функция lforecast -  Performs multi-step forecasts by iteratively using 1-ahead predictions as inputs. Говоря о прогнозировании на несколько шагов вперед Вы конечно имеете в виду регрессию?

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

Я посмотрел функцию  "iforecast" она на вход берет временной ряд для регрессии, это не то, или я что то недопонял ?

 
Dr.Trader:

Каждый индикатор несёт в себе какую-то дополнительную информацию, и она полезна вся, а не только какой-то один процент. Для RSI вообще нету такой стратегии "покупать при >0.99, продавать при <0.01", это был неудачный пример.

Да ну вы что издеваетесь?  Я же написал что утрирую(Те упрощаю до нельзя) причем написал это два раза:)  Или было бы лучше если бы я привел реальный пример с 135 правилами для системы?  Не смотря на то что  для того что я хотел объяснить хватит и одного правила с лихвой
 

В продолжение темы про отбор  

У меня такой вопрос: есть у нас предиктор(один из многих) с каким то диапазоном значений пусть их будет 10 шт 

разобьем  предиктор на эти диапазоны  Х1,Х2....Х10 

посчитаем важность каждого диапазона в предикторе каким то способом это сейчас не важно каким 

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

Х1 = 0,5%

Х2 = 0,01%

Х3 = 0,003% 

Х4 = 0,0033% 

Х5 = 0,0013%

Х6 = 0,0039%

Х7 = 0,0030% 

Х8 = - 0,0000% 

Х9 = - 0,0001%  

Х10 = - 0,00002%  

  мы видим что только один диапазон "Х1" действительно имеет сильное влияние, влияние остальных либо отрицательное либо за пол шага от отрицательного и очень сомнительно что на новых данных эти диапазоны Х2....Х7 проявят себя в лучшую сторону..

 

Вопрос :

что лучше? оставить весь положительный диапазон  Х1...Х7 или оставить только тот диапазон в котором нет никакого сомнения то есть только Х1

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

Кто что думает по этому поводу? 

 
mytarmailS:

В продолжение темы про отбор  

У меня такой вопрос: есть у нас предиктор(один из многих) с каким то диапазоном значений пусть их будет 10 шт 

разобьем  предиктор на эти диапазоны  Х1,Х2....Х10 

посчитаем важность каждого диапазона в предикторе каким то способом это сейчас не важно каким 

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

Х1 = 0,5%

Х2 = 0,01%

Х3 = 0,003% 

Х4 = 0,0033% 

Х5 = 0,0013%

Х6 = 0,0039%

Х7 = 0,0030% 

Х8 = - 0,0000% 

Х9 = - 0,0001%  

Х10 = - 0,00002%  

  мы видим что только один диапазон "Х1" действительно имеет сильное влияние, влияние остальных либо отрицательное либо за пол шага от отрицательного и очень сомнительно что на новых данных эти диапазоны Х2....Х7 проявят себя в лучшую сторону..

 

Вопрос :

что лучше? оставить весь положительный диапазон  Х1...Х7 или оставить только тот диапазон в котором нет никакого сомнения то есть только Х1

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

Кто что думает по этому поводу? 

А Можно попробовать. Иногда удаляют хвосты распределений и иногда помогает.
Причина обращения: