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

Стратегии

Разворот против скопления розничных трейдеров, лонг-шорт (3-активная корзина USD-M с высокой долей розничных трейдеров DOGE/XRP/SOL, бары 4ч + поток коэффициента лонг/шорт GLOBAL ACCOUNT, игра против толпы ONLY при экстремальном позиционировании: шорт, когда розничные трейдеры максимально нетто-лонг, покупка, когда они максимально нетто-шорт; выход при возврате к среднему, 3 параметров)

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

RetailCrowdingContrarianReversalLS

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

RetailCrowdingContrarianReversalLS пыталась играть против розничной толпы на корзине из DOGE/XRP/SOL активов, используя контртрендовый сигнал в крайних точках глобального отношения лонг/шорт аккаунтов в намеренно 3-параметрической, рыночно-нейтральной конструкции. Доходность выглядела впечатляюще: +1814% при 1,695 сделках и прибыльность во все полные годы. Но коэффициент Шарпа составил лишь 0.285, а доверительный интервал охватывал ноль; прибыль была артефактом толстых хвостов, обусловленным примерно шестью……Показать большеСвернуть

RetailCrowdingContrarianReversalLS пыталась играть против розничной толпы на корзине из DOGE/XRP/SOL активов, используя контртрендовый сигнал в крайних точках глобального отношения лонг/шорт аккаунтов в намеренно 3-параметрической, рыночно-нейтральной конструкции. Доходность выглядела впечатляюще: +1814% при 1,695 сделках и прибыльность во все полные годы. Но коэффициент Шарпа составил лишь 0.285, а доверительный интервал охватывал ноль; прибыль была артефактом толстых хвостов, обусловленным примерно шестью экстремальными днями обвала (в частности, +80.8% во время обвала FTX), а не устойчивым преимуществом. Кроме того, вспомогательный конвейер бэктеста передавал отношение аккаунтов только для основной позиции, поэтому XRP и SOL фактически торговались по z-показателю DOGE, а ключевая идея диверсификации так и не была реализована — ограничение движка, которое разработчик не смог устранить. Аналитик отказался от стратегии на этапе проверки бэктеста из-за низкого качества доходности с поправкой на риск и отсутствия статистически значимого преимущества. До оптимизации, проверки риска или бумажной торговли дело не дошло.

Гипотеза

Контртрендовая стратегия LONG-SHORT по трём бессрочным контрактам Binance USD-M с высокой долей розничных трейдеров (DOGEUSDT, XRPUSDT, SOLUSDT) на барах 4ч. Сигнал — глобальное отношение лонг/шорт GLOBAL ACCOUNT (прокси розничного позиционирования, основанный на количестве аккаунтов, из метрик Binance Vision CSV — count_long_short_ratio — с историей длиной MULTI-YEAR, в отличие от потока только через API по позициям крупных трейдеров, из-за которого прежняя корзина «Информированное позиционирование»……Показать большеСвернуть

Контртрендовая стратегия LONG-SHORT по трём бессрочным контрактам Binance USD-M с высокой долей розничных трейдеров (DOGEUSDT, XRPUSDT, SOLUSDT) на барах 4ч. Сигнал — глобальное отношение лонг/шорт GLOBAL ACCOUNT (прокси розничного позиционирования, основанный на количестве аккаунтов, из метрик Binance Vision CSV — count_long_short_ratio — с историей длиной MULTI-YEAR, в отличие от потока только через API по позициям крупных трейдеров, из-за которого прежняя корзина «Информированное позиционирование» бездействовала после 2021). Преимущество обусловлено поведением и структурой рынка, а не прогнозом цены: розничная толпа систематически ошибается в крайних точках. Когда подавляющее большинство розничных аккаунтов занимает нетто-лонг по активу, предельный покупатель иссякает и будущая доходность слаба; когда розничные трейдеры максимально нетто-шорт, потенциал снижения исчерпан и следует отскок. Принципиально важно: здесь используется CONTRARIAN взгляд на розничных трейдеров (играть против толпы), NOT следования за трендом на основе сигналов информированных/крупных аккаунтов, которое уже провалилось. Всего 3 параметра (z_lookback, entry_z, atr_stop_mult) — это сознательное ограничение для защиты от разрушительного переобучения; корзина из 3 инструментов снижает подгонку кривой под один символ и увеличивает число сделок для статистической надёжности.

Итерация 4 исправляет сбой Layer-4 QA (несоответствие набора инструментов и измеримость только одного актива), превращая стратегию в настоящую корзину из 3 активов, предусмотренную гипотезой: теперь extra_instruments включает XRPUSDT.BINANCE и SOLUSDT.BINANCE, on_extra_bar переопределён, а обе дополнительные позиции действительно торгуются с полной обработкой позиций, выхода и размера. Это восстанавливает диверсификацию и число сделок около 3x (примерно 300 сделок против прежних 100), которые гипотеза называет……Показать большеСвернуть

Итерация 4 исправляет сбой Layer-4 QA (несоответствие набора инструментов и измеримость только одного актива), превращая стратегию в настоящую корзину из 3 активов, предусмотренную гипотезой: теперь extra_instruments включает XRPUSDT.BINANCE и SOLUSDT.BINANCE, on_extra_bar переопределён, а обе дополнительные позиции действительно торгуются с полной обработкой позиций, выхода и размера. Это восстанавливает диверсификацию и число сделок около 3x (примерно 300 сделок против прежних 100), которые гипотеза называет основным механизмом защиты от переобучения и обеспечения достаточного размера выборки, а также учитывает замечание QA, что коэффициент Шарпа CI пересекал ноль на одном активе. Ограничение данных учтено без прикрас: я проверил в src/backtesting/supp_collector.py и запуском load_for_subprocess, что конвейер бэктеста загружает отношение лонг/шорт по счетам ONLY для основного актива (для дополнительных активов загружаются только ставки финансирования), поэтому корзина со строгим отношением для каждого актива оставила бы XRP/SOL без данных и сделок (это была бы фиктивная корзина). Вместо этого в корзине используется общее глобальное отношение по счетам DOGE для основного актива — DOGE, наиболее ориентированный на розничных участников из трёх, служит общим термометром розничных настроений. Это сохраняет предусмотренный SAME контртрендовый механизм на основе отношения лонг/шорт по счетам (NOT не переключение на ценовой прокси), при этом исполнение по каждому активу (время входа по общему z, но независимые стоп ATR, выход при возврате и цена с размером позиции для каждого актива) полностью разделено. Расчёты z-оценки, входа, выхода и размера побайтно совпадают с логикой, уже прошедшей Layer 3 для DOGE (100 сделок; логика выделена в общие вспомогательные функции _zscore_for_bars/_atr_of/_size_for), поэтому поведение DOGE сохранено, а дополнительные активы ведут себя так же. Безопасность Layer-2: заявки по дополнительным активам проходят через базовый _submit_entry_instrument, который сразу возвращает управление, если в кэше-заглушке нет инструмента, поэтому добавленный путь on_extra_bar не может привести к сбою синтетического прокси — локальная проверка подтвердила, что Layer 1 (статический) и все шесть сценариев Layer 2 проходят. Импорты не менялись (запрещённые дополнения не добавлялись); парсер отношения оставлен локальной замыкающей функцией, чтобы избежать ловушки статической привязки прокси. Плечо используется в _size_for (max_size = капитал*плечо/цена), поэтому переменная не присваивается без дальнейшего использования.

Статистически незначимое преимущество с поправкой на риск и толстые хвосты, зависящие от дней обвала. Коэффициент Шарпа составляет лишь 0.285, а 95% CI равен [-0.326, 0.916] и пересекает ноль, поэтому преимущество невозможно отличить от шума, а оптимизация трёх параметров не может поднять его до уровня около ~1.5, достаточного для продвижения. Общая доходность +1814% — артефакт толстых хвостов (эксцесс 15.5, асимметрия 1.18), обеспеченный примерно 6 экстремальными отдельными днями — +80.8% во время обвала……Показать большеСвернуть

Статистически незначимое преимущество с поправкой на риск и толстые хвосты, зависящие от дней обвала. Коэффициент Шарпа составляет лишь 0.285, а 95% CI равен [-0.326, 0.916] и пересекает ноль, поэтому преимущество невозможно отличить от шума, а оптимизация трёх параметров не может поднять его до уровня около ~1.5, достаточного для продвижения. Общая доходность +1814% — артефакт толстых хвостов (эксцесс 15.5, асимметрия 1.18), обеспеченный примерно 6 экстремальными отдельными днями — +80.8% во время обвала 2022-11-01 FTX, +40.3%, +37.5%, +32.9%, +30.2%, +30.0%; то есть несколькими удачными контртрендовыми короткими позициями во время обвала, а не устойчивым преимуществом от игры против розничных трейдеров. Важно, что в примечании к коду признаётся: конвейер данных для вспомогательной части бэктеста передаёт отношение длинных и коротких позиций счёта только для основного инструмента, поэтому XRP и SOL совершают сделки на основе z-оценки массового позиционирования по DOGE, а не собственных данных; таким образом, центральная предпосылка гипотезы о диверсификации (три независимых сигнала позиционирования розничных трейдеров) не реализуется — используется один сигнал для трёх коррелирующих основных активов, из-за чего дисперсия очень велика, а коэффициент Шарпа резко падает. Это ограничение движка по доставке данных, которое разработчик не может устранить, поэтому дальнейшие итерации не помогут. Ситуацию усугубляют max_drawdown 40.4% (CI до 98.4%), оборот 784x, влияние на цену в размере 14.6% от валовой доходности и ёмкость всего лишь $4.67M. avg_trade_return_pct 0.716% превышает порог комиссий, поэтому это отказ из-за качества риска и статистической значимости преимущества, а не из-за комиссий.

Реализация

Контртрендовый разворот лонг-шорт по корзине из 3 активов Binance USD-M с высокой долей розничных трейдеров (DOGEUSDT основной + XRPUSDT, дополнительные SOLUSDT; для всех бары 4ч). Сигнал — скользящий z-показатель логарифма глобального отношения лонг/шорт GLOBAL ACCOUNT (прокси розничного позиционирования по числу аккаунтов из потока Binance Vision/global_account_ratio). Контртрендовый сигнал играет против толпы в крайних точках: z >= +entry_z (розничные трейдеры максимально нетто-лонг) -> шорт; z <= -entry_z (розничные трейдеры максимально нетто-шорт) -> лонг. Каждая из трёх позиций открывается и закрывается независимо: собственный стоп ATR, выход при возврате к среднему (z пересекает 0 в обратную сторону для удерживаемой позиции) и размер позиции с учётом риска (risk_frac капитала на расстояние до стопа ATR, с ограничением номинала позиций величиной капитала с учётом плеча). DOGE сделок проходят через основной поток; XRP и SOL управляются в on_extra_bar через _submit_entry_instrument / _submit_exit_position.

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

Проверка не пройдена (слой 4 — проверка QA): - Несоответствие набора инструментов: гипотеза явно описывает корзину из 3 активов (DOGEUSDT, XRPUSDT, SOLUSDT) и утверждает, что корзина IS ключевым механизмом защиты от переобучения и увеличения числа сделок («корзина из 3 инструментов снижает подгонку кривой под один символ и увеличивает число сделок для статистической надёжности»). В поставленном коде только один инструмент DOGE: config.instrument_id=DOGEUSDT.BINANCE, extra_instruments=[], в docstring класса сказано «один инструмент», многими инструментами код не управляет (on_extra_bar не переопределён). Два из трёх названных инструментов (XRP, SOL) отсутствуют. Значит, код не реализует заявленную гипотезу, а заложенная в неё диверсификация и размер выборки утрачены. - Коэффициент Шарпа в песочнице 1.05 CI равен [-0.57, 2.66] (интервал пересекает ноль) при 100 сделках; результат зависит от короткой позиции (short_win_rate 0.596 против long_win_rate 0.417) на одном окне длиной 363 дней. Если сократить корзину до одного инструмента, преимущество окажется на нижней границе измеримости.

Решите, соответствует ли замыслу стратегия на одном активе DOGE; если требуется настоящая корзина активов, для каждой позиции нужны данные L/S. Если стратегия на одном активе приемлема, при оценке уделите особое внимание OOS и выборке отложенных данных.

UNIVERSE REDUCED FROM 3-ASSET BASKET TO SINGLE-NAME DOGE (аналитик/PM по правилу). Гипотеза явно предполагает корзину из 3 активов (DOGE/XRP/SOL), чтобы снизить подгонку кривой под один символ и увеличить число сделок; в конфигурации задан один инструмент DOGEUSDT. Разработчик раскрыл ограничение фреймворка: вспомогательный поток лонг/шорт подаётся только для основного инструмента. Он обоснованно отказался использовать розничный прокси между инструментами, поскольку он не подходит для сигнала. DOGE — один из названных активов, а механизм тот же, поэтому это не критическое несоответствие инструмента; однако теряются устойчивость к переобучению и надёжность за счёт большего числа сделок, на которые рассчитывала гипотеза.

Передать на оптимизацию и проверку на отложенной выборке; проверить устойчивость, исключив крупнейшие прибыльные сделки, и подтвердить результаты вне выборки.

Положительный результат песочницы хрупок и обусловлен толстыми хвостами: +36% / коэффициент Шарпа 1.02, но CI [-0.58, 2.64] охватывает ноль; largest_win $11,287 против avg_win $2,096 (~5x), асимметрия +0.53, всего 100 сделок. Обнадёживает, что стратегия NOT показывает результат лучше провалившегося паттерна инверсии RR (avg_win $2,096 > avg_loss $1,447, доля прибыльных 0.51) и использует реальный розничный поток данных, не основанный на ценах. Преимущество правдоподобно, но ещё требуется подтверждение с помощью OOS.

Убедись, что загруженный long_short_ratio соответствует count_long_short_ratio (глобальным аккаунтам), а не крупным трейдерам или тейкерам; если соответствие неоднозначно, выбери столбец явно.

Убедись, что поле коэффициента — нужный прокси RETAIL. Код читает long_short_ratio/longShortRatio, но метрики CSV содержит count_long_short_ratio (глобальные аккаунты = розничные трейдеры), коэффициенты крупных трейдеров и отношение объёмов тейкеров. Контртрендовое преимущество основано именно на отношении GLOBAL ACCOUNT по числу аккаунтов; игра против крупных трейдеров или тейкеров дала бы другой, возможно противоположный сигнал.

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

Шарп
0,29
Общая доходность
1814,71%
Максимальная просадка
40,43%
Всего сделок
1695
Доля прибыльных
46,2%
Профит-фактор
1,35

avg_trade_return_pct 0.716% выше порога комиссий по фьючерсам; 1695 сделок — убедительная выборка

Прибыльность в 5 из 5 полных лет (2022 +82%, 2023 +22%, 2024 +74%, 2025 +209%, 2026 +76% YTD) — результат не ограничен одним режимом рынка

benchmark_meaningful=false и бета ~0 — действительно рыночно-нейтральная конструкция (не штрафуй её по сравнению с покупкой и удержанием)

Коэффициент Шарпа 0.285 при 95% CI [-0.326, 0.916] пересекает ноль — преимущество с поправкой на риск неотличимо от нуля; его нельзя настроить до пригодного для продвижения уровня около ~1.5

Доходность +1814% — артефакт толстых хвостов (эксцесс 15.5), обусловленный примерно 6 отдельными днями в период обвала, включая +80.8% при обвале FTX: результат скачкообразный, а не устойчивое преимущество

Структурный пробел: конвейер дополнительных данных предоставляет отношение L/S только для основного инструмента, поэтому все инструменты 3 торгуют на основе z-оценки толпы для DOGE; диверсификация гипотезы за счет 3 независимых сигналов не реализована (это ограничение движка, которое разработчик не может устранить).

max_drawdown 40.4% (CI: высокий показатель 98.4%), коэффициент Сортино 0.345, оборот 784x, влияние на рынок 14.6% от валовой доходности, емкость всего $4.67M — уязвимость к комиссиям и влиянию на рынок, малый масштаб, высокий хвостовой риск

Анализ

Семантический аудитор выявил несоответствие кода гипотезе — код NOT реализует гипотезу. Перепиши стратегию, чтобы она реализовывала гипотезу EXACTLY (инструмент, таймфрейм, направление, названное преимущество/механика, размер позиции). Конкретные проблемы: гипотеза (заголовок и текст) задаёт корзину из LONG-SHORT 3 активов на интервале DOGEUSDT/XRPUSDT/SOLUSDT, цель которой — снизить подгонку кривой под один символ и увеличить число сделок. Однако config.extra_instruments и extra_bar_types пусты (указан только DOGEUSDT.BINANCE), а код реализует стратегию на одном инструменте (один _ts_arr/_ratio_arr, только один набор self.instrument_id, нет логики on_extra_bar/корзины, docstring говорит «один инструмент»). В поле обоснования сама стратегия признаёт, что корзину из DOGE/XRP/SOL активов отменили как «невыполнимую» из-за ограничения фреймворка на вспомогательный поток. Поэтому поставлена стратегия разворота на одном инструменте вместо заявленной гипотезой корзины лонг-шорт из 3 активов.

История итераций

Проверка не пройдена (слой 2 — синтетические сценарии): Использованы параметры: ['entry_z', 'risk_frac', 'atr_period', 'z_lookback', 'min_notional', 'atr_stop_mult', 'min_ratio_pts'] Проверь, что __init__ задаёт все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: RetailCrowdingContrarianReversalLS._extract() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692540000) - steady_downtrend: TypeError: RetailCrowdingContrarianReversalLS._extract() принимает 1 позиционный……Показать большеСвернуть

Проверка не пройдена (слой 2 — синтетические сценарии): Использованы параметры: ['entry_z', 'risk_frac', 'atr_period', 'z_lookback', 'min_notional', 'atr_stop_mult', 'min_ratio_pts'] Проверь, что __init__ задаёт все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: RetailCrowdingContrarianReversalLS._extract() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692540000) - steady_downtrend: TypeError: RetailCrowdingContrarianReversalLS._extract() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692540000) - flat_ranging: TypeError: RetailCrowdingContrarianReversalLS._extract() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692540000) - volatility_spike: TypeError: RetailCrowdingContrarianReversalLS._extract() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692540000) - zero_volume: TypeError: RetailCrowdingContrarianReversalLS._extract() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692540000) - price_gap: TypeError: RetailCrowdingContrarianReversalLS._extract() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735692540000)

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

Огромная доходность в заголовке может быть иллюзией из-за толстых хвостов — проверь, статистически ли значимо преимущество (коэффициент Шарпа CI отличается от нуля), не обеспечено ли оно несколькими днями обвала и реализована ли диверсификация между активами на деле, а не нивелирована ограничением доставки данных, из-за которого все позиции используют один общий сигнал.

Стратегию оставили на этапе проверки бэктеста до оптимизации, потому что преимущество с поправкой на риск не отличалось от нуля (коэффициент Шарпа CI пересекал ноль), а доходность зависела от нескольких случайно удачных шортов в дни обвала, а не от устойчивого преимущества игры против розничной толпы. Оптимизацию пропустили: тремя параметрами нельзя было поднять статистически незначимый коэффициент Шарпа до пригодного для продвижения уровня около ~1.5.

Рыночно-нейтральная контртрендовая стратегия лонг-шорт на корзине из 3 активов Binance USD-M с высокой долей розничных участников (DOGE/XRP/SOL, бары по 4ч), которая играла против толпы при экстремальных статистических значениях глобального отношения длинных и коротких счетов — открывала короткие позиции, когда розничные участники имели максимальную чистую длинную позицию, и покупала, когда их чистая короткая позиция достигала максимума; выход происходил при возврате к среднему или срабатывании стопа ATR, при этом настраивались всего три параметра.

На убедительной выборке из 1,695 сделок стратегия принесла +1814.7% и была прибыльной во все пять полных лет, но качество доходности с поправкой на риск было низким: коэффициент Шарпа 0.285, интервал 95% CI от [-0.326, 0.916] пересекает ноль, коэффициент Сортино 0.345, фактор прибыли 1.35, доля прибыльных сделок 46.2%, максимальная просадка 40.4%. Доходность — артефакт толстых хвостов (эксцесс 15.5), обусловленный примерно 6 экстремальными отдельными днями, включая +80.8% при обвале 2022 FTX; при этом оборот составил 784x, издержки влияния на рынок — 14.6%, а ёмкость — лишь около $4.67 млн.

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