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

Стратегии

Фейд диапазона с фильтром по плоскому открытому интересу, лонг-шорт на одной площадке (один инструмент BNBUSDT.BINANCE USD-M — покупать у нижней полосы / продавать у верхней ONLY, когда открытый интерес FLAT = сбалансированный рынок без изменений плеча RANGING, где цена возвращается к среднему; пропускать сделки, когда OI EXPANDING = новое плечо формирует тренд; выход у средней полосы + стоп ATR, 3 параметра)

Итог: Отменено

BnbRangeFadeOpenInterestFlatnessGatedLS

Сводка по итогам

Эта стратегия предложила новый подход к хронически неудачным стратегиям возврата к среднему: торговать против полос Боллинджера только при плоском открытом интересе, исходя из идеи, что тренды формируются при притоке нового плеча (рост OI), а настоящие диапазоны с возвратом к среднему возникают, когда OI не меняется и участники торгуют с обеих сторон. Здесь OI применяется как новый классификатор режима, а не как подтверждение импульса. Конструкция была чистой и дисциплинированной (одна площадка, три параметра,……Показать большеСвернуть

Эта стратегия предложила новый подход к хронически неудачным стратегиям возврата к среднему: торговать против полос Боллинджера только при плоском открытом интересе, исходя из идеи, что тренды формируются при притоке нового плеча (рост OI), а настоящие диапазоны с возвратом к среднему возникают, когда OI не меняется и участники торгуют с обеих сторон. Здесь OI применяется как новый классификатор режима, а не как подтверждение импульса. Конструкция была чистой и дисциплинированной (одна площадка, три параметра, масштабно-инвариантный порог по собственной квантиле, отсутствие сделок при устаревании OI). Но бэктест полностью опроверг исходную идею: фактор прибыли 0.70, доходность -51.6%, просадка 54.2%, превысившая порог отказа и прямо противоречащая гипотезе о сбалансированном диапазоне, убытки в 5 из 6 лет и неверный знак доходности на сделку. Аналитик отклонил стратегию на проверке бэктеста как очередного представителя неоднократно проваливавшегося семейства фейдов диапазона и стратегий возврата к среднему: фильтр плоскости OI не предотвратил пробой фейда, как и фильтры режима в других кандидатах на возврат, провалившихся в этой сессии. Преимущества для оптимизации нет.

Гипотеза

Стратегия возврата к среднему LONG-SHORT, SINGLE-INSTRUMENT, SINGLE-VENUE RANGE на BNBUSDT.BINANCE USD-M бессрочном контракте. Это намеренно отличающаяся STRATEGY TYPE от моих текущих идей (все они основаны на импульсе, продолжении движения или развороте после экстремума); здесь OPEN INTEREST используется принципиально новым ROLE: не для подтверждения направленного импульса (OI расширения), а как RANGING-REGIME CLASSIFIER через OI FLATNESS. Обоснование фильтра режима: наивная торговля на возврате к среднему по……Показать большеСвернуть

Стратегия возврата к среднему LONG-SHORT, SINGLE-INSTRUMENT, SINGLE-VENUE RANGE на BNBUSDT.BINANCE USD-M бессрочном контракте. Это намеренно отличающаяся STRATEGY TYPE от моих текущих идей (все они основаны на импульсе, продолжении движения или развороте после экстремума); здесь OPEN INTEREST используется принципиально новым ROLE: не для подтверждения направленного импульса (OI расширения), а как RANGING-REGIME CLASSIFIER через OI FLATNESS. Обоснование фильтра режима: наивная торговля на возврате к среднему по полосам (отбой от Bollinger/Keltner) не работает на крипторынке, потому что тренды её сметают, — однако тренды на бессрочных контрактах формируются за счёт нового кредитного ENTERING (роста OI), тогда как сбалансированные диапазоны с возвратом к среднему возникают при FLAT открытом интересе (чистого прироста плеча нет, участники занимают обе стороны и меняются местами). Поэтому стратегия торгует отбой внутри диапазона только при плоском OI (рынок действительно сбалансирован и цена возвращается к среднему) и полностью остаётся вне рынка при расширении OI (плечо формирует направленное движение — не NOT против него). Фильтр плоскости OI не зависит от цены и именно он не даёт стратегии стать бесполезной чистой стратегией возврата к среднему на основе только OHLCV (соответствует L42): это фильтр режима, а не ещё один ценовой индикатор. Примечание о надёжности: стратегия работает с BINANCE USD-M, где OI хорошо заполнен в песочнице (в отличие от COIN-M, чей поток OI зацикливается при проверке), использует только базовые OHLCV и серию USD-M OI, а число реальных параметров ограничено THREE после того, как предыдущая стратегия не прошла на уровне Layer-2 из-за избытка параметров. Одна площадка, один инструмент — нет проблемы межплощадочной связки (L44), потока данных по опционам (L43) и потоков данных по тейкерским сделкам/премии (для которых уже наблюдалась хрупкость на уровне Layer-2). BNBUSDT выбран как ликвидный крупный бессрочный контракт, который часто подолгу торгуется в диапазоне (много возможностей для отбоя); полосы достаточно широки, чтобы цели возврата перекрывали круговые издержки 0.10% USD-M. Это новый инструмент по сравнению с уже используемым в текущей работе BTC/ETH/SOL/DOGE/AVAX/LINK. ENTRY (свечи 4ч + OI с той же площадки): рассчитать скользящее среднее за `band_len` периодов и полосы на расстоянии ±`band_k`×стандартное отклонение, а также oi_change = OI_now/OI[`band_len`]-1; для классификации режима как RANGING требовать, чтобы |oi_change| было ниже порога плоскости (рассчитанного на основе band_len, а не отдельного свободного параметра номер 4 — например, в пределах ±3%); затем ENTER LONG при закрытии на нижней полосе или ниже неё и ENTER SHORT при закрытии на верхней полосе или выше неё; пропускать все сигналы при расширении OI (режим тренда), а также если OI устарел или отсутствует. Риск 2% капитала на сделку, жёсткий стоп ATR(14) за экстремумом полосы, максимальная экспозиция 25%, плечо 2x. EXIT при первом из событий: цена возвращается к средней полосе (основная цель); достигнута противоположная полоса (возможен разворот позиции); ATR стоп за полосой входа (диапазон пробит — вероятно, режим сменился на трендовый); стоп по времени через 18 баров (около 3 дня). Инструменты: ["BNBUSDT.BINANCE"]. venue_type: фьючерсы. data_requirements: ["ohlcv", "open_interest"].

ITERATION 2 — исправление в одну строку для указанного фильтра `leverage_set_but_unused`, больше ничего не менялось. Предыдущий вариант DID использовал плечо в position_size, но обращался к нему как к `getattr(self.config, "leverage", 1.0)`; статическая проверка ищет прямую ссылку `self.config.leverage` и не распознала форму getattr, поэтому сочла плечо неиспользуемым. Исправление — прямое обращение: `lev = max(1.0, float(self.config.leverage))`, плюс комментарий, поясняющий, что именно это делает 2x реальным……Показать большеСвернуть

ITERATION 2 — исправление в одну строку для указанного фильтра `leverage_set_but_unused`, больше ничего не менялось. Предыдущий вариант DID использовал плечо в position_size, но обращался к нему как к `getattr(self.config, "leverage", 1.0)`; статическая проверка ищет прямую ссылку `self.config.leverage` и не распознала форму getattr, поэтому сочла плечо неиспользуемым. Исправление — прямое обращение: `lev = max(1.0, float(self.config.leverage))`, плюс комментарий, поясняющий, что именно это делает 2x реальным (ограничение валового номинала становится 0.25 * 2 = 0.50 капитала, ровно вдвое больше 1x номинала, поэтому бэктест действительно отличается от 1x). Это то же однострочное изменение, которое прошло этот фильтр для стратегии LINK. Больше ничего не изменилось: импорты нетронуты (запрещённых модулей нет), структура класса, непрерывный сигнал band-z, классификатор режима ровности OI, все условия входа и выхода, пороги и член расчёта размера позиции с учётом риска побайтно совпадают с previous_code; поэтому ранее пройденные уровни остаются пройденными. По поведению размер позиции не меняется относительно изначально задуманного: getattr для конфигурации, где всегда задан `leverage`, и так возвращал 2.0; теперь проверяющей системе просто видно, что плечо используется. Остальная часть уже принятого дизайна без изменений: OI используется как классификатор режима диапазона, а не как подтверждение направления (независимый от цены элемент согласно L42); порог ровности рассчитывается как скользящий квантиль собственных значений, а не задаётся четвёртым свободным параметром, поэтому он инвариантен к масштабу согласно L5; OI объединён из зеркала Binance Vision `metrics` (244,790 строк по 5 минут для BNBUSDT с 2021-12 по 2026-05) и зеркала `open_interest` fapi за последние месяцы, чтобы заполнить всё окно песочницы длиной 365 дней согласно L35; серия numpy строится один раз, поиск ближайших предшествующих значений выполняется за O(log n) (без заглядывания вперёд и затрат на каждую свечу, растущих вместе с историей); FLAT при отсутствии или устаревании OI, без запасного варианта только по цене; двойное ограничение размера позиции согласно L15.

Однозначно убыточная стратегия без преимущества и с катастрофической просадкой. profit_factor 0.70 (<1.0), total_return -51.6% за ~5 лет, коэффициент Шарпа -0.211 (CI [-0.89, 0.44], probabilistic_sharpe 0.26), information_ratio -0.91, avg_trade_return_pct -0.289% (NEGATIVE), матожидание -$170/сделку на 303 сделок. max_drawdown равен 54.2% (максимум CI 85.8%) — нарушение жёсткого порога (L19), прямо противоречащее гипотезе о «сбалансированном рынке в диапазоне, где цена возвращается к среднему». Убыток в 5 из 6……Показать большеСвернуть

Однозначно убыточная стратегия без преимущества и с катастрофической просадкой. profit_factor 0.70 (<1.0), total_return -51.6% за ~5 лет, коэффициент Шарпа -0.211 (CI [-0.89, 0.44], probabilistic_sharpe 0.26), information_ratio -0.91, avg_trade_return_pct -0.289% (NEGATIVE), матожидание -$170/сделку на 303 сделок. max_drawdown равен 54.2% (максимум CI 85.8%) — нарушение жёсткого порога (L19), прямо противоречащее гипотезе о «сбалансированном рынке в диапазоне, где цена возвращается к среднему». Убыток в 5 из 6 лет (2022 -14.5%, 2024 -27.0%, 2025 -22.2%); avg_loss ($1048) превышает avg_win ($894). Гипотеза о том, что фильтрация стратегий возврата к среднему по полосам в режиме плоского OI позволяет избежать пробоев тренда, губящих простые фейды, опровергнута: фейд с фильтром плоскости OI всё равно не выдержал движения цены. Это семейство фейдов диапазона и стратегий возврата к среднему, здесь неоднократно проваливавшихся (в этой сессии несколько стратегий возврата и фейда с фильтром по финансированию/OI/VWAP были отклонены по той же причине — отрицательное преимущество; фильтр режима/подтверждения не спасает возврат к среднему на крипторынке). Отрицательное avg_trade_return_pct (не просто ниже порога) означает неверный знак сигнала, поэтому снижение частоты или настройка порогов не помогут: нет области параметров, к которой можно было бы настроиться, и перенос того же убыточного механизма на другой инструмент снова приведёт к убытку. Согласно L8 (не переходить дальше, если total_return ≤ 0 или PF < 1.0) и L19 (жёсткий отказ при DD > 50%), отклонить на этапе BACKTEST_REVIEW, а не тратить 2 часов на оптимизацию.

Реализация

Длинная/короткая стратегия возврата к среднему в диапазоне на BNBUSDT.BINANCE USD-M бессрочном контракте (4–HOUR бара, плечо 2x); сделки допускаются только при классификаторе режима OPEN-INTEREST FLATNESS. На каждом баре рассчитываются скользящее среднее и стандартное отклонение за `band_len` периодов, а непрерывный сигнал равен инвертированной стандартизированной оценке полосы −(цена закрытия − среднее) / стандартное отклонение. Знак задаёт направление сделки: цена выше среднего — сигнал отрицательный, продажа у……Показать большеСвернуть

Длинная/короткая стратегия возврата к среднему в диапазоне на BNBUSDT.BINANCE USD-M бессрочном контракте (4–HOUR бара, плечо 2x); сделки допускаются только при классификаторе режима OPEN-INTEREST FLATNESS. На каждом баре рассчитываются скользящее среднее и стандартное отклонение за `band_len` периодов, а непрерывный сигнал равен инвертированной стандартизированной оценке полосы −(цена закрытия − среднее) / стандартное отклонение. Знак задаёт направление сделки: цена выше среднего — сигнал отрицательный, продажа у верхней полосы; ниже — положительный, покупка у нижней. |Сигнал| ≥ band_k означает, что цена закрылась на полосе или за ней. Параллельно рассчитывается oi_change = OI_now / OI[band_len баров назад] − 1; рынок считается RANGING, если |oi_change| не выше скользящей медианы недавних значений |oi_change|. Для входа нужны оба условия: режим OI — боковой, AND цена закрылась за полосой. При резком расширении или сжатии OI (наращивании плеча в направленном движении), а также при устаревших или отсутствующих данных OI стратегия не открывает сделок. Первым срабатывает один из выходов: (1) стоп ATR, установленный за полосой входа на расстоянии stop_atr_mult × ATR(14), зафиксированный при входе и проверяемый внутри бара: диапазон пробит, режим переходит в трендовый; (2) цель на средней полосе, при касании скользящего среднего внутри бара; (3) касание противоположной полосы внутри бара; (4) временной стоп через 18 баров (около 3 дня). Размер позиции рассчитывается так, чтобы риск составлял 2% капитала при заданной дистанции до стопа; жёсткий предел плеча — 25% ×, то есть номинал позиции 50% капитала при 2x.

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

Проверка не пройдена (leverage_set_but_unused): конфигурация задаёт плечо=2.0, но стратегия не использует плечо при расчёте размера позиции. Рассчитывай позиции с его учётом — номинал = капитал * доля * плечо / цена (читай self.config.leverage) — или установи плечо=1.0. В текущем виде плечо не действует, и бэктест идентичен 1x.

Направить на проверку бэктеста с полной оценкой за несколько лет (режимы диапазона и тренда), где применяется порог 0.15%; 38 сделок слишком мало, чтобы объявлять стратегию провальной.

Результат песочницы отрицательный после издержек (total_return -8.8%, коэффициент Шарпа -0.72, PF 0.60, win_rate 0.447, avg_trade_return_pct -0.294% на 38 сделок), доходность на сделку ниже порога 0.15%. NOT это структурный провал из-за комиссий: оборот умеренный (24, среднее удержание ~1 день), а движения покрывают комиссии (avg_win ~1.5%, avg_loss ~2%). Убыток вызван направленной ошибкой при низкой доле прибыльных сделок на коротком отрезке — короткая сторона показала результат хуже (0.33 против 0.55 лонга), то есть при росте цены рынок прошёл сквозь продажи у верхней полосы вопреки фильтру OI. Это вопрос о преимуществе возврата к среднему, а не о чрезмерной торговле из-за комиссий.

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

Примечание по калибровке (не дефект): flat_pctile=0.5 (медиана |oi_change|) относит HALF всех баров к «плоским», то есть определение сбалансированного диапазона широкое. Утверждение о 3 параметрах, подобранных поиском, остаётся верным (flat_pctile фиксирован, а не подбирался); использование |oi_change| и для расширения, и для сжатия — обоснованное прочтение понятия «плоский», хотя гипотеза подчёркивала отказ от сделок при расширении.

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

Шарп
-0,21
Общая доходность
-51,61%
Максимальная просадка
54,25%
Всего сделок
303
Доля прибыльных
45,2%
Профит-фактор
0,70

Чистая конструкция с защитой данных: одна площадка и один инструмент, плоскость OI используется как независимый классификатор режима; намеренно всего 3 настраиваемых параметров; достаточное число сделок (303)

profit_factor 0.70 (< 1.0) — стратегия убыточна; total_return -51.6%

avg_trade_return_pct NEGATIVE (-0.289%) с матожиданием -$170/сделку — сигнал имеет неверный знак, изменить комиссии или частоту сделок не поможет

max_drawdown 54.2% (максимум CI 85.8%) — нарушение жёсткого порога (L19), противоречащее гипотезе о «сбалансированном боковом рынке»

Коэффициент Шарпа -0.211 (CI [-0.89, 0.44]); information_ratio -0.91; probabilistic_sharpe 0.26 — преимущества нет

Убыток в 5 из 6 лет (2022 -14.5%, 2024 -27.0%, 2025 -22.2%); avg_loss > avg_win

Семейство стратегий фейда диапазона и возврата к среднему (здесь неоднократно проваливались); фильтр режима по плоскости OI не помог

Сводка по итогам

Использование плоскости открытого интереса для классификации режима рынка в диапазоне не спасает возврат к среднему по полосам. Как и родственные стратегии возврата с фильтром по финансированию/VWAP/OI, отклонённые в ту же сессию, фильтр режима/подтверждения не спасает возврат к среднему на крипторынке: в трендах цену всё равно уносит, доходность на сделку имеет неверный знак, а просадка превышает 50%; области параметров для настройки нет.

Стратегия была отклонена на этапе BACKTEST_REVIEW согласно обоим критериям: суммарная доходность ≤ 0 / фактор прибыли < 1.0 и жёсткое правило отказа при просадке >50%. Фильтр режима по плоскости OI опровергнут: фейд полос всё равно не выдержал движения цены; просадка 54.2% прямо противоречит гипотезе о сбалансированном рынке в диапазоне. Доходность на сделку отрицательная (знак неверный), поэтому изменение порога или частоты сделок не помогло бы; стратегия не дошла до оптимизации или анализа.

Лонг-шорт стратегия возврата к среднему в диапазоне на бессрочном контракте BNBUSDT.BINANCE USD-M: фейд полос типа Боллинджера (покупать у нижней, продавать у верхней), только когда открытый интерес не меняется. Плоскость OI определяет режим рынка в диапазоне (сбалансированный рынок без изменений плеча, где цена возвращается к среднему); при росте OI стратегия пропускает сделки (новое плечо формирует тренд). Выход — цель возврата к средней полосе, противоположная полоса, стоп ATR или временной стоп.

Стратегия принесла однозначный чистый убыток и показала катастрофическую просадку: фактор прибыли 0.70, общая доходность -51.6% за ~5 лет, avg_trade_return_pct -0.289% (отрицательное значение, матожидание -$170/сделку), коэффициент Шарпа -0.211 (CI [-0.89, 0.44]), информационное отношение -0.91, максимальная просадка 54.2% (CI до 85.8%) на 303 сделок. Убыток был в 5 из 6 лет (2024 -27.0%, 2025 -22.2%); средний убыток ($1,048) превысил среднюю прибыль ($894).

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