Стратегии
Точное воспроизведение ADXMomentum на XLM Binance Spot, 1H
Итог: Отменено
FaithfulXlmSpotAdxMomentum
Сводка по итогам
FaithfulXlmSpotAdxMomentum прошёл проверку бэктеста после одной итерации как почасовое воспроизведение XLM на споте с фиксированными параметрами. В 1,228 закрытых сделках чистая доходность составила -8.93%, коэффициент Шарпа — -0.457; средний убыток около $297 против средней прибыли $79, несмотря на долю прибыльных сделок 77.04%. Проверка бэктеста отклонила вариант из-за отрицательного матожидания; оптимизация и последующие этапы проверки не проводились. Вердикт отклоняет это воспроизведение для конкретного инструмента, а не ADXMomentum в целом.
Гипотеза
Точно перенести ADXMomentum из Freqtrade от berlinguyinca, указав авторство Gert Wohlgemuth и происхождение из AdxMomentum.cs от Mynt. Сохранить интервал стратегии на Python 1 часов, startup_candle_count=20, индикаторы, строгие сравнения для входа и выхода, minimal_roi={"0":0.01} и stoploss=-0.25. Торговать XLMUSDT.BINANCE_SPOT только в лонг, без кредитного плеча. В исходнике не указаны инструмент и размер ставки; в этом переносе выбраны XLM и распределение 4% текущего капитала на вход, что означает риск около 1% капитала при стопе 25%, без учёта издержек и гэпов. Размещать рыночные ордера по сигналу на закрытии завершившегося сигнального бара согласно принятому платформой исполнению на непрерывном рынке. Использовать защитные стопы внутри бара, согласованные с платформой; защита на стороне биржи не обязательна. Сохранить выход 1% с учётом комиссии ROI, не трактуя его как целевую валовую цену 1%. Результаты не проверены.
Концентрация предоставленного корпуса не указана, поэтому недавнюю долю XLM установить нельзя. XLM позволяет избежать явно перенасыщенной серии BTC и предоставленных портов ATOM, DOT и LINK. Binance Spot предоставляет почасовые данные за длительный период и соответствует поведению исходника с длинными позициями без плеча, одновременно восполняя нехватку спотовой площадки. Механизм отличается от предоставленных портов RSI и Supertrend сочетанием условий ADX, индекса направленного движения и импульса. Экспозиция только к одному инструменту и длинные позиции по-прежнему представлены избыточно, но добавление хеджирования, коротких позиций или корзины изменило бы запрошенное точное воспроизведение. Количество свечей при запуске 20 из Python-источника имеет приоритет над 25 из исходной версии; фильтрация по валидности индикаторов сохраняется.
negative_expectancy: эта зафиксированная почасовая репликация Binance Spot XLM приносит убыток после учёта моделируемых издержек на 1,228 закрытых сделках за период более восьми лет. Средняя доходность сделки -0.181% ниже минимального порога для оценки спотовых стратегий +0.25%, а PF 0.893 подтверждает, что убытки перевешивают прибыль, несмотря на частые выигрыши. Опасения QA по поводу песочницы подтвердились. Этот вердикт относится к данной репликации для конкретного инструмента, а не к ADXMomentum в целом. Настраиваемых параметров для обоснования оптимизации нет.
Реализация
Почасовой перенос ADXMomentum для спотовой торговли XLM только в лонг: исходные сравнения ADX, индекса направленного движения и импульса, распределение 4% капитала, стоп 25% внутри бара и выход 1% с учётом комиссии ROI.
Сохраняются строгие сравнения исходника, инициализация и сглаживание Уайлдера, исходный MOM(14), неиспользуемый SAR, число свечей при запуске 20 с фильтрацией по валидности индикаторов и зафиксированный план исследования. Всё состояние индикаторов и позиции скалярное; после однократной начальной инициализации работа на каждой свече имеет постоянную сложность. Используются фактические комиссии инструмента. Определения индикаторов соответствуют [TA-Lib ADX](https://github.com/TA-Lib/ta-lib/blob/main/src/ta_func/ta_ADX.c) и [TA-Lib SAR](https://github.com/TA-Lib/ta-lib/blob/main/src/ta_func/ta_SAR.c). Результаты не проверены.
Результаты верификации
Необязательно: реализовать цель ROI как лимитный ордер SELL только на сокращение позиции по формуле entry*(1+fee)*(1.01)/(1-fee), рядом с защитным стопом. Это воспроизводит внутрисвечной выход Freqtrade ROI. В противном случае указать выход при закрытии свечи ROI как отклонение порта от исходника.
Выход по ROI проверяется при закрытии бара 1h. Freqtrade проверяет его внутри бара: бэктестер выполняет выход по цене ROI, как только максимум достигает этого уровня, а в реальной торговле выход проверяется на каждом такте троттлинга. В данном случае бар, максимум которого пересекает уровень чистой прибыли +1%, но закрывается ниже него, не приводит к выходу. Когда срабатывает ROI, исполнение происходит по цене закрытия, которая может быть выше или ниже цены ROI. Принятие решения по закрытым барам — вынужденная замена, обусловленная платформой; стоп проверяется внутри бара, что корректно. Поэтому это не расхождение, но оно смещает распределение выходов по ROI по сравнению с бэктестером Freqtrade.
Не требуется. Эта заметка фиксирует точность фильтрации.
Переопределённый метод min_bars_required() возвращает startup_candle_count (20), что равно значению по умолчанию базового класса и потому ни на что не влияет. Торговля корректно регулируется условием indicators_ready: indicator_count должно превышать di_period (25) и быть не меньше 2*adx_period (28); кроме того, должно быть накоплено более mom_period свечей. Поэтому первое допустимое решение принимается примерно на свече 28, а не 20. Это соответствует поведению исходника с NaN: ADX(14) имеет значение NaN в первых 27 строках, а сравнения с NaN дают False.
В песочнице (831 дней, 327 закрытых длинных сделок) значение avg_trade_return_pct равно 0.129%, ниже минимального уровня для спотовой проверки 0.25%. PF равен 1.08, коэффициент Шарпа — 0.32 (CI -1.01 до 1.55). Доля прибыльных сделок составляет 78%, но средняя прибыль — $87 против среднего убытка $286. Такова структура выплат при лимите 1% ROI и стопе 25%. Вся прибыль получена в терциле стрессовой волатильности; спокойный и обычный режимы дали убыток. Комиссия составляет 12% от валового показателя. Параметры зафиксированы (настраиваемый набор пуст), поэтому оптимизатор не может повысить доходность на сделку. Ожидается, что проверка на полной истории решит вопрос относительно порога комиссий. Отдельная проверка: avg_holding_bars показывает 0.0, тогда как avg_holding_period равен 23h 7m; похоже, это несогласованность метрик, а не дефект стратегии.
Обзор бэктеста
- Шарп
- -0,46
- Общая доходность
- -8,93%
- Максимальная просадка
- 13,14%
- Всего сделок
- 1228
- Доля прибыльных
- 77,0%
- Профит-фактор
- 0,89
Записи сделок подтверждают 1,228 закрытых длинных позиций с экспозицией на входе около 4%, что соответствует заявленным направлению и размеру позиции.
Аудит входных данных пройден, учёт сходится; открытых позиций нет.
Средняя чистая доходность сделки составляет -0.181% против порога спотовой проверки +0.25%; значение PF — 0.893, коэффициент Шарпа — -0.457, общая доходность — -8.93%.
Доля прибыльных сделок 77% скрывает неблагоприятное соотношение выплат: средняя прибыль $79 против среднего убытка $297. В семи из девяти календарных лет получен убыток.
Экономическое опасение относительно QA подтвердилось: спокойный и обычный режимы убыточны; прибыль принёс только стрессовый терциль.
Все параметры зафиксированы, настраиваемый набор пуст, поэтому оптимизация не может изменить этот вариант.
Стратегия «купи и держи» принесла -33.17%; просадка на выборочной кривой доходности бенчмарка составила примерно 89.42%. Меньшая экспозиция ограничивает убытки, но не подтверждает положительное матожидание.
avg_holding_bars=0 не согласуется с указанным периодом удержания 21h56m; эта несогласованность в отчёте не объясняет измеренные убытки.
Сводка по итогам
Высокая доля прибыльных сделок не подтверждает положительное матожидание, если после учёта моделируемых издержек средние убытки существенно превышают среднюю прибыль.
Проверка бэктеста отклонила вариант из-за отрицательного матожидания и средней доходности сделки ниже порога спотовой проверки +0.25%; все параметры были зафиксированы, возможности оптимизации не осталось. До оптимизации, анализа после оптимизации и проверки риска дело не дошло.
Точно воспроизвести почасовой ADXMomentum на XLM Binance Spot, торгуя только в длинную без плеча, с распределением 4% капитала, выходом 1% ROI с учётом комиссий и стопом 25%.
За 1,228 закрытых сделок за более чем восемь лет чистая доходность составила -8.93%, коэффициент Шарпа — -0.457, максимальная просадка — 13.14%. Несмотря на долю прибыльных сделок 77.04%, средняя доходность сделки составила -0.181%, а фактор прибыли — 0.893.
Анализ
ADXMomentum
Анализ
ADXMomentum.py
AdxMomentum.cs
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.