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

 
Aleksey Mavrin:

1. Скорее всего вы не правы

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

 
Aleksey Vyazmikin:

У меня результаты не очень меня радуют. Листья то я собрал прилично, но дальше встает вопрос - как их лучше заставить работать друг с другом. Дело в том, что часто они перекрываеют друг друга на 20%-50% и более процентов, и соответственно получается, что дают одинаковый сигнал, что не очень хорошо. Идея в том, что б их сгруппировать и делать на каждой группе порог активации - вот и думаю, как это лучше сделать.

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

Сам метод отбора листов кажется перспективным, но крайне медленно происходит процесс.

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

 
Aleksey Nikolayev:

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

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

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

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

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

 
Aleksey Vyazmikin:

Я уже много раз писал, что имеющиеся алгоритмы построения моделей МО не подходят для трейдинга

Вы наверное хотели сказать Что стандартные виды представления информации для МО не подходят для трейдинга... МО то нив чем не виноваты )

Aleksey Vyazmikin:


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

Что значит сетка разбиения ?

 
Aleksey Vyazmikin:

Хотя я и не понял что подразумевалось под "условия оптимальности портфеля ".

Максимизация доходности портфеля при фиксированном (устраивающем) уровне риска (волатильность или просадка).

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

Просто подумалось, что подобная тема могла обсуждаться на форуме раньше.

 
Aleksey Vyazmikin:

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

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

Сначала делит пополам, лучшую половинку еще пополам, лучшую четвертинку еще пополам и т.д. и так с каждым предиктором. Узлом становится лучшее разделение из всех этих кусочков по всем предикторам.
Вы это вручную делаете? Алгоритм делает это идеально и быстро.

Aleksey Vyazmikin:

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

Надо искать предикторы по которым можно это редкое явление выявить. Если будут предикторы, тогда самые простые стандартные модели МО всё найдут.

 
mytarmailS:

Вы наверное хотели сказать Что стандартные виды представления информации для МО не подходят для трейдинга... МО то нив чем не виноваты )

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


mytarmailS:

Что значит сетка разбиения ?

Это алгоритм, который проверяет диапазон значений предиктора на предсказательную способность и пытается разбить участки диапазона таким образом, что бы они лучше выделяли способность предсказания. Допустим есть выборка с 3 целевыми, выборка распределяется так 1 - 24%, 2 - 50%, 3 - 26%, и есть некий предиктор с диапазоном значений, так вот цель сетки найти участки значений предикторов где, допустим целевая 1 будет "предсказываться" не 24%, а больше, и сплитом будет выделен этот участок. Варианты алгоритмов построения таких сеток есть разные.


Aleksey Nikolayev:

Максимизация доходности портфеля при фиксированном (устраивающем) уровне риска (волатильность или просадка).

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

Просто подумалось, что подобная тема могла обсуждаться на форуме раньше.

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


elibrarius:

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

Сначала делит пополам, лучшую половинку еще пополам, лучшую четвертинку еще пополам и т.д. и так с каждым предиктором. Узлом становится лучшее разделение из всех этих кусочков по всем предикторам.
Вы это вручную делаете? Алгоритм делает это идеально и быстро.

Надо искать предикторы по которым можно это редкое явление выявить. Если будут предикторы, тогда самые простые стандартные модели МО всё найдут.

Что значит делает идеально? Я делаю не вручную, а пишу скрипт, которые это сделает так, как я сейчас это вижу.

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

На рисунке ниже изображен обычный предиктор по времени - буквально записывающий часы, я отфильтровал активации предиктора менее отклонения от 10% каждой целевой всей выборки. Получилось, что для целевой Minus благоприятны часы 18 и 19 и не благоприятен час 15, на выходе я получу новый предиктор с значением по выборке 1 - объединяющий значения предиктора 18 и 19 , -1 - значение 15 и 0 - все остальные значения.  

Какая сетка разбиения могла бы агрегировать диапазоны с разрывом в один сплит, исключив промежуточные значения, как на рисунке ниже значения 1 и 4?


 
Aleksey Vyazmikin:

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

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

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

 
Aleksey Nikolayev:

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

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

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

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

 
Aleksey Vyazmikin:

Что значит делает идеально? Я делаю не вручную, а пишу скрипт, которые это сделает так, как я сейчас это вижу.

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


Какая сетка разбиения могла бы агрегировать диапазоны с разрывом в один сплит, исключив промежуточные значения, как на рисунке ниже значения 1 и 4?


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

Проще всего обучить 24 стандартных леса/бустинга, на каждый подавая предикторы соответствующего часа.