Блог им. 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% в месяц к депозиту?))

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

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

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

 

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

Читайте на SMART-LAB:
Фото
GBP/USD: Импульс пробоя открывает путь к затяжной коррекции
«Старый джентльмен» все-таки оттолкнулся от сопротивления 1.3560, которое не поддавалось штурму несколько недель. Сейчас пара пробила...
Фото
Витрина облигаций
Рубль на максимумах: время фиксировать доходность в валюте? ↗️ Национальная валюта укрепилась до уровня 10,8 рублей за юань, вновь...
💰 Российский бизнес откладывает инвестпроекты
Высокая ключевая ставка и охлаждение экономики вынуждают российские компании пересматривать инвестиционные планы. Об этом заявил глава Российского...
Фото
Хэдхантер. Отчет МСФО за Q1 2026г. Всё будет непросто…но…есть надежда.
Вышли финансовые результаты по МСФО за Q1 2026г. от компании Хэдхантер: 👉Выручка — 9,49 млрд руб. (-1,5% г/г) 👉Операционные расходы —...

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

....все тэги



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