1. 取数
用 akshare 的 stock_zh_a_hist 或 tushare 的 pro.daily 取历史行情。
Data
vectorbt 的回测输入本质是 pandas DataFrame(价格、信号、持仓等)。官方内置 vbt.YFData 下载 Yahoo Finance 数据,但中国大陆访问可能受限;A 股研究常用 akshare / tushare 取数后转成 DataFrame 再喂给 vectorbt。本页讲清几种数据接入方式与缺失值处理。
| 数据源 | 方式 | 市场 | 前置 |
|---|---|---|---|
| YFData | vbt.YFData.download("BTC-USD") | 美股/加密/ETF | 中国大陆访问可能受限 |
| akshare | ak.stock_zh_a_hist(...) 转 DataFrame | A 股/期货/基金等 | pip install akshare |
| tushare | pro.daily(...) 转 DataFrame | A 股/港美股/宏观 | 需 Tushare Token |
| 本地 CSV | pandas.read_csv 读取 | 任意 | 自行准备数据文件 |
用 akshare 的 stock_zh_a_hist 或 tushare 的 pro.daily 取历史行情。
把日期设为索引、收盘价作为价格列,整理成 vectorbt 需要的 DataFrame。
处理停牌缺失值、多标的日期对齐,再喂给指标与组合。
| 问题 | 处理 |
|---|---|
| 停牌日无数据 | fillna 向前填充或按需补值,避免 NaN 传播 |
| 多标的时间不一致 | 对齐日期索引,用 missing_index="drop" 丢弃缺失对齐 |
| 日期格式不统一 | 统一转成 pandas DatetimeIndex |
| 复权口径 | 回测用后复权价避免分红跳空干扰 |
| 口径 | 含义 | 适用 |
|---|---|---|
| 前复权 | 以当前价为基准回推历史 | 看近期走势 |
| 后复权 | 以上市价为基准累计 | 回测计算收益(推荐) |
| 不复权 | 原始成交价 | 展示绝对价格 |
美股/加密/ETF 且能直连 Yahoo Finance,用内置 YFData 最省事。
A 股/期货/基金且无需 Token,用 akshare 快速取公开数据。
需要财务/宏观/港美股且已有 Token,用 tushare 接口更全。
Yahoo Finance 在中国大陆可能无法直连或限流。改用本地 CSV,或用 akshare / tushare 取数后转 DataFrame,见数据源对照表。
akshare 无需 Token、接口免费,适合快速取公开数据;tushare 需注册 Token,但接口更全(财务/宏观/港美股)。按需选择,两者都返回 DataFrame。
vectorbt 的输入核心是 pandas DataFrame/Series。任何数据源只要能整理成 DataFrame(日期索引 + 价格列),就能喂给 vectorbt。
回测通常用后复权价,避免分红除权造成的价格跳空;做绝对价格展示时才用原始价。口径需在报告中说明。