Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 1532
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ну начать следует с теории. Например, какой смысл отбирать модели отдельно на продажу и на покупку?
Все что не на покупку - продажа, и наоборот.
Идеология у меня в улучшении базовой торговой стратегии, а стратегия трендовая, соответственно перевороты на пустом месте ей не предусмотрены - входы в рынок из флэта, а "Не входить" отсеивает ложные флэтовые пробои по сути.
Далее, я экспериментировал с моделями для закрытия прибыльных позиций в районе пиков длинных отрезков ZZ, и результат не удовлетворительный, т.е. либо предсказательная способность там меньше, либо предикторы мои там не очень работают, а может то и другое, поэтому я не использую переворотную стратегию. Напротив, считаю, что тут лучше обучать две разные модели.
когда вы просто можете фильтровать входы через более высокий порог. Классу "не торговать" может быть придан излишний вес моделью, из-за чего ошибка модели уменьшится, а предсказательная (обобщающая) способность, в целом, упадет.
Почти такой подход, с бинарной классификацией, торговать/не торговать, где это определяется по порогу от модели, я использую в экспериментах с CatBoost, но там как раз беда в том, что модель строится по принципу пылесоса, засасывает все и хорошее и плохое, а на выходе у меня получается модель может и резвая, но с малым числом входов.
Смысл второй модели заключается в том, что у 1-й будут ошибки 1-го и 2-го рода - false positive и false negative. Нас интересует убрать их. Для этого на вход 2-й модели подаете те же фичи, а на выход результат торговли первой модели, где 0 - сделка была прибыльной, 1 - сделка была убыточной. Обучаете второй классификатор и торгуете только тогда, когда он показывает 0, т.е. фильтрует сигналы 1-й модели. Убыточные сделки почти исчезнут на трейне, на тесте надо тестировать - это раз.
Можно обучать вторую модель не только на трейне, но и захватить ООС, тогда она скорректирует сделки и на новых данных - это два. Ну и потом тесты.
Так именно так я и сделал, только использовал не предикторы разобщенные, а уже листы в качестве предикторов, где 1 - сигнал от листа в предикторе, а в целевой правильные ответы классификации. Конечно, мой метод не позволяет находить новые связи предикторов, но позволяет искать взаимосвязи между имеющимися связями.
Попробую и Ваш метод, спасибо. Однако, реализовать его в данной концепции можно только в виде модели CatBoost видимо, что б экономить время, а та, боюсь сильно все порежет опять.
тогда это мультикласс. Сделать 2-ю модель, которая будет выбирать каким листом в данный момент торговать лучше. Преимущества неочевидны и сложнее сделать.
Не, листов слишком много, не прокатит такая классификация...
Идеология у меня в улучшении базовой торговой стратегии, а стратегия трендовая, соответственно перевороты на пустом месте ей не предусмотрены - входы в рынок из флэта, а "Не входить" отсеивает ложные флэтовые пробои по сути.
Далее, я экспериментировал с моделями для закрытия прибыльных позиций в районе пиков длинных отрезков ZZ, и результат не удовлетворительный, т.е. либо предсказательная способность там меньше, либо предикторы мои там не очень работают, а может то и другое, поэтому я не использую переворотную стратегию. Напротив, считаю, что тут лучше обучать две разные модели.
Почти такой подход, с бинарной классификацией, торговать/не торговать, где это определяется по порогу от модели, я использую в экспериментах с CatBoost, но там как раз беда в том, что модель строится по принципу пылесоса, засасывает все и хорошее и плохое, а на выходе у меня получается модель может и резвая, но с малым числом входов.
Так именно так я и сделал, только использовал не предикторы разобщенные, а уже листы в качестве предикторов, где 1 - сигнал от листа в предикторе, а в целевой правильные ответы классификации. Конечно, мой метод не позволяет находить новые связи предикторов, но позволяет искать взаимосвязи между имеющимися связями.
Попробую и Ваш метод, спасибо. Однако, реализовать его в данной концепции можно только в виде модели CatBoost видимо, что б экономить время, а та, боюсь сильно все порежет опять.
Переворотов не должно быть как таковых, будут просто отфильтрованы ложные сигналы 2-й моделью. Ну, зависит от реализации и чего хотите.
Тогда странно почему много убыточных сделок, или это с ООС картинка? Да, что бы использовать 2-ю модель сделок должно быть много, что бы было что фильтровать, для этого даже искусственно можно добавлять сделок (оверсэмплинг)
Переворотов не должно быть как таковых, будут просто отфильтрованы ложные сигналы 2-й моделью. Ну, зависит от реализации и чего хотите.
Тогда странно почему много убыточных сделок, или это с ООС картинка? Да, что бы использовать 2-ю модель сделок должно быть много, что бы было что фильтровать, для этого даже искусственно можно добавлять сделок (оверсэмплинг)
На скринах выше были тесты на данных, которые никак не участвовали в обучении модели.
Вот по результатам обучения, скрины - первый моя компановка листов на данных, по которым было обучение (взят только отрезок 1/5)
Обратите внимание, что прибыльных длинных трейдов 52,86%
Добавили дерево, построенное на ответах других листов.
И результаты улучшились, прибыльных длинных трейдов стало уже 79,56%.
В итоге, подход в целом работает, но выхлоп при реальном применении не столь велик - почему так, вероятно часть листов, на которых происходило обучение, не несет в себе устойчивых связей или же этих связей мало. Каждый лист имеет отклик в районе 1%-3% по выборке.
На скринах выше были тесты на данных, которые никак не участвовали в обучении модели.
Вот по результатам обучения, скрины - первый моя компановка листов на данных, по которым было обучение (взят только отрезок 1/5)
Обратите внимание, что прибыльных длинных трейдов 52,86%
Добавили дерево, построенное на ответах других листов.
И результаты улучшились, прибыльных длинных трейдов стало уже 79,56%.
В итоге, подход в целом работает, но выхлоп при реальном применении не столь велик - почему так, вероятно часть листов, на которых происходило обучение, не несет в себе устойчивых связей или же этих связей мало. Каждый лист имеет отклик в районе 1%-3% по выборке.
ну если просто попытаться улучшить то что есть - то это вариант с фолдами. Разбить на несколько кусков и обучить 1-ю на одних кусках, а 2-ю на остальных. Я делал до 500 фолдов. Можно и меньше конечно. Какое-то улучшение дает.
ну если просто попытаться улучшить то что есть - то это вариант с фолдами. Разбить на несколько кусков и обучить 1-ю на одних кусках, а 2-ю на остальных. Я делал до 500 фолдов. Можно и меньше конечно. Какое-то улучшение дает.
Разбить на части выборку и обучать несколько моделей, или как?
Правда, у меня выборка всего порядка 14 000 строк...
Разбить на части выборку и обучать несколько моделей, или как?
Правда, у меня выборка всего порядка 14 000 строк...
Выше писал. Основную модель на одной половине кусков, вторую корректирующую на других
тогда фолдов 5-10 хватит, можно и большеВыше писал. Основную модель на одной половине кусков, вторую корректирующую на других
тогда фолдов 5-10 хватит, можно и большеЧто выше писали - понятно.
Я просто не пойму, что значит "фолдов 5-10".
Что выше писали - понятно.
Я просто не пойму, что значит "фолдов 5-10".
датасет разбить на равные участки, допустим 5 штук
объединить 1,3,4 и обучить на них основную модель
объединить 2,5. Прогнать на них 1-ю модель, получить результаты.
Обучить 2-ю модель на этих 2,5 на результатах 1-й, скорректировать убыточные сделки.
прогнать обе модели на всем датасете и новых данных и посмотреть результат