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

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

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

Данные и рынкиПрименяется к исследованиям акций, фьючерсов, FX и криптовалют с учётом специфики данных, контрактов, затрат и сессий каждого рынка.
Таймфреймы исследованияЛюбой объявленный горизонт сигнала и удержания позиции; наблюдения, ордера и метки должны иметь явные временные метки.
Условный ряд капитала разделён хронологически на разработку, валидацию и тест без перемешивания времени.Открыть иллюстрацию в полном размере
Показатели синтетического капитала и возможностей иллюстрируют только хронологические разбиения; они не являются результатами стратегии. Вертикальная ось показывает нормализованный капитал. Границы этапов должны быть определены до оценки, а не выбраны из данной иллюстрации.

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

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

Ответьте на четыре разных вопроса по порядку.

Сначала: можно ли устойчиво распознавать модель? Затем: содержит ли она условную информацию о последующих исходах? Далее: можно ли превратить эту информацию в положительную доходность счёта после затрат с помощью исполнимых ордеров? Наконец: сохраняется ли результат на данных, ранее не использованных в исследовании? Исследование одного вопроса нельзя представлять как ответ на все четыре.

Формальное исследование паттернов демонстрирует, как можно изучать распознавание и статистический вывод. [1] Визуально убедительная двойная вершина или статистически отличающееся распределение доходности еще не являются полной торговой системой. Входы, выходы, затраты, размер позиции и набор возможностей по-прежнему определяют экономические результаты.

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

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

1. Данные на определенный момент времени и значение объема.

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

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

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

Объём торгов зависит от конкретного рынка. Объём торгов на бирже, объём фьючерсных контрактов, количество тиков на валютном рынке и объём торгов на криптовалютной площадке — это разные показатели. Такие обозначения, как объём покупок или дельта, требуют определённого метода классификации; обычный 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. Поэтому высокая доля выигрышей может сочетаться с убыточной системой.

Включайте хвостовые убытки, длительность просадки, оборот, долю участия в объёме, экспозицию и интервалы неопределённости. Различайте описание метода, заявленный автором бэктест, воспроизведение кода и данных, независимую проверку, последующую имитационную торговлю и проверенные данные реальной торговли. Эти этапы отвечают на разные вопросы; ни один не гарантирует будущую доходность.

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

Архивируйте версию гипотезы, версии данных, реестр попыток, границы разбиений, события сигналов и ордеров, исполнения, затраты и расчёты капитала. Без промежуточных журналов трудно объяснить расхождение итоговой таблицы с другой реализацией.

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

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

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

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-значения позволяют ответить на конкретные вопросы статистического вывода при заданных предположениях. Они не заменяют тестирование исполнения и не определяют будущую прибыль по счетам.

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

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

0/16 пунктов

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

Сколько сделок достаточно, чтобы доказать эффективность стратегии?

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

Следует ли отклонить стратегию, если затраты нивелируют заявленное преимущество?

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

Публикация кода делает бэктест воспроизводимым?

Код — лишь одно требование. Версии данных, правила корпоративных действий, параметры, история исследовательских попыток и допущения исполнения также должны быть доступны либо точно описаны.

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

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

  1. Foundations of Technical Analysis: Computational Algorithms, Statistical Inference, and Empirical ImplementationAndrew W. Lo, Harry Mamaysky, Jiang Wang. Изучено исходное исследование распознавания моделей и статистического вывода; оно не доказывает прибыльность каждого правила библиотеки. Проверено: .
  2. Pine Script — StrategiesTradingView. Изучена первичная документация о времени ордеров стратегии и поведении эмулятора брокера, не как универсальная модель биржевого исполнения. Проверено: .
  3. Understanding Order Types — Investor BulletinU.S. SEC — Investor.gov. Изучен первичный бюллетень о рыночных, лимитных и стоп-ордерах и ограничениях их исполнения. Проверено: .
  4. MLX 2018 — The 7 Reasons Most Machine Learning Funds FailMarcos López de Prado — bản trình bày đăng trên SlideShare. Изучены слайды автора о purging и embargo. Не заявляется доступ к полной книге по финансовому машинному обучению или её прочтение. Проверено: .
  5. The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting and Non-NormalityDavid H. Bailey, Marcos López de Prado — 2014. Изучена полная методологическая статья. Поправка на смещение отбора требует допущений и сведений о попытках; это не вероятность прибыли в реальной торговле. Проверено: .
  6. The Probability of Backtest OverfittingBailey, Borwein, López de Prado, Zhu. Изучена методология CSCV и PBO. Ухудшение ранга вне выборки отличается от вероятности потери денег. Проверено: .

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

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

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

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

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

Скачать Backtest в App Store