VectorBT: Самый быстрый фреймворк для бэктестинга на Python

Если вы когда-либо занимались алготрейдингом и бэктестингом торговых стратегий на Python, то наверняка сталкивались с одной и той же проблемой: скорость. Классические библиотеки (например, Backtrader или Zipline) используют объектно-ориентированный подход, перебирая исторические данные событие за событием (event-driven). Это удобно для написания логики, но когда дело доходит до оптимизации параметров на тысячах комбинаций, часы ожидания становятся невыносимыми.
И здесь на сцену выходит VectorBT — библиотека для количественного анализа, которая применяет принципиально иной подход к бэктестингу.
Что такое VectorBT?

VectorBT работает исключительно с объектами pandas и NumPy, а для ускорения вычислений использует компилятор Numba. Это позволяет анализировать любые данные с невероятной скоростью и масштабируемостью, тестируя десятки тысяч стратегий буквально за секунды.
Вместо того чтобы обрабатывать каждый бар или тик по очереди (как это делают традиционные бэктестеры), VectorBT представляет сложные данные в виде структурированных массивов. Векторизация операций в связке с Numba (которая решает проблему зависимости от пути, позволяя компилировать циклы Python в машинный код) дает производительность на уровне языка C.
Ключевые возможности

- Векторизованный бэктестинг: Тестирование стратегий в несколько строк кода. Отсутствие медленных циклов Python.
- Масштабная оптимизация: Оптимизация торговой стратегии одновременно по множеству параметров, таймфреймов и активов за один проход.
- Интерактивная визуализация: Встроенная интеграция с Plotly и Jupyter Widgets позволяет создавать сложнейшие графики и дашборды (подобные Tableau) прямо в Jupyter Notebook без заметных задержек в отрисовке.
- Никакой потери контроля: В отличие от облачных платформ вроде TradingView, ваши данные и алгоритмы остаются только у вас. При этом производительность вычислений сопоставима, а зачастую и превосходит готовые платформы.
- Подготовка данных: Отличный инструментарий для анализа временных рядов и инженерии признаков (feature engineering) под модели машинного обучения.
Как это работает? (Пример)

Допустим, мы хотим протестировать классический алгоритм пересечения двух скользящих средних — Dual Moving Average Crossover (DMAC) на биткоине (BTC).
В классическом ООП-фреймворке вам пришлось бы создать класс стратегии, описать логику next(), которая срабатывает на каждом баре, и перебрать все бары. В VectorBT всё гораздо элегантнее и быстрее:
import vectorbt as vbt
btc_price = vbt.YFData.download('BTC-USD', start='2019-01-01 UTC', end='2020-01-01 UTC').get('Close')
fast_ma = vbt.MA.run(btc_price, [10, 20], short_name='fast')
slow_ma = vbt.MA.run(btc_price, [30, 30], short_name='slow')
entries = fast_ma.ma_crossed_above(slow_ma)
exits = fast_ma.ma_crossed_below(slow_ma)
pf = vbt.Portfolio.from_signals(btc_price, entries, exits)
print(pf.total_return())
В этом примере мы за одно мгновение протестировали сразу несколько вариаций стратегии DMAC: комбинации (10, 30) и (20, 30). Результатом (в виде колонки) будет доходность для каждого варианта параметров:
fast_window slow_window
10 30 0.848840
20 30 0.543411
Name: total_return, dtype: float64
Хотите добавить Ethereum, Solana и еще десяток монет? Просто объедините их цены в один DataFrame. Хотите протестировать разные временные диапазоны? Воспользуйтесь функцией range_split. Векторное представление позволяет размножать измерения почти безгранично (лишь бы хватило оперативной памяти).
VectorBT PRO

Существует также коммерческая версия библиотеки — VectorBT PRO, которая добавляет еще больше мощных инструментов. В ней реализована распараллеленная обработка, продвинутая оптимизация портфеля, распознавание паттернов в ценах, проекция событий, расчет маржинальной торговли и лимитных ордеров, и более сотни других важных для реального трейдинга метрик.
Зачем использовать VectorBT?
Если вам нужно просто «прогнать» одну стратегию на одном инструменте, возможно, хватит и стандартных фреймворков. Но если ваша цель — исследовательский анализ, поиск статистических закономерностей (альфы), проверка гипотез на тысячах инструментов одновременно, то VectorBT станет для вас настоящим открытием.
Это инструмент дата-сайентистов, пришедший в трейдинг. Он дает конкурентное информационное преимущество за счет возможности проверять идеи в десятки и сотни раз быстрее, чем это делают другие участники рынка на Python.
MarketMaker.cc Team
Количественные исследования и стратегии