Зміст статті
- Докази та сфера застосування
- Ілюстрація
- Процес
- Дайте відповідь на чотири різні запитання по порядку
- 1. Дані на момент часу та значення обсягу
- 2. Час підтвердження та незмінність префікса
- 3. Ордер має існувати до виконання
- 4. Розмір ризику має визначатися з використанням узгоджених одиниць вимірювання.
- 5. Walk-forward: послідовна оцінка, purging та embargo
- 6. Абляція, багаторазові спроби та стрес-тести
- 7. Метрики, математичне сподівання та рівні доказів
- Публікуйте артефакти, які може оглянути інший дослідник
- Поширені помилки
- Практичний список перевірки
- Поширені запитання
- Джерела дослідження
Докази та сфера застосування
У цій статті пропонується робочий процес валідації, а не прибуткова стратегія чи нове тестування на історичних даних. У цитованих джерелах розглядаються виведення шаблонів, механіка моделювання та статистичне перенавчання; жодне з них не підтверджує прибутковість кожного методу в цій бібліотеці.
Практична послідовність дій
- Зареєструйте гіпотезуЗаморозьте ринок, правила, витрати, показники та дозволені випробування.
- Перевірте вхідні даніПеревірте історичну доступність, значення обсягу, набір інструментів і часові позначки.
- Відтворити причинно-наслідковоПідтверджуйте сигнали перед створенням ордерів та дозволами на їх виконання.
- Обмеження ризикуЗастосуйте вимоги до розміру позицій, маржі, експозиції та стресу гепів.
- Оцініть walk-forwardВидаліть перехресні мітки, вибирайте за валідацією та фіксуйте налаштування кожного тесту.
- Повідомте про повний обсяг доказівОпублікуйте дані абляції, стрес-тестів, невизначеності та рівня доказовості.
Дайте відповідь на чотири різні запитання по порядку
Спершу: чи можна стабільно розпізнавати модель? Далі: чи містить вона умовну інформацію про подальші результати? Потім: чи можна перетворити її на додатну дохідність рахунку після витрат за допомогою здійсненних ордерів? Нарешті: чи зберігається результат на раніше не використаних даних? Дослідження одного питання не можна подавати як відповідь на всі чотири.
Дослідження формальних шаблонів демонструє, як можна досліджувати розпізнавання та статистичний висновок. [1] Візуально переконлива подвійна вершина або статистично відмінний розподіл прибутковості ще не є повноцінною торговою системою. Вхід, вихід, витрати, розмір позиції та набір можливостей все ще визначають економічні результати.
Перед перевіркою ефективності напишіть картку гіпотези. Включіть відповідний ринок, часові рамки, поля введення, правило формування, затримку підтвердження, механіку входу та виходу, бюджет ризику, витрати, бенчмарк, метрику оцінки та дозволені варіації параметрів. Картка повинна бути достатньо точною, щоб інша людина могла її реалізувати без інтерпретації естетики графіка.
Визначте й корисний негативний результат. Наприклад, після вирівнювання ринкової експозиції фільтр обсягу може не поліпшувати математичне сподівання після витрат. Фіксація такого результату не дає непомітно змінювати початкове питання щоразу, коли бажаний результат не отримано.
1. Дані на момент часу та значення обсягу
Розрізняйте, коли відбулася подія, коли дані були отримані та коли стратегія могла їх використати. Одна лише часова позначка стовпчика може не виявити затримку подачі даних, корекцію або затримку публікації. Історичні симуляції повинні реконструювати відповідний набір інформації, а не використовувати останню виправлену базу даних без розбору.
Зберігайте стабільні ідентифікатори інструментів, історичний склад доступного набору та корпоративні події. Акції, які залишилися сьогодні, не дорівнюють учорашньому набору доступних інвестицій. Явно обробляйте делістинг, повторне використання тикерів, нові лістинги й відсутні ціни. Дати чинності корпоративної дії та її оголошення відповідають на різні питання доступності інформації.
Для виконання беріть фактичні торгові ціни без коригування, а для сигналів — задокументоване правило коригування. Безперервний ф’ючерсний ряд корисний для аналізу, але виконання має бути в реальному контракті за реальною ціною. Перенесення позицій між контрактами, множники та експірацію не можна вивести зі згладженого склеєного графіка.
Обсяг залежить від ринку. Обсяг акцій біржі, обсяг ф'ючерсних контрактів, кількість тиків FX та обсяг торгів на криптовалютному майданчику – це різні вимірювання. Таке позначення, як обсяг купівлі або дельта, вимагає фактичного методу класифікації; звичайний OHLCV не розкриває особу учасника або потік ордерів на всьому ринку.
Перевіряйте дублікати барів, пропуски, неможливі співвідношення OHLC, від’ємний обсяг і розриви через часові пояси. Зберігайте версії даних та журнали виправлень. Відтворюваний код зі змінними входами без версій не забезпечує відтворюваного експерименту.
2. Час підтвердження та незмінність префікса
Півот в індексі i, що вимагає r барів праворуч від нього, підтверджується не раніше ніж i+r. Його розташування можна визначити в i для аналізу, але торгове рішення не може бути прийнято там ретроспективно. Зберігайте occurred_at та confirmed_at як окремі поля та виконуйте з пізнішої доступної позначки часу.
Інваріантність префікса – це практичний тест: запускайте алгоритм на кожному зростаючому префіксі набору даних та порівнюйте вже опубліковані підтверджені події. Додавання майбутніх спостережень не повинно їх перезаписувати. Попередні кандидати можуть змінюватися, якщо їх явно позначено як попередні; підтверджені історичні сигнали повинні залишатися стабільними за незмінних вхідних даних.
Вхідні дані для вищих таймфреймів потребують такої ж дисципліни. Приєднуйте завершене погодинне значення до хвилинної стратегії лише після того, як годинне спостереження стане доступним. Поточний можливий максимум, мінімум або закриття за незавершену годину не можна використовувати для попередніх хвилинних рішень.
Навчайте нормалізацію, параметри кластеризації та статистичні моделі лише на дозволеній історичній частині. Масштабування, навчене на всіх даних, використовує інформацію про майбутній розподіл, навіть якщо кожен вхід в угоду правильно затримано. Вимога доступності інформації поширюється і на попередню обробку, і на індикатори.
Інформативний тест навмисно змінює майбутні ціни та обсяги, зберігаючи історичний префікс фіксованим. Якщо раніше підтверджений сигнал змінюється, відстежуйте залежність, а не припускайте, що платформа для побудови графіків автоматично вирішила проблему перемальовування.
3. Ордер має існувати до виконання
Відобразіть послідовність: сигнал, створення ордера, подання, прийняття, спрацювання, часткове виконання, завершення або скасування. На кожному етапі можлива затримка. Історичний дотик ціни до прийняття ордера не може бути виконанням цього ордера.
Документація стратегій платформи пояснює часові правила емулятора й припущення щодо ордерів. [2] Це правила симулятора, не гарантія фактичного біржового виконання. Стоп-ринковий ордер задає умову активації, але кінцева ціна може відрізнятися; лімітний ордер обмежує ціну, але може не виконатися. [3]
OHLC не показує порядок подій усередині бару. Якщо вхід, стоп і ціль лежать у межах одного бару, використовуйте детальніші дані або вкажіть межі можливих результатів. Не вибирайте шлях, що поліпшує стратегію. Не можна заднім числом скасувати очікуваний ордер після спостереження несприятливого виконання, яке він допустив.
Моделюйте часткове виконання й решту кількості. Якщо захисний стоп створюється лише після входу, вкажіть час незахищеності позиції. За розвороту входу до його завершення узгодьте фактичну експозицію з активними ордерами, не припускаючи, що всі замовлені цільові позиції досягнуті.
Витрати включають комісії, спред, прослизання, вплив на ринок, вартість позики та застосовний фандинг або фінансування. Враховуйте їх у фактичні моменти, визначені договором. Не задавайте спільний інтервал фандингу всім криптопродуктам і не додавайте спред повторно, коли виконання за bid/ask уже його включає.
4. Розмір ризику має визначатися з використанням узгоджених одиниць вимірювання.
Для лінійного інструменту запропонована формула розміру має вигляд q=floor(B/(abs(E−S)×multiplier+c_unit)), де B – бюджет грошових збитків, E – запланований вхід, S – стоп-лосс, а c_unit – орієнтовна вартість одиниці в обидва боки. Конвертація валют повинна містити чисельник і знаменник в одній валюті рахунку.
Ця формула оцінює заплановані збитки; вона не обмежує збитки від розриву. Зворотні контракти, опціони та нелінійні продукти потребують власного розрахунку виплат, а не запозичення формули акції. Мінімальні розміри лота та маржа брокера можуть ще більше зменшити можливу кількість.
Умовний капітал $20,000 і ризик 0.5% дають B=$100. За входу 100, стопа 99.50 та оцінки витрат $0.04 на акцію отримуємо q=floor(100/0.54)=185. Плановий збиток із цими витратами становить $99.90.
Якщо вихід виконується за 99.20, ціновий збиток становить $148, ті самі оцінені витрати — $7.40, разом $155.40. Обмеження збитку у звіті плановим бюджетом $100 приховує ризик виконання, а не вимірює його.
На рівні портфеля резервуйте експозицію для відкритих ордерів, обмежуйте валовий та чистий номінальний ризики та сукупні корельовані ризики. Кілька окремо невеликих позицій можуть реагувати на один і той самий ринковий шок. Повідомляйте як про ризик запланованого стоп-лоссу, так і про стресові втрати за умови одночасних несприятливих рухів.
5. Walk-forward: послідовна оцінка, purging та embargo
Розділіть розробку, валідацію та оцінку за часом. Підберіть моделі на основі навчальних даних, виберіть дозволені налаштування, використовуючи дані валідації, а потім заморозьте конфігурацію перед оцінкою наступного сегмента тестування. Повторення цього хронологічного процесу вимірює процедуру оновлення, а не один вибраний ретроспективно параметр.
Інтервали цільових міток можуть перетинати межі. Якщо результат навчального прикладу захоплює період валідації чи тесту, видаліть приклад із навчальної частини. Мітки валідації для вибору параметрів також не мають включати результати тестового періоду. Записуйте початок і кінець кожної мітки, не видаляючи вгадану сталу кількість рядків.
Ембарго виключає сусідні спостереження, де дизайн перехресної перевірки в іншому випадку дозволив би майбутнім навчальним вибіркам обмінюватися інформацією з тестовим інтервалом. Воно не є універсальною заміною хронологічного розділення та не виправляє неправильні часові позначки ознак. У цитованій презентації автора обговорюються ці механізми; це не є доказом того, що кожна довільна тривалість ембарго є достатньою. [4]
Якщо дослідник багаторазово переглядає walk-forward результати, збережіть додаткову фінальну відкладену вибірку. Щойно результати спрямовують зміни, вони беруть участь у розробці. Вибирайте фінальну конфігурацію лише за даними розробки, потім один раз оцініть закриту відкладену вибірку та повідомте результат без переналаштування.
Кожне навчуване перетворення має оцінюватися в межах відповідного розбиття: масштабування, відбір ознак, пороги режимів і бази обсягу. Навіть ретельно очищені інтервали міток не усувають витік, якщо попередня обробка навчена на всій вибірці.
6. Абляція, багаторазові спроби та стрес-тести
Абляція запитує, що додає кожен компонент. Порівняйте лише ціну, ціну плюс RVOL та ціну плюс RVOL плюс VWAP, використовуючи той самий всесвіт можливостей, припущення щодо розміру та виконання. Окремо змінюйте логіку входу та виходу, коли обидва використовують новий індикатор; інакше джерело покращення залишається незрозумілим.
Ведіть реєстр випробувань, включаючи невдалі ідеї, ручні фільтри діаграм, часові рамки, набори даних, сітки параметрів та підмножини ринків. Звітування лише про остаточну успішну конфігурацію приховує кількість шансів, які мав дослідник, щоб отримати щасливий результат.
Deflated Sharpe Ratio враховує зміщення відбору й ненормальність розподілу дохідностей у межах своїх припущень. [5] Це не ймовірність прибутку стратегії в реальній торгівлі. Probability of Backtest Overfitting розглядає погіршення рангу між частинами вибірки у своїй схемі, а не пряму ймовірність втрати капіталу рахунку. [6]
Перевірте витрати виконання під стресом із заздалегідь заданими множниками, наприклад 1.5 та 2; затримайте входи на один бар, перевірте сусідні параметри й залежність від п’яти найбільших угод. Це запропоновані тести чутливості. Трендова стратегія природно залежить від великих виграшів; їх вилучення інформативне, але не є автоматичним правилом прийняття чи відхилення.
Перевіряйте чутливість до ринкового режиму та обсягу капіталу, який може обслуговувати стратегія, за достатньої кількості спостережень. Розподіл даних на безліч дрібних сприятливих режимів створює нову проблему відбору. Простий стійкий ефект після витрат зазвичай переконливіший за складне пояснення кількох виняткових періодів.
7. Метрики, математичне сподівання та рівні доказів
Окремо повідомляйте кількість можливостей, поданих ордерів, виконань, завершених угод і прибуткових днів. Фільтр може збільшити частку виграшних угод, виключивши багато прибуткових можливостей. Частота прибуткових днів відрізняється від частки виграшних угод; жодна не визначає очікувану дохідність без розмірів виграшів і програшів.
Розраховуйте просадку за рядом капіталу рахунку з ринковою переоцінкою відкритих позицій та врахуванням витрат. Указуйте частоту дохідностей для Sharpe: нерегулярні результати угод не взаємозамінні з денними дохідностями. Розрізняйте загальну дохідність, CAGR, чутливу до грошових потоків IRR і регресійну альфу.
Умовна стратегія з імовірністю виграшу 0.40, середнім виграшем 2R, середнім програшем 1R та витратами 0.08R має сподівання 0.40×2−0.60×1−0.08=0.12R. За цих фіксованих розмірів результатів беззбиткова частка виграшних угод дорівнює (1+0.08)/(2+1)=0.36.
Інша умовна стратегія виграє у 65% угод, отримує 0.5R на виграші та втрачає 1R інакше. За тих самих витрат її сподівання дорівнює 0.65×0.5−0.35×1−0.08=−0.105R. Тому вища частка виграшів може поєднуватися зі збитковою системою.
Включайте хвостові збитки, тривалість просадки, оборот, частку участі в обсязі, експозицію та інтервали невизначеності. Розрізняйте опис методу, заявлений автором бектест, відтворення коду й даних, незалежну перевірку, подальшу імітаційну торгівлю та перевірені дані реальної торгівлі. Ці етапи відповідають на різні питання; жоден не гарантує майбутньої дохідності.
Публікуйте артефакти, які може оглянути інший дослідник
Архівуйте версію гіпотези, версії даних, реєстр спроб, межі розбиттів, події сигналів і ордерів, виконання, витрати та розрахунки капіталу. Без проміжних журналів важко пояснити розбіжності підсумкової таблиці з іншою реалізацією.
Наведений процес відокремлює багаторазово використаний період розробки від фінальної відкладеної вибірки. Його функції — специфікації для реалізації й тестування, не виконуваний доказ правильності. Зокрема, purging має перевіряти інтервали міток, а виконання — враховувати фактичну доступність подій.
Корисний пакет оглядів включає щонайменше один успішний приклад, одну невдалу угоду, один відхилений ордер та один неоднозначний випадок всередині бара, де це можливо. Поясніть, як симулятор обробляє кожен з них. Це надає конкретні докази того, що правила працюють послідовно, коли результати є незручними.
Зафіксуйте метрики для публікації до перегляду фінальної відкладеної вибірки. Якщо результат розчарує, повідомте його й почніть нову версію дослідження з новим планом оцінки. Повторні зміни методу під ту саму нібито незалежну вибірку знищують доказ, який вона мала дати.
spec = freeze_hypothesis_and_trial_registry()
data = load_versioned_point_in_time_inputs()
assert_data_integrity(data)
assert_confirmed_events_are_prefix_invariant(data)
development, final_test = split_chronologically_before_research(data)
for fold in chronological_folds(development, spec):
train = purge_overlapping_labels(fold.train, fold.validation + fold.test)
validation = purge_overlapping_labels(fold.validation, fold.test)
model = fit_using_train_only(train)
config = select_on_validation(model, validation)
freeze(config)
events = replay_causally(fold.test, config)
fills = simulate_orders_after_available_at(events, spec.execution)
equity = mark_to_market(fills, fees=spec.costs)
archive_all_results(config, events, fills, equity)
final_config = freeze_selection_using_development_only()
evaluate_final_holdout_once(final_test, final_config)
report_net_metrics_ablations_stress_and_uncertainty()
Поширені помилки
Розгляд привабливого детектора як прибуткової стратегії
Геометрія, прогнозна інформація, виконання та позавибіркова продуктивність – це окремі етапи перевірки. Проходження одного етапу не гарантує успішності інших.
Охайний графік із сигналами, підтвердженими майбутніми даними
Малювання опорної точки в її історичному місці може приховати пізніший час підтвердження. Зберігайте як occurred_at, так і confirmed_at, і перевіряйте кожне рішення на наявність інформації.
Зведення кожної витрати до невеликої комісії
Спред, вплив, позика або фінансування та пропущені виконання можуть мати більше значення, ніж комісія. Змоделюйте їх для інструменту та його ліквідності.
Реалістичні комісії за нереалістичного виконання
Урахування комісії не виправляє неможливе виконання на закритті сигнального бару, вигідний вибір порядку подій усередині бару чи гарантоване виконання лімітного ордера.
Повторна перевірка одного й того ж випробувального періоду
Щойно результати тестування спрямовують перегляд, цей період стає частиною розробки. Записуйте кожне використання та зберігайте новий недоторканий етап оцінювання.
Збереження лише виграшних конфігурацій
Без врахування кількості випробувань та розподілу невдалих варіантів, докази на користь обраної стратегії можуть бути перебільшені.
Використання статистичних коригувань як сертифікатів прибутковості
DSR, PBO та p-значення стосуються конкретних питань висновків за припущень. Вони не замінюють тестування виконання та не встановлюють майбутні прибутки рахунку.
Список перевірки перед застосуванням методу
Позначайте кожен пункт після перевірки на власних даних. Прогрес зберігається в цьому браузері й не засвідчує прибутковість стратегії.
Поширені запитання
Скільки угод достатньо, щоб довести, що стратегія працює?
Немає універсального порогу. Залежність, хвости виплат, ринкові режими та розмір ефекту визначають невизначеність. Повідомляйте про ці характеристики, а не розглядайте фіксовану кількість угод як доказ.
Чи слід відхиляти стратегію, якщо витрати усувають заявлену перевагу?
Версія, з якою можна торгувати, може не спрацювати, хоча базовий статистичний зв'язок залишається корисним. Повідомте про обидва висновки та уникайте представлення валового ефекту як виконуваного чистого прибутку.
Чи робить публікація коду відтворюваним тестування на історичних даних?
Код — це лише одна з вимог. Версії даних, правила корпоративних дій, параметри, історія випробувань та припущення щодо виконання також повинні бути доступними або точно задокументованими.
Джерела дослідження
Кожне джерело підтверджує визначення або докази, описані поруч. Псевдокод, штучні приклади та запропоновані параметри потребують окремої перевірки.
- Foundations of Technical Analysis: Computational Algorithms, Statistical Inference, and Empirical ImplementationAndrew W. Lo, Harry Mamaysky, Jiang Wang. Оригінальне дослідження з розпізнавання образів та статистичного висновку. Воно не демонструє прибутковість для кожного правила бібліотеки. Перевірено: .
- Pine Script — StrategiesTradingView. Вивчено первинну документацію про час ордерів стратегії та поведінку емулятора брокера, не як універсальну модель біржового виконання. Перевірено: .
- Understanding Order Types — Investor BulletinU.S. SEC — Investor.gov. Вивчено первинний бюлетень про ринкові, лімітні й стоп-ордери та обмеження їх виконання. Перевірено: .
- MLX 2018 — The 7 Reasons Most Machine Learning Funds FailMarcos López de Prado — bản trình bày đăng trên SlideShare. Слайди презентації автора, прочитані на предмет очищення та ембарго. Це не претендує на доступ до повної книги про фінансове машинне навчання або її прочитання. Перевірено: .
- The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting and Non-NormalityDavid H. Bailey, Marcos López de Prado — 2014. Вивчено повну методологічну статтю. Поправка на зміщення відбору потребує припущень і відомостей про спроби; це не ймовірність прибутку в реальній торгівлі. Перевірено: .
- The Probability of Backtest OverfittingBailey, Borwein, López de Prado, Zhu. Вивчено методологію CSCV та PBO. Погіршення рангу поза вибіркою відрізняється від імовірності втрати грошей. Перевірено: .
Пов’язані методи
Примітка про ризики
Матеріал призначений для навчання й планування досліджень, а не є фінансовою порадою. Backtest моделює минулі дані, не гарантує майбутніх результатів і не здійснює реальних угод. Методи бібліотеки не обов’язково реалізовані в застосунку. Дивіться методологію і навчальний центр.
Перевірте правила, перш ніж ризикувати реальним капіталом
Перевірте можливості застосунку, дані й кожну змодельовану угоду; складні детектори можуть потребувати окремої реалізації.
Завантажити Backtest в App Store