
如果你曾参与过 Python 的算法交易和交易策略回测,你可能遇到过同样的问题:速度。传统的库(如 Backtrader 或 Zipline)使用面向对象的方法,逐个事件地(事件驱动)迭代历史数据。这对于编写逻辑很方便,但在处理数千个组合的参数优化时,数小时的等待会变得无法忍受。
这就是 VectorBT 发挥作用的地方 —— 这是一款量化分析库,它对回测采用了一种截然不同的方法。
什么是 VectorBT?

VectorBT 专门处理 pandas 和 NumPy 对象,并使用 Numba 编译器来加速计算。这使得它能够以惊人的速度和可扩展性分析任何数据,在短短几秒钟内测试数万种策略。
VectorBT 不像传统回测器那样轮流处理每个 K 线或 Tick,而是将复杂数据表示为结构化数组。操作的向量化与 Numba(它通过允许将 Python 循环编译为机器代码来解决路径依赖问题)相结合,提供了 C 语言级别的性能。
核心功能

- 向量化回测: 只需几行代码即可测试策略。无需缓慢的 Python 循环。
- 大规模优化: 一次性在许多参数、时间范围和资产上同步优化你的交易策略。
- 交互式可视化: 内置对 Plotly 和 Jupyter Widgets 的支持,可以直接在 Jupyter Notebook 中创建极其复杂的图表和仪表盘(类似于 Tableau),且没有明显的渲染延迟。
- 完全掌控: 与 TradingView 等云平台不同,你的数据和算法仅保留在你自己手中。同时,计算性能可与成品平台媲美,甚至往往更高。
- 数据准备: 适用于时间序列分析和机器学习模型特征工程(Feature Engineering)的卓越工具包。
工作原理(示例)

让我们测试一个经典的比特币(BTC)双移动平均线交叉(DMAC)策略。
在传统的 OOP 框架中,你必须创建一个策略类,描述在每个 K 线上触发的 next() 逻辑,并迭代所有 K 线。而在 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
想要添加以太坊、Solana 以及另外十几种代币?只需将它们的价格合并到一个 DataFrame 中。想要测试不同的时间范围?使用 range_split 函数。向量表示允许你几乎无限制地增加维度(只要有足够的内存)。
VectorBT PRO

该库还有一个商业版本 —— VectorBT PRO,它增加了更多强大的工具。它具有并行处理、高级投资组合优化、价格形态识别、事件预测、保证金交易和限价单计算,以及一百多种对实际交易至关重要的其他指标。
为什么要使用 VectorBT?
如果你只需要在一种工具上“运行”一种策略,标准框架可能就足够了。但如果你的目标是探索性分析、寻找统计模式(Alpha)、同时在数千种工具上测试假设,那么 VectorBT 对你来说将是一个真正的发现。
它是引入交易的数据科学家工具。通过能够比其他市场参与者在 Python 上更快地检查想法数十倍甚至数百倍,它提供了竞争性的信息优势。
MarketMaker.cc Team
量化研究与策略