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

 
Aleksey Nikolayev #:

Нет особой разницы (с точки зрения комбинаторики) как конкретно это закодировано. Суть та же - в каждой строке в качестве признаков записано то, какие правила выполняются, а какие - нет. Это всегда 2^N вариантов, где N - число правил. Потом выбирается входит или нет каждое такое правило в конечный набор - это уже 2^(2^N) вариантов. Понятно, что просто формально перебрать такое множество вариантов просто нереально. Поэтому имеет смысл их как-то разумно упорядочить. Например, сначала берём все варианты, которые описываются только одним правилом, потом - только двумя и тд. Ну, или что-то в этом духе.

Возможно я плохо объясняю, но я тут хочу ещё раз подчеркнуть, что мы работаем с изначальной выборкой, которая в рамках алгоритма обучения CatBoost квантуется один раз, т.е. до пустим у нас 1000 предикторов, мы их квантовали каждый на 10 отрезков, в итоге у нас 10000 отрезков - дальше алгоритм CatBoost случайным образом выдергивает предикторы и пробегаясь по границам/квантам делает разделение/сплит, для выделения кванта, который по середине, ему надо построить 3 неравенства или создать 8 листьев, при этом 7 листьев будут говорить о мусоре, а один лист о ценной информации. Построит ли алгоритм такое дерево - так же не факт, так как есть любовь к рандому и соседний квант может попасть в лист. И пусть это только одно дерево. В моем методе достаточно будет одного неравенства - 2 листа. Если даже будут использованы все предикторы и у каждого из них будет по 1 полезному отрезку, то число комбинаций при создании модели будет значительно меньше. Но важно, что и шума будет меньше, так как не будет столько ошибочных разбиений выборок для стабилизации которых нужно строить новое дерево (принцип бустинга).

Aleksey Nikolayev #:

Рано или поздно их найдут многие другие игроки, например.

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

К примеру измеряем каждые пол года, есть преимущество 1,5 года - считаем, что пол года ещё проработает, а если уже 2,5 года, то уже нет смысла и брать - вероятность больше, что перестанет работать.

Я в научных формулах не силен, можете подсказать, как такой расчет провести и проверить гипотезу?

 
Aleksey Nikolayev #:

В R есть хороший пакет trend.  Для линейного тренда хорошо подходит sens.slope() оттуда.

спасибо

vladavd #:

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

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

 
Aleksey Vyazmikin #:

Возможно я плохо объясняю, но я тут хочу ещё раз подчеркнуть, что мы работаем с изначальной выборкой, которая в рамках алгоритма обучения CatBoost квантуется один раз, т.е. до пустим у нас 1000 предикторов, мы их квантовали каждый на 10 отрезков, в итоге у нас 10000 отрезков - дальше алгоритм CatBoost случайным образом выдергивает предикторы и пробегаясь по границам/квантам делает разделение/сплит, для выделения кванта, который по середине, ему надо построить 3 неравенства или создать 8 листьев, при этом 7 листьев будут говорить о мусоре, а один лист о ценной информации. Построит ли алгоритм такое дерево - так же не факт, так как есть любовь к рандому и соседний квант может попасть в лист. И пусть это только одно дерево. В моем методе достаточно будет одного неравенства - 2 листа. Если даже будут использованы все предикторы и у каждого из них будет по 1 полезному отрезку, то число комбинаций при создании модели будет значительно меньше. Но важно, что и шума будет меньше, так как не будет столько ошибочных разбиений выборок для стабилизации которых нужно строить новое дерево (принцип бустинга).

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

Aleksey Vyazmikin #:

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

К примеру измеряем каждые пол года, есть преимущество 1,5 года - считаем, что пол года ещё проработает, а если уже 2,5 года, то уже нет смысла и брать - вероятность больше, что перестанет работать.

Я в научных формулах не силен, можете подсказать, как такой расчет провести и проверить гипотезу?

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

 
Aleksey Nikolayev #:

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

Да, понимаю, что не просто сходу понять метод. Планирую описать подробней. А данные обрабатываются до подачи их CatBoost, но я хочу делать свой алгоритм, который будет при сплитовании учитывать изменение динамики "распада", как вы это назвали.

Aleksey Nikolayev #:

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

Возможно и нечего нет, но как это проверить?

 
mytarmailS #:

спасибо

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

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

С чем конкретно не согласен?

 
Aleksey Vyazmikin #:

Да, допустим так.

Нет, теперь принимаем исполнение правила неравенства за единичку и смотрим среднее значение целевой (допустим при бинарной классификации) при срабатывании правила по выборке, если изначальное среднее значение, допустим, 0,45 у выборки, а после оценки только по откликам стало 0,51, то считаем, что предиктор (его участок/квант) обладает предсказательной силой в 0,06, т.е. 6%.

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

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

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

Осталось понять, почему такие квантовые закономерности могут работать 7 лет, а потом внезапно перестать...

Правильно ли я понял то, что вы делаете?:


1) Получаем 1 дерево.
2) каждый узел может давать до 10 ветвей (на найденной картинке меньше, представим, что по 10), каждая ветка порождена 1 квантом (квант - это кусок предиктора в 10%: либо перцентиль, либо 10% по амплитуде, смотря какой метод квантования использовали).
3) после первого сплита нашли 3 кванта, которые в дальнейшем приведут к успешному листу
4) последующие деления находят еще несколько хороших сплитов/квантов ведущих к успешным листьям
5) запоминаем успешные кванты до успешных листьев
6) строим новое дерево, которое в качестве предикторов использует только кванты, которые отобрали

Для этого тем же методом, как квантовали первое дерево, квантуем предикторы своим скриптом, из 100 предикторов получаем 1000, они уже бинарные 0 или 1. Если значение предиктора в этом диапазоне, то он = 1, если нет, то = 0.
Так как мы отбираем только успешные пути/кванты, то все значения отобранных квантов = 1. Если все предикторы = 1, то новое дерево не сможет учиться. Ответ уже известен.

Или нового дерева уже и не надо строить? Просто если значение предиктора попадает в отобранный квант, - то сразу действуем?

 
vladavd #:

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

С чем конкретно не согласен?

с каким именно инструментом?

 
mytarmailS #:

с каким именно инструментом?

Ну а что на картинке? Стакан и сантимент.

 
Aleksey Vyazmikin #:

Да, понимаю, что не просто сходу понять метод. Планирую описать подробней. А данные обрабатываются до подачи их CatBoost, но я хочу делать свой алгоритм, который будет при сплитовании учитывать изменение динамики "распада", как вы это назвали.

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

Aleksey Vyazmikin #:

Возможно и нечего нет, но как это проверить?

Наверное, использование форварда или включение времени в предикторы.

 
vladavd #:

Ну а что на картинке? Стакан и сантимент.

не я понял, а где смотрел? на каком сайте?