Блог им. surgutandrey

Бэктестер для торговых стратегий на GPU со скоростью просчёта 150 тыс стратегий за 1 секунду

Всем, Добрый день!

Меня зовут Андрей Счастливый. Пишу на Python. Месяц назад разбираясь с одним пакетом для бэктестинга торговых стратегий на C был очень разочарован в низкой скорости. А ведь в пакете для бэктестинга самое главное скорость и вообще возможность массово пакетами тестировать торговые стратегии. Решил написать на Python свой бэктестер с GPU.

За месяц написал пакет и вот ближе к делу, хочу рассказать о нём. Тянуть не буду сразу в лоб, цифры в факты.

WarpTrade — высокопроизводительный GPU-бэктестинг торговых стратегий, написанный на Python с использованием Taichi. Проект построен на модульной архитектуре с универсальным движком, способным запускать любые торговые стратегии через систему регистрации ядер. В основе лежит алгоритм собственной разработки.

Писал и тестировал пакет на следующем железе, цифры будут относиться к тестам на данном железе: рабочая станция Lenovo P15, процессор Xeon W-10885M 8/16 ядер, 64 Gb ram, видео Nvidia Quadro RTX5000 с 16 Gb видеопамяти.

Тестирование производилось на наборах данных для тикеров MOEX: RTS, Si, BR, NG и для каждого тикера наборы данных по 152-155 тыс баров по 1 минуте, это 9 месяцев торгового времени, с начала 2025 года. Торговля только внутри дня, чтобы Гэпы не ловить.

Факты, цифры:

  • используется фреймворк Taichi;
  • асинхронная загрузка файлов с многопоточностью;
  • просчёт ведётся в GPU параллельно на 12 тысячах CUDA ядер;
  • пакетная обработка всех подгруженных тикеров и таймфреймов. Можно сразу в очередь поставить 5 тикеров и для каждого 2-3 таймфрейма;
  • просчёт стратегий по диапазонам значений сразу для 10 параметров;
  • адаптивные диапазоны значений просчитываемых параметров для разных тикеров и если надо таймфреймов;
  • обработка стратегий батчами по 150 тыс стратегий в батче;
  • средняя стабильная скорость при долгих просчётах 150 тыс стратегий в 1 секунду;
  • по итогу для каждого тикера пакет отбирает ТОП-500 самых прибыльных торговых стратегий, рассчитывает для каждой 33 метрики и выгружает всё в excel таблицы для удобного анализа;
  • корректный расчёт прибыли в рублях и USD по методологии MOEX (учёт комиссий, ГО, стоимости шага и т.д.);
  • возможность подключать разные ядра с торговой логикой;
  • анализ частоты попадания значений просчитываемых параметров в список топ стратегий;

А под подъехал и пример вывода рабочего просчёта за 1 заход на 4 тикера 1,47 млрд стратегий за 2 часа:

<code>Загрузка файлов завершена
Комбинаций к просчёту:
RTS - 308,689,920
Si - 255,011,328
BR - 325,061,100
NG - 258,552,000
Всего комбинаций: 1,147,314,348
Расчётное время просчёта: 2ч 7м 28с
Расчётное время окончания: 15ч 12м 22с

[Taichi] Starting on arch=cuda
Загрузка файлов завершена
Направление сделок: all, Режим торговли: Интрадей, Файлов: 4
✅ Зарегистрированы ядра: SMA_RSI

Файл 1: Min1\BR.txt, Баров: 153,020, Период: 06.01.25-12.09.25
ГО на 20.09.25: 10,000 rub. Объём торговли: x1. Депозит: 120 usd
🚀 Запуск стратегии SMA_RSI
📊 Первый проход: вычисление прибыли для 325,061,100 стратегий
Выполнение первого прохода: 41м 28с | Стратегий/сек: 130,637
📈 Отобрано: 500 лучших стратегий по прибыли
📈 Второй проход: показатели для 500 лучших стратегий

Файл 2: Min1\RTS.txt, Баров: 151,548, Период: 06.01.25-12.09.25
ГО на 20.09.25: 27,000 rub. Объём торговли: x1. Депозит: 33,000 rub
🚀 Запуск стратегии SMA_RSI
📊 Первый проход: вычисление прибыли для 308,689,920 стратегий
Выполнение первого прохода: 29м 33с | Стратегий/сек: 174,063
📈 Отобрано: 500 лучших стратегий по прибыли
📈 Второй проход: показатели для 500 лучших стратегий

Файл 3: Min1\Si.txt, Баров: 151,598, Период: 06.01.25-12.09.25
ГО на 20.09.25: 7,500 rub. Объём торговли: x1. Депозит: 9,000 rub
🚀 Запуск стратегии SMA_RSI
📊 Первый проход: вычисление прибыли для 255,011,328 стратегий
Выполнение первого прохода: 29м 25с | Стратегий/сек: 144,402
📈 Отобрано: 500 лучших стратегий по прибыли
📈 Второй проход: показатели для 500 лучших стратегий

Файл 4: Min1\NG.txt, Баров: 154,812, Период: 06.01.25-12.09.25
ГО на 20.09.25: 8,500 rub. Объём торговли: x1. Депозит: 100 usd
🚀 Запуск стратегии SMA_RSI
📊 Первый проход: вычисление прибыли для 258,552,000 стратегий
Выполнение первого прохода: 25м 1с | Стратегий/сек: 172,178
📈 Отобрано: 500 лучших стратегий по прибыли
📈 Второй проход: показатели для 500 лучших стратегий

Всего для 4 файлов просчитано стратегий: 1,147,314,348
Общее время выполнения: 2ч 5м 37с | Стратегий/сек: 152,212
✓ Ресурсы Taichi очищены

[+] Сохранение pickle-файла с данными статистики топ стратегий: data\stats\stats.pkl
[+] Отчет с ТОП-500 стратегиями сохранен в: data\output\intraday_top_strategies.xlsx
[+] Созданы графики частоты попадания значений в список топ стратегий
[+] Данные для графиков сохранены в файл: data\stats\dict_for_plot.pkl
</code>

Пробежимся по остальным деталям. Оптимальная полная загрузка видео карты:

Загрузка&nbsp; видео

Вывод метрик ТОП-500 стратегий в excel для удобного дальнейшего анализа:

Таблица ТОП-500 стратегий

Таблица со сделками выбранной топ стратегии:

Сделки топ стратегий

Интерактивный график с показом сделок и отдельно графика прибыли с разделением на short и long для выбранной топ стратегии:

График прибыли 1 топ стратегии

Мультиграфик для одновременного анализа графиков прибыли до 20 стратегий:

Анализ до 20 стратегий одновременно

Ну собственно и всё)) Дальше в пакет буду добавлять ядра с разной логикой торговых стратегий. Если пост наберёт 50 голосов, то запишу и выложу видео с работой пакета.

Кому интрадей стратегий со средней доходностью на протяжении 9 месяцев в 50% в месяц к депозиту?))

457 | ★2
12 комментариев
А что насчёт подгонки?
avatar
Михаил Шардин, вот если быть максимально точным, то это и есть тюнинг 1 стратегии, подбор параметров. ядро со стратегией пока одно. скоро будут другие ядра.
За месяц написал пакет

На-вайбкодил же, это ж видно по текстам, вы б хоть не палились и тексты правили.
avatar
Beach Bunny, Вы меня почти раскрыли)
__rtx, забыл представиться, что ты инфоцыган продающий Golden Rider робота. Чтобы автор понимал насколько ценны твои слова.
avatar
 А что есть «стратегии»? Это один и тот же код с разными параметрами?
avatar
Просто трейдер, ты всё равно не поймешь иди в палату. Или с бичбани что-нибудь обсуди Вы как раз по интеллекту и психологическим особенностям близко где-то общий язык найдёте.
avatar

А это векторный бэктестер или итерационный/событийный?

 

avatar
Replikant_mih, Это векторный бэктестер с элементами параллельной GPU-обработки. Код использует Taichi для GPU-вычислений, где одновременно обрабатываются тысячи стратегий в батчах. Каждый GPU-поток обрабатывает отдельную стратегию параллельно, что является основой векторного подхода.
__rtx, Ну, в данном случае мне интересна именно техническая сторона вопроса — подгонка и т.д. не особо интересна здесь, тут уже процессы другого уровня на это влияют. По моему вопросу — я просто понимаю, как векторный бэктестер можно в GPU ускорить, а как невекторный — вообще не знал, что такое возможно. Собственно и щас не уверен, возможно ли).
avatar
__rtx, Понял, спасибо. Понял… что не буду скорее всего ничего подобного делать), но послушать что это и как это было интересно.
avatar

Читайте на SMART-LAB:
Фото
Реструктуризация долгов РЖД: что ждать инвесторам облигаций
В конце 2025 года на рынке активно обсуждается программа реструктуризации долгов РЖД с участием Минфина. Ее цель — снижение долговой...
Фото
"Селигдар" перевыполнил плановые показатели по объему добываемых металлов в 2025 году.
Об этом стало известно в ходе заседания Технического совета, который завершился в Алдане. «Селигдар» благодаря стабильной и эффективной...
Фото
🎯 Как сработала идея на рынке драгоценных металлов
В этом году серебро удвоило цену. Оно пользуется спросом не только как защитный актив, но и как промышленный магнит зелёной энергетики. Наши...

теги блога Андрей Счастливый

....все тэги



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