Всем добрый вечер,
Давненько ничего я не писал. Потихонечку мой ютубчик набирает подписчиков, и большинство судя по всему индусы… так вот многие из них посмотрев видео про методы оптимизации стали спрашивать как же можно потестить другие идеи. Ну я немного подкрутил свой не самый оптимальный код, и родился у меня аж целый фреймворк, в котором очень легко тестить различного рода портфельные стратегии.
Итак выглядит это все следующим образом:
Как основа это Backtrader (хороший питоновский движок для тестирования торговли, но в целом очень медленный при загрузке данных, да и есть там некоторые вещи в которых мне лениво разбираться).
Далее реализуем простенькую стратегию которая будет крутиться в бэктрейдере, но ее структура такова, что можно любые спецефические действия делать в привычной для каждого человека форме. Я там использую pandas dataframe.
Структура стратегии:
На картике нчего не видно но суть такова, у нас есть несколько моделей которые выполняют различные действия.
Модель выбора рабочего набора активов -> модель которая реализует непосредственно генерацию сигналов -> модель для формирования весов активов в портфеле -> модель которая отвечает за ребалансировку -> модель которая контролирует риск -> и модель которая исполняет заявки.
Вот пример простой стратегии моментум которая выбирает n бумаг с наибольшим моментумом за последний год
Далее мы просто добавляем это дело в конфигурацию
Запускаем и получаем вот такой красивый отчетик с кучей метрик сгенерированный quantstats
Все это упрощает первоначальное тестирования идей в разы, и мне кажется иметь нечто подобное под рукой весьма удобно, что бы можно было протестить и быстренько сравнить результаты.
Кому интересно, прошу посмотреть видео :)… а то надо часы просмотров нарабатывать..
ну и код
github.com/CloseToAlgoTrading/CodeFromVideo/tree/master/Portfolio_Testing_Framework
Моя программа на Microsoft C++ 2015 вводит и раскладывает по массивам памяти эти котировки за 3.5 сек. Intel® Core(TM) i5-3570K CPU @ 3.40 GHz 3392 Мгц. Память 8 Гб.
Опыты с C# и Java дают время в десятки раз большее.
Что получится у Питона?
PS Если производительность тестирования не критична, то на мой взгляд всего предпочтительнее фрэймворк программы WealthLab. Версии 5.2 и 6.4 бесплатны в интернете.
Воспроизведение этого фрэймворка на C++ позволяет сверхскоростной прогон торговой стратегии с разными наборами параметров за счёт распараллеливания по всем ядрам процессора ПК.
Но если говорить непосредственно о бэктрейдере, то это очень медленный зверь :)
Однако, многие люди любят питон именно за его непринужденность и возможность быстро накидать что то абочее