Бэктестинг с Горшковым и Курбаковским (видео)

25 февраля на Четверге в AllDerivatives Cafe квант и разработчик торговых систем Андрей Горшков поделился опытом обработки исторических биржевых данных при создании и тестировании торговых алгоритмов. По просьбе участников выкладываю заметки Андрея к презентации на русском языке.

Опционный трейдер и управляющий Виталий Курбаковский ответил на вопросы о подводных камнях бэктестирования данных опционной торговли и заинтриговал опционных трейдеров, напомнив, что в своей торговле использует не формулу Блэка-Шоулза, а собственную модель.

Тезисы к докладу Андрея Горшкова

Скачать презентацию Андрея Горшкова

1. Основные проблемы бэктестинга

1.1. Есть результат в исследовании, нет результата в продакшн:
  • не учтены frictions: спред, комиссии, проскальзывание
  • неверные данные на входе
  • не учтены метаданные (расписания сессий, праздники)
  • ошибки в алгоритме: заглядывание в будущее, невоспроизводимые статистики (high, low, close)
1.2. Сложность переноса в продакшн:
  • код в другом стиле (Matlab, многопроходность vs событийность)
  • архитектура в другом стиле (отдельный execution, отдельные сервисы-калькуляторы)
  • данные в другом формате (SQL vs nonSQL, текст vs бинарный, равномерная сетка, разбиение на дни)
  • использование сторонних библиотек (а нужно ли вообще?)
  • другая платформа (Windows vs Linux)
1.3. Интеграция с системой поиска и production pipeline:
  • возможность запускать бэктест в цикле с параметрами
  • возможность экспортировать результаты в production (confgen)
  • прозрачность и воспроизводимость: увидеть на тестах то, что наблюдалось в production и в исследовании

2. Стадии тестирования

2.1. Standalone исследование
  • аналитические методы (Матлаб)
  • визуализация: графики, гистограммы
  • нужно откуда-то взять правильные данные
2.2. Standalone бэктест (execution не требуется)
  • приблизительный тест на сэмплированных данных
  • точный тест на bid/ask данных
  • тут можно выгрузить данные
2.3. Production бэктест (execution нужен):
  • paper trading на исторических данных
  • paper trading на онлайн данных
  • запуск на тестовых объёмах
  • deployment, config, logs

3. Структура данных для бэктеста

3.1. Метаданные:
  • список инструментов, связи
  • календарь и расписание сессий
  • экспирация фьючерсов, склейка
  • сплиты, слияния, появления и исчезновения
3.2. Ценовые ряды
  • форматы: L1, L2, L3, OHLC
  • TWAP bid/ask — до сих пор непопулярен у брокеров!
  • сетка равномерная vs неравномерная: избыточность или удобство
  • события vs состояния: потеря информации
3.3. Способы чтения
  • синхронный (равномерная сетка)
  • слияние (симметричное и асимметричное, условия пропуска)
  • иерархическое хранение и чтение (по дням, месяцам)
  • смешанные способы, граф потоков данных

4. Проблемы построения бэктеста

4.1. Логические проблемы
  • проблема областей определения (события vs состояния)
  • проблема next_tm: необходимость многопроходности (1h + 1m example)
  • заглядывание в будущее vs простота кода (многопроходность делает дерево вычислений непрозрачным)
4.2. Способы реализовать многопроходность
  • врЕменные данные (массивы, файлы, пайпы)
  • несколько итераторов (курсоры)
  • продюсеры-консьюмеры
4.3. Способы реализации producer-consumer
  • внутри одной программы через шедулер (scheduler)
  • через корутины
  • через трэды
  • встроенные каналы в Go
  • несколько программ + пайпы или файлы
  • внешние онлайн сервисы
4.4. Переиспользование кода
  • возможность запуска в цикле для оптимизации параметров
  • возможность использования в production (как генератор конфига, как часть pipeline)
4.5. Переиспользование данных
  • консистентность: все исследователи видят одни и те же данные
  • кэширование: не считаем одно и то же много раз

5. Поиск торговых алгоритмов

  • Цель – не тестирование одного-двух граалей, а поиск в ширину
  • Низкие трудозатраты на проверку идеи: исключить implementational bias
  • Скорость: отрицательный ответ получаем максимально быстро, с положительным можно дольше
  • Точность: по возможности сразу получаем все метрики (draw down, sharpe), в том числе стресс-тест и чувствительность к данным
  • Полнота: либо находим алгоритм, либо заключаем, что его нет ни для каких разумных параметров, и спокойно двигаемся дальше
  • Воспроизводимость и отладка: возможность быстро пройти всю цепочку тестов для заданного алгоритма
  • Кэширование найденных результатов: проблема удобного кодирования комбинаций, общий доступ
  • Неважно, по какому пространству ищем и как ищем (генетика, простой перебор), а важно, как оцениваем — МЕТРИКИ
  • Continuous and incremental search: нам не нужно знать все сразу и абсолютно точно, двигаемся постепенно, улучшая результат и уровень достоверности
  • «Воронка» поиска: грубый отсев быстро и по большому фронту, более глубокая проверка для оставшихся

6. Составление портфеля стратегий

А это уже отдельная тема…

 

Вопросы В.Курбаковскому

  1. На что важно обращать внимание в тестировании?
  2. В чем основная сложность бэктестирования опционов, по сравнению с акциями?
  3. Как избежать переобучения при оптимизации параметров?
  4. Какое проскальзывание закладывать в тест?
  5. Как считаете время: линейно или с весами?
  6. Если берете записанные данные стакана, а не улыбку биржи, как считаете терцину опциона?
  7. Какие биды/аски игнорируете при расчете?
  8. Как в реальной торговле получить кэффициент Шарпа, как в тестах?
  9. Какие метрики стоит смотреть, кроме коэффициента Шарпа?
  10. Вопрос комплексный, как по шагам происходит бэктест той или иной опционной стратегии?
  11. В какой форме происходит визуализация результатов бэктеста и параметров модели (кривая\поверхность волатильности)
  12. Используется модель Блэка-Шоулза для оценки опционов или используются только авторские, например модель реализованной подвижности базового актива?
  13. Каков инструментарий для research, Python\R например?
  14. Встают ли классические проблемы бэктестинга при тесте опционных стратегий, такие как peak-ahead или curve-fitting?
  15. Возникают ли сильные расхождения в реальной торговле относительно теста опционных стратегий, и почему? В чем могут быть тут подводные камни?
Share this Post!

About the Author : master


Отправить

Ваш электронный адрес не будет опубликован.