В своей статье на ресурсе 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 в режиме реального времени.
- Страница проекта
- Лицензия: Апач 2.0
bt — бэктестирование Python
Создатели bt framework стремятся облегчить разработку легко тестируемых, гибких и многократно используемых логических блоков торговых стратегий, что должно открыть возможность создания сложных автоматизированных финансовых приложений.Фреймворк подходит для тестирования так называемых портфельных стратегий, которые включают в себя алгоритмы взвешивания и ребалансировки портфеля.
Модификация стратегий для работы на разных временных интервалах и использования разного веса инструментов в портфеле требует минимальных усилий по изменению кода.
Кроме того, bt встроен в ffn, популярную финансовую библиотеку Python.
Бэктрейдер
Эта платформа прекрасно документирована, разработчики ведут блог и развивают активное онлайн-сообщество, участники которого рады помочь найти ответ на ваш вопрос.Backtrader поддерживает различные форматы данных, включая CSV, Pandas DataFrames, потоки данных в реальном времени от нескольких иностранных брокеров и различные итераторы.
Обработка данных из разных источников может осуществляться одновременно и даже через разные промежутки времени.
- Страница проекта
- Гитхаб
- Лицензия: Лицензия GPL v3.0
pysystemtrade
Разработчик pysystemtrade Роб Карвер опубликовал отличную статью о том, почему он решил создать еще один фреймворк для бэктестинга на Python, в которой перечислил плюсы и минусы разработки нового фреймворка.pysystemtrade включает в себя ряд важных функций, таких как модули оптимизации и калибровки, а также позволяет реализовать полностью автоматизированную торговлю фьючерсами.
- Страница проекта
- Лицензия: Лицензия GPL v3.0
Зиплайн
Zipline — симулятор алгоритмического трейдинга.Работать с ним можно через браузерный интерфейс IPython Notebook. Система представляет собой альтернативу инструментам на основе интерфейса командной строки.
Сервис разрабатывается и поддерживается командой проекта Quantopian и может использоваться как автономный инструмент разработки бэктестера, так и в сочетании со средой разработки и тестирования Quantopian. Платформа Zipline обеспечивает доступ к историческим данным по акциям США за десять лет с разрешением в 1 минуту, а также доступно несколько вариантов импорта информации.
- Страница проекта
- Гитхаб
- Лицензия: Апач 2.0
QSTrader
Еще один фреймворк с реальным торговым функционалом, запущенный основателем ресурса для финансовых экспертов QuantStart Майклом Холлсом-Муром.Он хотел создать инструмент, который был бы пригоден для использования крупными хедж-фондами и частными инвесторами одновременно.
QSTrader в настоящее время поддерживает разрешение данных баров ( OHLCV ) на разных временных интервалах, но использование тиковых данных пока недоступно.
Оба режима работы (тестирование на истории и реальная торговля) полностью событийно-ориентированы, что позволяет быстро перейти от разработки стратегий к их тестированию и последующему запуску в «боевом» режиме.
Одним из главных преимуществ системы является ее модульность, что оставляет широкие возможности для настройки кода.
- Страница проекта: QSTrader
- Гитхаб
- Лицензия: Массачусетский технологический институт
Другие материалы по финансам и фондовому рынку от ИТИ Капитал :
- Аналитика рынка и обзоры
- Назад в будущее: проверка работоспособности торгового робота на исторических данных
- Событийное бэктестирование в Python шаг за шагом ( Часть 1 , Часть 2 , Часть 3 , Часть 4 , Часть 5 )
-
По Поводу Создания Русско-Патриотических Игр
19 Oct, 24 -
Skype Переходит На Новый Кодек Opus
19 Oct, 24 -
Что Должен Уметь «Интеллектуальный Дом»?
19 Oct, 24 -
Бесплатный Vpn От Comodo
19 Oct, 24 -
Пушистые Нанокарандаши От Pentel.
19 Oct, 24 -
О Здравом Смысле И Управлении Компанией
19 Oct, 24 -
Google Выпускает Офисный Пакет
19 Oct, 24