Содержание статьи

Доказательства и область применения

В статье сообщаются совокупная доходность +1,985%, IRR 19.6%, коэффициент Шарпа 1.33 и максимальная просадка 25% за период с мая 2007 по апрель 2024 года с учётом заявленных комиссии и проскальзывания. Это результаты, сообщённые авторами; независимый бэктест здесь не проводился. [1]

Данные и рынкиВ основном исследовании используются минутные данные по SPY. Для других ETF и структур сессий требуется отдельная калибровка и проверка.
Таймфреймы исследованияВнутридневные полосы оцениваются по 14 предыдущим сессиям; решения принимаются в заданные получасовые моменты.
Разность цены и порога длинной позиции становится положительной, а позже отрицательной в момент решения, показывая вход и выход по расписанию.Открыть иллюстрацию в полном размере
Синтетические данные. Вертикальная ось показывает разницу между ценой закрытия и ценой max(upper band, VWAP) в долларах, а не цену SPY. Маркеры указывают контрольные точки принятия решений; положительное значение между контрольными точками само по себе не создает ордер.

Практическая последовательность действий

Порядок действий: Полосы шума SPY и импульс VWAP: план исследования
Все шаги подробно описаны ниже. На каждом этапе нужно записывать причину отклонения при нехватке данных или невыполнении условий.
  1. Подготовьте историюСопоставьте предыдущие 14 сессий по времени суток и рассчитайте дневную волатильность.
  2. Постройте полосыПривяжите полосы к открытию и предыдущему закрытию с едиными корпоративными корректировками.
  3. Обновление VWAPИспользуйте только уже полученный торговый объём текущей сессии.
  4. Провести оценку в соответствии с графиком.После закрытия контрольного бара задайте длинную, короткую или нулевую позицию.
  5. Исполнить и ликвидироватьУчитывайте затраты всех изменений позиции и закройте позиции к сроку сессии.
  6. Разделите вклад компонентовСравните полосы, VWAP и размер позиции на ранее не использованных данных.

Диапазон для конкретного времени, а не постоянный процент

Волатильность на момент открытия и волатильность в обеденное время имеют разные распределения. Идея шумового диапазона измеряет нормальное абсолютное движение от открытия сессии отдельно для каждого внутридневного времени. Наблюдение, сделанное в конце утра, сравнивается с наблюдениями, сделанными в конце утра в более ранние сессии, а не с скользящей последовательностью смежных минут.

Для времени k определите sigma(d, k) = mean(abs(P(d−j, k)/Open(d−j)−1), j=1…14). Только завершённые предыдущие сессии делают базу причинной. Верхняя граница — U(d, k)=max(Open(d), PreviousClose(d))×(1+sigma(d, k)); нижняя — L(d, k)=min(Open(d), PreviousClose(d))×(1−sigma(d, k)). Опорные цены, учитывающие гэп, расширяют диапазон при ночном гэпе.

Это значение сигмы представляет собой среднее абсолютное смещение, а не стандартное отклонение минутной доходности. Замена его на обычный индикатор скользящей волатильности меняет сигнал. Большой гэп на открытии также оказывает иное воздействие, чем большое движение после открытия, поскольку опорные точки и внутридневное смещение играют разные роли.

Гипотеза — продолжение движения после выхода цены за пределы обычного внутридневного шума. Она может не сработать, когда новостной всплеск разворачивается, предыдущие 14 сессий занижают текущую волатильность или цена многократно пересекает границу. Высокий объём пробоя не исключает ни одного из этих исходов.

Согласование данных определяет, что было известно.

В исследовании используются минутные данные IQFeed. Представленные результаты включают комиссию $0.0035 и проскальзывание на акцию $0.001. [1] Это явные предположения, а не гарантия того, что каждый исторический ордер мог быть исполнен по такой цене.

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

Применяйте единое правило корпоративных корректировок к открытию, предыдущему закрытию и историческим ценам. Смешение скорректированного закрытия с нескорректированным открытием создаёт искусственный гэп. Храните исходный ряд цен исполнения отдельно от преобразованных рядов для расчёта доходности.

Для сессии VWAP необходимо использовать только полученные сделки или завершенные бары. Приближение на основе баров может использовать типичную цену (H+L+C)/3, взвешенную по объему бара; оно отличается от эталонного показателя на уровне транзакций. Разницу следует измерять там, где доступны данные с более высоким разрешением, особенно для баров с широким диапазоном.

Задайте явное правило целевой позиции

Предложенная реализация оценивает сигнал только в заданные получасовые моменты. При цене выше max(U, VWAP) целевая позиция длинная, ниже min(L, VWAP) — короткая, иначе позиции нет. Цель отправляется после доступности бара. Это отдельный исследовательский вариант; непрерывные защитные выходы и плановые обновления экспозиции нельзя считать равнозначными без оговорки.

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

Цель — желаемая позиция, а не указание на многократное открытие новой позиции. Переход от +q акций к −q требует продажи акций 2q. Переход от +q к нулю требует q акций. Затраты должны соответствовать фактическому изменению позиции, включая обе части разворота.

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

before_session(d):
    bands = build_from_completed_sessions(d, lookback=14)
    daily_vol = sample_std(previous_14_daily_returns)
    if data_incomplete or not isfinite(daily_vol) or daily_vol <= 0:
        disable_session(); return
    multiplier = min(4, 0.02 / daily_vol)
    shares = floor(previous_equity * multiplier / session_open)
on_completed_bar(k):
    if is_liquidation_deadline(k):
        cancel_pending_entries(); submit_flat(); return
    if session_disabled: return
    update_session_vwap()
    if is_decision_time(k):
        target = 1 if close > max(upper[k], vwap) else (
                 -1 if close < min(lower[k], vwap) else 0)
        submit_target_after_available_at(target * shares)

Размер позиции по волатильности отдельно меняет экспозицию

Одна спецификация размера: multiplier = min(4, 0.02/s), где s — выборочное стандартное отклонение 14 предыдущих завершённых дневных доходностей. Число акций равно floor(previous account equity × multiplier / session open). Цель 2% и ограничение плеча принадлежат этой конфигурации; это не универсальные рекомендации по риску.

Когда s равно нулю, отсутствует или не является конечным значением, отключение сессии безопаснее, чем разрешение деления для создания неограниченного размера. Минимальный уровень волатильности был бы другим объявленным правилом. Ряд определения размера должен быть зафиксирован до начала сессии, а не пересчитан с учетом доходности закрытия текущего дня.

Варианты с плечом и без него следует показывать отдельно. В статье для варианта с однократной экспозицией указаны совокупная доходность +380%, IRR 9.7%, коэффициент Шарпа 1.24 и максимальная просадка 12%. [1] Нельзя полностью объяснять разницу в результатах лучшим сигналом входа, если одновременно менялась политика управления экспозицией.

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

Синтетическая арифметика и неудачное продолжение

Предположим, предыдущая цена закрытия — 500, сегодняшняя цена открытия — 505, а сигма на контрольной точке — 0.003. Тогда U=505×1.003=506.515 и L=500×0.997=498.50. Асимметрия вызвана гэпом открытия. Симметричная полоса вокруг 505 будет выглядеть иначе.

Пусть 10:00 будет VWAP равно 506.20, а завершенная цена закрытия — 506.80. Предлагаемое правило нацелено на покупку, поскольку 506.80 превышает max(506.515,506.20). Если ордер исполняется по цене 506.86 и закрывается по цене 509.00, то прирост цены составит $2.14 за акцию до вычета издержек. Исполнение намеренно происходит позже и отличается от сигнальной цены закрытия.

В неудачном сценарии закрытие 10:30 равно 506.30, обновлённая верхняя полоса — 506.60, VWAP — 506.50. Целевая позиция становится нулевой. Выход по 506.24 даёт убыток $0.62 на акцию от входа 506.86. Более раннее пересечение полосы вниз не позволяет задним числом улучшить выход стратегии, принимающей решения по расписанию.

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

Опубликованные данные и воспроизводимое сравнение

В статье доля прибыльных дней равна 43%, тогда как таблица сделок сообщает 37% по 7,668 сделкам. [1] Это разные знаменатели и вопросы. Храните IRR, общую доходность, долю выигрышных сделок и частоту прибыльных дней раздельно.

Опубликованный авторами код полезен для анализа VWAP, изменений экспозиции и механизмов, но полный пример также включает компонент возврата к среднему значению при ночном разрыве. [2] Его совокупный капитал нельзя автоматически отнести только к компоненту внутридневного импульса.

В README отдельного публичного репозитория сообщаются вневыборочный коэффициент Шарпа 0.39, годовая доходность 4.8% и максимальная просадка 18.5% за период с мая 2024 по март 2026 года, в сравнении с внутривыборочным коэффициентом Шарпа 1.34. Здесь был изучен только README; лицензированные данные и полный запуск независимо не воспроизводились. [3]

Сравните отдельно только полосы шума, полосы с VWAP и те же сигналы с размером позиции по волатильности. Исполнение, корректировки данных и даты оценки должны совпадать. Затем укажите, меняет ли VWAP качество входа, время выхода, длительность присутствия на рынке или лишь оборот.

До доходностей сравните дневные массивы полос и временные метки целевых позиций. Затем проверьте заявленные и повышенные затраты, задержку на один бар, близкие длины истории и независимые рыночные периоды. Цель — выявить допущения, от которых зависит результат, а не искать до повторения желаемой цифры.

Частые ошибки

Замена статистических данных о шуме без переименования варианта.

Среднее абсолютное движение от открытия до заданного времени не равно скользящему стандартному отклонению. Замена меняет шкалу порога и экономический смысл.

Подача запланированных сигналов для непрерывного выполнения

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

Приписывание объединенного примера кода одному компоненту

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

Список проверки перед использованием метода

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

0/8 пунктов

Частые вопросы

VWAP — это то же самое, что верхний или нижний диапазон шума?

Нет. VWAP — это взвешенная по объему цена за текущую торговую сессию; диапазоны отражают типичное смещение по сравнению с предыдущими сессиями в соответствующее время.

Доказывает ли опубликованный Sharpe прибыльность сегодня?

Нет. В нем описывается конкретная выборка и модель затрат. Данные за более поздний период, воспроизведение выполнения и неопределенность должны оцениваться отдельно.

Источники исследования

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

  1. Beat the Market: An Effective Intraday Momentum Strategy for S&P500 ETF (SPY)Zarattini, Aziz, Barbon — bản 03/02/2025. Изучен полный PDF, включая версию от 3 февраля 2025 года. Таблицы 3 и 4 находятся на физических и печатных страницах 15 и 16. Новое воспроизведение не запускалось. Проверено: .
  2. Designing a Profitable Intraday Strategy Using Python and AlpacaConcretum Group. Изучены статья авторов и открытый код. Полный пример содержит дополнительный компонент ночного гэпа и не является автоматически воспроизведением чистого импульса. Проверено: .
  3. Out-of-Sample Evaluation of an Intraday Momentum Strategy for SPYSheimy Paz Serpa. Изучен только README репозитория; полные лицензированные данные и заявленное вневыборочное исполнение независимо не воспроизводились. Проверено: .

Связанные методы

Примечание о рисках

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

Проверьте правила, прежде чем рисковать реальным капиталом

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

Скачать Backtest в App Store