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

 
Maxim Dmitrievsky:

Ну начать следует с теории. Например, какой смысл отбирать модели отдельно на продажу и на покупку?

Все что не на покупку - продажа, и наоборот. 

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

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

Maxim Dmitrievsky:

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

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

Maxim Dmitrievsky:

Смысл второй модели заключается в том, что у 1-й будут ошибки 1-го и 2-го рода - false positive и false negative. Нас интересует убрать их. Для этого на вход 2-й модели подаете те же фичи, а на выход результат торговли первой модели, где 0 - сделка была прибыльной, 1 - сделка была убыточной. Обучаете второй классификатор и торгуете только тогда, когда он показывает 0, т.е. фильтрует сигналы 1-й модели. Убыточные сделки почти исчезнут на трейне, на тесте надо тестировать - это раз.

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

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

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

 
Maxim Dmitrievsky:

тогда это мультикласс. Сделать 2-ю модель, которая будет выбирать каким листом в данный момент торговать лучше. Преимущества неочевидны и сложнее сделать.

Не, листов слишком много, не прокатит такая классификация...

 
Aleksey Vyazmikin:

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

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

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

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

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

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

Тогда странно почему много убыточных сделок, или это с ООС картинка? Да, что бы использовать 2-ю модель сделок должно быть много, что бы было что фильтровать, для этого даже искусственно можно добавлять сделок (оверсэмплинг)

 
Maxim Dmitrievsky:

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

Тогда странно почему много убыточных сделок, или это с ООС картинка? Да, что бы использовать 2-ю модель сделок должно быть много, что бы было что фильтровать, для этого даже искусственно можно добавлять сделок (оверсэмплинг)

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

Вот по результатам обучения, скрины - первый моя компановка листов на данных, по которым было обучение (взят только отрезок 1/5)

Обратите внимание, что прибыльных длинных трейдов 52,86%

Добавили дерево, построенное на ответах других листов.

И результаты улучшились, прибыльных длинных трейдов стало уже 79,56%.

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

 
Ещё думаю вариант, попробовать не классификацию, а регрессию, и выделить именно высокодоходные комбинации листьев, может там будет эффект лучше в денежном выражении.
 
Aleksey Vyazmikin:

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

Вот по результатам обучения, скрины - первый моя компановка листов на данных, по которым было обучение (взят только отрезок 1/5)

Обратите внимание, что прибыльных длинных трейдов 52,86%

Добавили дерево, построенное на ответах других листов.

И результаты улучшились, прибыльных длинных трейдов стало уже 79,56%.

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

ну если просто попытаться улучшить то что есть - то это вариант с фолдами. Разбить на несколько кусков и обучить 1-ю на одних кусках, а 2-ю на остальных. Я делал до 500 фолдов. Можно и меньше конечно. Какое-то улучшение дает.

 
Maxim Dmitrievsky:

ну если просто попытаться улучшить то что есть - то это вариант с фолдами. Разбить на несколько кусков и обучить 1-ю на одних кусках, а 2-ю на остальных. Я делал до 500 фолдов. Можно и меньше конечно. Какое-то улучшение дает.

Разбить на части выборку и обучать несколько моделей, или как?

Правда, у меня выборка всего порядка 14 000 строк...

 
Aleksey Vyazmikin:

Разбить на части выборку и обучать несколько моделей, или как?

Правда, у меня выборка всего порядка 14 000 строк...

Выше писал. Основную модель на одной половине кусков, вторую корректирующую на других

тогда фолдов 5-10 хватит, можно и больше
 
Maxim Dmitrievsky:

Выше писал. Основную модель на одной половине кусков, вторую корректирующую на других

тогда фолдов 5-10 хватит, можно и больше

Что выше писали - понятно.

Я просто не пойму, что значит "фолдов 5-10".

 
Aleksey Vyazmikin:

Что выше писали - понятно.

Я просто не пойму, что значит "фолдов 5-10".

датасет разбить на равные участки, допустим 5 штук

объединить 1,3,4 и обучить на них основную модель

объединить 2,5. Прогнать на них 1-ю модель, получить результаты.

Обучить 2-ю модель на этих 2,5 на результатах 1-й, скорректировать убыточные сделки.

прогнать обе модели на всем датасете и новых данных и посмотреть результат

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