Вторая часть адаптированного перевода[1] лекции Model-Based Trading Strategies, Johann Christian Lotter, опубликованной на ресурсе The Financial Hacker[2]. Кратко описывается последовательность создания, адаптации и тестирования алгоритмических моделей. Роль риск и мани-менеджмента в построении успешных стратегий в алготрейдинге. Смотрите Часть 1 (начало текста).
Содержание:
- Введение. Общая схема работы над алгоритмом
- Выбор модели
- Разработка торгового алгоритма
- Фильтры
- Адаптация параметров (обучение)
- Тестирование
- Проверка реальности, Reality Check
- Риск- и мани-менеджмент
- Вместо заключения. Немного юмора
- Примечания
- Список источников
- Список формул
- Используемые сокращения
Введение. Общая схема работы над алгоритмом
Первая часть материала была посвящена базовым видам моделей в алгоритмическом трейдинге. Здесь речь пойдет об основных принципах работы над торговым алгоритмом.
Процесс его конструирования включает следующие этапы:
- Выбор модели. Подтверждение ценовыми данными.
- Разработка торгового алгоритма.
- Разработка алгоритма фильтрации.
- Адаптация параметров (оптимизация).
- Тестирование.
- Проверка реальности.
- Реализация управления рисками и капиталом.
Успешная финансовая модель базируется на трех предпосылках:
- Наличие рациональной основы в структуре рынка / поведении трейдера.
- Возможность формализации программой (алгоритмом) или формулой.
- Статистическая значимость на кривых реальных цен.
Для того чтобы убедиться, что вы на правильном пути при выборе модели:
- Найдите алгоритм, определяющий неэффективность ценовых кривых.
- Подготовьте статистику. Постройте гистограмму.
- Сравните с кривыми случайного блуждания (random walk curves) или кривыми перетасованных цен (shuffled price curves). Разница должна быть значительной.
- НЕ полагайтесь на исследования других людей! Мошенничество распространено повсеместно.
Разработка торгового алгоритма
Простейший пример.
Предположим, трейдер решил работать по модели циклов. Он выделяет доминирующий цикл и фазу (цикл № 1). Рисует предварительную синусоиду. Ниже приведен весьма идеализированный вариант:
(основное изображение, см. источник 1)
На пике синусоиды алгоритм предусматривает открытие короткой позиции, на впадине - длинной. Через полпериода, когда пик переходит во впадину, а впадина - в пик, позиции надо закрыть или развернуться (после закрытия, открыть противоположные).
Найденная ранее и эксплуатируемая моделью рыночная неэффективность не вечна. Постепенно или резко она может сойти на нет. Сработает рыночная эффективность сильной степени, стоимость актива полностью поглотит влияющую на нее прошлую, текущую и инсайдерскую (частную) информацию.
Критично необходим фильтр для выявления неэффективности. В большинстве случаев такой фильтр важнее самого алгоритма.
Например, в стратегии циклов, следует быть уверенным, что определенная амплитуда доминирующего цикла выше порога, поглощает текущий тренд. В противном случае, торговля по найденному циклу бессмысленна.
Адаптация параметров (обучение)
Если у модели есть несколько свободных параметров, следует выяснить, как стратегия реагирует на их изменение. Цель - отыскать наиболее надежный (оптимальный) диапазон параметров - “sweet spot”.
Стратегию необходимо адаптировать к разным активам и к различным рыночным ситуациям. В том числе, и во время реальной торговли.
К плохим идеям относится введение слишком большого количества параметров, а также оптимизация на пиках (“грубая сила”, brute force).
Тест должен охватывать все значимые рыночные интервалы на протяжении последних пяти-десяти лет. Нужно помнить, что любая адаптация параметров вносит искажения в результат теста. Для корректного тестирования надо использовать данные, не задействованные в адаптации.
Заметьте - предвзятость делает бэктестинг совершенно бесполезным.
Полезно применить Walk Forward Optimization/Analysis (WFO). WFO заключается в разделении каждого исторического периода, на котором прогоняется модель, на два отрезка. В первом значения берутся для обучения (training), во втором - для тестирования (test).
После обучения и тестирования системы на данном периоде, временное окно сдвигается в следующий. Интервалы обучения и тестирования частично перекрываются. Процедура обучения/тестирования повторяется, пока окно не упрется в конец отведенного для изучения времени.
Заключительный этап WFO состоит в тестировании модели на другом сегменте данных, не пересекающимся с исходным.
Результаты обучения/тестирования оцениваются с помощью ряда коэффициентов, среди которых можно выделить.
Фактор прибыли (Profit Factor) - отношение дохода к убыткам на выбранном промежутке времени.
Коэффициент Калмара (Calmar ratio) - отношение годовой нормы прибыли (Rate of Return, RoR[3]) к максимальной за просадке за год (drawdown).
Коэффициент Шарпа (Sharpe ratio).
(формула 1, источник 5)
Где:
S - коэффициент Шарпа;
R - доходность актива (портфеля);
Rj - доходность альтернативного вложения, как правило, по безрисковой ставке (допустим, госбумаг);
σ - среднеквадратичное отклонение актива (портфеля).
Коэффициент Шарпа показывает насколько хорошо доходность актива соотносится с его риском. Чем выше коэффициент Шарпа, тем актив является более доходным при заданном уровне риска или демонстрирует один и тот же доход при уменьшении риска.
Исключить фактор случайности из тестов поможет метод Монте-Карло.
Порядок такой.
Кривая капитала (equity curve) разбивается на множество маленьких участков, которые перемешиваютя их между собой без всякой системы. Итоги тестирования пересчитываются для новой, смешанной кривой. Эксперимент повторяется 1000 раз. Результаты сортируются по доверительным интервалам.
Проверка реальности, Reality Check
Даже с учетом применения WFO и метода Монте-Карло, итоги тестов будут подвержены смещению и иметь предвзятый характер. Неточность вносится штатным процессом разработки.
Лекция предлагает несколько методов преодоления подобных недостатков.
- Проверка реальности Уайта, White’s Reality Check[4], позволяющая сделать количественную оценку систематической ошибки.
- Проверка реальности методом Монте-Карло. Изучаются перетасованные случайным образом кривые цен с построением распределения результатов.
- Запуск системы с инвертированным, исключенным трендом (detrended) или ценовыми кривыми за пределами выборки (oversampled).
- Проводится реальный тест вне выборки. Часть данных откладывается и используется только для этого теста.
Несколько советов от авторов Лекции относительно трейдерской дисциплины:
- Ставить стоп-лоссы для устранения отрицательных выбросов.
- Не применять целевые показатели прибыли, а задействовать механизм фиксации прибыли.
- Использовать алгоритм для расчета оптимальных инвестиций на компоненту портфеля (Kelly, OptimalF, Markowitz).
- Реинвестировать только квадратный корень из прибыли.
- Постоянно контролировать свою систему и сравнивать реальные торги с бэктестингом. Рассчитывать индекс хладнокровия, The Cold Blood Index.
Вместо заключения. Немного юмора
На финише Лекции авторы развлекают слушателей порцией юмора.
Зарисовка о том, как “реально” создается и настраивается торговый алгоритм.
Шаг 1. Посетите форумы трейдеров. Ищите ветку с новым сказочным индикатором.
Шаг 2. Реализуйте индикатор с длительным сеансом кодирования. Ух, бэктест выглядит не так хорошо. Ошибка кодирования? Отладить. Еще немного отладки.
Шаг 3. По-прежнему нет хорошего результата, но у вас есть кое-какие хитрости в рукаве. Добавьте трейлинг-стоп. Проведите недельный анализ. Вторник - плохой день для этого показателя? Добавьте фильтр, чтобы не торговать во вторник. Добавьте дополнительные фильтры, чтобы не торговать с 12.00 до 14.00 и в любое полнолуние, кроме четверга. Вау, теперь мы видим некоторую прибыль!!
Шаг 4. Итоги выборки, конечно, не обманут. После оптимизации всех 23 параметров запустите предварительную проверку. Эх, результат выглядит не слишком хорошо. Попробуйте разные циклы WFO. Поэкспериментируйте с различными таймфреймами. Оптимизируйте больше параметров. Наконец-то сенсационный итог теста! И полностью вне выборки!
Шаг 5. Торгуйте по системе вживую.
Шаг 6. Ах, результат не очень хорош...
Шаг 7. Посетите множество торговых семинаров для восстановления вашего банковского счета.
перевод и обработка Владимира Наливайского
В основе изложения материал - “Model-Based Trading Strategies”, Johann Christian Lotter, The Financial Hacker, включая иллюстрации.
Первоисточниками определений терминов, понятий, явлений, вводимых по тексту, являются профильные статьи Википедии/Wikipedia, указанные в Списке источников к публикации, если не оговорено иное.
- Под адаптированным переводом понимается достаточно точное следование исходному материалу с возможными отступлениями и пояснениями. Конкретные вещи - формулы, скрипты и пр. (и комментарии к ним) изложены максимально близко к оригиналу (скопированы). Ответственность за их корректность и ясность интерпретации несет автор исходника.
- По тексту материал фигурирует, как Лекция.
- Норма прибыли (Rate of Return, RoR) - чистая прибыль или убыток от инвестиции за определенный период времени, выраженная в процентах от первоначальной стоимости инвестиции. При расчете нормы прибыли определяется процентное изменение с начала и до конца периода. Смотрите источник 4.
- Подробно о проверке реальности Уайта можно посмотреть в источнике 6.
Список источников (Википедия/Wikipedia, если не оговорено иное)
- “Синусоида”.
- “Walk forward optimization”.
- “The Calmar Ratio”, W. Kenton, Investopedia, 01.07.2020.
- “Rate of Return (RoR)”, W. Kenton, Investopedia, 31.05.2020.
- “Коэффициент Шарпа”.
- “Проверка реальности Уайта” (White’s Reality Check), The Financial Hacker, 14.09.2015.
WFO - Walk Forward Optimization