Обсуждение статьи "Применение модели машинного обучения CatBoost в качестве фильтра для трендовых стратегий"
Ознакомьтесь с новой статьей: Использование модели машинного обучения CatBoost в качестве фильтра для стратегий следования за трендом.
Автор: Чжуо Кай Чен
Исходя из собственного опыта, могу лишь добавить, что обучение моделей на данных старше трех месяцев ничего не дает. Модель должна быть способна улавливать текущие закономерности и фокусироваться на них. Вам нужно быть ближе к рынку.
Исходя из собственного опыта, могу лишь добавить, что обучение моделей на данных старше трех месяцев ничего не дает. Модель должна быть способна улавливать текущие закономерности и фокусироваться на них. Вам нужно быть ближе к рынку.
Ваше замечание абсолютно справедливо. По моему опыту, я также считаю, что использование последних данных облегчает обучение модели, которая дает лучшие результаты. Однако главная проблема заключается в том, что такой подход ограничивает размер обучающего набора, если только вы не используете очень короткий таймфрейм. Согласно научным исследованиям, стратегии следования за трендом лучше работают на длинных таймфреймах по сравнению с короткими. Таким образом, вы можете обучить модель с более высокой предсказуемостью, но с меньшим количеством обучающих образцов, что чревато переоценкой, а исходная стратегия изначально имеет меньшие преимущества. Существует компромисс между этими факторами, не говоря уже о том, что спреды также играют свою роль.
Мое решение заключается в том, чтобы придать больший вес недавним данным в обучающем наборе, сохранив при этом старые данные. Таким образом, мы можем адаптироваться к новым паттернам после смены режима и в то же время извлекать выгоду из старых паттернов, которые оставались неизменными на протяжении многих лет. Однако, как я уже говорил, в таких решениях всегда есть компромиссы.
Ваша точка зрения абсолютно верна. По моему опыту, я также считаю, что использование свежих данных упрощает обучение модели, которая дает лучшие результаты. Однако главная проблема заключается в том, что такой подход ограничивает размер обучающего набора, если только вы не используете очень короткий таймфрейм. Согласно научным исследованиям, стратегии следования за трендом лучше работают на длинных таймфреймах по сравнению с короткими. Таким образом, вы можете обучить модель с более высокой предсказуемостью, но с меньшим количеством обучающих образцов, что чревато переоценкой, а исходная стратегия изначально имеет меньшие преимущества. Существует компромисс между этими факторами, не говоря уже о том, что спреды также играют свою роль.
Мое решение заключается в том, чтобы придать больший вес недавним данным в обучающем наборе, сохранив при этом старые данные. Таким образом, мы можем адаптироваться к новым паттернам после смены режима и в то же время извлекать выгоду из старых паттернов, которые оставались неизменными на протяжении многих лет. Однако, как я уже говорил, в таких решениях всегда есть компромиссы.
Переобучение модели каждые три месяца с использованием данных за последние три месяца, вероятно, поможет. Я попробую реализовать эту идею оптимизации скользящей модели позже. Спасибо за предложение.
Я пытаюсь следовать вашим инструкциям и, к сожалению, из-за отсутствия деталей не могу довести дело до конца из-за отсутствия ссылок на файлы и ссылок на скачивание.
Я найду время, чтобы научить вас тому, что вы упустили, потому что это выглядит как хороший процесс.
Вам не хватает;
1. прямой ссылки на файл FileCSV.mqh, для получения которой необходимо пройти через другую статью.
2. декларация всех обрабатываемых функций
3. Адекватное объяснение процесса создания или загрузки файлов
CatOnnx.mqh
"\\\Files\\\CatBoost_Momentum_test.onnx"
4. Прямые ссылки и соответствующие инструкции по установке catboot с помощью pip или аналогичных программ, убедившись, что у вас установлены зависимости, необходимые для python. (Не для меня, но другим будет полезно знать).
5. Инструкция по прочтению инструкций и рабочего процесса CB2.ipynb.
В целом все это приводит к тому, что студент проходит половину пути от вашей статьи и остается часами искать правильный процесс, чтобы завершить учебник и воспроизвести ваши результаты.
В целом я ставлю этой статье 4 балла из 10 за информацию и дополнительные баллы за вашу Классическую стратегию следования за трендом, которая хорошо составлена.
Пожалуйста, отредактируйте статью, чтобы она была более информативной и пошаговой, чтобы мы все могли учиться и следовать за вами.
PS
Рекомендации по адаптации этой стратегии к другим стратегиям были бы замечательными!
Пожалуйста, отредактируйте статью, чтобы она была более информативной и пошаговой, чтобы мы все могли учиться и следовать за вами.
PS
Рекомендации по адаптации этой стратегии к другим стратегиям были бы очень кстати!
Спасибо за отзыв. К сожалению, я ограничился кратким описанием соответствующих статей, потому что решил, что это займет слишком много места, и не стал включать ссылки на скачивание из-за проблем с авторскими правами. Подробную информацию все равно лучше получить из первоисточника. Тем не менее, мне кажется, что я упустил из виду некоторые тщательные инструкции для моего кода на python и прямые ссылки на инструкции по python, хотя я добавил комментарии к каждой строке. Если у вас есть конкретные препятствия в вашем собственном процессе реализации, вы можете обсудить их здесь или добавить меня в чат.
- www.mql5.com
CatOnnx.mqh, вызванный в файле ML-Momentum.mq5, такой же, как CatBoost.mqh, который я цитировал в этой статье. Извините, что вызвал путаницу в именах файлов.
Спасибо за разъяснения, это выглядит очень интересно, когда я вернусь и попытаюсь снова завершить руководство в этой статье, я сохраню некоторые заметки в стороне для последующего удобрения форума.
Если кто-то еще интересуется кошачьим хозяйством...
Здравствуйте. Я играю с CatBoost и дошел до того, что стратегия, обученная на данных (всех) 2024 года, дает >300% прибыли при бэктесте (в MetaTrader) на 2024 году, но плохо работает на других годах. Есть ли у кого-нибудь подобный опыт? Интуитивно кажется, что это перебор, но даже если я тренируюсь с гораздо меньшим количеством итераций (например, 1k), я получаю тот же результат.
Я обучаюсь с ~40-50 признаками на минутных данных, так что получается что-то около 250 000 строк в год. Размер файла .cbm, как правило, получается в 1000 раз больше количества итераций (например, 1000 итераций = 1 МБ, 10 000 итераций = 10 МБ и так далее). Бэктестирование в Metatrader ограничивает меня примерно 100 000 МБ, после чего бэктестер останавливается. Я могу проводить бэктесты на C++ до произвольно больших размеров, но мои результаты в metatrader и C++ дико отличаются.
Я обучаюсь с ~40-50 признаками на минутных данных, так что получается что-то около 250 000 строк в год. Размер файла .cbm, как правило, получается в 1000 раз больше количества итераций (например, 1000 итераций = 1 МБ, 10 000 итераций = 10 МБ и так далее). Бэктестирование в Metatrader ограничивает меня примерно 100 000 МБ, после чего бэктестер останавливается. Я могу проводить бэктесты на C++ до произвольно больших размеров, но мои результаты в metatrader и C++ дико отличаются.
Здравствуйте. Во-первых, бэктестер Metatrader учитывает спреды и комиссии, что может объяснить, почему он отличается от ваших результатов на C++. Во-вторых, на мой взгляд, машинное обучение - это, по сути, процесс оверфиттинга. Существует множество способов уменьшить перебор, таких как ансамбль, отсев и инженерия признаков. Но в конечном счете выборка в выборке всегда намного лучше, чем вне выборки. Использование машинного обучения для прогнозирования финансовых временных рядов - старая проблема. Если вы пытаетесь предсказать доходность (я предполагаю, потому что вы говорите о 250 тыс. рядов), то следует ожидать шума, потому что у вас и других игроков одна и та же цель прогнозирования. В то время как то, что я представил в этой статье, - это метод метамаркировки, где меньше шума, потому что цель прогнозирования сужается до вашей собственной стратегии, но у него будет меньше образцов для обучения, что делает ограничение сложности еще более строгим. Я бы посоветовал снизить ожидания при использовании метода ML и изучить способы уменьшения избыточной подгонки.
Спасибо, что так быстро ответили на тему, которой уже более 6 месяцев. Здесь есть над чем подумать. Я привыкаю к огромному пространству параметров и пытаюсь найти способы уменьшить перебор.
Еще раз спасибо!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Применение модели машинного обучения CatBoost в качестве фильтра для трендовых стратегий:
В нашей отрасли, когда речь заходит о разработке стратегий для советников по торговле товарными активами (CTA, Commodity Trading Advisor), правило большого пальца заключается в том, что лучше всего, когда за каждой идеей для стратегии стоит четкое, интуитивное объяснение. Именно в таком ключе люди в первую очередь размышляют об идеях для стратегий, не говоря о том, что это позволяет также избежать переобучения. Данный тезис применим даже при работе с моделями машинного обучения. Мы попытаемся объяснить интуитивную основу предлагаемой идеи.
Почему это может сработать:
Модель CatBoost создает деревья решений, которые принимают на вход признаки, а затем выдают вероятность каждого из исходов. В данном случае мы обучаем модель только на двоичных исходах (где 1 – это выигрыш, а 0 – потеря). Модель будет изменять правила в деревьях решений таким образом, чтобы минимизировать функцию потерь в обучающем наборе данных. Если модель продемонстрирует определенный уровень предсказуемости на результатах тестирования за пределами выборки, мы можем считать, что ее использование отфильтровывает сделки, которые имеют низкую вероятность выигрыша, что может, в свою очередь, повысить общую прибыльность.
Розничные трейдеры, такие как мы с вами, будут ожидать с долей реализма, что модели, которые мы обучаем, не будут оракулами, а скорее будут лишь немногим лучше случайного блуждания. Существует множество способов усовершенствовать точность модели, которые я рассмотрю позже, но тем не менее, это отличная попытка добиться небольшого улучшения.
Автор: Zhuo Kai Chen