🇪🇺 🇺🇸 Обзор и Методология Euro Macromechanica (EMM) Backtest

Euro Macromechanica — Macro-structural Mechanics of EUR/USD

Backtest Period Map (EUR/USD, 2001–2025-08)

Euro Macromechanica (EMM) Backtest Period

Заметка: «квант» — от англ. quantitative — «количественно измеряемый».

Полная инструкция по верификации прозрачности процессов, а также входных и выходных файлов, использовавшихся в бэктесте содержится в AUDIT.ru.md; ссылка продублирована в конце документа.

Результаты проекта демонстрируют устойчивые эмпирические свидетельства существования неизменных квант-факторов (признаков рыночной неэффективности) в механике движения EUR/USD на всём историческом интервале бэктеста. Стабильные итоги за почти всю историю евро как единой валюты ЕС (с момента введения наличных в январе 2002 года), включая ключевые системные кризисы последних двух десятилетий, служат этому подтверждением.

Данный проект не является «полноценным микро-бэктестом» институционального уровня, а представляет собой косвенную демонстрацию устойчивой эффективности одной отдельной модели исследования EMM через результаты базового ядра на M5 при консервативной модели исполнения. Базовое ядро — это минимально необходимая выборка сделок исследования EMM, полученная из реализации ограниченного набора количественных факторов; оно предназначено для демонстрации результативности, а не высокой точности метрик, что объективно недостижимо на неинституциональном уровне и при OTC специфике.

Проект бэктеста включает, в частности:

Бэктест проводился в UTC (UTC+0).



Содержание



Входные данные для бэктеста М5 ЕММ

Исходные минутные данные, политика качества данных и решение о разделении на периоды бэктеста

Евро введён как единая валюта ЕС в безналичной форме в январе 1999 года; розничный доступ к торговле EUR/USD появился примерно в 2001 году. Наличные евро введены в январе 2002 года.

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

Отдельная благодарность HistData за бесплатный доступ к минутным данным (и тиковым выборкам) по валютным парам с большим историческим охватом — один из немногих сопоставимых по покрытию бесплатных источников.

Решение было принято проводить бэктест на минутных данных HistData, а не на тиках. Подробности о причинах выбора минутных данных и источника HistData (в сравнении с альтернативами, например, Dukascopy) описаны в разделе Аргументация выбора минутных данных HistData для бэктеста M5 EMM.

К сожалению, качество минутных данных не позволило объективно протестировать 2001–2002 годы: количество разрывов длительностью 5–15 минут оказалось колоссальным, что критично для логики M5 (поскольку все квант-факторы реализованы на таймфрейме M5, а большое количество разрывов такого диапазона существенно искажает математические расчёты необходимых уровней). Поэтому 2001–2002 годы используются как stress-период для иллюстрации поведения стратегии на деградированном качестве данных. Соответственно, метрики рассчитываются только для baseline-периодов.

Качество данных за 2003–2007 годы также нельзя назвать идеальным, поэтому этот участок отмечен как extended baseline, чтобы не смешивать его с основным периодом по качеству данных — core baseline (2008–2025-08). Для иллюстрации на максимально длинном горизонте дополнительно сформирован композитный трек в режиме компаундинга (баланс переходит из года в год: Ending Balance → Initial Balance следующего года) на смешанном качестве данных — composite baseline (2003–2025-08 = extended + core).

Разрывы длительностью более 15 минут тоже значимы, однако их влияние ниже по сравнению с интервалами 5–15 минут. Поэтому в качестве ключевого порога для классификации принят диапазон 5–15 минут. В идеале разрывов не должно быть вовсе; работа выполнена с теми данными, которые были доступны на тот момент.

Коротко: в целом, качество данных позволяет получить объективные результаты бэктеста на минутной логике исполнения. Подробные результаты анализа разрывов, кратных 5 минутам, находятся в data-hub/data_quality_analysis/. Исходные минутные данные (raw) — data-hub/source_data/raw. Политика качества данных — results/data_quality_policy/policy_v1.0.ru.md

Периоды бэктеста:

Метрики публикуются только для Baseline периодов. (Расширенные метрики только для Core Baseline)

По сведениям HistData исходные минутные данные указаны в фиксированном EST (UTC−5) (см. раздел F.A.Q. на сайте http://www.histdata.com/f-a-q/), поэтому для бэктеста они нормализованы к UTC (UTC+0).

Нормализация минутных данных включает только:

Значения минутных данных не изменялись и не удалялись.

Все исходные файлы минутных данных и текстовые отчёты по качеству минуток получены с HistData. Анализ разрывов полностью воспроизводим любыми инструментами. Простой визуальный просмотр частоты разрывов 5–15 минут подтверждает корректность выбранной политики качества данных и снимает скептические вопросы (включая претензии о возможном OTS-якорении таймлайна и т. п.). Исходные минутные данные, взятые с HistData, также полностью воспроизводимы. При запросе об удалении данных со стороны HistData минутные исходники, на которых проводился бэктест, будут предоставляться для верификации по запросу.


Экономические календари

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

Все события собраны из официальных источников: национальные банки, национальные статистические службы и т. д.

Роль календаря в реализованной логике — фильтр входов, а не источник сигналов: стратегия избегает открытий позиций в окнах релизов. При ошибке во времени релиза сделка, как правило, закрывается по стопу, а не создаёт «ложную» прибыль. Следовательно, даже при маловероятных ошибках во времени публикаций результаты, как правило, занижены, а не завышены.

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

США:

Еврозона:

Причины исключения flash HICP, Unemployment Rate и т.д. по ЕС.

Подробности о реализованной логике в бэктесте M5 EMM описаны — в разделе Реализованная логика стратегии M5 EMM.

Внеплановые события высокой важности (например, внеочередные решения/заявления FOMC, intermeeting actions) фиксировались отдельно на всякий случай, но в плановые календари не включались и не использовались в бэктесте, поскольку не являются запланированными публикациями.

Экономические календари находятся в data-hub/economic_calendars/.

В пути data-hub/economic_calendars/raw/ выложены собранные календари с событиями в локальном времени релиза источника, по частям — для повышения прозрачности. В пути data-hub/economic_calendars/prepared/ находятся нормализованные календари — приведённые к UTC+0, которые использовались как входные файлы в бэктесте.

Календари не содержат фактических значений релизов — только метаданные: время, название, степень важности, страна/регион и т. д.

Нормализация календарей включает только приведение времени публикаций к UTC+0 и сортировку записей. Преобразование в UTC+0 выполнено с использованием базы часовых поясов IANA, что обеспечивает корректный учёт локальных правил времени и переходов на/с летнего времени (DST). Несоответствий из-за переходов DST нет: ключевые вышеперечисленные макрорелизы не публикуются в часы перевода времени.

Скрипт нормализации экономических календарей — data-preparation-toolkit/economic_calendar_normalizer

Все данные календарей, использовавшихся в бэктесте, полностью прозрачны и воспроизводимы.



Публичная логика движка M5 EMM

Нормализация входных данных и детерминизм

Движок принимает входные минутные данные и календарные события с временными метками в формате UTC (ISO-8601). Перед запуском моделирования все исходные ряды приводятся к единому и воспроизводимому виду, чтобы результат зависел только от самих данных, а не от порядка строк, дубликатов или артефактов источника. Минутные записи упорядочиваются по времени; если для одной и той же метки встречается несколько строк, учитывается последняя, а предыдущие считаются устаревшими; некорректные или неполные ценовые значения исключаются. Искусственные заполнения и интерполяции не применяются — в расчёт попадает только фактическое содержимое данных.

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

Календарные данные (часовые события и торговые расписания) приводятся к единому виду и дедуплицируются; их применение описано в разделе Реализованная логика стратегии M5 EMM.

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

Детерминизм результатов.

Результаты симуляции детерминированы: при идентичном входе повторные запуски воспроизводят один и тот же набор сделок, времён и цен. Это достигается за счёт стабильной сортировки и снятия дублей, фиксированной сетки и правил сопоставления минут окнам, однозначного выбора «самой ранней» минуты, единого установленного epsilon, фиксированного приоритета SL при конфликте с TP, строгих правил квант-логики и отсутствия случайности. Частично заполненные бары сохраняются без интерполяций; реальные паузы в данных не заполняются и учитываются логикой разрывов. Для точной воспроизводимости фиксируются версии зависимостей движка M5 EMM.

Детерминизм файлов на выходе.

Файловые артефакты симуляции формируются детерминированно: при неизменных входных данных, параметрах и версиях зависимостей каждое повторное выполнение производит идентичный набор файлов с совпадающим содержимым. Это обеспечивается единообразной временной базой и фиксированной M5-сеткой, предварительной нормализацией минутных записей (стабильная сортировка, снятие дублей без интерполяций), предсказуемой последовательностью этапов симуляции (двухпроходная схема с формированием сделок и снимков баланса, сопоставлением баланса моментам входа и финальным прогоном без случайных компонентов), а также стабильными правилами сериализации (постоянный разделитель, фиксированная числовая точность, единый формат меток времени и упорядочение строк по времени). Состав и наименования выходов остаются постоянными за счёт шаблонов с детерминированным определением года; визуализация SVG строится из уже детерминированного ряда баланса и потому также воспроизводима. Для внешней верификации неизменности формируется файл artifacts_YYYY.sha256 со списком SHA-256 всех входных и выходных артефактов; строки в нём упорядочиваются, что делает сам файл контрольных сумм побитово стабильным. При одинаковых входах/параметрах и фиксированных версиях библиотек содержимое trades_YYYY.csv*, balance_YYYY.csv* (ряд баланса), summary_YYYY.csv*, balance_YYYY.svg и artifacts_YYYY.sha256 повторяется строго.


Процесс агрегирования минут в M5 бары

Минутные котировки укладываются на фиксированную пятиминутную сетку: окно начинается в момент t и охватывает промежуток [t, t+5 минут), каждая минута попадает ровно в одно окно. Для каждого окна формируется один M5-бар: Open — из самой ранней доступной минуты окна, High/Low — максимум/минимум среди минут окна, Close — из самой поздней доступной минуты окна. Если в окне нет ни одной валидной минуты, бар не создаётся; если минут меньше пяти, бар считается частично заполненным и сохраняется без заполнений/интерполяций. Метка бара — время начала окна.

Агрегация выполняется после нормализации/дедупликации минутных данных.

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


Логика исполнения ордеров

Реализованная логика предполагает работу с маркет-ордерами. Подробное описание модели издержек по маркет-ордерам см. в разделе Методология модели издержек (EUR/USD) M5 EMM.

Подробное объяснение по причинам реализации логики расчета уровней Objective (TP) и Guard (SL) относительно полностью сформированных М5 баров а не по мере накопления минут в текущем М5 (look-ahead) смотреть в разделеАргументация объективности реализации look-ahead логики математических расчётов уровней Objective (TP) и Guard (SL) по полностью сформированным 5-минутным барам в движке M5 EMM


Логика исполнения ордеров при появлении разрывов

После входа позиция сопровождается на M1 внутри текущего M5-бара. Если возникает разрыв (нет минут внутри одного или нескольких M5-баров), проверка закрытия возобновляется на первой доступной минуте после разрыва. Закрытие при этом считается по расчётному уровню, а не по цене открытия минуты после разрыва.


Логика детектов разрывов

Детектор проверяет каждый M5-бар, сравнивая:

  1. Временной разрыв между
    • последней минутой до открытия текущего TF-окна и
    • первой минутой внутри текущего TF-окна.
    Если пауза строго больше заданного порога (в минутах) — фиксируется разрыв.

  2. Ценовой разрыв между
    • закрытием последней минуты прошлого окна и
    • открытием первой минуты текущего окна.
    Если модуль разницы ≥ заданного порога (в пипсах) — фиксируется разрыв. (Порог установлен в 25 пипсов.)

Условия применяются только если доступны и «предыдущая минута», и «первая минута текущего окна». Если одна из них отсутствует — разрыв на этом баре не детектируется.

Если перерыв до начала текущего окна превышает отдельный «длинный» порог (reopen) в 1440 минут, то даже при срабатывании условий выше разрыв не активирует блокировку (считается нормальным перезапуском после долгого простоя — выходных/праздников). Если обнаружен хотя бы один тип разрыва (время или цена) и это не реопен, то старт «штрафного» окна — первая минута текущего TF-окна, в котором был обнаружен разрыв. Длительность «штрафного» окна задана в минутах. (Установлено значение 30 минут.)

Пока текущий M5-бар попадает в «штрафное окно», действует запрет только на новые входы. Сопровождение и выход уже открытых позиций выполняются в обычном порядке. Если у M5-бара вообще нет ни одной минуты, бар пропускается целиком, и сопровождение/выходы на нём не проверяются. Когда текущее время TF-бара достигает конца блокировки (или позже), блок снимается, работа продолжается в штатном режиме.

Проверка на разрыв выполняется внутри ветки допуска к поиску входов (после сторонних квант-факторов), до проверки касаний Trigger. Штрафное окно ставится, если бар допущен к поиску входов и на нём детектирован разрыв, независимо от наличия касаний Trigger. Если бар не допущен или это reopen, «штрафное окно» не ставится — это сделано для консерватизма, чтобы не вводить лишнюю фильтрацию там, где входы всё равно невозможны.

Замечания по реализации:

Детектор разрывов анализирует только границу M5-окна — интервал между последней M1 до начала окна и первой M1 внутри этого окна. Пропуски минут внутри самого окна гэпом не считаются и «штрафное окно» из-за них не ставится. При этом действуют два правила качества данных:

Итог: штраф за гэп возникает только при разрыве на границе окон (по времени или по цене). Внутри M5-окна разрывы не детектируются и не штрафуются.

Из-за логики защиты от разрывов также могут быть пропущены потенциальные сделки, но по качеству данных за период с 2008-2025-08 вероятность таких случаев мала. Таким образом, реализованная логика детектов разрывов на границах окна M5 баров дополнительно фильтрует разрывы для повышения объективности результатов. Причина, по которой «штрафное окно» ставится именно при разрывах на границах окон M5-баров, в том, что уровни Trigger / Guard / Objective фиксируются на закрытии каждого M5-бара (по данным бара), и затем не пересчитываются внутри бара. Новый набор уровней появляется именно на смене окна M5, поэтому и контроль разрывов делается на границе: сравнивается последняя M1 до окна и первая M1 внутри окна — естественная точка для детекта. Разрывы внутри M5 «штрафное окно» не запускают: внутри бара уровни неизменны, поэтому достаточно фильтра пригодности бара к входам без дополнительной блокировки. Вводить «штрафное окно» на разрывы внутри M5-бара — излишне жёсткий фильтр, поэтому при разрывах внутри M5-баров применяется фильтр пригодности бара для поиска входов (без постановки «штрафного окна»).

Детект разрывов применяется исключительно в ветке допуска к поиску входов (и до проверки касаний уровней), а вне этого контекста — не активируется; такой метод выбран, чтобы не усиливать фильтрацию редких артефактов минутных данных и не вносить лишний шум в бэктест. Эмпирически подход подтверждён стабильностью результатов бэктеста на длинном горизонте с учетом классификации периодов по качеству данных.


Логика учета издержек, расчета и округления объема сделки

Движок настроен на фиксированные параметры издержек для одного годового прогона (в рамках выбранного профиля/режима и календарного года). В состав издержек входят: комиссия, spread и slippage. Все три компонента применяются к каждой сделке; опубликованные результаты уже включают их влияние на PnL.

Point и pip. Для пятизнака 1 pip = 10 points. Все пороги/издержки задаются в пипсах и переводятся в цену.

Подробности о методологии модели издержек см. в разделе Методология модели издержек (EUR/USD) M5 EMM.

Итог: комиссия учитывается отдельно от риска, а spread/slippage включаются в расчёт риска и размера позиции; все издержки применяются к каждой сделке, поэтому результаты прогонов и сводные метрики уже отражают их влияние.

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

При достижении в одной минуте сразу двух уровней Trigger внутри M5-бара сделки открываются от обоих уровней; риск берётся установленный по умолчанию на каждую сделку от баланса на момент входа (например, при балансе $100 000 и риске 1% на сделку обе сделки откроются с риском по 1% каждая — риск не делится на два).

Округление лота по риску. Сначала вычисляется «сырой» объём позиции так, чтобы потенциальный убыток при срабатывании стоп-лосса соответствовал целевому риску; при этом дистанция до SL берётся уже с учётом spread/slippage. Затем объём всегда округляется вниз до ближайшего допустимого шага, поэтому фактический риск по стопу не превышает целевой. Превышение возможно лишь в частных случаях:

Spread и slippage заданы явно и учитываются на этапе лот-сайзинга: дистанция от входа до SL берётся уже с учётом этих издержек.


Epsilon (ε)

В модели используется единый допуск сравнения ε, равный одному минимальному шагу котирования инструмента. Для EURUSD (5-знак): ε = 0.00001 (1 point = 0.1 pip).

Область применения.
ε используется только при бинарной проверке факта «касания» расчётного уровня экстремумом минутного бара (High/Low) внутри M5-окна. На вычисление самих уровней ε не влияет.

Порядок относительно издержек.
Сначала фиксируется событие «касание/не касание» с учётом ε; затем формируется цена исполнения с применением заданных издержек (spread/slippage/commission). ε не изменяет величины издержек.

Исключения (где ε не применяется).
Детекция разрывов и проверки пригодности бара для входов трактуются строго по заданным неравенствам (> / ) без ε.

Обоснование выбора.
Значение 0.1 пипса является минимально достаточным для нивелирования пограничных ошибок дискретизации и округления на M1, не «расширяет» уровни до зон и не создаёт методологического преимущества; возможные сдвиги меньше шага котирования и существенно ниже транзакционного шума (spread/slippage/commission).

Детерминизм.
Фиксированное ε обеспечивает воспроизводимость результатов при одинаковых входных данных.

Смежные правила исполнения.
Внутриминутные конфликты порядка событий разрешаются фиксированным приоритетом: Guard (SL) имеет приоритет над Objective (TP) при одновременном достижении.

Примечание (OTC-специфика).
Минутные ряды разных провайдеров (например, HistData и Dukascopy) могут микроскопически расходиться по OHLC из-за тайм-зоны, типа цены и агрегации. Формализация ε нормирует критерий «касания» и снижает влияние таких расхождений.



Реализованная логика стратегии M5 EMM

Реализованная версия M5 EMM покрывает базовое ядро — порядка 10–15% полной стратегии, представляя минимально-достаточный набор сделок для демонстрации эффективности. В этой реализации все операции — торговые решения, вычисления и учёт признаков — выполняются исключительно на 5-минутном масштабе. Модуль M5 неполный: из-за сложности подхода и ограничений по ресурсам внедрение всего комплекса квант-факторов даже в рамках одной модели M5 не завершено. Кроме того, текущая версия не включает основную логику работы в пострелизных окнах важных макроданных, которая является одним из ключевых источников результативности. Полная стратегия EMM — это композиция сигналов на таймфреймах M1, M5, M15, M30, H1 с учётом макроструктурных закономерностей индекса доллара, с собственной методикой расчёта; тем не менее представленного M5-ядра достаточно, чтобы продемонстрировать его продуктивность.


Временные фильтры реализованной логики M5 EMM

Реализованная стратегия опирается на торговлю макроструктурой на M5-барах и торгует только в спокойные интервалы торговых окон. Это не «только Азия»: под «спокойными» понимаются окна вне волатильных интервалах в начале каждого часа сессий London–NY, ролловера и релизов; фильтры применяются и в активных отрезках London–NY. Все запреты заданы фиксированными окнами в UTC и не зависят от DST (источник данных HistData с фиксированной EST-привязкой учтён; ссылка на F.A.Q. с форматом времени — http://www.histdata.com/f-a-q/).

В рамках логики EMM реализованы 10-минутные блоки — фильтр волатильных окон начала часа в активных отрезках сессий London–NY, где обычно происходит статистическое увеличение издержек (spread/slippage). Также реализованы специальные фиксированные фильтры на запрет и ужесточение открытия позиций на определённые фиксированные окна времени на основе логики EMM. Ролловер и окно CME Globex закрыты постоянным окном, покрывающим и лето, и зиму.

FX-ролловеры по UTC:

CME Globex ежедневный технический перерыв по UTC:

Фильтр реализован как полный запрет торговли с 19:00 до 00:10 UTC (включает FX-ролловеры и окно CME Globex, независимо от DST). Соответственно, к моменту ролловера и перерыва CME Globex открытых сделок нет, и закрытия сделок в эти периоды не выполняются. Это также подтверждают трейд-метрики средней продолжительности сделок.


Календарные фильтры реализованной логики M5 EMM

Экономические календари собраны только по заранее определённым плановым релизам Еврозоны и США, которые отнесены к событиям высокой важности. Все события приведены в UTC и не зависят от DST.

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



Методология модели издержек (EUR/USD) M5 EMM

Все компоненты модели издержек — комиссия, spread и slippage — учтены в каждой сделке. Spread и slippage отражены в эффективной цене исполнения ордеров.

См. раздел Логика учёта издержек, расчёта и округления объёма сделки.


Режимы комиссий


Institutional

Во всех институциональных режимах применяется фиксированная комиссия $5.5 за round-turn на 1 стандартный лот (100 000 EUR) как отдельная строка расходов, независимо от типа потока (ECN/PoP raw-spread, single-dealer, «zero-commission» и т. п.).
Эквиваленты: ≈ 0.55 pips RT (≈ $2.75 per side; $55 за $1 млн RT).

Spread и slippage учитываются отдельно согласно модели исполнения по EUR/USD из таблицы m5_emm_cost_model_v1.0.csv и не включают комиссию. Итоговая транзакционная стоимость рассчитывается как сумма (spread + slippage) и комиссии $5.5 RT/лот.

Обоснование выбора

Рыночные уровни (справочно)

В расчётах используется фиксированное значение $5.5 RT/лот; таблица ниже предназначена для сопоставления с рыночной практикой.

Поток / venue Способ взимания Типичный уровень (RT/лот) Эквивалент, пипсы RT $ за $1M RT Комментарий
Top-tier ECN / PoP (raw-spread) Комиссия отдельной строкой $4–6 0.40–0.60 $40–60 Бенчмарк для средних/крупных участников; $5.5 — центр.
Prime-broker direct, high volume Комиссия отдельной строкой $2–4 0.20–0.40 $20–40 Требуются высокие обороты и строгие ценовые тиры.
Smaller PoP / низкая частота Комиссия отдельной строкой $6–7 0.60–0.70 $60–70 Меньшие скидки за объём; нерегулярная торговля.
Single-dealer (all-in) Стоимость в спреде +~0.3–0.7 п В модели комиссия учитывается отдельно (фикс. $5.5).
«Zero-commission» ECN 0 $/лот, шире спред ~0.5–0.8 п Эквивалент all-in; в модели комиссия задаётся отдельно.

Конверсии

Чувствительность (индикативно)

Формулы расчёта

Комиссия (институциональные условия, EUR/USD). По умолчанию применяется $5.5 за round-turn на 1 стандартный лот (100 000 EUR) как отдельная строка расходов, эквивалентная ≈ 0.55 пипса RT (≈ $2.75 per side; $55/$1M RT). Spread и slippage учитываются раздельно в соответствии с моделью исполнения. Диапазон рыночных условий для ECN/PoP составляет $4–6 RT/лот; для all-in-потоков стоимость содержится в спреде, однако в целях сопоставимости применяется единая явная комиссия.


Retail Rebate

В розничном профиле Retail Rebate используется усреднённая комиссия $5.00 за round-turn на 1 стандартный лот (100 000 EUR) на счетах raw ECN/PoP, после кэшбэка. Эквиваленты: ≈0.50 pips RT, ≈$2.50 per side, $50 за $1 млн RT. Комиссия учитывается отдельной строкой и не включается в spread/slippage.

Используется режим retail ECN/PoP (raw-spread) с IB/кэшбэком на комиссию. Комиссия взимается и отражается отдельной строкой; стандартные all-in счета не применяются. При расчётах комиссия не включается в (spread/slippage). Пара EUR/USD; значение применяется ко всем сделкам розничного профиля (при действующих операционных лимитах объёма до 50 лотов).

Интерпретация в модели.

Комиссия выражается в $ и пипсах согласно стандартным конверсиям для EUR/USD (1 лот = $10/пип):

Рыночный контекст (справочно).

Без кэшбэка у retail-ECN типичный уровень $6.5–7.0 RT/лот (≈ 0.65–0.70 п). С кэшбэком диапазон часто $4.5–5.5 RT/лот; выбранное значение $5.0 RT/лот соответствует центральной тенденции и подходит как нейтральная средняя. Индикативная чувствительность.

Профиль Retail Rebate применим к условиям розничных брокеров на raw-spread. Для all-in тарифов комиссия формально отсутствует (стоимость заложена в spread); в рамках данного профиля используется явная комиссия $5.00 RT/лот, а spread/slippage моделируются отдельно.


Retail Standard

В розничном профиле Retail Standard используется усреднённая комиссия $7.00 за round-turn на 1 стандартный лот (100 000 EUR) на счетах raw ECN/PoP, без кэшбэка/ребейта. Эквиваленты: ≈0.70 pips RT, ≈$3.50 per side, $70 за $1 млн RT. Комиссия учитывается отдельной строкой и не включается в spread/slippage.

Используется режим retail ECN/PoP (raw-spread) без IB/кэшбэка. Комиссия взимается и отражается отдельной строкой; стандартные all-in счета не применяются. При расчётах комиссия не включается в (spread/slippage). Пара EUR/USD; значение применяется ко всем сделкам розничного профиля (при действующих операционных лимитах объёма до 50 лотов). Интерпретация в модели.
Комиссия выражается в $ и пипсах согласно стандартным конверсиям для EUR/USD (1 лот = $10/пип):

Профиль Retail Standard применим к условиям розничных брокеров на raw-spread без кэшбэка; spread/slippage моделируются отдельно и не содержат комиссии.


Динамическая модель издержек (spread/slippage) на основе средних Notional Volume (EUR) сделок стратегии M5 EMM

Таблица издержек средних значений по Notional Volume (EUR/USD, top-tier ECN/PoP) eurusd_market_order_costs_ecn_round-turn_pips_v1.0.csv

Ниже описаны принципы формирования и использования таблицы eurusd_market_order_costs_ecn_round-turn_pips_v1.0.csv, отражающей издержки исполнения рыночных ордеров по EUR/USD. Параметры рассчитаны для потоков top-tier ECN / Prime-of-Prime (raw-spread) с мульти-LP агрегированием. Все величины выражены в пунктах (pips) за round-turn (RT), то есть суммарно по входу и выходу.

Временные допущения (соответствуют логике стратегии M5 EMM).

Расчёты выполняются для «спокойных интервалов»:

Реалистичность и ограничения.

Прозрачность и воспроизводимость.

Таблица отражает индустриально-калиброванные средние издержки исполнения по EUR/USD на top-tier ECN/PoP (raw-spread) в спокойные часы; комиссия ($/лот) учитывается отдельно. Любая третья сторона может независимо сопоставить уровни, применяя рыночные сделки в спокойные интервалы и измеряя RT-стоимость = spread (RT) + slippage (RT). Для небольших объёмов расхождения обычно минимальны; допуск порядка ±0.10 пипса RT считается операционно приемлемым. Для крупных объёмов вариативность выше, но должна укладываться в указанные диапазоны. Таблица служит прозрачным ориентиром и не является обещанием конкретных условий у определённого контрагента.


Таблица значений издержек использовавшихся в бэктесте M5 EMM m5_emm_cost_model_v1.0.csv.

Издержки spread/slippage задаются фиксированно для каждого годового прогона на основе средних объёмов сделок, рассчитанных из средних расстояний стопов, фиксированного риска и баланса в рамках реализованной логики движка M5 EMM. По мере изменения баланса от года к году модель издержек корректируется в соответствии с таблицей средних значений — m5_emm_cost_model_v1.0.csv.

В таблице m5_emm_cost_model_v1.0.csv указаны значения для каждого профиля/режима риска/капитализации и года, использовавшиеся в бэктесте. Значения spread/slippage учитываются как усредненные по диапазонам notional volume (EUR) на основе таблицы eurusd_market_order_costs_ecn_round-turn_pips_v1.0.csv. (Для institutional профиля Notional 15M–30M используются завышенные значения как стресс-ориентир.)

Пример профиля (Institutional)

Notional 1M–5M; initial balance — $1 000 000; ресет к $1 000 000 при достижении баланса по закрытию года ≥ $1 500 000.
Диапазон средних значений spread + slippage (round-turn): 0.4–0.75 pips (источник: eurusd_market_order_costs_ecn_round-turn_pips_v1.0.csv).
В бэктесте использовано консервативное значение 0.65 pips из таблицы m5_emm_cost_model_v1.0.csv — как среднее и фиксированное для диапазона Notional 1M–5M.

Примерная граница: при самом коротком расстоянии до стопа и фиксированном риске для notional 5M баланс будет приблизительно $1 500 000. Соответственно, по закрытию года при достижении примерного рассчитанного порога срабатывает ресет баланса к приближенному медианному значению, чтобы удерживать объёмы сделок в среднем в пределах диапазона 1M–5M.

По такой же логике реализованы и другие режимы капитализации:

В Retail-профилях логика учёта издержек идентична. Размеры издержек для каждого годового прогона задаются на основе initial balance. Это одинаково работает и при ежегодном ресете, и при compounding на весь период — логика не меняется. В режиме compounding, если по закрытию годового прогона баланс подбирается к приближённому значению, при котором объём сделки с минимальным расстоянием до стопа вплотную подходит к границе диапазона notional либо совпадает с ней (где издержки должны увеличиваться), издержки корректируются справедливо для следующего года. Аналогично реализовано для случаев если следующий годовой результат пересекает значительно эту границу.

Обе таблицы имеют SHA-256-хэши, GPG-подписи и OTS-якоря для верификации и воспроизводимости результатов бэктеста. Все значения издержек (commission, spread, slippage), используемые в бэктесте, закреплены в SHA-256-манифесте CSV-таблицы m5_emm_cost_model_v1.0.csv; манифест подписан GPG и привязан ко времени через OpenTimestamps. Это гарантирует соответствие параметров конкретным профилям/режимам и календарным годам бэктеста и подтверждает, что публикуемые результаты годовых прогонов и метрики рассчитаны именно при этих значениях.



Аргументация объективности реализации look-ahead логики математических расчётов уровней Objective (TP) и Guard (SL) по полностью сформированным 5-минутным барам в движке M5 EMM

Исходя из раздела логики исполнения ордеров, следует, что расчёт уровней Objective (TP) и Guard (SL) выполняется относительно текущего M5-бара в симуляции, с применением look-ahead: уровни строятся на основе полностью сформированного M5-бара, а не частично (не по мере накопления минут). Данная модель была реализована намеренно, для моделирования максимально объективных результатов. Ниже приводится чёткое логическое объяснение.

Обоснование точности минутного бэктеста и тиковая аппроксимация

При наличии минутных данных наиболее объективной аппроксимацией тиковой реальности является текущая логика: уровни рассчитываются на уже сформированном M5-баре (look-ahead), а исполнение проверяется на M1 без интерполяций и без «заглядывания вперёд». Причина проста: в реальной торговле служебные уровни переоцениваются на каждом тике в режиме реального времени.

Оценочные ориентиры по плотности тиков (лучшие розничные ECN FX):

С учётом вариативности консервативную оценку можно принять как ≈5 тиков/с (≈300 тиков/мин), то есть ~300 переоценок уровней в минуту в реальном времени — при том, что стратегия ограничена специальными фильтрами в торговых сессиях (Лондон–Нью-Йорк) и исключает торговлю на релизах ключевых макроданных.

Попытка строить бэктест на одних минутках с пересчётом уровней внутри 5-минутного окна даёт максимум 5 пересчётов на бар (по одному на каждую минуту) вместо 1500 шагов при тиковом потоке (например, 5 мин × ~300 тиков/мин). Такая редкая переоценка уровней способна вносить заметную погрешность, если не применять политику look-ahead. Для 4-часового таймфрейма на минутных данных внутри бара будет ~240 минут, то есть ~240 шагов — это уже ближе к приемлемой аппроксимации хотя всё же не дотягивает по требованиям логики M5 EMM (приведено для интуитивного контраста). Для M5 же падение частоты пересчёта до 5 шагов делает оценку уровней по «недостроенному» бару методологически уязвимой для искажений, особенно для интрадей-подходов с небольшими целями.

Вывод. Расчёт уровней по полностью сформированным M5-барам при проверке исполнения на M1 обеспечивает аппроксимацию, близкую к тиковому моделированию на базе минутных данных и при этом не приводит к искусственному «улучшению» исполнения.

Обоснование незначительности ожидаемого расхождения:

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

Следовательно, применение look-ahead только на этапе расчёта уровней по полностью сформированному M5-бару не создаёт модельного преимущества.

Ограничение look-ahead. Look-ahead применяется только на этапе расчёта уровней Objective (TP) и Guard (SL) из полностью сформированного M5-бара. Сигнальный Trigger и всё исполнение (касания TP/SL) обрабатываются без look-ahead на M1; вся прочая квант-логика движка M5 EMM также работает без look-ahead.

Коротко: хронология и границы look-ahead

  • Определение. Уровни Objective (TP) и Guard (SL) рассчитываются из полностью сформированного M5-бара t (осознанный look-ahead).
  • Порядок применения. Рассчитанные на t уровни немедленно проверяются внутри того же M5-окна t на минутных данных (M1) по экстремумам соответствующих минут (ретроспективная проверка внутри окна t).
  • Зона действия look-ahead. Look-ahead используется исключительно на этапе вычисления уровней. Все проверки касаний и исполнение на M1 выполняются без look-ahead: фиксированные правила сравнения (≤ / ≥) с ε = 1 тик, приоритет SL при конфликте с TP, отсутствие интерполяций; вся прочая квант-логика движка M5 EMM также работает без look-ahead.
  • Обоснование подхода. Данный порядок аппроксимирует тиковую переоценку уровней на минутных рядах без синтетических интерполяций и «заглядывания вперёд» на уровне M1.
  • Отсутствие необоснованного преимущества. Симметрия правил для long/short, жёсткая модель издержек (spread/slippage/commission), а также сессионные/календарные ограничения исключают системное смещение результатов; возможный эффект существенно меньше вклада транзакционных издержек.


Аргументация выбора минутных данных HistData для бэктеста M5 EMM

Изначально, бэктест планировался на тик-данных Ducascopy для максимальной точности результатов чтобы обойтись без look-ahead логики математических расчётов уровней Objective (TP) и Guard (SL) по полностью сформированным 5-минутным барам, однако решение было принято использовать минутные данные HistData по ряду причин.

Цели бэктеста:


Прозрачность и воспроизводимость

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

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

Для тик-данных любого источника требуется ещё и полная нормализация, удаление дублей и т. д. — что сводит прозрачность и воспроизводимость к минимуму; при этом существенное усложнение пайплайна не даёт дополнительной практической пользы для целей этого бэктеста. Качество тиков Dukascopy объективно неизвестно без полного аудита по всему исследуемому периоду. Для честной оценки необходимо выгрузить все тики за весь горизонт бэктеста — это десятки гигабайт в сжатом виде и до сотен гигабайт в CSV/Parquet, а нормализацию такого объёма независимая сторона, как правило, верифицировать не будет.


Тик-данные публичного доступа

Обоснование выбора минутных данных, а не тик-данных

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

Итог: для целей данного бэктеста рациональнее опираться на минутные ряды + детерминированные правила исполнения, а не на публичные тики.


OTC-специфика и расхождения M1-данных

Рынок spot-FX имеет OTC-специфику (отсутствует единый консолидированный поток котировок). Следовательно, минутные бары (M1) разных поставщиков не обязаны совпадать покадрово. Источники расхождений: состав и маршрутизация LP-потока, тип цены (Bid/Ask/Mid/Last), разметка минуты (start/end-of-minute), граница суток и DST, правила агрегации и очистки тиков, обращение с укороченными сессиями.

Следствие. Для любых провайдеров (в т.ч. HistData, Dukascopy) наблюдаются различия в OHLC отдельных минут. После приведения к единой спецификации эти различия носят операционно несущественный характер для реализованной стратегии.

Граница применимости. Материальная чувствительность возникает для конфигураций с очень короткими стопами 2–5 пипсов, триггерами на экстремумах минуты и тик-точной имитацией исполнения без нормализации.


Причины операционной незначимости различий источника M1-данных для M5 EMM

Канонический источник. В бэктесте используется HistData M1; спецификация минутных баров провайдера принимается «как есть» и задаёт рабочий стандарт.

Нормализация. Единственная операция — перевод фиксированного EST в UTC (пересчёт таймстемпов).
Не выполнялись: сдвиг минутных меток, пересборка OHLC, интерполяция пропусков, корректировки цен/объёмов и т.д.
Методологически: преобразование M1→M5 — это агрегация для расчёта, а не нормализация исходного ряда.

Следствие. Все расчёты основаны на сыром HistData M1 в UTC; этот ряд выступает каноничной спецификацией минут в рамках бэктеста. Альтернативные источники считаются сопоставимыми при приведении к тем же правилам агрегации источника HistData.

Факторы, снижающие влияние межпровайдерных дельт (при соблюдении указанной каноничной спецификации):

Итог. Небольшие различия M1 между провайдерами — нормальная особенность OTC-FX и, при приведении источников к каноничной спецификации минут, не влияют на общую картину эффективности M5 EMM. Поддержка «параллельного трека» на другом провайдере не обязательна и снижает прозрачность из-за трудоёмкой нормализации к общему стандарту; по-настоящему детальный микро-бэктест возможен лишь в институциональных условиях.

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


Вывод по выбору данных

Усложнять пайплайн за счёт скриптов и библиотек для массовой выгрузки минутных/тиковых рядов из Dukascopy, их детальной нормализации и оценки пригодности нецелесообразно для поставленных задач: это снижает проверяемость и воспроизводимость результатов. Рациональный выбор — минутные данные HistData в сочетании с детерминированными правилами интрабарного исполнения и явно заданной моделью издержек.

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

Цель данного бэктеста — не предельная точность отдельных метрик, а наглядная демонстрация общей динамики и свойств стратегии на длинном историческом горизонте при консервативной модели исполнения.

Примечание. «По-настоящему подробный» микробэктест — с честной очередностью, частичными исполнениями, реалистичной ликвидностью и спред-микродинамикой, точным порядком событий — возможен только на институциональных данных и уровне разработки (EBS / Cboe FX / Refinitiv и др.), где доступны L2/L3, события книги заявок (add/modify/cancel/trade), микросекундные/миллисекундные метки и lossless-съём.



Результаты: периоды по Data Quality Policy v1.0, профили, режимы риска, режимы капитализации и детерминизм

Периоды по Data Quality Policy v1.0

На основе Data Quality Policy v1.0 из раздела Входные данные для бэктеста M5 EMM классификация периодов бэктеста следующая:


Профили

Профили классифицированы по размеру и структуре комиссий:


Режимы риска и капитализации

Institutional профиль имеет режимы капитализации относительно диапазонов notional volume с риском 1.0%


Детерминизм результатов

Движок М5 ЕММ настроен детерминированно. Описание в разделе Публичная логика движка M5 EMM. Соответственно, результаты воспроизводятся бит-в-бит при одинаковых входных данных с соблюдением версий Python, библиотек и зависимостей которые использует движок бэктеста.

Метрики посчитаны на основе непубличных файлов результатов — детальных отчётов по сделкам (с метками времени и ценами), а также временных рядов баланса/просадки с привязкой ко времени. Отдельных SHA/GPG/OTS для метрик нет, поскольку метрики воспроизводимы из этих исходных файлов; для проверки достаточно верифицировать целостность самих файлов результатов (по годовым манифестам, генерируемым движком M5 EMM) и пересчитать метрики открытым скриптом.



Доказательства существования логики стратегии и ее неизменности

Криптографическая связка - доказательство существования и целостности закрытого архива стратегии

SHA-256, GPG-подпись и OTS-якорь детерминированного архива кода движка стратегии бэктеста сделаны для верификации существования самой логики, реализованной в коде. В случаях, когда требуется подтверждение достоверности, оригинальный движок стратегии, на котором производился весь проект M5 EMM бэктеста, легко верифицируется через эту криптографическую комбинацию.

Environment snapshot

Runtime

Python packages (locked)

Примечание: пакеты зафиксированы по версиям (lock), что обеспечивает воспроизводимость.


Видео лайв-прогоны

Лайв-прогоны выполнены на случайно отобранных годах в разных треках для подтверждения неизменности логики стратегии и воспроизводимости результатов на всём горизонте бэктеста при использовании значений издержек из таблицы m5_emm_cost_model_v1.0.csv. Для всех периодов применяется одна и та же зафиксированная версия архива стратегии; на годовых прогонах варьируются только параметры издержек, начальный баланс и риск на сделку.

На каждом видео показано, что:

Live-прогоны зафиксированы как непрерывные, несмонтированные записи экрана (one-take; без склеек, кадрирования, ускорений и иной пост-обработки) публикуются исходные файлы с SHA-256, GPG-подисями и OTS-якоря для независимой проверки целостности.

Ссылки на просмотр видео:

Ссылки для скачивания (видео и файлы целостности):



Mетрики

Методология расчёта метрик (основное)

  • Calmar — защита знаменателя. При расчёте показателя Calmar применяется ε-guard к |MaxDD|, исключающий деление на величину, близкую к нулю.

Intramonth vs EoM (кратко).


Методика расчёта Conditional Sortino (strict, loss-only)

Определение. В отчётах используется strict (консервативная) версия Sortino, ориентированная на точную оценку риска торговых стратегий. Downside-отклонение рассчитывается только по убыточным месяцам (loss-only) относительно целевого уровня (T=0\%) в месяц, со статистическим стандартным отклонением (\mathrm{ddof}=1). Годовая нормализация — умножение на (\sqrt{12}).

\[\mathrm{Sortino} = \frac{\bar r - T}{\sigma_{\text{down, loss-only}}}\cdot\thinspace\sqrt{12}\] \[\sigma_{\text{down, loss-only}} = \sqrt{\frac{\sum\limits_{i\thinspace\colon\thinspace r_i < T} (r_i - T)^2}{M - 1}}\]

где (M) — число убыточных месяцев в окне. Если (M<2), показатель не публикуется (insufficient negatives).

Отличия от «стандартного» Sortino. В отраслевой практике распространён вариант на основе LPM(2), где в знаменателе используются все наблюдения (N) (положительные и нулевые месяцы дают нулевой вклад), а также чаще применяется (\mathrm{ddof}=0):

\[\sigma_{\text{down, std}} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}\big(\min(r_i - T, 0)\big)^2}\]

Такой подход «разбавляет» риск неотрицательными месяцами и обычно даёт более высокие значения Sortino по сравнению со строгим loss-only.

Мотивация выбора. Loss-only с (\mathrm{ddof}=1) исключает размывание риска «плоскими» и положительными месяцами и даёт более консервативную и точную оценку чувствительности к убыточным эпизодам — что критично для внутримесячных/интрадей-профилей и риск-менеджмента.

Сопоставимость с отраслью. Для грубой конвертации к «стандартному» LPM-варианту можно использовать оценочное соотношение

\[\mathrm{Sortino}_{\text{std}} \approx \mathrm{Sortino}_{\text{loss-only}}\cdot\thinspace\sqrt{\frac{N}{M-1}}\]

где (N) — размер окна (например, 12 или 36 мес.), (M) — число убыточных месяцев. При малом (M) стандартный Sortino будет существенно выше.

Замечание по скользящим окнам. На коротких окнах (12м) при малом числе убыточных месяцев ((M)) строгая методика даёт Sortino < Sharpe — ожидаемое свойство формулы, а не ошибка расчёта. На длинных горизонтах эффект сохраняется, но выражен слабее.

Параметры расчёта.


OOS / Walk-Forward / Multiple Testing & Selection Bias

OOS/Walk-Forward по времени не применяются, так как используется одна фиксированная логика M5 EMM без переоптимизации/подгонки параметров. Назначение временного OOS — выявлять переобучение после подбора параметров, чего здесь нет.

Multiple testing / selection bias отсутствуют, так как тестировалась одна гипотеза/один набор параметров, без перебора конфигураций и без cherry-picking.

Cross-asset test на GBPUSD выступает как независимый out-of-sample (OOS) по активу: параметры стратегии, оптимизированные на EURUSD, применены без изменений к GBPUSD. После Brexit корреляция EURUSD–GBPUSD снизилась, поэтому успешное применение модели на GBPUSD подтверждает:

Робастность стратегии дополнительно подтверждается:

Аудит. По запросу может быть подготовлен holdout-период без какого-либо переобучения и изменения параметров для независимой проверки.


Monte Carlo

Примечание: итоговые цифры в Monte Carlo агрегируются по медианам между конфигурациями блоков.

Доверительные интервалы (BCa)

Trade bootstrap (EDR & серии убыточных сделок)


Benchmark

В паре EUR/USD отсутствует естественная долгосрочная «лонг-премия», поэтому сравнение с внешними бенчмарками (фондовые индексы) и с направленными стратегиями buy-and-hold (как длинными, так и короткими позициями по EUR/USD) методологически некорректно; это видно из поведения долгосрочного ценового ряда на всём горизонте бэктеста. В проекте намеренно не используется внешний бенчмарк: качество оценивается внутренними риск-метриками (Sharpe, строгий Sortino, Calmar), стабильностью 12/36-месячных окон, бутстрэповыми доверительными интервалами и стресс-моделью издержек. Для расчётов риск-метрик принимается допущение о безрисковой ставке R_f = 0 (деноминация в USD, внутридневной M5). Такой подход обеспечивает сопоставимость результатов в рамках заявленного профиля риска.


Полная методология и определения метрик

См. docs/metrics_methodology/metrics_schema.json и docs/metrics_methodology/metrics_schema.md.

Продублированные файлы методологии и скрипт калькулятора для прозрачности опубликованы в metrics-toolkit.


Файлы метрик

Метрики CSV расположены в каждом треке режима капитализации в папке metrics.

Базовый набор метрик:

metrics/
  monthly_returns.csv
  full_period_summary.csv
  rebasing_applied.csv
  yearly_summary.csv
  trades_full_period_summary.csv

Расширенный набор метрик:

metrics/
  confidence_intervals.csv
  dd_quantiles_full_period.csv
  monthly_returns.csv
  monte_carlo_summary.csv
  full_period_summary.csv
  rebasing_applied.csv
  rolling_12m.csv
  rolling_36m.csv
  trades_full_period_summary.csv
  yearly_summary.csv

  • rebasing_applied.csv - для режимов с ребейзом баланса.


Краткий обзор результатов

Extended Baseline

Retail Standard

Balance Curve — Fixed Start 100k & Compounding EoY-SoY Base 100k Modes (Risk 1%, $7 round-turn per standard lot, M5 EMM cost model v1.0) 2003–2007

EMM M5 — Retail Standard — Extended Baseline 7 USD/lot — Balance Curve (Fixed Start) EMM M5 — Retail Standard — Extended Baseline 7 USD/lot — Balance Curve (Compounding)

Retail Rebate

Balance Curve — Fixed Start 100k & Compounding EoY-SoY Base 100k Modes (Risk 1%, $5 round-turn per standard lot, M5 EMM cost model v1.0) 2003–2007

EMM M5 — Retail Rebate — Extended Baseline 5 USD/lot — Balance Curve EMM M5 — Retail Rebate — Extended Baseline 5 USD/lot — Balance Curve

Core Baseline

Retail Standard

Balance Curve — Fixed Start 100k Mode (Risk 1%, $7 round-turn per standard lot, M5 EMM cost model v1.0) 2008–2025-08

EMM M5 — Retail Standard — Core Baseline 7 USD/lot — Balance Curve — Fixed Start


Balance Curve — Compounding EoY-SoY Base 100k Mode (Risk 1%, $7 round-turn per standard lot, M5 EMM cost model v1.0) 2008–2025-08

EMM M5 — Retail Standard — Core Baseline 7 USD/lot — Balance Curve


Retail Rebate

Balance Curve — Fixed Start 100k Mode (Risk 1%, $5 round-turn per standard lot, M5 EMM cost model v1.0) 2008–2025-08

EMM M5 — Retail Rebate — Core Baseline 5 USD/lot — Balance Curve


Balance Curve — Compounding EoY-SoY Base 100k Mode (Risk 1%, $5 round-turn per standard lot, M5 EMM cost model v1.0) 2008–2025-08

EMM M5 — Retail Rebate — Core Baseline 5 USD/lot — Balance Curve


Institutional

Balance Curve — Notional 1M-5M Mode (Risk 1%, $5.5 round-turn per standard lot, M5 EMM cost model v1.0) 2008–2025-08

EMM M5 — Institutional — Core Baseline 5.5 USD/lot — Balance Curve


Balance Curve — Notional 5M-15M Mode (Risk 1%, $5.5 round-turn per standard lot, M5 EMM cost model v1.0) 2008–2025-08

EMM M5 — Institutional — Core Baseline 5.5 USD/lot — Balance Curve


Balance Curve — Notional 15M-30M Mode (Risk 1%, $5.5 round-turn per standard lot, M5 EMM cost model v1.0) 2008–2025-08

EMM M5 — Institutional — Core Baseline 5.5 USD/lot — Balance Curve


Composite Baseline

Retail Rebate

Balance Curve — Compounding EoY-SoY Base 100k Mode (Risk 1.5%, $5 round-turn per standard lot, M5 EMM cost model v1.0) 2003–2025-08

EMM M5 — Retail Rebate — Composite Baseline 5 USD/lot — Balance Curve


Робастность результатов

Робастность демонстрируется через профили результатов и режимы капитализации на основе динамической модели издержек за длительный исторический период, а также через кросс-ассет тест на GBPUSD до и после Brexit (2016).

Extended Baseline & Core Baseline

Retail Standard:

Retail Rebate:

Composite Baseline

Retail Rebate:

В качестве детального примера робастности представлены Institutional-профили, в которых издержки фиксируются по диапазонам notional volume; при достижении установленного порога по итогам года выполняется reset базового баланса:

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

GBPUSD Cross Asset Test

GBPUSD Cross Asset Test – Balance Curve — Compounding EoY-SoY Base 100k Mode (Risk 1%, no cost model) 2008–2025-08

EMM M5 — GBPUSD Cross Asset Test — Core Baseline — Balance Curve

Для демонстрации робастности модели и отсутствия overfitting был выполнен cross-asset тест: параметры, оптимизированные на EURUSD, применяются к GBPUSD без какой-либо подгонки под UK-экономику или локальные особенности волатильности.

Исторически EURUSD и GBPUSD были высоко коррелированы, однако после Brexit (2016) корреляция значительно снизилась. Поэтому использование GBPUSD выступает как независимый out-of-sample тест: актив не участвовал в оптимизации и имеет отличную пост-Brexit структуру движения.

Стабильность результатов на GBPUSD подтверждает:

Отдельно следует отметить, что даже на деградированном потоке данных (stress-период) стратегия не продемонстрировала катастрофической потери капитала: максимальное снижение баланса по итогам 2001 года составило ≈15%.

Полные обзоры по каждому треку и исходные CSV доступны в соответствующих треках.



Выводы

Суммируя материал всех разделов, результаты бэктеста дают устойчивые эмпирические свидетельства наличия неизменных квант-факторов (признаков рыночной неэффективности) в механике цены EUR/USD, а также подтверждают корректность применённого подхода (прозрачность, воспроизводимость, отсутствие искусственного «улучшения» исполнения) при принятых допущениях и консервативной модели исполнения.

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

Неизменность логики, отсутствие переобучения/«cherry-picking»/multiple testing и selection bias, а также объективность результатов дополнительно подтверждаются:



Ограничения и границы применимости



Ссылки


Контакты

GitHub: rleydev (thelaziestcat) · Email: thelazyazzcat@gmail.com, thelazziestcat@proton.me


Лицензии и атрибуции


Disclaimer — не является инвестиционной рекомендацией

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