Блог им. DenisVo

Простой фреймворк для тестирования портфельных стратегий (python)

Всем добрый вечер,

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

Итак выглядит это все следующим образом:

Простой фреймворк для тестирования портфельных стратегий (python)

Как основа это Backtrader (хороший питоновский движок для тестирования торговли, но в целом очень медленный при загрузке данных, да и есть там некоторые вещи в которых мне лениво разбираться).
Далее реализуем простенькую стратегию которая будет крутиться в бэктрейдере, но ее структура такова, что можно любые спецефические действия делать в привычной для каждого человека форме. Я там использую pandas dataframe.

Структура стратегии:

Простой фреймворк для тестирования портфельных стратегий (python)

На картике нчего не видно но суть такова, у нас есть несколько моделей которые выполняют различные действия.

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

Вот пример простой стратегии моментум которая выбирает n бумаг с наибольшим моментумом за последний год
Простой фреймворк для тестирования портфельных стратегий (python)


Далее мы просто добавляем это дело в конфигурацию

Простой фреймворк для тестирования портфельных стратегий (python)

Запускаем и получаем вот такой красивый отчетик с кучей метрик сгенерированный quantstats

Простой фреймворк для тестирования портфельных стратегий (python)


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

Кому интересно, прошу посмотреть видео :)… а то надо часы просмотров нарабатывать.. 




ну и код
github.com/CloseToAlgoTrading/CodeFromVideo/tree/master/Portfolio_Testing_Framework


4.4К | ★12
3 комментария
Интересно, сколько времени потратит Питон на ввод котировок и раскладку их в памяти по массивам DateTime, Open, High, Low, Close, Volume из файла ROSN.txt, предложенного в статье vldtar «Глубокое погружение» smart-lab.ru/blog/809806.php. В статье есть ссылка на скачивание сопроводительных  материалов. Её автор для проверки своей торговой стратегии использовал историю на минутках из 1628478 свечей-баров за 13 лет.
Моя программа на 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++ позволяет сверхскоростной прогон торговой стратегии с разными наборами параметров за счёт распараллеливания по всем ядрам процессора ПК.
Rostislav Kudryashov, смотря как раскладывать и пользовать питон :) можно через репидс и будет все очень быстро. С++ наше все :), но для быстрой проверки некоторых гипотиз, это оверхед.
Но если говорить непосредственно о бэктрейдере, то это очень медленный зверь :)
avatar
Rostislav Kudryashov, Тут вопрос в другом, протестировать идею на работоспособность, можно даже в экселе, и если видим, что есть в ней некоторое рациональное зерно, то можно переходить уже на более детальный уровень и использовать все что душе угодно.
Однако, многие люди любят питон именно за его непринужденность и возможность быстро накидать что то абочее
avatar

Читайте на SMART-LAB:
Обновление кредитных рейтингов в ВДО и розничных облигациях (ПАО «ГК «Самолет» понижен A.ru, АО «ГЛАВСНАБ» понижен B-(RU), АО «БИЗНЕС АЛЬЯНС» присвоен BBB-|ru|)
🔴ПАО «ГК «Самолет» НКР снизило кредитный рейтинг с A+.ru до A.ru, прогноз — неопределённый. ПАО «ГК «Самолет» — корпорация в сфере...
Фото
Рекомендации для эмитентов и переход к гибридным ЦФА — опыт Селигдара
Приняли участие в Alfa Talk «ЦФА: новая архитектура рынка», который был посвящен трансформации регулирования цифровых финансовых активов (ЦФА) и...
В ОПЕК+ обсуждают повышение добычи нефти с апреля
Источники в ОПЕК+ сообщают о планах возобновить наращивание производства с апреля. Это предложение будет обсуждаться 1 марта. Организация...
Фото
Мой Рюкзак #63: ВТБ - дальше без меня, меняем на более крепкий банк, дивидендные отсечки близко
Февраль продолжает радовать стоимостных инвесторов, все по стратегии, которую описывал в конце прошлого года Прошлый пост тут —...

теги блога CloseToAlgoTrading

....все тэги



UPDONW
Новый дизайн