快速入门
从 vectorbt 迁移
了解 PRO 相比开源 vectorbt 增加的能力、变化之处,以及如何迁移代码
如果您熟悉开源 vectorbt,VectorBT PRO 增加了什么、哪些地方有变化,以及如何迁移代码?本页比较 vectorbt 和 VectorBT PRO,并通过迁移示例,在两者中复现相同的回测。
简要回答
VectorBT PRO 进一步拓展了 vectorbt 基于数组的研究方法:自动化样本外验证、模拟更精细的订单、将搜索扩展到多个核心和多台机器、优化投资组合,并与 AI 编程助手协作。它是由同一作者开发的后继版本,重新设计了 API,并提供更广泛的研究工具。下方迁移示例展示了如何将现有策略迁入 PRO。
熟悉的部分
两个版本都将每种策略配置表示为数组中的一列,并同时运行大量配置。两者都基于 pandas 访问器,在资产和参数之间广播输入,使用集成 TA-Lib 等工具的指标工厂,通过信号或订单模拟投资组合并支持可选的 Numba 回调,以及利用 Plotly 图表分析交易、回撤和收益率。因此,您在 vectorbt 中的经验仍然适用,可以在熟悉的研究模式之上逐步采用 PRO 工具。
为什么升级到 VectorBT PRO?
PRO 让您更深入地控制回测,并提供更多开发、验证和扩展研究的方法。在现有的指标参数遍历和信号策略基础上,您可以增加:
- 重复研究: 对不同参数组合运行自定义函数,将任务拆分为块,并从已完成的任务继续执行,而不是重新启动漫长的搜索。
- 更精细的模拟: 添加限价单,通过分级止损止盈逐步减仓,或在新 K 线到来时继续推进同一个投资组合。
- 样本外评估: 在训练期选择设置,在后续时期测试,并比较不同切分和随机化基准下的结果。
- 代码开发支持: 使用最新示例、会员支持,以及让编程助手检查已安装 API 并运行回测的工具。
您可以使用自己的数据、指标和交易规则。Python 仍是主要的高层接口,使用 PRO 无需学习 Rust。下方链接的功能页面通过代码展示每项新增能力。
PRO 增加了什么
| 领域 | VectorBT PRO 新增能力 |
|---|---|
| 数据 | 更多数据源、数据库与文件格式,以及跨时间周期的安全对齐 |
| 指标与信号 | 指标表达式和更多指标库,以及逐根 K 线更新的流式指标 |
| 回测 | 限价单与止损入场单、分级止损止盈与时间止损、杠杆与合约乘数、资金存入、取出和股息,以及新 K 线到来时继续运行投资组合 |
| 分析 | 形态搜索与事件研究、每笔交易的最大不利变动(MAE)与最大有利变动(MFE),以及对完整投资组合进行切片、堆叠或重采样 |
| 策略优化与验证 | 对任意函数进行参数遍历、前向滚动与清除重叠样本的交叉验证,以及稳健性测试 |
| 投资组合优化 | 定时再平衡与资产配置函数,支持 PyPortfolioOpt 和 Riskfolio-Lib 等外部优化器 |
| 性能 | 在线程、进程和 Ray 之间分块执行,并支持恢复运行,以及用于无需 Python、直接以 Rust 编写和运行策略的 vectorbtpro-rust crate |
| 工具与 AI | 配置文件、命令行接口、文档搜索、AI 研究助手,以及面向编程助手的 MCP 服务器 |
超越基础切分的交叉验证
社区版的滚动和扩展切分器会将数组划分为窗口。PRO 则增加了完整的交叉验证流程:定义滚动、扩展、基于日历、清除重叠样本或自定义切分,在其上运行研究函数,在每个训练集上选择参数,并在对应测试集上评估所选参数。您可以检查切分,应用样本清除和隔离区间,并比较最终的样本外表现。
这样,原本不断重复的数据切分、搜索运行、设置选择和测试结果收集,就成为可复用的工作流程。实际示例请参阅前向滚动与交叉验证。
PRO 还包含完整源代码、私有文档、教程、实用示例,以及用于获取支持和提出功能请求的 Discord 社区。功能概览通过示例介绍了这些新增内容。
性能
PRO 提供多种扩展研究工作负载的方法:Numba 和 Rust 并行内核,跨线程、进程和 Ray 的分块执行,以及依据实测耗时选择后端。两个版本都支持从 Python 调用 Numba 和 Rust 内核。PRO 在编译计算的基础上,增加了分配任务、控制内存和复用已完成结果的工具。除 Rust 后端外,PRO 还提供完整的原生 Rust crate,包括无需 Python 即可在 Rust 程序中运行的模拟器、步进器和策略回调。具体能加速多少,取决于工作负载的大小和形状。基准测试页面展示了实测结果,以及对应的硬件和库版本。
迁移代码
以下使用相同的比特币日线 OHLC 数据(已保存为 CSV 文件),在两个版本中运行同一策略:两条指数移动平均线交叉,并设置 10% 的移动止损。传入开盘价、最高价和最低价,可以让止损在 K 线内部触发,而不只是收盘时触发:
import pandas as pd
import vectorbt as vbt
ohlc = pd.read_csv("btc.csv", index_col=0, parse_dates=True)
fast = vbt.MA.run(ohlc["Close"], 10, ewm=True)
slow = vbt.MA.run(ohlc["Close"], 50, ewm=True)
entries = fast.ma_crossed_above(slow)
exits = fast.ma_crossed_below(slow)
pf = vbt.Portfolio.from_signals(
ohlc["Close"],
entries,
exits,
open=ohlc["Open"],
high=ohlc["High"],
low=ohlc["Low"],
sl_stop=0.1,
sl_trail=True,
fees=0.001,
freq="1D",
)
print(round(pf.total_return(), 4), round(pf.sharpe_ratio(), 4), pf.trades.count())直接迁移时,只修改 PRO 中更名的部分:
import pandas as pd
import vectorbtpro as vbt
ohlc = pd.read_csv("btc.csv", index_col=0, parse_dates=True)
fast = vbt.MA.run(ohlc["Close"], 10, wtype="exp")
slow = vbt.MA.run(ohlc["Close"], 50, wtype="exp")
entries = fast.ma_crossed_above(slow)
exits = fast.ma_crossed_below(slow)
pf = vbt.PF.from_signals(
ohlc["Close"],
entries,
exits,
open=ohlc["Open"],
high=ohlc["High"],
low=ohlc["Low"],
tsl_stop=0.1,
fees=0.001,
freq="1D",
)
print(round(pf.total_return, 4), round(pf.sharpe_ratio, 4), pf.trades.count()) 进一步升级时,可以将文件载入数据对象,让相关列保持在一起,并按名称传递给指标和投资组合:
import vectorbtpro as vbt
data = vbt.CSVData.pull("btc.csv")
fast = data.run(vbt.MA, 10, wtype="exp")
slow = data.run(vbt.MA, 50, wtype="exp")
entries = fast.ma_crossed_above(slow)
exits = fast.ma_crossed_below(slow)
pf = vbt.PF.from_signals(data, entries, exits, tsl_stop=0.1, fees=0.001)
print(round(pf.total_return, 4), round(pf.sharpe_ratio, 4), pf.trades.count())3.6274 1.3232 20在 2020 至 2024 年的比特币日线数据上,三个版本都产生了 20 笔交易,总收益率为 362.74%,夏普比率为 1.32。其他常见变化包括:
- 导入
vectorbtpro,而不是vectorbt。两者都使用vbt别名,因此请在独立环境中安装 PRO。 - 数据类通过
pull加载,例如vbt.YFData.pull("BTC-USD")。download仍可作为别名使用。 - 当调用失败时,
vbt.phelp可以打印任意函数的当前签名和文档。
请先像上面一样,在相同的已保存数据上迁移一个小型回测。在增加 PRO 功能之前,先比较信号、订单和结果,因为两个版本的默认值和行为可能不同。迁移较复杂的策略时,开发工具页面展示了如何检查签名、源代码和准备后的输入。
访问权限
VectorBT PRO 通过私有 GitHub 仓库向会员分发,会员还可获得私有文档、教程和 Discord 社区访问权限。提供月度、12 个月和终身方案,有效期间享有相同的产品与会员权益。访问到期后,您已安装的版本仍可继续使用。私有仓库、网站、Discord、更新和支持的访问权限随已付款期限结束。开源 vectorbt 可作为免费试用版本。详情请参阅价格与会员和常见问题。
相关页面
版权所有 © 2021–2026 Oleg Polakow。保留所有权利。
本站内容与文档供使用和评估 VectorBT PRO 以及教育用途。任何其他用途,包括开发或支持竞争产品或服务,均须事先取得书面同意。