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

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

За 2016–2023 авторы сообщают общую доходность +1,637%, IRR 41.6%, коэффициент Шарпа 2.81 и максимальную просадку 12%; комиссия — $0.0035 за акцию, отдельной модели проскальзывания нет. Это опубликованные результаты исследования, не новая репликация и не проверенный аудитом торговый счёт. [1]

Данные и рынкиОсновное исследование посвящено американским акциям. Фьючерсы, криптовалюты и рынки с перерывами между сессиями требуют отдельных гипотез и моделей исполнения.
Таймфреймы исследованияПятиминутный диапазон открытия; данные отдельных событий или с секундной детализацией для исследования исполнения.
Цена достигает максимума открытия 50.30, затем исполняется на уровне 50.34 и поднимается до 51.14. Защитный стоп-лосс находится на уровне 0.20 ниже уровня исполнения.Открыть иллюстрацию в полном размере
Синтетические данные. Первые пять наблюдений иллюстрируют начальный период; последующие точки представляют собой выбранные события с неравными временными интервалами. Объем торгов — тысячи акций.

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

Порядок действий: Прорыв начального диапазона с использованием RVOL: правила и доказательства
Все шаги подробно описаны ниже. На каждом этапе нужно записывать причину отклонения при нехватке данных или невыполнении условий.
  1. Подготовьте историюИспользуйте набор инструментов и исторические входные данные, доступные до сессии.
  2. Дождитесь конца интервала открытияДождитесь полного пятиминутного окна и запишите время доступности данных.
  3. Заморозить ранги RVOLЗафиксируйте отобранные акции, направление и бюджеты капитала.
  4. Отправьте стоп-ордера на входАктивируйте ордера после обработки; учитывайте отклонённые и пропущенные входы.
  5. Защитить и ликвидироватьЗащитите фактически исполненное количество и закройте позиции по расписанию сессии.

Объём торгов определяет выбор акций; цена задаёт направление движения цены.

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

Определите относительный объем открытия как RVOL(d) = V(d, opening window) / mean(V(d−j, same window), j=1…14). Знаменатель должен быть доступен из предыдущих сессий. Сравнение первых пяти минут со средним объемом за весь день отвечает на другой вопрос и приводит к несовместимым единицам измерения времени. TradingView различает кумулятивный объем и объем в соответствующий момент времени; реализация должна последовательно выбирать одно из определений. [3]

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

Вклад фильтра объёма — эмпирический вопрос. Проверяйте одно ценовое правило с RVOL и без него при сопоставимых риске и экспозиции. Иначе лучшая кривая капитала может отражать лишь меньше сделок или более крупные позиции в отобранной группе.

Отделяйте параметры исследования от решений при реализации

Базовая конфигурация использует цену открытия выше $5, средний объём за предыдущие 14 дней не менее одного миллиона акций, ATR14 выше $0.50 и лучшие 20 акций с пятиминутным RVOL не ниже единицы. Зелёная свеча открытия задаёт пробой для лонга, красная — для шорта; доджи пропускается. Стоп находится на расстоянии 0.1 ATR от цены исполнения, позиции закрываются внутри дня, риск составляет 1% выделенного капитала, а плечо ограничено четырёхкратным. [1]

Следующие правила реализации — предлагаемые спецификации, а не дополнительные утверждения авторов исследования. Используйте биржевой календарь America/New_York с переходами на летнее время и сокращёнными сессиями. Отсутствующие исторические окна — недоступные наблюдения, не дни с нулевым объёмом. Запоздавший бар открытия пригоден только после фактического получения его данных.

Зафиксируйте снимок отбора: набор рассматриваемых инструментов, OHLC открытия, дневной ATR, 14 исторических наблюдений объёма и итоговый ранг. При равных рангах используйте стабильный идентификатор инструмента. Не добавляйте акцию после наблюдения её пробоя. Если подходят лишь 12 акций, заранее, до оценки доходности, решите, сохранять ли неиспользованный капитал или перераспределять его.

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

Конечный автомат исключает входы задним числом

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

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

Храните явные состояния: отобран, отправлен, частично исполнен, защищён, закрыт, отклонён. Каждому переходу нужны время и количество. Это позволяет проверить, мог ли защитный ордер сработать при резком развороте сразу после входа.

on_opening_range_ready(session):
    snapshot = freeze_available_data(session)
    candidates = rank_eligible_by_rvol(snapshot)
    selected = candidates[:20]
    for asset in selected:
        side = sign(asset.or_close - asset.or_open)
        if side == 0: continue
        trigger = asset.or_high if side > 0 else asset.or_low
        submit_stop_after_processing_delay(asset, side, trigger)
on_entry_fill(fill):
    stop_distance = 0.1 * frozen_daily_atr[fill.asset]
    protective_stop = fill.price - fill.side * stop_distance
    protect_filled_quantity(fill, protective_stop)
on_session_liquidation_deadline():
    cancel_pending_entries()
    close_remaining_positions()

Выделенный капитал отличается от общего собственного капитала счета.

Пусть условный счёт $100,000 разделён на 20 бюджетов по $5,000. Риск 1% одного бюджета — $50 на позицию в одной акции. Ошибочная трактовка как 1% всего счёта даёт $1,000 на такую позицию: двадцатикратная разница ещё до обсуждения плеча. Это важно при сравнении реализаций с похожими названиями.

При расстоянии до стопа $0.20 и пока без издержек бюджет убытка $50 допускает 250 акций. При цене $50 номинальная стоимость равна $12,500 и превышает выделенные $5,000. Поэтому размер позиции ограничен наименьшим из допустимых размеров по риску, номиналу, доступности займа и оставшейся ёмкости портфеля.

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

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

Синтетический успех, неудача и неоднозначные бары

Пусть диапазон открытия имеет O=50, H=50.30, L=49.90 и C=50.20. Объём открытия — 600,000 акций при историческом среднем 200,000, поэтому RVOL=3. Предыдущий дневной ATR равен 2. После готовности отбора стоп-ордер на покупку на 50.30 исполняется по 50.34. Защитный стоп — 50.14. Продажа в конце дня по 51.14 даёт $0.80 на акцию, то есть 4R до издержек при R=$0.20 на акцию.

При той же исходной ситуации разворот может привести к исполнению стопа по 50.10. Убыток — $0.24 на акцию, то есть 1.2R до комиссии. Нельзя подменять его значением −1R лишь потому, что плановый стоп был 50.14. Разница отражает риск исполнения, который усиливает узкий стоп.

Если поставщик впоследствии изменит начальный объем с 600,000 на 150,000, сохраните исходное полученное значение и изменение отдельно. Решение, принятое на основе первого значения, не может быть оценено так, как если бы второе значение было известно на момент выбора.

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

Читайте публичные результаты в их реальном контексте.

Публичная реализация QuantConnect сообщает тест за 2016 год на наборе из 1,000 акций с коэффициентом Шарпа 2.396. В обсуждении отмечены различия исходной версии Python и реализации C#. [2] Это полезная отправная точка для воспроизведения, но не независимое подтверждение всего восьмилетнего исследования.

Сохраните обозначение IRR в документе. Альфа регрессии — это не CAGR, а коэффициент успешности портфеля нельзя переименовать в показатель прибыльности по сделкам без указания его знаменателя. Различия в методах расчета доходности могут приводить к разным годовым показателям, даже если общая доходность в целом схожа.

Предлагаемое сравнение компонентов: A — только ценовой ORB; B — ORB с порогом RVOL; C — порог и ранжирование top-20. Сравните число возможностей, принятые ордера, фактические исполнения, оборот и чистые результаты на одном заранее зафиксированном календаре оценки. Показывайте издержки относительно R каждой сделки, а не только малый процент от номинала.

До сравнения итоговых кривых капитала сопоставьте ежедневные наборы допустимых инструментов, отобранные тикеры, время срабатывания и количества. Расхождение здесь — проблема правил или данных; подбор проскальзывания ради совпадения доходности её скроет. Достоверное воспроизведение документирует оставшиеся расхождения и затем проверяет ранее не использованный период.

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

Отбор на открытии по информации конца дня

В 09:35 объём всей сессии ещё неизвестен. Его использование при отборе сделок открытия подмешивает будущие данные.

Узкие стопы при нереалистично малых издержках

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

Задержка защиты на один бар

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

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

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

0/8 пунктов

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

Означает ли высокое значение RVOL, что информированные инвесторы совершают покупки?

Нет. Он измеряет необычную завершенную торговую активность. Для определения направления сделки и личности участника требуются разные доказательства.

Можно ли изменить диапазон открытия на 15 минут?

Да, как вариант, требующий отдельной проверки. Историческое окно объёма тоже должно составлять 15 минут. Учитывайте более поздние входы, иные стопы, издержки и дополнительную исследовательскую попытку.

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

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

  1. A Profitable Day Trading Strategy For The U.S. Equity MarketZarattini, Barbon, Aziz — 16/02/2024. Полный текст PDF-файла прочитан; таблица 2 находится на физической странице PDF-файла 17 и на печатной странице 16. Результаты основаны на предположениях авторов; новое тестирование не проводилось. Проверено: .
  2. Opening Range Breakout for Stocks in PlayDerek Melchin — QuantConnect. Статья, пример кода и обсуждение реализации прочитаны. Код не был выполнен. Проверено: .
  3. Relative Volume at TimeTradingView. Первичная документация об относительном объёме в соответствующее время сессии. Она не доказывает прибыльность ORB. Проверено: .

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

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

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

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

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

Скачать Backtest в App Store