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

Стратегии

Бэктест стратегии секторного моментума с фильтром дисперсии, долларово-нейтральная торговая стратегия лонг/шорт (US акций США, SPDR секторных ETF, дневные бары, ежемесячная ребалансировка): переход в лидирующие сектора за 6 месяцев и короткие позиции в отстающих ONLY, когда дисперсия доходностей достаточно высока; без позиций, когда сектора движутся вместе.

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

SectorDispersionGatedCrossSectionalMomentumLS

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

Фильтр дисперсии, который действительно ограничивает сделки, не спасёт поперечный сигнал секторного моментума, если преимущество на сделку до издержек отрицательно; сначала проверь основную гипотезу на лучших доступных данных, затем добавляй фильтры.

Гипотеза

Долларово-нейтральная MULTI-INSTRUMENT ротация моментума относительной силы между инструментами в поперечном срезе: 9 давно торгуемых US SPDR секторных ETF (XLK, XLF, XLE, XLV, XLI, XLY, XLP, XLU, XLB) на DAILY барах с ежемесячной ребалансировкой. Это сознательный переход к MECHANISM и ASSET-CLASS от отмеченной идеи и её неудачных аналогов: стратегия NOT не является направленной трендовой стратегией на одном криптоактиве, NOT не использует фильтр качества тренда Kaufman Efficiency-Ratio, NOT не основана на……Показать большеСвернуть

Долларово-нейтральная MULTI-INSTRUMENT ротация моментума относительной силы между инструментами в поперечном срезе: 9 давно торгуемых US SPDR секторных ETF (XLK, XLF, XLE, XLV, XLI, XLY, XLP, XLU, XLB) на DAILY барах с ежемесячной ребалансировкой. Это сознательный переход к MECHANISM и ASSET-CLASS от отмеченной идеи и её неудачных аналогов: стратегия NOT не является направленной трендовой стратегией на одном криптоактиве, NOT не использует фильтр качества тренда Kaufman Efficiency-Ratio, NOT не основана на пересечении EMA или пробое канала Дончиана, NOT не использует фильтры по ставке финансирования/OI/ликвидациям, NOT не работает на интервалах короче часа и NOT вообще не использует бессрочный контракт. В основе — классическая премия за моментум в поперечном срезе акций (Moskowitz/Grinblatt/Asness): ранжировать секторы по общей доходности за предыдущие 6 месяцев (126 дневных баров, пропуская последние 10, чтобы избежать краткосрочного разворота), открывать равновзвешенные длинные позиции в K лидерах и короткие позиции в K отстающих, чтобы портфель был примерно нейтрален по долларовой стоимости. Новое, не описанное в учебниках преимущество, отличающее эту стратегию от уже провалившихся на USEQ рыночных аномалий акций (краткосрочного секторного ETF на REVERSION, сочетания трендов dual-TF, коинтеграционных пар товаров первой необходимости, календарной сезонности, переключения волатильностных режимов — всё это отброшено по итогам анализа) — фильтр CROSS-SECTIONAL DISPERSION: у ротации моментума есть потенциал извлечь спред, только когда секторы действительно расходятся в динамике. Если поперечное стандартное отклонение доходностей за окно формирования портфеля находится в низком процентиле (секторы движутся вместе, преобладает макрофактор), стратегия не открывает NO позицию — это механизм защиты от комиссий и потери преимущества, поперечный аналог принципа «торгуй, только когда есть преимущество», применённый к классу активов, отличному от отмеченной идеи. US акции выбраны потому, что: (а) площадка USEQ практически не исследована в корпусе; (б) дневная история секторных ETF начинается в 1998, что даёт DECADES данных для надёжного тестирования на исторических данных — это наиболее пригодный для такого тестирования режим во всей фабрике; (в) на маржинальном счёте Reg-T 2x разрешены короткие продажи, поэтому портфель действительно нейтрален по долларовой стоимости; (г) комиссии составляют около 0, поэтому ежемесячная ребалансировка с низким оборотом почти не создаёт издержек — стратегия уходит от криптовалютного кладбища комиссий, погубившего отмеченное семейство.

Итерация 3: исправление проверки бэктеста «метрики ненадёжны: знак коэффициента Шарпа 0.07 расходится со знаком total_return -43.90%». Я извлёк сохранённый отчёт предыдущего запуска: 27.7 лет (6,967 дней данных), 514 сделок, коэффициент Шарпа на частых наблюдениях MTM +0.069 (положительная средняя дневная доходность), но кривая капитала -43.90% с максимальной просадкой 54.0%. Ряд с положительным средним, который в итоге даёт -44%, — характерный признак волатильностного эффекта (геометрическая доходность = mu -……Показать большеСвернуть

Итерация 3: исправление проверки бэктеста «метрики ненадёжны: знак коэффициента Шарпа 0.07 расходится со знаком total_return -43.90%». Я извлёк сохранённый отчёт предыдущего запуска: 27.7 лет (6,967 дней данных), 514 сделок, коэффициент Шарпа на частых наблюдениях MTM +0.069 (положительная средняя дневная доходность), но кривая капитала -43.90% с максимальной просадкой 54.0%. Ряд с положительным средним, который в итоге даёт -44%, — характерный признак волатильностного эффекта (геометрическая доходность = mu - sigma^2/2), то есть портфеля с чрезмерным плечом и средним около нуля, а не направленного убытка: подразумеваемая годовая волатильность ~20% у секторного портфеля, который должен быть примерно 10% долларово-нейтральным. Поэтому минимальное изменение, устраняющее несогласованность, — сократить SCALE: это квадратично уменьшает эффект sigma^2/2, тогда как среднее снижается лишь линейно. Плечо 2.0 -> 1.0, а gross_exposure 0.75 -> 0.60; валовая позиция меняется с 1.50x на 0.60x (эффект снижается примерно на 6x, поэтому доходность с реинвестированием теперь имеет тот же знак, что и указанный рядом коэффициент Шарпа, а максимальная просадка тоже уменьшается). Таков урок управления размером позиций: «ограничивать валовой номинал независимо от траектории капитала». Второе изменение в том же духе — одна строка: disp_pct_gate 0.30 -> 0.60. При 0.30 проверка позволяла портфелю торговать примерно 70% месяцев, поэтому новый ключевой тезис гипотезы ACTUAL — что секторный моментум даёт возможность заработать на спреде лишь тогда, когда сектора расходятся в динамике, — так и не проверялся. Это была обычная ротация секторов с фильтром, которая дала типично слабый результат. При 0.60 сделки совершаются только в режиме наибольшей дивергенции -40%. Больше ничего не менялось: синхронизированное выравнивание единого буфера, привязанный к календарю ключ месяца, равнодолларовая нейтральная конструкция, дельта-заявки с неттингом и непрерывный сигнал «ранг минус фильтр» прошли уровни 1-3 и не затрагивались; размер позиции по-прежнему напрямую считывает self.config.leverage (исправление итерации -2 leverage_set_but_unused). Честная оговорка, которую учтёт аналитик: преимущество на сделку в предыдущем запуске составляло NEGATIVE (avg_trade_return_pct -0.578%, фактор прибыли 0.878, 16 убыточных лет из 27). Поэтому эта итерация — первая честная проверка фильтра дивергенции. Если следующий бэктест снова покажет отрицательный результат до издержек при срабатывающем фильтре, гипотеза будет опровергнута на самом чистом многодесятилетнем наборе данных фабрики, и от стратегии следует отказаться, а не продолжать итерации.

Отрицательное матожидание на убедительной выборке из 376 сделок за 27 лет: avg_trade_return_pct -0.59% (ниже нуля, намного меньше порога комиссий USEQ), profit_factor 0.873 (<1), total_return -13.67%, коэффициент Шарпа -0.067, Сортино -0.064, матожидание -$48 на сделку. Комиссии USEQ составляют $0, а рыночное воздействие — 0.0% от валового объёма, поэтому сигнал убыточен до издержек, а не просто чувствителен к комиссиям: предпосылка о моментуме секторов и поперечной дивергенции FALSIFIED на самом чистом……Показать большеСвернуть

Отрицательное матожидание на убедительной выборке из 376 сделок за 27 лет: avg_trade_return_pct -0.59% (ниже нуля, намного меньше порога комиссий USEQ), profit_factor 0.873 (<1), total_return -13.67%, коэффициент Шарпа -0.067, Сортино -0.064, матожидание -$48 на сделку. Комиссии USEQ составляют $0, а рыночное воздействие — 0.0% от валового объёма, поэтому сигнал убыточен до издержек, а не просто чувствителен к комиссиям: предпосылка о моментуме секторов и поперечной дивергенции FALSIFIED на самом чистом многодесятилетнем наборе данных фабрики. Фильтр дивергенции теперь срабатывает (disp_pct_gate 0.60), но книга всё ещё убыточна примерно в 16 из 24 лет и в терцилях как низкой (-12.6%), так и высокой (-8.6%) волатильности — именно там, где различия между секторами должны давать наибольший спред. Это честная проверка, заранее зарегистрированная разработчиком и QA, и она провалилась; выполнено и собственное условие разработчика для отказа от стратегии: отрицательный результат до издержек при срабатывающем фильтре. Оптимизация не создаст преимущество, если оно ниже ZERO до издержек, поэтому 2 часов вычислений лишь подогнали бы шум. abandon_class=negative_expectancy (premise_falsified).

Реализация

Долларово-нейтральная поперечная ротация по моментуму между 9 секторными ETF SPDR US с длинной историей (XLK, XLF, XLE, XLV, XLI, XLY, XLP, XLU, XLB) на дневных барах USEQ, ребалансировка в первую сессию каждого календарного месяца. Доходность формирования каждого сектора — это доходность за 126 сессий, заканчивающуюся за 10 сессий до этого (окно пропуска, чтобы избежать краткосрочного разворота). Поперечное стандартное отклонение этих доходностей формирования 9 ранжируется по процентилю относительно собственной скользящей истории за 252 сессий; если ранг ниже disp_pct_gate (0.60), сектора движутся вместе, и портфель остаётся вне рынка FLAT весь месяц. Иначе стратегия покупает верхние 3 и продаёт нижние 3 с равным взвешиванием DOLLAR, чтобы номинал обеих сторон совпадал (структурная долларовая нейтральность). Валовая экспозиция намеренно низкая — 0.60x от капитала (0.30x в лонг + 0.30x в шорт), плечо 1.0. Ребалансировка выполняется дельта-заявками на изменение чистой позиции в целых акциях по каждой стороне, поэтому неизменившийся лидер сохраняет позицию, а оборот остаётся низким.

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

Проверь, что базовый класс учитывает переопределённый min_bars_required; иначе переименуй метод в помощник, не затеняющий базовый, и добавь явную фильтрацию (она уже есть в коде).

`min_bars_required(self)` переопределяет метод базового фреймворка; статический анализ указывает, что базовая реализация может использовать собственную реализацию для фильтрации прогрева. Стратегия также самостоятельно фильтрует прогрев (возвращает 0.0 / прокси, пока не накоплена история формирования + пропуска и не выполнено условие min_disp_obs), поэтому поведение безопасно, но проверь, что переопределение действительно применяется, а базовый класс не игнорирует его молча.

Проверка на сокращённом периоде (около 4.5 лет) отрицательна: total_return -6.29%, avg_trade_return_pct -1.10%, коэффициент Шарпа -0.39, PF 0.63; убытки монотонно растут по терцилям волатильности (низкая -0.75% / обычная -1.57% / высокая -4.23%). В собственной оговорке разработчик сообщает, что предыдущий полный прогон за 27 лет имел отрицательный валовый результат (avg_trade_return_pct -0.578%, PF 0.878, убыточных лет 16 из 27), а фильтр дисперсии почти не срабатывал. Эта итерация (валовая экспозиция снижена до……Показать большеСвернуть

Проверка на сокращённом периоде (около 4.5 лет) отрицательна: total_return -6.29%, avg_trade_return_pct -1.10%, коэффициент Шарпа -0.39, PF 0.63; убытки монотонно растут по терцилям волатильности (низкая -0.75% / обычная -1.57% / высокая -4.23%). В собственной оговорке разработчик сообщает, что предыдущий полный прогон за 27 лет имел отрицательный валовый результат (avg_trade_return_pct -0.578%, PF 0.878, убыточных лет 16 из 27), а фильтр дисперсии почти не срабатывал. Эта итерация (валовая экспозиция снижена до 0.60x, disp_pct_gate 0.30->0.60) — первая честная проверка центрального утверждения фильтра на самом чистом наборе данных за несколько десятилетий. Если полный бэктест с активным фильтром снова даст отрицательный валовый результат, предпосылка о поперечной дисперсии будет опровергнута данными за десятилетия, и от стратегии следует отказаться, а не продолжать итерации. Издержки полного цикла сделки USEQ включают только спред и рыночное воздействие (около 0.02-0.05%), поэтому вопрос в наличии преимущества, а не в чрезмерной чувствительности к комиссиям. Только для сведения; решение принимает аналитик по цифрам за всю историю.

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

Шарп
-0,07
Общая доходность
-13,67%
Максимальная просадка
19,56%
Всего сделок
376
Доля прибыльных
43,4%
Профит-фактор
0,87

Реальный поворот в механизме и классе активов после неудачных направленных криптовалютных стратегий; корректная долларово-нейтральная конструкция лонг/шорт с окном пропуска при формировании и фильтром поперечной дисперсии.

Максимально чистая тестовая среда: дневные бары 6968 / около 27 лет истории секторных ETF 9 SPDR на почти безфрикционной площадке USEQ, 376 сделок — убедительная и надёжная выборка. Комиссия — $0, влияние на рынок — всего $1367 (0.0% от валового объёма), так что вопрос только в наличии преимущества.

Фильтр дисперсии теперь действительно действует (disp_pct_gate 0.60), поэтому центральное утверждение гипотезы проверено честно.

Отрицательное ожидание на убедительной выборке: avg_trade_return_pct -0.59% (ниже ZERO, намного меньше порога USEQ около 0.05%), profit_factor 0.873 (<1), total_return -13.67%, Шарп -0.067, Сортино -0.064, ожидание -$48/сделку.

Отрицательный валовый сигнал, а не чрезмерная чувствительность к комиссиям (комиссии около 0 на USEQ); значит, гипотеза о моментуме с поперечной дисперсией опровергнута на данных за десятилетия из самого пригодного для бэктестинга набора фабрики.

Убытки в большинстве календарных лет (примерно 16 из 24) и отрицательный результат в терцилях низкой (-12.6%) и высокой (-8.6%) волатильности; фильтр не помог. Это подтверждает заранее зарегистрированное опасение QA относительно преимущества.

Это итерация 3; предыдущий полный прогон за 27 лет также дал отрицательный валовый результат — выполнено заранее установленное самим разработчиком условие отказа (отрицательный валовый результат при активном фильтре).

Анализ

Фильтр бэктеста: - метрики ненадёжны: несогласованность — знак Шарпа 0.07 не совпадает со знаком total_return -43.90%; Шарп рассчитан по серии mtm_equity_curve, тогда как доходность берётся с кривой капитала. Оценивай по кривой капитала.

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

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

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

Аналитик вынес вердикт «отказаться» при проверке бэктеста до оптимизации: при комиссиях USEQ в размере $0 и влиянии на рынок всего 0.0% от валового объёма отрицательное ожидание указывает на отрицательный валовый сигнал (гипотеза опровергнута), а не на чрезмерную чувствительность к комиссиям. Поэтому оптимизацию не проводили и до следующих этапов не дошли.

Долларово-нейтральная поперечная ротация по моментуму за 6 месяцев между 9 секторными ETF US SPDR (ежемесячная ребалансировка, лонг верхних K / шорт нижних K); сделки открываются, только когда поперечная дисперсия доходностей достаточно высока для извлечения спреда.

За решающий бэктест длительностью 27 лет, на 6968 барах и с 376 сделками стратегия показала общую доходность -13.67% (CAGR -57.46%), коэффициенты Шарпа -0.067 и Сортино -0.064, фактор прибыли 0.873, долю прибыльных сделок 43.4% и просадку avg_trade_return_pct от -0.59%. Примерно в 16 из 24 лет стратегия была убыточной, как и в терцилях спокойной (-12.6%) и стрессовой (-8.6%) волатильности.

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