Блог им. DenisVo

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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




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


4.5К | ★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:
Фото
Валютный хедж сработал против
👉 Наш канал в MAX 👈 👉 Чат Иволги в MAX 👈 В марте мы покупали юани в портфель ВДО и портфель Акции / Деньги. Юаневые...
Фото
«Норникель»: есть ли потенциал?
Конфликт на Ближнем Востоке привел к коррекции цен на никель, медь и металлы платиновой группы, так как создал угрозу снижения...
Фото
BRENT: разрядка заставила искать новую точку равновесия
Нефть колебалась в широком диапазоне, стабилизировавшись на высоком уровне, начав резкое снижение в конце периода. Почти все эти резкие движения...
Фото
ДВМП: результаты в рамках прогноза, но и цена близка к целевой - будет ли выкуп миноров из-за объединения Росатома с DP World?
ДВМП отчитался за 2025 год: 2,3 млрд рублей убытка для акционеров за 2025 год Традиционно сравниваю со своим прогнозом и делюсь...

теги блога CloseToAlgoTrading

....все тэги



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