Избранное трейдера Igr
Решил начать писать небольшие заметки по алгоритмической торговле и всему что с ней связано. Возможно, когда-нибудь расширю, склею и опубликую в виде книжки. Пока же это просто наброски заметок, сделанные на скорую руку.
Можно часто слышать от тех, кто торгует алгоритмически, да и просто систематически, такие понятия как «оверфиттинг», «курвафиттинг», «зафит» и прочие ругательства с корнем «фит». Что все это значит?
На самом деле, все эти слова, как правило, используются для описания одного и того же явления, являющегося врагом всех трейдеров, торгующих систематически и пытающихся оценить исторический перформанс своих торговых логик — а именно, что «живой» аут-оф-сампл перформанс на реальном счете, как правило, хуже ожиданий, полученных ими при проверке своих идей на истории. Например, при тестировании торговой логики на истории трейдер с помощью своей модели «зарабатывал» 30% годовых, а в реале может в среднем иметь 10% годовых. Разница 20% годовых — может объясняться именно оверфиттингом (если нет других факторов — например, некорректный учет комиссионных и проскальзываний, или ошибка в торговом коде; но прочие факторы легко устранить, в отличие от оверфиттинга). На картинке в начале статьи — пример перформанса некоторого фонда в бэктесте и в реальности, наглядно иллюстрирующий написанное выше.
Оверфиттинг является следствием комбинации одного или нескольких из следующих факторов, положительно влияющих на бэктест (результаты прогонки модели на истории), что и создает у трейдера завышенные ожидания от своей модели. В этой части мы рассмотрим основные источники оверфиттинга, в следующей — поговорим о способах избежания или минимизации оверфиттинга при историческом тестировании моделей.
В определенный момент у любого алготрейдера количество торговых систем переваливает за ту цифру, которую можно держать в голове вместе со всеми параметрами и результатами тестов. Конечно, в тс лабе можно сохранять результаты тестов, но из массы кубиков или переменных в коде быстро вычленить идею практически невозможно, особенно, если ТС строилась больше недели назад. Лично мне в такой ситуации помогает Development Worksheet (Паспорт робота), обычный эксель файл с общей информацией о стратегии.
Данный лайфхак, если мне не изменяет память, был найден в книжке Кевина Дэйви «Building Winning Algorithmic Trading Systems». В самой книге автор рассказывает о том, как он тестирует стратегии. Автор делает очень сложное многоступенчатое тестирование, которое начинается предварительными тестами входов и выходов: фиксированный стоп/профит, поза по фиксированному числу баров, monkey тест и прочее (если есть интерес, то могу описать все его изощрения подробно в следующей заметке). После этого он проводит форвардное тестирование и тест монте карло. Перед запуском стратегии на больших деньгах он дает системе поторговать маленьким капиталом (по-моему порядка полугода) и сверяет результаты торговли с тестовыми, вносит поправки. Таким образом на создание системы уходит как минимум 7-8 месяцев.