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

Стратегии

Внутридневная трендовая стратегия пересечения квантилей распределения Стьюдента с условием на SPY

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

SpyConditionedStudentTQuantileCrossing

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

После трёх итераций исправление ликвидации стратегии SPY проверено: все 77 сделок закрылись в дату входа, незакрытых позиций в конце не осталось. Стратегия пересечения квантилей с фиксированными коэффициентами принесла -5.71064% при коэффициенте Шарпа -11.3159 и оставалась убыточной даже до учёта смоделированного воздействия и стоимости займа. Проверка бэктеста рекомендовала отказаться от неё из-за отрицательного математического ожидания; настраиваемых параметров и подтверждённого дефекта кода, оправдывающих дальнейшую работу, нет. До оптимизации и последующих проверок дело не дошло; результат относится к перенесённым коэффициентам на доступной истории 2026, а не к ежегодно перекалибруемой стратегии авторов исходной работы.

Гипотеза

Точный перенос правил внутридневной стратегии авторов Бальдовина, Каманы, Каральо, Стеллы и Капорина на SPY.USEQ — исполнимый прокси ETF на индекс S&P 500 ETF. Сохрани наблюдения каждые 10 минут, окно 10:00–16:00 America/New_York, три доходности для условия, квантили 25%, входы и выходы по пересечению и ликвидацию в тот же день. Формируй наблюдения по завершённым барам длительностью 1 минут; не подменяй их часовыми или дневными барами. Используй опубликованные в статье коэффициенты модели как фиксированные перенесённые параметры. Здесь проверяется торговое правило с перенесёнными коэффициентами, а не воспроизводится исторический эксперимент за 15 лет с ежегодной перекалибровкой: короткая минутная история платформы не позволяет выполнить такую калибровку. Рыночные приказы исполняй по цене закрытия сигнального бара, как в статье. Исполнение при открытии следующей сессии, независимые встречные позиции и выбор политики стопа на том же баре не требуются. Заявления источника о результативности не проверены; учитываются смоделированные спред и воздействие.

Источник предлагает один основной торговый механизм; варианты с условием и без него не являются разными механизмами. Сохрани рынок S&P, а не переноси небольшое внутридневное преимущество на криптовалюту с более высокими комиссиями. Исполнение длинных и коротких позиций помогает решить проблему концентрации портфеля 80.8% только в длинных позициях. Этот выбор одного инструмента, заданный источником, не закрывает квоты по опционам и межбиржевой торговле. Данных о концентрации корпуса в предоставленном пустом объекте нет, поэтому утверждений о недавней доле SPY не делается.

negative_expectancy: этот замороженный перенос SPY с фиксированными коэффициентами убыточен во всех 77 сделках с закрытием в тот же день после исправления ликвидации. Средняя чистая доходность сделки — -0.08508% против порога проверки USEQ +0.05%; PF 0.1984, общая доходность — -5.71064%. Опасение QA подтвердилось. Нет настраиваемых параметров или доказанного дефекта кода, которые оправдывали бы оптимизацию или ещё одну итерацию разработчика. Это отвергает операционализацию с перенесёнными коэффициентами на доступной минутной истории за август–октябрь 2026, а не стратегию авторов исходной работы с ежегодной перекалибровкой. Короткая история ограничивает возможность обобщения, но не является причиной отказа.

Реализация

Перенос правила пересечения условных квантилей распределения Стьюдента авторов Бальдовина и соавторов с фиксированными коэффициентами на SPY.USEQ. Наблюдения берутся каждые 10 минут по завершённым барам длительностью 1 минут в период с 10:00 до 16:00 по Нью-Йорку. Прогноз учитывает первые три доходности за 10 минут. Стратегия открывает длинную позицию, когда цена пересекает верхнюю условную квантильную границу, и короткую — когда пересекает нижнюю; закрытие происходит при обратном пересечении. Приказ, принятый на закрытии бара, исполняется при открытии следующего 1-минутного бара (правило платформы для биржевых площадок сессий). Теперь решение о ликвидации в тот же день принимается по завершённому бару 15:59, поэтому исполнение происходит при открытии последней минуты (15:59) той же сессии. Начиная с 15:59, новые позиции не открываются.

Только IMPLEMENTATION FIX. Раньше решение о ликвидации 16:00 исполнялось при открытии следующей сессии, из-за чего позиции оставались открытыми на ночь. Теперь ликвидация и блокировка входа начинаются на минутном баре 1 с отметкой времени 15:59, за один бар до session_end_local. Поэтому рыночный выход исполняется при открытии последней минуты той же календарной даты Нью-Йорка; на момент закрытия позиции нет. Коэффициенты, размер позиции (90% капитала, целые акции, 1x) и наблюдения пересечений с интервалом 10……Показать большеСвернуть

Только IMPLEMENTATION FIX. Раньше решение о ликвидации 16:00 исполнялось при открытии следующей сессии, из-за чего позиции оставались открытыми на ночь. Теперь ликвидация и блокировка входа начинаются на минутном баре 1 с отметкой времени 15:59, за один бар до session_end_local. Поэтому рыночный выход исполняется при открытии последней минуты той же календарной даты Нью-Йорка; на момент закрытия позиции нет. Коэффициенты, размер позиции (90% капитала, целые акции, 1x) и наблюдения пересечений с интервалом 10 минут не изменились. Это приближение исполнения, а не изменение правила: в статье ликвидация происходит при закрытии 16:00, но платформа не поддерживает исполнение по цене закрытия того же бара (same_close_fill не поддерживается), поэтому выход происходит на минуту раньше, при открытии 15:59. Аналогично сигналы входа и выхода, замеченные на закрытии бара длительностью 10 минут, исполняются при открытии следующей минуты (next_open_fill). Наблюдение пересечения 16:00 уже не может вызвать выход, поскольку позиция к этому времени закрыта; оно и прежде не могло вызвать вход. Укороченные сессии по-прежнему исключены. До оптимизации нужно заново оценить чистую экономику по исправленному бэктесту.

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

Замени предикаты на `self.is_early_close_session(bar.ts_init)`. Также рассмотри возможность выводить триггер ликвидации из `self.minutes_to_session_close(bar.ts_init) <= 1`, а не задавать фиксированную минуту 15:59.

Исключение укороченных сессий задано вручную (июль 3, если только июль 4 не приходится на субботу, день после Дня благодарения или декабрь 24), а не по календарю платформы. Это важно: если в календаре платформы есть неучтённая укороченная сессия, в этот день не будет бара 15:59. Открытая в этот день позиция сохранится до следующей даты, и проверка при переходе даты вызовет ValueError('data_unavailable...'), прервав весь бэктест или бумажную торговлю. Для последних XNYS лет текущие правила выглядят верными, поэтому сейчас это не дефект.

Укажи это соглашение в описании стратегии. Если в статье выход из границы при равенстве t_p считается пересечением, используй только для шага после t_p величины `<= 0.0` / `>= 0.0`.

В t_p (шаг 3) оба предыдущих разрыва сбрасываются в 0. Поскольку в проверках пересечения используются строгие неравенства (`previous_upper_gap < 0.0`), при первом наблюдении прогноза (шаг 4, 10:40) вход невозможен, даже если цена уже ушла за границу. В t_p цена и граница совпадают, поэтому трактовка «на границе», а затем «за границей» как отсутствия пересечения — обоснованное прочтение статьи. Это всё же интерпретационный выбор, исключающий самые ранние возможные входы.

При желании ликвидируй позицию также, когда `minutes_to_session_close()` не превышает 2; тогда даже при пропуске одного бара сделка исполнится в пределах сессии.

Если бар 15:59 отсутствует, но бар 16:00 есть, решение о ликвидации позиции принимается в 16:00, а исполнение происходит при открытии следующей сессии. Так позиция остаётся открытой на ночь вопреки правилу закрытия в тот же день. Бары длительностью SPY 1 минут почти никогда не пропущены, поэтому на практике это маловероятно.

Не требуется.

Исполнение отличается от статьи двумя раскрытыми особенностями, обусловленными платформой. Сделки исполняются при открытии следующей минуты, а не по цене сигнального закрытия; выход в тот же день перенесён с 16:00 на открытие 15:59. Оба случая следуют правилу платформы (next_open_fill поддерживается, same_close_fill не поддерживается) и указаны в обосновании конфигурации, поэтому это не расхождения.

Пробный период (46 дней с данными, без оптимизации, контракт полностью фиксирован): закрытых сделок — 77, средняя чистая доходность сделки — -0.085% от номинала, PF 0.20, доля прибыльных — 16%, подряд убыточных — 14. На USEQ комиссия нулевая. Смоделированное воздействие составило $5,356 при обороте $13.4 млн, около 4 б.п. на сторону; значит, валовое преимущество на сделку примерно -0.005%–-0.045%: отрицательное и до издержек. Контракт заморожен, настраиваемых параметров нет, поэтому оптимизатор не может его……Показать большеСвернуть

Пробный период (46 дней с данными, без оптимизации, контракт полностью фиксирован): закрытых сделок — 77, средняя чистая доходность сделки — -0.085% от номинала, PF 0.20, доля прибыльных — 16%, подряд убыточных — 14. На USEQ комиссия нулевая. Смоделированное воздействие составило $5,356 при обороте $13.4 млн, около 4 б.п. на сторону; значит, валовое преимущество на сделку примерно -0.005%–-0.045%: отрицательное и до издержек. Контракт заморожен, настраиваемых параметров нет, поэтому оптимизатор не может его изменить. Сначала нужно проверить два момента на полной истории. (1) По-прежнему ли применимы фиксированные коэффициенты 2012, учитывая, что они калибровались на индексе S&P, а не на SPY в 2026? Масштабы бета (0.0025 утром и 7.5e-5 днём, при D=1.31) напрямую задают ширину границы. (2) Исполнение с задержкой в одну минуту при открытии следующего бара съедает часть сигнала пересечения длительностью 10 минут. Движение на сделку должно превысить порог спреда и воздействия около 0.02-0.05% USEQ и порог аналитика 0.10-0.15%. Минутная история короткая: данные платформы по 1м SPY накапливаются с 2026-08-13, если не одобрен бэктфилл Alpaca, поэтому выборки walk-forward-анализа и отложенной проверки могут быть небольшими.

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

Шарп
-11,32
Общая доходность
-5,71%
Максимальная просадка
5,80%
Всего сделок
77
Доля прибыльных
15,6%
Профит-фактор
0,20

Исправление прежней ликвидации проверено: все 77 сделок закрыты в дату входа, последнее закрытие — в 15:59 по Нью-Йорку, незакрытых позиций в конце нет.

Код реализует пересечения направленных квантилей; длинные позиции 35, короткие позиции 42 и входная экспозиция около 90% соответствуют предписанным направлению и размеру позиции.

Подтверждается экономическое опасение QA: средняя чистая доходность сделки — -0.08508%, PF — 0.1984, общая доходность — -5.71064%; во все три наблюдаемых месяца результат отрицательный.

Даже с учётом смоделированного воздействия в размере $5,356.43 и стоимости займа $2.20 совокупный убыток остаётся около $352.

Все параметры зафиксированы контрактом. Подтверждённых дефектов реализации, оправдывающих ещё одну итерацию, нет.

Проверки истории по дням с данными 46 перенесли коэффициенты в 2026, а не ежегодно перекалибруемую историческую стратегию из исходной статьи.

Анализ

IMPLEMENTATION FIX — гипотеза не меняется: заставить код делать то, что он уже предписывает. Не добавляй и не меняй торговые правила. До оптимизации исправь ликвидацию в тот же день. Текущий рыночный выход 16:00 исполняется при открытии следующей сессии. Подай приказ на ликвидацию по завершённому минутному бару 15:59; исполнение возможно при открытии последней минуты с задержкой платформы. В этот день запрети новые входы. Сохрани фиксированные коэффициенты, размер позиции и наблюдения пересечений с интервалом 10 минут. Убедись, что даты входа и выхода по Нью-Йорку совпадают и в конце нет открытых позиций. Не запрашивай исполнение по цене закрытия того же бара. Укажи, что ликвидация до закрытия — приближение исполнения; если замороженный контракт источника её запрещает, передай конфликт руководителю исследований для разрешения, а не меняй фиксированные правила молча. Перед разрешением оптимизации заново оцени скорректированную чистую экономику.

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

Проверка не пройдена (уровень 1 — статический анализ): - Запрещённый импорт: src.data.market_calendar — стратегиям разрешено импортировать только базовые классы и вспомогательные средства фреймворка (src.strategies.base_template, src.strategies.rolling_options_template, src.strategies.polymarket_series_template, src.strategies.helpers); сборщики данных, база данных, движок бэктестинга и реестр находятся вне песочницы. (строка 8)

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

Для ликвидации в тот же день необходим доставленный бар в 16:00. Песочница сообщает об одной открытой позиции, но не указывает последнюю отметку времени, поэтому это не доказывает сбой ликвидации. Если конечного бара нет, на следующей сессии возникнет исключение, а ночная экспозиция не будет молча принята.

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

Перенос с фиксированными коэффициентами не сработал на доступной минутной истории SPY; это не устанавливает результативность стратегии авторов исходной работы с ежегодной перекалибровкой.

После исправления ликвидации проверка бэктеста вынесла вердикт: отказаться из-за отрицательного математического ожидания; средняя чистая доходность сделки ниже порога проверки +0.05% USEQ. Все параметры были фиксированы, подтверждённых дефектов реализации, оправдывающих дальнейшие итерации, не выявлено; до оптимизации и последующих проверок аналитиком и специалистом по рискам дело не дошло.

Проверялись сделки по внутридневному тренду на SPY с фиксированными опубликованными коэффициентами распределения Стьюдента: пересечения квантилей на интервалах в 10 минут с условием на три доходности и закрытием позиции в тот же день.

За 46 дней с данными стратегия совершила 77 сделок и принесла -5.71064%; коэффициент Шарпа составил -11.3159, максимальная просадка — 5.7978%. Средняя чистая доходность сделки составила -0.08508%, фактор прибыли — 0.1984; даже с учётом смоделированных воздействия и стоимости займа совокупный убыток остался около $352.

Анализ

Свойства ансамблей высокочастотных данных и правил внутридневной торговли

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