Подборка: 6 Открытых Фреймворков Для Создания Бэктестеров Торговых Стратегий На Python



Подборка: 6 открытых фреймворков для создания бэктестеров торговых стратегий на Python

В своей статье на ресурсе QuantStart эксперт по разработке финансовых приложений Фрэнк Смитана рассказал о существующих фреймворках для создания программного обеспечения для тестирования торговых стратегий на истории и дал несколько советов по выбору таких инструментов.

Мы адаптировали этот полезный материал.



Что такое бэктестинг

Бэктестирование — это «запуск» запрограммированной торговой стратегии на данных реальных сделок, которые имели место в прошлом («исторические данные»).

Это чрезвычайно важный процесс, который имеет такое же значение, как и собственно разработка стратегии и ее запуск во время реальной торговли в реальном времени.

Считается, что качественное тестирование на исторических данных помогает выявить некоторые недостатки и узкие места торговой системы до того, как это приведет к огромным убыткам.

Помимо бэктестинга, существует понятие моделирования работы торговой стратегии.

Программы моделирования имитируют возникновение условий, которые должны служить триггерами для совершения операций финансовой программой – в этом случае используется режим реального времени.

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

В области Python ситуация со специализированным ПО достаточно хорошая — членам сообщества доступны шесть открытых фреймворков для создания инструментов бэктестинга.



Прежде чем выбрать фреймворк

Прежде чем приступить к выбору фреймворка и разработке бэктестера, следует определиться с требованиями к разрабатываемой торговой системе в целом.

Среди прочего есть следующие важные вопросы, требующие ответов:

  • Операции с каким классом активов будет производить система? .

    Большинство платформ поддерживают данные о торговле акциями США (через Yahoo Finance), но если вам нужно торговать деривативами, ETF или другими инструментами, можно каким-то образом импортировать эту информацию.

    Кроме того, недостаточно его найти; фреймворк также должен уметь работать с необходимым типом активов — может обрабатывать операции с фьючерсами и опционами, корректно совершать крупные сделки на не самых ликвидных рынках и так далее.

  • Насколько частой и интенсивной будет эта стратегия? .

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

    Важно понимать, что для создания систем первого типа хедж-фондам и HFT-компаниям приходится вкладывать огромные средства в разработку — только так они смогут создать программное обеспечение, способное справиться с требуемыми нагрузками.

    Однако существуют также платформы, которые предоставляют наборы данных для различных классов активов, например, акции S&P в минутном масштабе.

  • Какие типы заказов должна поддерживать система? .

    В джентльменский набор любой уважающей себя торговой системы входят рыночные, лимитные, стоп- и стоп-лимитные ордера.

  • Требуемый уровень поддержки и документации.

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



Компоненты фреймворка для бэктестинга и оптимизации

Фреймворки для создания бэктестеров обычно включают в себя несколько компонентов:
  • Модуль приема данных — отвечает за чтение файла с кодом стратегии.

    Если фреймворк требует перекодирования стратегии перед запуском бэктеста, то важно, чтобы он поддерживал библиотечные функции для самых популярных технических индикаторов — это ускорит тестирование.

  • Модуль тестирования производительности — с его помощью анализируется широкий спектр метрик риска и эффективности стратегии при работе на выбранном наборе исторических данных (в том числе максимальная «просадка» депозита при торговле), коэффициенты Шарп И Сортино .

  • Оптимизация занимает львиную долю ресурсов в процессе разработки стратегии.

    Если без этого не обойтись, то следует выбирать фреймворки, поддерживающие распределенную и параллельную обработку.

При разработке стратегий с использованием технических индикаторов разработчики стараются подобрать для каждого из них оптимальный набор параметров.

Например, при тестировании может оказаться, что использование пересечений 6- и 10-дневных скользящих средних приводит к увеличению доходности стратегии при ее запуске на исторических данных по сравнению с любыми другими периодами от 1 до 20 дней.

.

Простые расчеты показывают, что в этом случае необходимо будет рассчитать 40 комбинаций различных параметров возможных пересечений.

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

Портфель следует периодически ребалансировать, выражаясь в дополнительных сделках, чтобы привести его к оптимальному виду.

Еще одним важным элементом оптимизации является контроль размера открытых позиций.

Этот подход позволяет разработчикам моделировать и анализировать влияние кредитного плеча и динамического масштабирования позиций на общую эффективность стратегии.



Шесть фреймворков бэктестинга для Python

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



PyAlgoTrade

PyAlgoTrade — это уже существующая платформа, которая включает в себя возможность как тестирования исторических данных, так и проведения моделирования в режиме реального времени.

Поддерживает данные Yahoo! Finance, Google Finance, NinjaTrade и любые источники, предоставляющие информацию в формате CSV (например, Quandl).

Поддерживает типы рыночных, лимитных, стоп-лимитных и стоп-лимитных ордеров.

PyAlgoTrade поддерживает торговлю биткойнами через Bitstamp, а также обработку информации Twitter в режиме реального времени.



bt — бэктестирование Python

Создатели bt framework стремятся облегчить разработку легко тестируемых, гибких и многократно используемых логических блоков торговых стратегий, что должно открыть возможность создания сложных автоматизированных финансовых приложений.

Фреймворк подходит для тестирования так называемых портфельных стратегий, которые включают в себя алгоритмы взвешивания и ребалансировки портфеля.

Модификация стратегий для работы на разных временных интервалах и использования разного веса инструментов в портфеле требует минимальных усилий по изменению кода.

Кроме того, bt встроен в ffn, популярную финансовую библиотеку Python.



Бэктрейдер

Эта платформа прекрасно документирована, разработчики ведут блог и развивают активное онлайн-сообщество, участники которого рады помочь найти ответ на ваш вопрос.

Backtrader поддерживает различные форматы данных, включая CSV, Pandas DataFrames, потоки данных в реальном времени от нескольких иностранных брокеров и различные итераторы.

Обработка данных из разных источников может осуществляться одновременно и даже через разные промежутки времени.



pysystemtrade

Разработчик pysystemtrade Роб Карвер опубликовал отличную статью о том, почему он решил создать еще один фреймворк для бэктестинга на Python, в которой перечислил плюсы и минусы разработки нового фреймворка.

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



Зиплайн

Zipline — симулятор алгоритмического трейдинга.

Работать с ним можно через браузерный интерфейс IPython Notebook. Система представляет собой альтернативу инструментам на основе интерфейса командной строки.

Сервис разрабатывается и поддерживается командой проекта Quantopian и может использоваться как автономный инструмент разработки бэктестера, так и в сочетании со средой разработки и тестирования Quantopian. Платформа Zipline обеспечивает доступ к историческим данным по акциям США за десять лет с разрешением в 1 минуту, а также доступно несколько вариантов импорта информации.



QSTrader

Еще один фреймворк с реальным торговым функционалом, запущенный основателем ресурса для финансовых экспертов QuantStart Майклом Холлсом-Муром.

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

QSTrader в настоящее время поддерживает разрешение данных баров ( OHLCV ) на разных временных интервалах, но использование тиковых данных пока недоступно.

Оба режима работы (тестирование на истории и реальная торговля) полностью событийно-ориентированы, что позволяет быстро перейти от разработки стратегий к их тестированию и последующему запуску в «боевом» режиме.

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



Другие материалы по финансам и фондовому рынку от ИТИ Капитал :

  • Аналитика рынка и обзоры
  • Назад в будущее: проверка работоспособности торгового робота на исторических данных
  • Событийное бэктестирование в Python шаг за шагом ( Часть 1 , Часть 2 , Часть 3 , Часть 4 , Часть 5 )
Теги: #python #Финансы в ИТ #торговые роботы #биржевая торговля #тестирование на исторических данных #тестирование на исторических данных #торговые стратегии
Вместе с данным постом часто просматривают: