Введение в методы разработки торговых систем

Процесс разработки и эксплуатации торговых роботов можно разделить на 3 этапа:

  1. Исследование (поиск торговых идей, закономерностей поведения цены):
  • вручную, наблюдая графики;
  • обработка статистических данных;
  • использование методов машинного обучения (machine learning);
  • заимствование чужих идей (из книг, статей, на форумах, в блогах, из мониторингов торговых счётов, у знакомых трейдеров).
  1. Проверка (разработка, тестирование и оптимизация макета торгового робота).
  2. Использование для автоматической торговли. Анализ результатов работы робота, переоптимизация параметров, ротация торговых систем

Разработка правил торговой системы


Составные части торговой системы

  • Идентификация стратегии – нахождение стратегии, разработка преимущества и выбор торговой частоты.
  • Бэктестирование стратегии – получение данных, анализ результатов стратегии и устранение предвзятости (bias).
  • Система исполнения – соединение с брокером, автоматизация торговли и уменьшение операционных издержек.
  • Управление рисками – оптимальное распределение капитала, «размер ставки»/ критерий Келли и психология торговли.

Оптимизируемые параметры

В результате тестирования торговой системы на исторических данных находят оптимальные (в каком-то заданном смысле) значения всех параметров торговой системы. Это могут быть:

  • набор используемых технических индикаторов (какие из известных индикаторов использовать);
  • параметры используемых технических индикаторов (например, период скользящей средней);
  • размеры стоп-лосса и тейк-профита;
  • другие параметры и правила сопровождения позиции (трейлинг-стоп, время удержания позиции, использовать ли закрытие по частям,...);
  • время торговли (в какие часы лучше торговать, а в какие — нет);
  • способ открытия и закрытия позиций (рыночными или отложенными ордерами);
  • правила выбора размера открываемых позиций (мани-менеджмент);
  • правила отбора торгуемых активов;
  • любые другие параметры.

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

Примеры целых параметров:

  • период простой скользящей средней (SMA);
  • число баров рабочего таймфрейма, в течение которых позиция остаётся открытой;
  • размер позиции (количество минимальных контрактов/лотов);
  • сколько белых свечей подряд рассматривать как сигнал на открытие длинной позиции;
  • на сколько тиков (пунктов) выше максимума предыдущей свечи устанавливать стоп-лосс при открытии коротких позиций;
  • какой метод формирования баров/свечей использовать при анализе графиков (известен конечный набор таких методов: по времени, по тиковому объёму, по биржевому объёму, рендж-бары и т.д., все методы можно представить номерами 1, 2,...).

Примеры вещественных параметров:

  • период экспоненциальной скользящей средней (EMA);
  • отношение размера тейк-профита к размеру стоп-лосса (TP/SL).

Примеры логических параметров, которые могут принимать только значения истина (true) или ложь (false):

  • использовать ли индикатор RSI;
  • использовать ли трейлинг-стоп;
  • торговать ли по пятницам;
  • закрывать ли позицию перед значимыми новостями;
  • принимать ли свечную комбинацию поглощение в качестве сигнала на открытие позиций;
  • выше или ниже максимума предыдущей свечи должно быть открытие сегодняшней свечи для того, чтобы открыть длинную позицию (равенство включается в один из этих вариантов).

Многие другие типы параметров могут быть сведены к перечисленным. Например, время начала торговли с точностью до минуты можно представить в виде целого числа от 0 до 2359 (означает 23:59) или в виде количества минут (тоже целое число), прошедших с некоторого момента, выбранного за начало отсчёта; день недели — в виде целого числа от 0 до 6 (или от 1 до 7). Логические значения можно кодировать целыми числами 0 и 1.

Кроме оптимизации параметров самой торговой системы, можно также говорить об оптимизации параметров, относящихся к методике тестирования и оптимизации торговых систем. Например: сколько циклов WFO (walk forward optimization) использовать; какой из многочисленных методов оптимизации применить; какой параметр рассматривать в качестве целевой функции (размер прибыли, профит-фактор, коэффициент Шарпа, максимальную просадку эквити,...); какой выбрать размер обучающих и тестовых данных.

Обучающие и тестовые даные

В результате решения той или иной оптимизационной задачи находятся наилучшие значения параметров торгового алгоритма. Те данные (котировки), на которых алгоритм “обучается” (оптимизируется), называются тренировочными или обучающими (in-sample data, IS). Данные, на которых потом проверяется работа алгоритма (с найденными значениями параметров), называются тестовыми (out-of-sample data, OS).

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

Поэтому проблема заключается не в том, чтобы для известных данных найти оптимальные значения параметров алгоритма. Проблема в том, чтобы алгоритм, обученный на известных данных (IS), остался прибыльным при работе с теми данными, которые не участвовали в процессе обучения (OS).

Переобучение и недообучение

Переобучение (переоптимизация, overtraining, overfitting) – нежелательное явление, возникающее при решении задач обучения (оптимизации), когда вероятность ошибки обученного алгоритма на объектах тестовой выборки оказывается существенно выше, чем средняя ошибка на обучающей выборке. Переобучение возникает при использовании избыточно сложных моделей.

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

Целевые функции для оптимизации

(продолжение следует...)


Теги: Методы разработки торговых систем