Зміст статті
- Докази та сфера застосування
- Ілюстрація
- Процес
- Діапазон для певного часу, а не сталий відсоток
- Вирівнювання даних визначає, що було пізнаваним
- Перетворіть концепцію на чітке правило цільової позиції
- Розмір позиції за волатильністю окремо змінює експозицію
- Синтетична арифметика та невдале продовження
- Опубліковані докази та відтворюване порівняння
- Поширені помилки
- Практичний список перевірки
- Поширені запитання
- Джерела дослідження
Докази та сфера застосування
Стаття повідомляє загальну дохідність +1,985%, IRR 19.6%, Sharpe 1.33 і максимальну просадку 25% за травень 2007–квітень 2024 з урахуванням заявлених комісії та прослизання. Це результати авторів; незалежний бектест тут не проводився. [1]
Практична послідовність дій
- Підготуйте історіюУзгодьте попередні 14 сесій за часом доби й розрахуйте денну волатильність.
- Побудувати смугиПрив’яжіть смуги до відкриття й попереднього закриття з однаковими корпоративними коригуваннями.
- Оновлення VWAPВикористовувати лише обсяг поточного сеансу, який вже отримано.
- Оцінювати за графікомПісля закриття контрольного бару задайте довгу, коротку або нульову позицію.
- Виконати та ліквідуватиВраховуйте витрати всіх змін позиції й закрийте позиції до строку сесії.
- Розділіть внески компонентівПорівняйте діапазони, 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%, Sharpe 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 публічного репозиторію повідомляє про значення Sharpe поза вибіркою для 0.39, річну прибутковість 4.8% та максимальну просадку 18.5% за травень 2024 – березень 2026 порівняно з значенням Sharpe у вибірці для 1.34. Тут було перевірено лише файл README; його ліцензовані дані та повне виконання не були відтворені незалежно. [3]
Порівняйте окремо лише смуги шуму, смуги з VWAP і ті самі сигнали з розміром позиції за волатильністю. Виконання, коригування даних і дати оцінки мають збігатися. Потім укажіть, чи змінює VWAP якість входу, час виходу, тривалість перебування на ринку або лише оборот.
До дохідностей порівняйте денні масиви смуг і часові позначки цільових позицій. Потім перевірте заявлені й підвищені витрати, затримку на один бар, близькі довжини історії та незалежні ринкові періоди. Мета — виявити припущення, від яких залежить результат, а не шукати до повторення бажаної цифри.
Поширені помилки
Заміна статистики шуму без перейменування варіанта
Середній абсолютний рух від відкриття до заданого часу не дорівнює ковзному стандартному відхиленню. Заміна змінює шкалу порога й економічний зміст.
Безперервне виконання запланованих сигналів
Бектест може хибно поліпшувати виходи, використовуючи кожен перетин межі всередині бару й водночас заявляючи рішення лише кожні пів години. Укажіть частоти подій входу й виходу.
Приписування об'єднаного прикладу коду одному компоненту
Приклад, що містить реверсію до середнього значення розриву та імпульс, потребує окремої атрибуції, перш ніж можна буде перевірити будь-який з компонентів.
Список перевірки перед застосуванням методу
Позначайте кожен пункт після перевірки на власних даних. Прогрес зберігається в цьому браузері й не засвідчує прибутковість стратегії.
Поширені запитання
VWAP те саме, що й верхня чи нижня смуга шуму?
Ні. VWAP — ціновий орієнтир поточної сесії, зважений за обсягом; смуги оцінюють типовий рух за попередніми сесіями у відповідний час.
Чи встановлює звітний показник Шарпа поточну прибутковість?
Ні. Це описує конкретну вибірку та модель витрат. Дані пізнішого періоду, реплікацію виконання та невизначеність необхідно оцінювати окремо.
Джерела дослідження
Кожне джерело підтверджує визначення або докази, описані поруч. Псевдокод, штучні приклади та запропоновані параметри потребують окремої перевірки.
- 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. Нове відтворення не запускалося. Перевірено: .
- Designing a Profitable Intraday Strategy Using Python and AlpacaConcretum Group. Вивчено статтю авторів і відкритий код. Повний приклад містить додатковий компонент нічного гепу й автоматично не є відтворенням чистого імпульсу. Перевірено: .
- Out-of-Sample Evaluation of an Intraday Momentum Strategy for SPYSheimy Paz Serpa. Перевірено лише файл README з репозиторію; повні ліцензовані вхідні дані та їх повідомлене виконання поза вибіркою не були незалежно відтворені. Перевірено: .
Пов’язані методи
Примітка про ризики
Матеріал призначений для навчання й планування досліджень, а не є фінансовою порадою. Backtest моделює минулі дані, не гарантує майбутніх результатів і не здійснює реальних угод. Методи бібліотеки не обов’язково реалізовані в застосунку. Дивіться методологію і навчальний центр.
Перевірте правила, перш ніж ризикувати реальним капіталом
Перевірте можливості застосунку, дані й кожну змодельовану угоду; складні детектори можуть потребувати окремої реалізації.
Завантажити Backtest в App Store