Стратегии
Howtrader TurtleSignalStrategy автора 用Python的交易员: точный порт сигнала на LTC Hyperliquid
Итог: Отменено
LtcHowtraderTurtleSignal
Сводка по итогам
LtcHowtraderTurtleSignal перенёс Howtrader TurtleSignalStrategy на бессрочные контракты LTC в Hyperliquid с таймфреймом 4ч, сохранив исходные настройки по умолчанию и изменив только таймфрейм баров и размер позиции. После 2 итераций бэктест дал 236 сделок за 799 дней с доходностью -36.2%, Sharpe -1.59, фактором прибыли 0.545 и просадкой 36.5%, более чем вдвое превышающей заранее установленный лимит 15%. QA указывал на издержки исполнения, однако аналитик обнаружил, что сигнал убыточен и до их учёта; направление сигнала подтвердилось, поэтому убыток не вызван дефектом кода. Аналитик отказался от стратегии при проверке бэктеста; до оптимизации, анализа и оценки риска дело не дошло.
Гипотеза
Hyperliquid представлен недостаточно: 8% при целевом значении 20%, а экспериментов с длинными и короткими позициями всего 17.2%. Концентрация корпуса не задана, поэтому фактическую недавнюю долю LTC установить нельзя. Явная просьба о точном порте важнее, чем выдумывание другого механизма ради разнообразия. Этот механизм пересекается с указанными экспериментами AvaxFrozenChannelTurtleSignal и EtcTurtleDonchianBreakoutLS; смена инструмента не доказывает новизну. Прежде чем включать эксперимент, проверь их полные определения; отложи его, если он дублирует существующий точный порт исходной стратегии. Не представляй его как новое семейство альфа-сигналов.
Отрицательное математическое ожидание на надёжной выборке. Доходность на сделку — -1.88% при минимальном пороге Hyperliquid +0.15%. PF — 0.545, Sharpe -1.59 с 95% CI в диапазоне [-3.03, -0.27], а PSR 0.022 на 236 сделках за 799 дней. Убыток был в каждом году и каждом режиме волатильности. Максимальная просадка 36.5% более чем вдвое превышает заранее установленный лимит 15%. QA предположил, что причиной стали издержки исполнения. Это отчасти верно, но издержки объясняют только часть убытка: после возврата $10.9k влияния объёма и $3.5k комиссии валовой PnL всё ещё составляет около -$21.8k, поэтому сигнал черепашьей стратегии Дончиана 20/10 на 4ч LTC Hyperliquid убыточен до учёта издержек. Это точный порт с фиксированными настройками исходника и без настраиваемых параметров (набор параметров для оптимизации в плане пуст), поэтому оптимизация или новая итерация ничего не изменят. Направление сигнала подтверждено, значит, это не дефект кода. Этот механизм также не сработал в предыдущих черепашьих портах на других инструментах.
Реализация
Точный порт howtrader TurtleSignalStrategy на барах LTCUSD.HYPERLIQUID по 4 часов. При отсутствии позиции стратегия фиксирует входной канал Дончиана за 20 баров и ATR Уайлдера за 20 периодов. Затем она размещает на площадке четырёхступенчатые лестницы стоп-заявок на покупку и продажу у границы канала со сдвигами 0, 0.5, 1.5 и 3.0 ATR. Пока позиция открыта, оставшиеся ступени лестницы сохраняются для наращивания позиции. Стоп только на сокращение позиции покрывает её целиком: для длинной позиции — max(long_stop, минимум за 10 баров), для короткой — min(short_stop, максимум за 10 баров). Колбэки исполнения следуют логике исходника on_trade: при исполнении покупки long_stop устанавливается на цену исполнения минус 2 ATR, а при исполнении продажи short_stop — на цену исполнения плюс 2 ATR.
Итерация 2 меняет только то, что отклонил уровень 1.5. В optimization_plan плечо задано как 1.0, поэтому теперь `leverage: 1.0` находится в параметрах и соответствует config.leverage = 1.0. Размер позиции рассчитывается по self.leverage из этого параметра, который не влияет на результат при 1.0. Все остальные значения, зафиксированные планом, без изменений заданы в параметрах: entry_window 20, exit_window 10, atr_window 20, fixed_size 1, min_notional 10, unit_risk_fraction 0.0025 и unit_notional_fraction 0.075. Сигнал, лестница, стоп и логика исполнения не отличаются от предыдущей итерации, поэтому ожидаемое число сделок не меняется. Остаются две адаптации: бары по 4 часов заменяют минутные бары, построенные из тиков в исходной стратегии, а fixed_size = 1 означает одну единицу риска относительно капитала, фиксируемую для каждой кампании, а не буквально одну LTC. Это дублирует существующие черепашьи порты на других инструментах и не является новым семейством альфа-сигналов.
Результаты верификации
Вычисли t = round(signed_quantity / unit, 6) или сравни с k - 1e-9, чтобы ровно k единиц считалось за k.
Число пирамидальных входов t = signed_quantity / float(size) вычисляется делением с плавающей точкой. Когда позиция равна ровно k единицам, ошибка округления может дать значение t чуть меньше k (например, 0.3/0.1 = 2.9999999999999996). Тогда срабатывает ветка `t < k`, повторно активируя вход, и позиция может превысить исходный лимит в 4 единиц на одну или две единицы. В исходнике используется такая же арифметика с плавающей точкой, поэтому это соответствует ему, но экспозиция может превысить целевой размер. Максимальный случай остаётся ограниченным: около 6 единиц × номинал 7.5% — это примерно 45% капитала при 1x.
Оставь семантику без изменений, но рассмотри пересчёт ATR только при отсутствии позиции (сейчас так и происходит) и пропуск отмены с повторной отправкой, если уровни не изменились. Это инженерная оптимизация, а не изменение логики.
Песочница обработала 293 с из бюджета в 300 с для 4,787 баров; установлено значение runtime_review_required. На каждом баре отменяется и повторно отправляется до 9 STOP_MARKET заявок, а при отсутствии позиции пересчитывается цикл ATR диапазонов 99. Оптимизация на всей истории будет затратной.
Изменения не требуются. Оставь переопределение с пояснением в документации.
_process_primary и min_bars_required намеренно переопределяют базовые методы. В результате обходятся базовая защита от накопления заявок и проверка минимального номинала. Минимальный номинал повторно проверяется для каждого уровня лестницы с min_notional=10, а защитный стоп равен reduce_only, поэтому это допустимо. Учти, что выход только на сокращение позиции не проверяется на минимальный номинал, и это правильно.
Песочница: закрыто 236 позиций, PF 0.57, доля прибыльных сделок 18.6%, доходность -33.9%, DD 35% (ограничение плана max_drawdown_pct — 15%). Моделируемое влияние объёма $10.9k составляет около 3x комиссий ($3.5k), поэтому большая часть убытка приходится на издержки исполнения стоп-маркет заявок; их усугубляет отмена и повторное размещение отложенных стопов 8 на каждом баре. Я заново проверил полярность построчно по исходному коду: стоп-заявки на покупку стоят выше максимума за 20 баров, а на продажу — ниже минимума за 20 баров, так что знак не перевёрнут. Низкий PF объясняется профилем выплат черепашьей стратегии вместе с влиянием объёма, а не сигналом, направленным в неверную сторону. Финансирование Hyperliquid не включено в PnL (funding_events_available=0), поэтому в многодневных удержаниях (среднее 2д2ч) не учтены расходы или доходы от переноса позиции. Этот механизм дублирует черепашьи порты, уже проверенные на других инструментах. Перед оптимизацией проверь модель влияния объёма на исполнение стопов и результат в спокойном и обычном режимах, где Sharpe составил -2.8 и -1.9.
Обзор бэктеста
- Шарп
- -1,59
- Общая доходность
- -36,24%
- Максимальная просадка
- 36,52%
- Всего сделок
- 236
- Доля прибыльных
- 18,2%
- Профит-фактор
- 0,55
QA заново вывел направление сигнала по исходному коду и подтвердил его правильность: стоп-заявки на покупку стоят выше максимума за 20 баров, а на продажу — ниже минимума за 20 баров.
Выборка надёжна: закрыто 236 позиций (119 длинных, 117 коротких) за 799 дней, metrics_reliable=true, учётные данные сходятся, и end_unrealized_pct=0.
Бета равна 0.016, корреляция с покупкой и удержанием — 0.105. Результат не объясняется скрытой рыночной экспозицией, поэтому проверка беты из урока 170 здесь неприменима.
Доходность сделки составляет -1.88% от номинала при минимальном пороге Hyperliquid +0.15% (около 0.09% за полный цикл). Это ниже порога более чем на 2 процентных пункта.
Sharpe равен -1.59, а 95% CI бутстрепа составляет [-3.03, -0.27] и целиком ниже нуля. PSR — 0.022. На 236 сделках это опровергает наличие преимущества (урок 141).
Фактор прибыли — 0.545, доля прибыльных сделок — 0.182. Средняя прибыль составляет $1,011, средний убыток — $413, то есть соотношение выплат около 2.45:1. Трендовой стратегии при доле прибыльных сделок 18% нужно примерно 4.5:1 для безубыточности, а здесь результат значительно хуже (форма из урока 142).
Издержки не объясняют убыток, вопреки формулировке QA. Чистый PnL — около -$36.2k (236 × -$153.6). Даже если вернуть смоделированное влияние объёма в размере $10.9k и комиссию $3.5k, валовой PnL всё равно составит около -$21.8k. Сигнал убыточен до учёта любых издержек исполнения.
Убыток был в каждом году (2024 -7.3%, 2025 -25.6%, 2026 -7.5%) и каждом режиме волатильности (Sharpe в спокойном режиме -2.85, в обычном -1.95, в стрессовом -0.64). Максимальная просадка — 36.5% при заранее установленном лимите 15%; просадка длилась 777 дней.
Диагностика исследования сигнала подтверждает: IC -0.018 (t=-1.2), вердикт — rejected_no_information.
История итераций
Проверка не пройдена (уровень 1.5 — согласованность гипотезы и конфигурации) [класс=hypothesis_mismatch]: - optimization_plan задаёт плечо 1.0
Сводка по итогам
Сигнал черепашьей стратегии Дончиана на 20/10 приносит убыток на 4ч LTC Hyperliquid ещё до учёта издержек (IC -0.018, неотличимо от шума), поэтому от портов черепашьей стратегии с фиксированными настройками по умолчанию не следует ожидать преимущества на этих инструментах и таймфреймах.
Аналитик отказался от стратегии при проверке бэктеста, до оптимизации: математическое ожидание было отрицательным на надёжной выборке, а доходность на сделку значительно ниже порога Hyperliquid +0.15%. Даже после возврата $10.9k влияния объёма и $3.5k комиссии валовой PnL оставался около -$21.8k, а в плане оптимизации не было параметров для настройки.
Точный перенос Howtrader TurtleSignalStrategy автора 用Python的交易员: лестницы стоп-заявок на пробой канала Дончиана вверх и вниз за 20 баров, канал выхода за 10 баров и 20-периодный ATR; запуск для LTCUSD.HYPERLIQUID на барах длительностью 4 часов, с фиксированными настройками исходника и размером позиции относительно капитала.
За 799 дней и 236 закрытых сделок (119 длинных, 117 коротких) доходность составила -36.2%, Sharpe — -1.59 (95% CI -3.03 до -0.27), фактор прибыли — 0.545, доля прибыльных сделок — 18.2%, средняя доходность на сделку — -1.88% от номинала, максимальная просадка — 36.5%. Убыток был в каждом году и каждом режиме волатильности.
Анализ
TurtleSignalStrategy
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.