Перейти к содержимому

Просмотреть оригинал

BtcTakerFlowExhaustionReversalLS1H

Гипотезы

BTC Разворот после истощения taker-потока, Long-Short (один инструмент BINANCE USD-M Perp, бары 1ч, fade экстремального дисбаланса агрессоров — поздняя стадия FOMO покупок / панических продаж — фильтр по режиму диапазона, новый сигнал taker-ratio, 3 параметров)

Гипотезы

Стратегия LONG-SHORT возврата к среднему на одном инструменте BTCUSDT.BINANCE (бессрочный контракт USD-M, бары по 1 ч), основанная на ORDER FLOW, а не на цене — входных данных сигнала, которые не использует ни одна развёрнутая стратегия. На каждом баре она вычисляет дисбаланс агрессивных покупок/продаж тейкеров (долю объёма покупок тейкерами) по дополнительным данным Binance о соотношении тейкеров на фьючерсах (резервный вариант: trade_ticks с классификацией по стороне агрессора), сглаженный по короткому окну. Тезис: когда агрессивные покупки становятся экстремальными и устойчивыми (например, доля покупок тейкерами ≥ 0.68 на окне сглаживания), предельный покупатель рыночными ордерами представляет собой позднюю стадию FOMO / вынужденное закрытие коротких позиций без нового спроса в виде лимитных заявок за ним — истощение агрессоров, которое надёжно предшествует краткосрочному откату, поэтому FADE это движение SHORT. Симметрично, экстремальная устойчивая агрессия тейкеров на стороне SELL (доля ≤ 0.32) — это панические/капитуляционные продажи рыночными ордерами на фоне редеющих заявок на продажу — открывать LONG. Это намеренно DIFFERENT семейство по отношению ко всему, что проваливается на этой фабрике: это NOT следование тренду (кладбище стратегий одного режима с 209 провалами — эта стратегия контртрендовая и распределена по режимам, принося доход при чрезмерном растяжении потока в любом направлении), NOT кэрри на ставке финансирования (перенасыщенное семейство корзин, погибающее из-за комиссий — её преимущество представляет собой разворотное движение 0.4–0.6%, а не денежный поток менее одного базисного пункта), NOT корзина из N ног (она торгует одним инструментом, 2 исполнений на полный цикл сделки, поэтому обходит комиссионный барьер L12 в 2N×10 б.п.), и NOT опционы (нет барьера по числу сделок — события экстремального потока возникают десятки раз в год, давая сотни сделок для надёжного измерения преимущества). Она ограничена режимами NON-TRENDING (торговать против движения только когда медленный трендовый фильтр указывает на флэт/диапазон), чтобы избежать единственного реального сценария провала — экстремального потока, который является INFORMED продолжением, а не истощением. 3 небольшое число параметров (окно сглаживания потока, порог дисбаланса, выход) обеспечивает устойчивость к переобучению.

Гипотезы

Итерация 3 устраняет единственную проблему Layer-4 QA: нехватку сделок (6 сделок/363д) из-за чрезмерно жёсткого составного фильтра. Механизм, импорт и логика сигнала не менялись (они прошли Layers 1-3); ослаблены только три ограничителя входа/выхода, чтобы стратегия превысила порог измеримости примерно в 100 сделок. entry_z 1.2->0.8 срабатывает на большем числе экстремумов потока, оставаясь за пределами шума и выше комиссии taker за полный цикл 0.10% (разворот по тезису составляет 0.4-0.6%). regime_threshold 0.55->0.65 допускает больше боковых баров, поэтому сочетание бокового режима и экстремального z AND перестаёт дополнительно умножать редкость, продолжая исключать сильные тренды (режим информированного продолжения). exit_z 0.3->0.25 и max_hold_bars 24->10 ускоряют оборот, быстрее возвращая стратегию к нулевой позиции и увеличивая число окон входа в год. Масштабно-инвариантный сигнал rolling-z (L5), а также контртрендовая, распределённая по режимам конструкция на одном инструменте, отличающие её от кладбища трендовых/carry/корзинных/опционных стратегий, не изменились.

Гипотезы

Fade по истощению taker-потока на одном perp с отрицательным математическим ожиданием, без преимущества и с дополнительным барьером данных (L73/L55). profit_factor 0.62, total_return -5.29%, Sharpe -0.71 (CI [-1.35, 0.02]), ожидание -$62.6/сделку, avg_trade_return_pct 0.0146% (примерно ноль, чистый проигрыш); avg_loss > avg_win при win_rate 0.447, поэтому fade занимает неправильную сторону потока. Критически важно, что несмотря на 58,512 баров за 2019-2026, ALL 85 сделок и 100% доходности приходятся на одно окно длительностью около 6 месяцев 2026, поскольку дополнительный поток taker_ratio покрывает только недавний отрезок — annual_returns={2026:-5.32}, месячные 2026-03..08 — поэтому walk-forward на окне 3 и 20% holdout построить невозможно. Это тот же характерный одноконтрактный perp-профиль с фильтрацией по ордер-флоу, который уже трижды был заброшен в этой серии (BtcTakerAggressionPersistence, AvaxTakerAggressorDominance, EthTakerFlowBreakout). Настройка параметров не превратит отрицательное преимущество на сделку в положительное, а оптимизатор не может приобрести отсутствующее у потока календарное покрытие. Не стоит тратить 2 часов на оптимизацию. Шаблон неудачи: fee_edge/no_edge одноконтрактный perp-fade с фильтрацией по ордер-флоу и только недавним дополнительным окном.

Реализация

Mean-reversion по ордер-флоу long-short на BTCUSDT.BINANCE USD-M perp (бары 1ч). Вычисляет rolling z-score сглаженной доли агрессоров taker-покупок из дополнительных данных Binance taker_ratio; выполняет fade экстремальных устойчивых покупок агрессоров SHORT (истощение FOMO на поздней стадии) и экстремальных продаж агрессоров LONG (паническая капитуляция), только в боковом режиме (низкий коэффициент эффективности Kaufman). Выход при нормализации потока, по 1% жёсткому стопу или по ограничению времени. Один инструмент, плечо 1.0, 3 основных настраиваемых параметров.

Результаты верификации

CLEAN RESTART 2026-09-04 — история вердиктов и записи обучения этого запуска были удалены, и он перезапущен с этапа проверки. Предыдущее прекращение произошло из-за конвейера, а не рынка: оболочка Layer-2 некорректно привязала помощники @staticmethod (исправлено), QA выносил окончательные вердикты о результативности на неоптимизированном дымовом тесте (удалено — теперь QA оценивает только корректность), а тайм-ауты песочницы были вызваны нехваткой слотов бэктеста (исправлено). Гипотеза и код стратегии не изменились. Оцените код по существу; результативность будет определена позже полным бэктестом и оптимизатором.

Результаты верификации

Уменьшить taker_lag_seconds по умолчанию примерно до 7200-14400с, чтобы устаревшие потоки подавляли входы.

Результаты верификации

taker_lag_seconds по умолчанию равен 90000 (25 часов), поэтому _current_fraction принимает taker_ratio наблюдение, устаревшее максимум примерно на 25ч, прежде чем вернуть None. Это не заглядывание в будущее (граница bisect односторонняя: на баре ts_event <= ts_init), но при разрывах потока стратегия торгует по суточному показанию потока.

Результаты верификации

Добавлять в _frac_buf только когда увеличивается self._tk_ts[idx].

Результаты верификации

_current_fraction возвращает последнее наблюдение независимо от его новизны, поэтому одна и та же доля повторно добавляется в _frac_buf на каждом баре, пока поток не продвинется, слегка сжимая стандартное отклонение скользящей базовой линии rolling-z. Не является нарушением корректности при частоте 1ч.

Обзор бэктеста

Чистая реализация на одном инструменте (2 исполнений за полный цикл, без барьера комиссий корзины), с фильтром по режиму, всего 3 основных настраиваемых параметра — устойчива к переобучению по конструкции

Обзор бэктеста

Входной сигнал ордер-флоу действительно отличается от кладбищ трендовых, carry- и корзинных стратегий

Обзор бэктеста

Чистый проигрыш без преимущества: profit_factor 0.62, total_return -5.29%, Sharpe -0.71 (CI [-1.35, 0.02]), ожидание -$62.6/сделку, avg_trade_return_pct 0.0146% (примерно ноль и отрицательный знак)

Обзор бэктеста

avg_loss ($301) превышает avg_win ($232) при win_rate 0.447 — exhaustion-fade систематически занимает неправильную сторону движения потока

Обзор бэктеста

Барьер дополнительных данных (L73): все 85 сделок и 100% доходности приходятся на одно окно длительностью около 6 месяцев 2026 (annual_returns={2026:-5.32}, месячные 2026-03..08), поскольку поток taker_ratio покрывает только недавний отрезок истории 2019-2026 OHLCV — эффективная выборка не поддерживает walk-forward на окне 3 + 20% holdout

Обзор бэктеста

commission_pct_of_gross 47% — комиссии плюс влияние на цену уже поглощают половину валового результата ещё до учёта преимущества с отрицательным знаком

Обзор бэктеста

Соответствует классу одноконтрактных perp-стратегий, фильтруемых по ордер-флоу, без единого выжившего (BtcTakerAggressionPersistence, AvaxTakerAggressorDominance, EthTakerFlowBreakout — все заброшены), и подклассу L55 -1.15-PF однокомпонентных fade-стратегий

Обзор бэктеста

6 мес. (только 2026)

Обзор бэктеста

несколько лет

Iteration History

Проверка не пройдена (Layer 3 — бэктест песочницы): сделок не создано Использованный тип бара: BTCUSDT.BINANCE-1-HOUR-LAST-EXTERNAL, обработано баров: 8729 Диагностика: should_enter() вернул сторону 0 раз за 8679 оценённых баров -> ваш ENTRY CONDITION ни разу не сработал. Ослабьте логику входа / пороги. Убедитесь, что ваша стратегия создаёт сделки на предоставленных данных и параметрах.

Iteration History

Проверка не пройдена (уровень 4 — проверка QA): - Фильтр входа срабатывает слишком редко, чтобы получить измеримый результат. Песочница сгенерировала лишь 6 сделок за 363 дней (~6 сделок/год). Составной фильтр одновременно требует (a) режима RANGING (коэффициент эффективности Кауфмана < regime_threshold), (b) экстремальной скользящей z-оценки доли покупок тейкерами (|z| >= entry_z=1.2) и (c) нахождения стратегии в состоянии FLAT, после чего позиция удерживается до 24 баров -- поэтому реальные входы редки, хотя z часто пересекает границу диапазона. Это в точности сценарий провала L16 («BTC 4H дисбаланс агрессоров 16 сделок», «BTC соотношение тейкеров 16 сделок»), и здесь он WORSE (6 сделок). Даже многолетний бэктест при такой частоте остаётся значительно ниже порога измеримости в ~100 сделок. Собственное обоснование гипотезы («десятки раз в год, сотни сделок для надёжного измерения преимущества») прямо противоречит результату в 6 сделок. - Поскольку результат основан на 6 сделках, ни одна из основных метрик не позволяет сделать вывод: коэффициент Шарпа 0.84, но sharpe_ci_low -1.08 (CI включает значения по обе стороны нуля), profit_factor 10.26 и win_rate 0.667 на 6 наблюдениях, return_skew 7.23 / эксцесс 94.8, а также avg_win $300 против avg_loss $58 -- единственный случай largest_win на $662 обеспечивает всю положительную доходность (+1.08%). Ни одной из этих метрик нельзя доверять как свидетельству преимущества. Это прямое следствие описанной выше проблемы с числом сделок, а не самостоятельный дефект.

Iteration History

Проверка не пройдена (уровень 4 — проверка QA): - Основное преимущество отрицательно и ниже комиссий, что опровергает центральное утверждение гипотезы. Гипотеза утверждает, что торговля против движения захватывает «разворотное движение 0.4-0.6%»; в песочнице получено avg_trade_return_pct -0.025% -- отрицательное значение, на порядок ниже как заявленного результата, так и минимального уровня фьючерсных комиссий 0.15%. Подтверждение реального отсутствия преимущества (а не просто шума): profit_factor 0.518, коэффициент Шарпа -1.53 (CI [-2.73, +0.07]), win_rate 0.50 при соотношении доходности к риску INVERTED (avg_loss $338 ~= 2x avg_win $175), omega_ratio 0.35. Критически важно, что это проявилось BECAUSE ослабление условий в iter-3 (entry_z 1.2->0.8, regime_threshold 0.55->0.65) добавило сделки: дополнительные входы срабатывали на менее выраженных экстремумах потока, за которыми NOT следовал возврат, уводя среднее преимущество в отрицательную область. Это прямое свидетельство того, что сигнал истощения потока тейкеров не обладает разворотной альфой, покрывающей издержки -- бары с экстремальным дисбалансом агрессоров не демонстрируют систематического возврата к среднему при этих порогах. - Число сделок по-прежнему ниже минимального порога измеримости. iter-3 увеличила число сделок с 6 до 26 за 363 дней (~26/год), но это всё ещё значительно ниже порога в ~100 сделок, необходимого для отделения преимущества от шума (L16; родственные попытки BTC на основе дисбаланса агрессоров/соотношения тейкеров провалились при 16 сделках). При 26 сделках и асимметрии -4.83 / эксцессе 43 (доминирует один убыток в -$945) в метриках по-прежнему преобладает шум -- CI коэффициента Шарпа охватывает диапазон от -2.73 до +0.07. Разработчик застрял между двумя несостоятельными режимами: более строгий фильтр -> результат неизмерим (6 сделок), менее строгий фильтр -> результат более-менее измерим, но преимущество отрицательно (26 сделок, -0.025%/сделку). Оба варианта не проходят проверку.
Отчёт по стратегии

Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.