Как стать автором
Обновить

Бэктестинг торговых стратегий на Python с помощью Numba. Когда перевод расчетов на GPU действительно оправдан?

Уровень сложностиСложный
Время на прочтение26 мин
Количество просмотров5.8K
Всего голосов 21: ↑21 и ↓0+25
Комментарии8

Комментарии 8

Что характерно, как-то незаметно из программы в ходе оптимизации пропало всё ООП :)

Дело не в ООП как таковом, в python практически любые абстракции имеют накладные расходы в рантайме

ООП остался)
В функции run_trading_simulation_cuda создается объект FastGridTrading для прохода циклом по ключевым точкам.
То, что в компилируемых функциях ООП нет - это верно подмечено. Да он там и не нужен, добавит только объем кода и накладные расходы увеличит. К слову, если вы заметили, функции buy_position и sell_position декорируются с параметром inline='always', чтобы компилятор встраивал код этих функций прямо в место вызова, не увеличивая накладные расходы на вызов функций.
А @cuda.jit и вовсе не поддерживает многие абстракции Python, в том числе и классы.

Пробовал решить похожую задачу прогон 1 млн комбинаций на основных 70 акциях Мосбиржи. GPU считал медленнее чем Numba (в 16 потоках). Но в итоге вопрос встал "что считать" а не как и с какой скоростью. Спасибо за статью сохранил себе - попробую декоратор @cuda.jit я не додумался до этого).

Занятно, что просто покупка и холд дали бы прибыль больше чем наилучшие трейдеры.

Если смотреть на график сделок, то они сосредоточены в очень узком диапазоне цен и не захватывают большие движения, особенно это в конце видно, где с 70 до 90к трейдеры были вне рынка.

Покупка и холд дают больше на растущем рынке, на падающем рынке же будет наоборот)

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

Спасибо за статью! Много интересного по работе с CUDA. Возник вопрос про выбор GPU. В статье приводятся конкретные цифры (напр. «551+ млн. строк на GPU занимает около 3 минут»), но не указано, на каком GPU. Единственные упомянутые модели в тексте были «Tesla T4 или P100» но по TFLOPS'ам они очень разные.

Я считал на gpu P100 в Kaggle

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации