Эта стратегия добавила в портфель действительно новый класс механизмов: вход в лонг ADA в момент, когда автокорреляция доходностей за 30 баров меняет знак с отрицательного на положительный; переход от боковика к тренду обоснован финансовой эконометрикой. Реализация корректно обработала 149 чистых входов, но преимущество оказалось действительно отрицательным: фактор прибыли 0.81, коэффициент Шарпа -1.31, матожидание -$204 на сделку, общая доходность -27.3%, убытки в четырёх из семи лет. На втором цикле аналитик отказался от неё на этапе проверки бэктеста, отличив от родственных стратегий продолжения тренда (где положительные PF были лишь искажены артефактом наращивания плеча): здесь фактор прибыли ниже -1 не зависит от плеча, а смена знака автокорреляции — просто шумный вход без преимущества. До оптимизации или анализа риска стратегия не дошла.
Стратегия работает только в лонг на одном инструменте и таймфрейме: бары ADAUSDT.BINANCE 4H (тип баров с наиболее стабильным обновлением согласно постоянному паттерну audit_stale). Реализует ещё не испытанный в портфеле вариант NEW MECHANISM CLASS: RETURNS-AUTOCORRELATION SIGN-FLIP служит основным сигналом перехода между режимами. Механизм: вычисляется лаговая автокорреляция логарифмических доходностей за последние 30 баров с лагом -1. Когда эта автокорреляция переходит FLIPS из отрицательной (режим возврата к……Показать большеСвернуть
Стратегия работает только в лонг на одном инструменте и таймфрейме: бары ADAUSDT.BINANCE 4H (тип баров с наиболее стабильным обновлением согласно постоянному паттерну audit_stale). Реализует ещё не испытанный в портфеле вариант NEW MECHANISM CLASS: RETURNS-AUTOCORRELATION SIGN-FLIP служит основным сигналом перехода между режимами. Механизм: вычисляется лаговая автокорреляция логарифмических доходностей за последние 30 баров с лагом -1. Когда эта автокорреляция переходит FLIPS из отрицательной (режим возврата к среднему или боковик) в положительную (трендовый режим), AND текущий бар закрывается бычьим, AND а цена находится выше долгосрочного фильтра тренда, открывается лонг. Сигнал фиксирует момент выхода рынка из боковика в тренд — раньше любого пересечения скользящих средних (которое запаздывает на половину периода SMA) и принципиально отличается от стратегии пробоя (для которой требуется пробой уровня цены). Принципиальное отличие от всех существующих механизмов конвейера на ADA 4H: (a) NOT пробой Дончиана (используется статистическая автокорреляция, а не пробой канала); (b) NOT сигнал объёма (используется корреляция доходностей, а не объём торгов); (c) NOT геометрия формы бара (используется статистика последовательности доходностей за 30 баров); (d) NOT Z-оценка (используется CORRELATION, а не стандартизированная величина); (e) NOT расширение ширины канала (используется временная зависимость доходностей, а не геометрия диапазона). Механизм опирается на финансовую эконометрику: положительная автокорреляция доходностей указывает на трендовые режимы (LeBaron 1992 «Устойчивость индекса Dow Jones»; тесты отношения дисперсий Lo-MacKinlay 1988); применительно к криптовалютам Urquhart 2016 в работе «Неэффективность биткоина» описывает чередующиеся режимы автокорреляции на крипторынках.
Итерация 2: исправление TypeError слоя -2: '_lag1_autocorr() принимает 1 позиционный аргумент, но передано 2'. Причина: вспомогательная функция была методом @staticmethod с сигнатурой (logrets), однако верификатор слоя -2 вызывает её привязанной к экземпляру через прокси стратегии, передавая self дополнительным позиционным аргументом. Исправление: _lag1_autocorr преобразован в обычный метод экземпляра (def _lag1_autocorr(self, logrets)), соответствующий существующему вызову self._lag1_autocorr(logrets) как в прокси верификатора, так и в реальном движке. Больше ничего не менялось: математика автокорреляции, логика входа при смене знака, выходы, размер позиции и импорты (только numpy, запрещённых импортов нет) побайтно идентичны, поэтому результат слоя -1 сохранён, а поведение сигнала и сделок для слоя 3 не изменилось.
Гипотеза о смене знака автокорреляции доходностей опровергнута на ADA 4H. На убедительной выборке из 149 сделок стратегия имеет действительно отрицательное преимущество: profit_factor 0.81 (совокупные убытки превышают совокупную прибыль), коэффициент Шарпа -1.31, коэффициент Сортино -1.94, отрицательное математическое ожидание −$204 на сделку, альфа -0.039, total_return -27.3% и убытки в 4 из 7 лет (probabilistic_sharpe 0.164). Сигнал реализован корректно (автокорреляция с надлежащим лагом -1, пересечение нуля……Показать большеСвернуть
Гипотеза о смене знака автокорреляции доходностей опровергнута на ADA 4H. На убедительной выборке из 149 сделок стратегия имеет действительно отрицательное преимущество: profit_factor 0.81 (совокупные убытки превышают совокупную прибыль), коэффициент Шарпа -1.31, коэффициент Сортино -1.94, отрицательное математическое ожидание −$204 на сделку, альфа -0.039, total_return -27.3% и убытки в 4 из 7 лет (probabilistic_sharpe 0.164). Сигнал реализован корректно (автокорреляция с надлежащим лагом -1, пересечение нуля снизу вверх, фильтрация по бычьей свече + SMA), поэтому причина в неработающем механизме, а не в ошибке кода: пересечение нуля автокорреляцией доходностей с лагом -1 — шумовое высокочастотное событие, которое не указывает на начало прибыльного тренда, а сочетание с бычьей свечой + фильтром SMA даёт запоздалый вход в импульс без преимущества (avg_win ≈ avg_loss, вероятность выигрыша 45%). Здесь NOT не подходит итерация размера позиции, применённая в родственных стратегиях продолжения тренда из BTC/ETH/SOL: у них были положительные PF, а альфа искажалась наслоением позиций; здесь же profit_factor 0.81 < 1 — отношение, почти не зависящее от плеча, поэтому наслоение avg_position_pct 137% (та же отсутствующая проверка плоской позиции) лишь увеличивает убытки. Исправление выявило бы всё ещё убыточную стратегию без преимущества, которое стоило бы сохранять. Значительные комиссии (12.8% от валового результата) усугубляют и без того отрицательный валовой результат. Вряд ли какой-либо диапазон параметров позволит превратить сигнал с PF-0.81/отрицательной альфой в преимущество, пригодное для продвижения, поэтому тратить 2 часов на оптимизацию нецелесообразно — отказаться. (Примечание разработчику по семейству стратегий: отсутствие проверки открытой позиции в should_enter повторяется в этих стратегиях; это следует исправить в любом будущем варианте, но это не причина отказа от данной стратегии.)
Реализация
Стратегия перехода из боковика в тренд только в лонг на бессрочном контракте ADAUSDT.BINANCE USD-M, бары 4H, чистый OHLCV. На каждом баре вычисляется лаговая автокорреляция логарифмических доходностей за последние 30 баров с лагом -1; лонг открывается при пересечении автокорреляцией нуля вверх (отрицательное значение становится неотрицательным: боковик → тренд), если это подтверждают бычий бар и цена выше скользящей средней за 50 баров (SMA). Выход: автокорреляция снова становится отрицательной, цена пробивает SMA вниз, срабатывает стоп-лосс или ограничение максимального времени удержания. Плечо 2.0 (номинал позиции примерно 1.2x от капитала).
Результаты верификации
Проверка не пройдена (слой 2 — синтетические сценарии): Использованы параметры: ['ac_window', 'min_notional', 'position_pct', 'trend_period', 'max_hold_bars', 'stop_loss_pct'] Убедитесь, что __init__ задаёт все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: AdaFourHourReturnsAutocorrSignFlipLong._lag1_autocorr() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692840000) - steady_downtrend: TypeError: AdaFourHourReturnsAutocorrSignFlipLong._lag1_autocorr() принимает 1……Показать большеСвернуть
Проверка не пройдена (слой 2 — синтетические сценарии):
Использованы параметры: ['ac_window', 'min_notional', 'position_pct', 'trend_period', 'max_hold_bars', 'stop_loss_pct']
Убедитесь, что __init__ задаёт все атрибуты из self.parameters.get().
- steady_uptrend: TypeError: AdaFourHourReturnsAutocorrSignFlipLong._lag1_autocorr() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692840000)
- steady_downtrend: TypeError: AdaFourHourReturnsAutocorrSignFlipLong._lag1_autocorr() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692840000)
- flat_ranging: TypeError: AdaFourHourReturnsAutocorrSignFlipLong._lag1_autocorr() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692840000)
- volatility_spike: TypeError: AdaFourHourReturnsAutocorrSignFlipLong._lag1_autocorr() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692840000)
- zero_volume: TypeError: AdaFourHourReturnsAutocorrSignFlipLong._lag1_autocorr() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692840000)
- price_gap: TypeError: AdaFourHourReturnsAutocorrSignFlipLong._lag1_autocorr() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692840000)
Обзор бэктеста
Шарп
-1,31
Общая доходность
-27,32%
Максимальная просадка
38,45%
Всего сделок
149
Доля прибыльных
45,0%
Профит-фактор
0,81
Новый механизм с академическим обоснованием реализован верно: автокорреляция с правильным лагом -1, обнаружение пересечения нуля вверх, фильтры бычьего бара и SMA, сигнал не заморожен; 149 чистых входов.
Простота одного инструмента, артефактов данных нет (metrics_reliable=true, end_unrealized ~3%).
Действительно отрицательное преимущество: profit_factor 0.81, коэффициент Шарпа -1.31, Сортино -1.94, отрицательное матожидание -$204 на сделку, альфа -0.039, total_return -27.3% на выборке из 149 сделок — убедительный результат, не шум.
Отрицательный результат в 4 из 7 лет (2020 -19%, 2021 -6%, 2024 -7%, 2025 -18%); probabilistic_sharpe 0.164.
PF 0.81 < 1 почти не зависит от плеча, поэтому сигнал убыточен при любом размере позиции — исправление наслоения позиций (avg_position_pct 137% вместо предполагаемого 120%) лишь выявит всё ещё убыточную стратегию.
Сильное влияние комиссий (12.8% от валовой прибыли) из-за оборота позиций с интервалом 4 ч — 2 дня усугубляет и без того отрицательное валовое преимущество.
Пересечение нуля автокорреляцией — шумное высокочастотное событие; фильтрация сигнала даёт позднюю покупку на импульсе без преимущества.
Сводка по итогам
Новый сигнал с академическим обоснованием (определение режимов по автокорреляции доходностей) можно точно реализовать, но он всё равно может не иметь преимущества: шумная смена знака лаговой автокорреляции -1, отфильтрованная бычьим баром и SMA, даёт позднюю покупку на импульсе. Фактор прибыли ниже 1 не зависит от плеча, поэтому исправление артефакта размера позиции лишь выявит всё ещё убыточную стратегию.
Аналитик проверки бэктеста вынес вердикт «отказаться»: сигнал с академическим обоснованием реализован правильно, значит, причина провала — сам механизм. Пересечение нуля лаговой автокорреляцией -1 — шумное высокочастотное событие, не отмечающее прибыльное начало тренда; оно приводит к позднему входу на импульсе без преимущества, чей показатель PF 0.81 (<1, почти не зависит от плеча) остаётся убыточным независимо от размера позиции. Ни диапазон параметров, ни исправление наращивания плеча не спасут стратегию.
Стратегия перехода между режимами только в лонг, на одном инструменте и таймфрейме: фьючерсы Binance ADAUSDT 4H, плечо 2.0x. Новый класс механизма: открытие лонга, когда лаговая автокорреляция -1 логарифмических доходностей за 30 баров переходит из отрицательной (боковик) в неотрицательную (тренд); сигнал подтверждают бычий бар и цена выше SMA за 50 баров. Цель — поймать начало тренда раньше пересечения скользящих средних.
На убедительной выборке из 149 сделок результат составил -27.3%, фактор прибыли — 0.81, коэффициенты Шарпа и Сортино — -1.31 и -1.94, доля прибыльных сделок — 45%, матожидание — -$204 на сделку, альфа — -0.039, максимальная просадка — 38.4%; средняя прибыль ≈ среднему убытку, убытки были в 4 из 7 лет, комиссия составила 12.8% от валовой прибыли.
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.