Зміст статті

Докази та сфера застосування

За 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