Блог им. algomrk

Ошибки в бэктестинге (часть 1, а может и последняя).

    • 02 января 2025, 12:10
    • |
    • algomrk
  • Еще
Дисклеймер: Весь пост для более подробного раскрытия моего комментария к этому посту: smart-lab.ru/mobile/topic/1100858/

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

Предположим, вы придумали стратегию вида “покупать 10 самых низкокапитализированных компаний из SNP500 (или индекса Мосбиржи) и ребалансировать портфель раз в месяц”. Берете актуальный список компаний, качаете исторические данные для них и наблюдаете, что она показывает отличный результат на протяжении последних 10 лет. Что может пойти не так?

Дело в том, что индексы меняются. И те компании, которые оказались в индексах сегодня — показали очень огромный рост или стабильность в прошлом. В таком случае получится, что ваша стратегия покажет результат не потому что она хороша и действительно работает, а потому что вы использовали информацию из будущего. Грубо говоря если бы вы сегодня знали, что окажется в индексах через 10 лет, то какую стратегию не используй — вложение в эти компании конечно же принесут доход. Но в реальности многие компании падают и уходят из индексов навсегда…
14 комментариев
в реальности многие компании падают и уходят из индексов навсегда
купи фонд на индекс...
avatar
ошибки, которые встречаются на наших палестинах:
-неучет или недостаточный учет транзакционных издержек (проскальзывание зависит от объема)
-подглядывание вперед (например, в старом метастоке индикатор зигзага давал такой эффект)
— то, о чем написал автор
— использование цен, которые нереально получить (например, провести сделку по первой цене регулярной сессии на акциях МБ)
— переподгонка из-за избыточного числа степеней свободы в оптимизируемых параметрах, в пределе ML может просто «запомнить весь график»
— недостаточность использованного объема данных (тут не обязательно тупо мало данных, важно, чтобы все основные рыночные фазы были представлены в наборе данных)
— подгонка под единичные события
Буду рад, если кто дополнит.
avatar
SergeyJu, про ML если только. Самая база, которая часто в глаза бросается: часто пытаются делать классическую cross fold validation, но перемешивают данные не по периодам времени, а рандомно. Итог — в тестовой и тренировочной выборке оказываются разные стоки из одного периода, а они коррелируют между собой. Как итог — ML модели переобучаются
avatar
если бы вы сегодня знали, что окажется в индексах через 10 лет
Тогда бы будущее изменилось. Это еще одна из ошибок бэктестинга, думать что график это запись на ленте в режиме play. Что достаточно угадать алгоритм и можно сидеть попивать коктейль ведь запись на ленте не возможно изменить.
avatar
22022022, ну тут вопрос общего объемов торгов и размера портфеля. в медленных стратегиях на ликвидных акциях тяжело повлиять на рынок своим поведением. А вот в интрадей торговле на третьем эшелоне — очень легко
avatar
IMHO, бэктестинг сам по себе огромная ошибка. Ибо вместо того, чтобы разобраться в природе вещей, как все устроено, какова природа данных, какие модели описывают реальность и т.п. люди занимаются бессмысленным и беспощадным бэктестингом. Как если бы Илон Маск не проектировал и потом испытывал свои ракеты, а беспорядочно сваривал куски железа на свалке и пытался их запустить облив топливом.
avatar
Synthetic, вы уже разобрались в природе рынка?)
avatar
robomakerr, 

Вопрос задан не корректно. Рынок — это не математическое понятие, вроде поля комплексных чисел. Больше напоминает лоскутное одеяло сшитое из тряпок, кусков алюминия и наждачной бумаги.
Но в некоторых лоскутках продвинулся.
avatar
Synthetic, ну, каков ваш ответ, таков и мой вопрос)
avatar
Synthetic, Если рынок это череда событии А-Б-В в прошлом и А-Б-В-Б-А… в бесконечном будущем тогда только бэктест.
Но если рынок это А-Б-В в прошлом и ГДWZ%$#JЙ d… в будущем то тоже имеет смысл посматривать на прошлое чтобы исключить А-Б-В.
Но в целом бэктест не нужен, это ловушка из которой сложно выбраться чтобы взглянуть как бы outside the box.
avatar
22022022, 
в целом бэктест не нужен
как любит говорить ves2010- «есть трендовые бумаги и есть не трендовые»… и на рынке есть два состояния флэт и тренд...

тестировать тута нечего… надо сидеть и ждать, когда подует тренд (ветер) в наши трендовые бумаги (паруса)...
avatar
Я знаю что в моексе будет, Газпром например))
Ещё возможная причина нереального теста: кривые данные (плохая склейка фьючерсов, пропуски и т.п.)
avatar
А также неучет планок, стоп-торгов, неработоспособности брокера, невозможность взять инструмент в шорт в тот момент.
avatar

теги блога algomrk

....все тэги



UPDONW
Новый дизайн