Чем больше работаешь⛏ с какой-либо системой, тем больше находишь плюсов и минусов. В этот раз я опишу проблемы Quantopian, которые необходимо👆 учитывать при использовании сервиса. Проблемы критичные и достойны особого внимания.
Quantopian — это бесплатный сервис для тестирования алгоритмических стратегий. Написан на Python🐍. Обладает множеством преимуществ, включая бесплатные исторические данные и возможность подключения счета Interactive Brokers для алготорговли.
⛔1. Запрет динамических тикеров
При запуске теста или алгоритма в торговлю все тикеры должны быть известны заранее. И их должно быть менее 200 штук на алгоритм. Исключением является использование потоков (Pipeline).
Pipeline — это механизм Quantopian для автоматического отбора активов внутри определенной группы по заранее заданным условиям. Группами являются крупные индексы, такие как S&P 500.
В первую очередь, это связано с производительностью платформы. Перед началом тестирования анализируется исходный код и создается необходимое окружение с нужными данными. Проблему считаю критичной. Ниже пример кода, как делать нельзя:
[code python]
1 2 3 4 5 6 7 8 |
def initialize(context): context.asset = symbol('SPY') # все тикеры необходимо указать на старте # rebalance once per day, at market open schedule_function(rebalance, date_rules.every_day(), time_rules.market_open()) def rebalance(context, data): symb = 'SPY' asset = symbol(symb) # это вызовет ошибку на старте |
[/code]
🛠2. Сложность оптимизации алгоритмов
В связи с проблемами производительности платформы свои алгоритмы тяжело оптимизировать подбором оптимальных условий. Например, невозможно проверка диапазона значений, с которыми необходимо провести тестирование.
В среднем тест занимает несколько секунд и запускается единожды с едиными настройками. Для подобных исследований на Quantopian даже есть раздел Research Notebooks. В 2014-2015 годах пользователи пробовали оптимизировать стратегии, но сейчас запустить в нем бэктест мне не удалось. Кроме этого Quantopian пытаются оберегать данные, чтобы их не воровали почем зря.
🏎3. Производительность и окружение
Python — это современно и удобно, но версия 2.7, используемая в Quantopian, порядком устарела. Основная беда Python — это GIL (общая информация здесь) и шероховатости многопоточности. Вторая — устаревший синтаксис версии 2.7 в отличие от 3+.
🏁Вывод
Описанные проблемы — не повод вбивать гвоздь в крышку гроба⚰ Quantopian, но они заставляют искать альтернативы для тестирования некоторых торговых стратегий. Например, мне не удалось написать алгоритм полного цикла торговли по стратегии «Парного трейдинга». Поиск пар занимает продолжительное время, и его не реализовать внутри основного алгоритма. Необходимо обновлять список пар, но никак.
Для локальных тестов подойдут:
Есть и другие решения, но ключевым для меня является возможность подключения к шлюзу Interactive Brokers прямо из коробки. В будущем опишу установку и локальное использование альтернативной системы.
💬В комментариях напишите возможные решения. Предложите другие библиотеки бэктестинга, где реализован доступ к Interactive Brokers.
Автор Quantrum.me
Telegram-канал📣: @quantiki
Подбор и тестирование портфелей. Подключение стратегий к IB.