Блог им. AEMMtrader
Привет, смартлабовцы! Я бэкенд-разработчик (Python) и, как многие здесь, прошел классический путь алготрейдера: поверил в магию индикаторов -> написал бота -> слил часть депозита на реале -> задумался, что я делаю не так.
Сегодня хочу поделиться своей попыткой математически приручить рыночный хаос. Спойлер: Грааля нет. Но есть способ уйти от угадывания точной цены к нормальному расчету вероятностей, который спасает от тупых входов в рынок.
Когда прогер приходит на биржу, он думает: «Сейчас скормлю котировки за 10 лет в XGBoost или нейросеть, и она скажет мне цену на завтра». На истории всё выглядит потрясающе. На реальном рынке выходит Пауэлл, или крупный игрок кидает объем по рынку — и ваш детерминированный прогноз летит в трубу.
Рынок — это хаос. Прогнозировать одну конкретную цену (например, что завтра евро будет стоить 1.0850) — это математическое самоубийство. Нам нужно оценивать распределение вероятностей.
Чтобы уйти от жестких прогнозов, я решил скрестить предсказательную силу машинного обучения (XGBoost) со стохастической симуляцией Монте-Карло. Эту логику я зашил в свой аналитический пет-проект AEMMtrader.
Как это работает под капотом:
База: Скрипт анализирует лог-доходность, историческую волатильность и динамику тикового объема (отличный маркер «нервозности» на Форексе).
Генерация хаоса: Вместо одной линии тренда, скрипт запускает 30 независимых симуляций будущего на 20 свечей вперед.
Шум: В каждую из 30 симуляций на каждом шаге подмешивается случайный шум (гауссовское распределение), амплитуда которого зависит от текущей волатильности актива. Если на рынке флэт — сценарии идут кучно. Если шторм — разлетаются веером.
Давайте посмотрим, как это выглядит на практике. Ниже скриншот из прогноза EUR/USD с моей платформы на таймфрейме D1.
Слева — реальная история, где мы видим пробитие поддержки. Справа — прогнозные свечи, которые алгоритм достраивает на 20 дней вперед.
Что мы извлекаем из этого хаоса:
Уверенность (Confidence Score): Алгоритм выдает сигнал SELL с уверенностью 73.3%. Это значит, что из 30 сгенерированных симуляций, несмотря на подмешанный рыночный шум, 22 траектории уверенно пошли вниз. Для дневки матожидание отличное.
Понимание откатов: Обратите внимание на тени прогнозных свечей. Я рассчитываю их с помощью усреднения путей и показателя ATR. Да, глобально мы смотрим вниз к 1.15, но система показывает, что по пути будут откаты. Это дает понимание, куда адекватно прятать Стоп-Лосс, чтобы его не слизало случайным шумом.
Самое полезное, чему меня научила эта система — это сигнал NEUTRAL.
Когда руки чешутся открыть сделку, а алгоритм прогоняет симуляции и говорит: «15 путей идут вверх, 15 вниз. Уверенность 50%». Система прямо заявляет, что текущая дисперсия (рыночный шум) превышает силу любого сигнала. В такие моменты лучшее, что можно сделать с депозитом — ничего не делать.
Скрипт сейчас крутится на сервере в режиме 24/7 (на выходных для крипты, для фиата выходные программно вырезаются). Если вам интересно потыкать алгоритм на разных активах, заходите на AEMMtrader.ru (сервис полностью бесплатный). Для зарубежных коллег доступно международное зеркало aemmtrader.com
Буду рад конструктивной критике от алготрейдеров: Считаете ли вы тиковый объем достаточным прокси для Форекса, или без стакана (Level 2) все эти ML-модели обречены? Обсудим в комментах.
AEMMtrader, индикаторная система с условиями на валютном фьюче, без оптимизации.
Старт 2 млн. 2.10.2003 - финиш на картинке по н.в. Процент от капитала с реинвестом. Время в позиции от 15 минут до + бесконечности.
Ваши неклассические боты могут показать результат хоть немного близкий к этому или лучше на длительном бэктесте, не говоря о реале?
По опыту наблюдения за системами своими ретроспективно и за публичными системами коллег, могу сказать, что всё крайне субъективно в вашем суждении.
Порой чем проще, тем лучше. По-прежнему убежден, что сами по себе сетки и современные прикольчики альфу не дают. Нужна изначально идея толковая от вас, на мой взгляд, которую уже можно пробовать улучшить.
Чтобы вы понимали, я и сам нет-нет, да и да. Но только как надстройку использую ml/rl к уже имеющимся системам, но никак не обособленно, и очень дозированно.
Пока не удалось дождаться окончания Loading… Сколько ожидать?
Upd.
Как и подозревал, дело в использовании сервисом пакетов.
Прогнозирует 78000 по биткоину. Подождём. По ощущениям как первая цель снижения.
Если система показывает сигнал SELL на H4 (глобальное падение) и BUY на H1 (локальный откат) — это не баг, это классическая рыночная механика. Более того, для трейдера это идеальный сетап: мы видим, что глобально рынок давит вниз, но прямо сейчас (на H1) идет коррекция, на которой можно зайти в шорт по более выгодной цене. Противоречие компрометировало бы подход, если бы мы искали Грааль, который обещает рост везде и сразу. Но мы ищем вероятности, а вероятность отката внутри тренда — это норма
Возражение же в том, что свечи прогнозов для H1 и H4 вообще никак не пересекаются, что не логично. Более крупный должен как-то содержать более мелкий хотя бы в виде теней. Коли они в разные стороны идут.
А так веры нет, кажется, что принципы вычислений прогнозов весьма умозрительны и далеки от реальности.
Алгоритм не генерирует единую «потиковую» ленту будущего, из которой потом нарезаются свечи разных таймфреймов. Если бы мы делали так, это была бы подгонка.
В AEMMtrader прогнозирование H1 и H4 — это две абсолютно независимые ML-модели, которые ничего не знают друг о друге:
Модель H1 обучена на своем датасете, со своим вектором фичей и своей микро-волатильностью.
Модель H4 обучена на макро-движениях и совершенно других распределениях шума.
Каждая из этих моделей независимо прогоняет свои 30 симуляций Монте-Карло. То, что вы видите на графике в виде прогнозных свечей — это усредненное математическое ожидание этих симуляций.
Если бы мы жестко привязали генерацию H4 к расчетам H1, то любая случайная ошибка на микро-уровне каскадом ломала бы весь глобальный макро-прогноз (эффект бабочки). Независимость моделей — это осознанное архитектурное решение. Оно позволяет нам получать честное «второе мнение» от алгоритма, оценивая вероятности на разных горизонтах, а не рисовать визуально идеальную, но математически несостоятельную картинку будущего.
Смысла рисовать по 20 свечей каждого прогноза в таком подходе нет, они расходятся уже на первой.
Подумайте, как ими пользоваться постороннему человеку. Кто случайно доверится одному таймфрейму, и не тому, который выиграет в итоге.
Модели обязаны быть вложенными, по моему мнению.
svgr, я услышал вашу позицию про вложенность — с точки зрения пользовательского опыта это действительно выглядело бы привычнее и логичнее. Однако наш текущий подход закладывает иную логику использования.
Спасибо за обратную связь!
А вот тени (хвосты) свечей алгоритм достраивает отдельно. Он берет текущую дисперсию (насколько широко разлетелись эти 30 путей) и исторический показатель ATR (Average True Range). То есть мы берем «скелет» из матожидания и «навешиваем» на него историческую волатильность в виде теней. Сами 30 симуляций нужны нам в первую очередь для расчета Confidence Score — чтобы понять, какой процент из этих путей в итоге пробил текущую цену, несмотря на весь подмешанный хаос
Идея да, интересная.
Если модель переобучена или в ней нет эджа, такое монтекарливание её же все равно не спасет, я правильно понимаю?
Торгуем только 2 шаг тренда=3 волна импульса.Остальные 4 = информация о будущей сделке.
Мораль -торгуем фракталы из свечей.Но вход в свечной через ВА Эллиота. Правильный прогноз ниже. Вернее 2 прогноза — вверх, вниз .
Нужен правильный объем.Без него торгуем частицы газа.
Рекомендую книгу Патрик Микула- ..5 новых техник Эндрюса.