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

 
Aleksey Vyazmikin:

У меня вопрос про целевую переменную.

Если у нас целевая переменная - это финансовый результат трейда, то разумно этот результат нормализовать, как я думал. Но вот ищу информацию по сайту, и везде речь о том, что целевая переменная должна иметь два значения - покупки или продажа. А если у меня убыток будет в любом случае - купи я или продай (а так оказалось бывает!), то что ж мне негативные варианты просто вырезать? А если именно наличие негативных вариантов влияет на статистику?

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

> Если у нас целевая переменная - это финансовый результат трейда, то разумно этот результат нормализовать, как я думал

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

Следует учесть что у нейронки очень часто выход тоже проходит активационную функцию, и может быть только в пределах (0;1) для сигмоиды. Тогда таргет тоже нужно нормализовать если он не попадает в этот интервал. Или можно убрать активацию для выхода чтоб он мог принимать любое значение.


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

Это называется классификация. Когда вместо цены - просто некий набор (0 и 1; -1 и 1; "buy" и "sell")
Если прогнозировать саму цену или её прирост, то это называется не классификация а регрессия.


> А если у меня убыток будет в любом случае - купи я или продай (а так оказалось бывает!), то что ж мне негативные варианты просто вырезать? А если именно наличие негативных вариантов влияет на статистику?

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


> В общем, хотелось бы знать, какие сети работают

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

Посмотрел ваши файлы, вижу что предикторов у вас уже и так много. Если ваш таргет это просто набор из -1,0,1 - используйте лес. Если же прогнозируете цену - тогда лучше нейронка.

 
Maxim Dmitrievsky:

Не так понял.. да, точкам где максимальный профит конечно можноэ

для целей классификации многослойный персептрон с выходным слоем softmax (выдает вероятности принадлежности к классу)

это читали? https://www.mql5.com/ru/articles/497 на примере 1-го нейрона. А потом представьте что их много, вот и вся нейросеть

Там как раз пороговые ф-ии описаны, о которых вы спрашивали

ну выглядит что результат хороший, да

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


elibrarius:

Попробовал 1-й файл, разбил его на 3 части:


Обучающая
      Predicted
Actual     0     1
     0 28107  1244
     1  3045  4119

Тестовая 1

      Predicted
Actual    0    1
     0 5950  356
     1  742  776

Течтовая 2

      Predicted
Actual    0    1
     0 5945  333
     1  779  769

Считал на nnet с 10 нейронами в скрытом слое (НС пакета Rattle из R)

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

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

 
Aleksey Vyazmikin:

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


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

Ну их и в реальности больше - потому и угадывать легко)

 
Dr. Trader:

> Если у нас целевая переменная - это финансовый результат трейда, то разумно этот результат нормализовать, как я думал

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

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

Dr. Trader:

Следует учесть что у нейронки очень часто выход тоже проходит активационную функцию, и может быть только в пределах (0;1) для сигмоиды. Тогда таргет тоже нужно нормализовать если он не попадает в этот интервал. Или можно убрать активацию для выхода чтоб он мог принимать любое значение.

Как это убрать активацию для входа? Не знаю, что это вообще есть такое - активация...

Dr. Trader:

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

Это называется классификация. Когда вместо цены - просто некий набор (0 и 1; -1 и 1; "buy" и "sell")
Если прогнозировать саму цену или её прирост, то это называется не классификация а регрессия.

Да, но если мне нужно не Buy ни Sell, а и просто пропуск сигнала, тогда как быть? Вот решил делать две отдельных НС, что б учитывать момент - не торговать.

Dr. Trader:

> А если у меня убыток будет в любом случае - купи я или продай (а так оказалось бывает!), то что ж мне негативные варианты просто вырезать? А если именно наличие негативных вариантов влияет на статистику?

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

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

Dr. Trader:


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

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

 
elibrarius:

Ну их и в реальности больше - потому и угадывать легко)

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

Другое, дело, что я немалейшего представления не имею, как это всё превратить в тот же индикатор - неужели для лесов надо переписывать все правила, которые сформировались или как?

 
Aleksey Vyazmikin:

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

Лес как раз хуже работает с разреженными признаками, мало сплитов будет

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

 
Maxim Dmitrievsky:

Лес как раз хуже работает с разреженными признаками, мало сплитов будет

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

Обычный лес или случайные леса, или оба?

Поставил я Rattle и R (ну и глючит же всё это дело...), и вот не могу понять, как сделать сопоставимые настройки, как на скрине ниже? А то сдандартный Rattle настройки дали результат хуже, чем прога, которой я пользовался до этого.


 
Maxim Dmitrievsky:

Лес как раз хуже работает с разреженными признаками, мало сплитов будет

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

Те же признаки, теже настройки, но признаки свёрнуты, а не развернуты, как раньше.

Старый вариант

Новый вариант

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

 
Aleksey Vyazmikin:

Обычный лес или случайные леса, или оба?

Поставил я Rattle и R (ну и глючит же всё это дело...), и вот не могу понять, как сделать сопоставимые настройки, как на скрине ниже? А то сдандартный Rattle настройки дали результат хуже, чем прога, которой я пользовался до этого.


обычный лес и случайные леса и леса деревьев это одно и то же :) Forest это ансамбль из Trees

признаки свернуты в смысле их стало меньше или как? под разрежеееыми признаками понимаются редко изменяющиеся и/или категориальные типа единиц и нолей (ну это уже хай левел понимания)

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

короче так долго будете возиться , изучайте теорию что такое деревья и что такое лес деревьев

https://habr.com/post/171759/

https://habr.com/post/116385/

по настройкам Rattle это к Санычу, но я хз зачем это нужно, так побаловаться, или помучиться с интеграцией потом советника на мт5 и R

https://www.mql5.com/ru/articles/1165

Энтропия и деревья принятия решений
Энтропия и деревья принятия решений
  • 2011.03.13
  • habr.com
Деревья принятия решений являются удобным инструментом в тех случаях, когда требуется не просто классифицировать данные, но ещё и объяснить почему тот или иной объект отнесён к какому-либо классу. Давайте сначала, для полноты картины, рассмотрим природу энтропии и некоторые её свойства. Затем, на простом примере, увидим каким образом...
 
Vizard_:

На твоих данных, файл Pred_004_Buy деленый пополам, в лоб можно получить 0.85.
Данные лажа и лучше выкинуть. Остальное догоняем самостоятельно. В тишине...

Почему данные лажа? Очень хороший результат ведь.