要更完整的事件驱动功能
如果你需要多数据源、多策略、券商模拟等更完整的交易模拟能力,可以评估事件驱动类框架;代价是概念更多、上手更慢,代码量也更大。选型前先确认自己是否真的用到这些能力。
Compare
Backtesting.py 是 Python 回测库,适合想自建可复现回测管道的开发者;本机已核验的量化技能路线适合想直接提问、免去环境搭建的用户。两条独立路线,差别不在「谁更好」,而在「你手上有什么、要留下什么」——本页把准备成本、能做与不能做的任务、前置条件逐条摊开,并如实标注证据边界。
以下为客观对比,Backtesting.py 一侧依据官方 README 与官方文档整理,技能路线一侧依据本机技能目录逐项核验;凡涉及版本与接口细节,以各自官方发布为准。
| 维度 | 自建路线(回测库) | 本机技能路线 | 注意点 |
|---|---|---|---|
| 定位 | 单资产回测库,由 Backtest 与 Strategy 两个类构成 | 量化分析、财经数据、技术分析、选股等独立技能 | 一个是库,一组是技能,形态不同,不构成替代关系 |
| 上手方式 | 装 Python 依赖 → 备数据 → 写策略类 → 运行回测 | 装好客户端 → 用自然语言描述任务 → 看返回结果 | 技能路线省掉环境与编码,但换来的是「不复用代码」 |
| 可复现性 | 强:策略、参数、区间可写进文件并重复运行 | 弱:结论随提问方式与数据时点变化,需自行记录上下文 | 要给别人复核或做版本对比,自建路线更合适 |
| 可定制程度 | 高:成交价口径、手续费、平仓规则、参数网格都能改 | 受限:以技能既有的分析口径为准,不开放底层撮合 | 需要精细撮合或自定义成本模型时,技能路线做不了 |
| 数据来源 | 自备 OHLC(V) 数据(本地 CSV 或第三方接口均可) | 由各技能自带的数据源决定,部分需 Token 或账号 | 两边的数据口径不同,收益类数字不能直接对比 |
| 输出物 | 可编程的结果对象与净值/交易记录,可继续加工 | 对话中的结构化摘要与表格,便于快速判断方向 | 技能路线适合「先问清问题」,自建路线适合「留下证据」 |
| 适合人群 | 会 Python、要长期维护回测管道的开发者与研究者 | 想快速看行情、选股、做技术面与风险速览的用户 | 两者可以先后使用,但不是同一件事的两条安装方式 |
import pandas as pd
df = pd.read_csv("ohlcv.csv", index_col=0, parse_dates=True)
# 需要 Open / High / Low / Close / Volume 五列,索引为时间且按时间升序预期结果:df.index 是时间类型、五列齐全且无重复索引;缺列或索引不是时间类型,回测会在初始化阶段直接报错。
from backtesting import Backtest, Strategy
class SmaCross(Strategy):
def init(self):
self.ma1 = self.I(lambda s: s.rolling(10).mean(), self.data.Close)
self.ma2 = self.I(lambda s: s.rolling(20).mean(), self.data.Close)
def next(self):
if self.ma1[-1] > self.ma2[-1] and not self.position:
self.buy()
elif self.ma1[-1] < self.ma2[-1] and self.position:
self.position.close()预期结果:类能正常导入且 run() 之后没有异常;参数窗口、成交价与成本假设都要自己写死,这也是「可复现」的来源(具体 API 以官方文档为准)。
bt = Backtest(df, SmaCross, cash=10000, commission=0.002) stats = bt.run() print(stats)
预期结果:输出含收益、回撤与交易统计的结果对象;此时要把数据区间、参数与成本假设一并记录,否则结论无法复核(字段含义以官方实现为准)。
以下为在本机技能目录中逐项读取技能说明后整理的结果,状态为「目录可见 + 可安装」,不代表已授权或已运行成功;前置条件与能力边界以各技能自身说明为准。
| 技能 | 能做什么 | 前置条件 | 边界与注意点 |
|---|---|---|---|
| quant-analyst | 金融建模、策略回测思路、风险指标(收益/回撤/夏普等)、组合优化与统计套利方向 | 需自备数据或指定数据来源 | 偏方法论与分析,不负责替你搭建可复现的代码级回测工程 |
| akshare-finance | 取 A 股/期货/基金/指数等公开行情与部分基本面数据 | 需装 akshare 依赖(版本以官方为准) | 数据来自公开渠道,字段与口径随上游变化,以数据源官方文档为准 |
| tushare-finance | 通过 Tushare Pro 接口取 A 股/港美股/基金等数据与宏观指标 | 需自备 Tushare Token | 接口权限与积分规则由平台决定,未授权时部分接口不可用 |
| iwencai | 用自然语言问句做条件选股式检索 | 需配置对应 API Key | 返回的是检索结果,不是回测结论,需自行复核口径 |
| stock-technical-mastery | A 股 K 线形态、均线/MACD/RSI/布林带、量价关系等技术面分析 | 覆盖范围为 A 股 | 不覆盖港美股与期货,技术面结论不构成买卖建议 |
| a-stock-analysis | A 股实时行情、分时量能、主力动向与持仓盈亏分析 | 依赖行情数据源可达 | 实时性取决于数据源,历史回测不适用 |
| mx-data | 东方财富方向的金融数据查询 | 需配置 API Key | 数据范围与调用额度以服务方说明为准 |
| yahoo-finance-github | 美股报价、历史 K 线与组合层面的行情分析 | 可直连数据源时无需 Key | 境内网络可达性不稳定,取数失败先排查网络 |
| futuapi | 通过富途 OpenAPI 取行情并进行模拟/实盘下单 | 需 OpenD 客户端、账号与解锁交易密码 | 涉及真实资金,风险与合规责任由使用者承担 |
以下为本机对话的真实截图(点击左右箭头翻页),演示的是「一句话发起任务 → 返回结构化结果」这条路线,不是本库的运行结果,也不能作为两者已集成的证据。前置条件:已安装客户端,部分技能另需 Token 或账号。
先看「你要交付什么」,再看「你愿意付出多少准备成本」,顺序反了容易装了不该装的东西。
| 你的情况 | 建议路线 | 为什么 | 注意点 |
|---|---|---|---|
| 会 Python,要留下可复现的回测工程 | 自建 | 策略、参数、区间都能进版本管理,结论可复核 | 要自己维护环境与数据更新,工作量在编码之外 |
| 只想先验证一个策略想法值不值得做下去 | 先走技能路线 | 准备成本低,几分钟内就能拿到方向性结论 | 结论不可复述、不可回放,后续仍需自建验证 |
| 手上有明确的 OHLCV 数据,想要精确口径 | 自建 | 成交价、手续费、平仓规则可由你自己定义 | 数据清洗与对齐要自己做,先做质量自检 |
| 需要 A 股行情、选股、技术面速览 | 技能路线 | 相关技能已覆盖数据与常用分析,不需要自己拼接口 | 部分技能需 Key 或账号,未授权时不可用 |
| 需要组合级、多资产或多市场回测 | 两者都不是常见起点 | 自建侧以单资产为主,技能侧以单一任务为主 | 先明确需求再评估其他框架,别硬套 |
| 要给团队或客户交付结论并承担责任 | 自建(技能路线做前置研究) | 交付物需要可追溯:代码、参数、数据区间都要留痕 | 任何回测都只代表历史区间表现,不构成收益保证 |
把「任务」拆开看,比问「哪个更强」有用。下表的判断依据,Backtesting.py 自建侧来自官方 README 对能力与限制的说明,技能侧来自本机技能目录的逐项核验。
| 任务 | 自建能不能做 | 技能路线能不能做 | 说明 |
|---|---|---|---|
| 自定义撮合与成本模型(成交价、滑点、手续费) | 能 | 不能 | 技能路线以既定口径分析,不开放底层撮合参数 |
| 批量参数扫描与稳定性判断 | 能(内置优化器 + 参数网格) | 部分(可给方向性结论) | 要判断参数邻域是否成片,仍需自建后看热力图 |
| 分钟级或 tick 级回测 | 取决于自备数据与实现方式 | 不适合 | 技能路线面向对话式研究,不是高频回测执行环境 |
| 行情 + 技术面快速速览 | 能做但成本高 | 适合 | 自建要先解决数据接入,收益有限 |
| 条件选股、按指标筛标的 | 能(自己写筛选逻辑) | 适合 | 技能侧返回检索结果,仍需人工复核口径 |
| 绩效与风险摘要(回撤、夏普、胜率) | 能(stats 输出) | 适合(一句话即可) | 两边口径不同,数字不可直接对比 |
| 实盘下单与持仓管理 | 不在本库范围内 | 部分技能可对接(需账号与授权) | 涉及真实资金,风险与合规责任由使用者承担 |
装不上、跑不通,绝大多数时候不是「工具不行」,而是前置条件没对齐。下表把两边的前置项与实际后果并列。
| 前置项 | 自建路线 | 技能路线 | 不满足时会发生什么 |
|---|---|---|---|
| 运行环境 | Python 环境(版本要求以官方为准)+ 依赖库 | 已安装客户端 | 前者连导入都过不去;后者无法发起任何任务 |
| 数据 | 自备 OHLC(V) 数据,并保证列名与时间索引规范 | 由技能自带数据源提供,部分需 Token 或账号 | 前者报列缺失或结果异常;后者接口不可用或返回空 |
| 技能门槛 | 会写 Python、理解回测口径 | 会用自然语言描述任务 | 前者容易写出看似合理却口径错误的回测;后者问得含糊会得到含糊结论 |
| 网络 | 取数环节可能需要联网(数据可先落盘离线复现) | 多数技能依赖联网数据源 | 取数失败、超时或限流,先排查网络再怀疑工具 |
| 授权与费用 | 库本身开源(许可条款以其官方仓库为准) | 部分技能需自备 Key / Token / 账号 | 未授权时功能不可用,不是安装失败 |
| 可持续性 | 需自己维护依赖升级与数据更新 | 客户端统一更新,但能力边界随技能更新变化 | 长期不维护会出现「当年能跑、现在报错」的情况 |
两条路线之外,选型时最常被问到的是「要不要换个框架」。下面只给判断方向,具体差异以各自官方文档为准。
如果你需要多数据源、多策略、券商模拟等更完整的交易模拟能力,可以评估事件驱动类框架;代价是概念更多、上手更慢,代码量也更大。选型前先确认自己是否真的用到这些能力。
如果你主要做因子研究、成批参数扫描与多标的多参数验证,向量化路线的写法更省时间;代价是策略逻辑要写成数组形式,路径依赖强的逻辑会更难表达。
组合级、多资产的需求已经超出单资产回测库的定位,也更超出对话式技能路线的范围;这类需求应先明确资产池与再平衡规则,再评估专门做组合的平台或框架。
两条路线在前半程(把问题问清楚)重合度高,但在「结论能不能被复核」这一步上分工完全不同。下表按能力项拆开,方便你判断什么时候必须自建。
| 能力项 | 本机技能路线可以做的 | 自己用 Backtesting.py 做的 |
|---|---|---|
| 拿到一段行情 | 用自然语言描述标的与区间,直接返回行情与涨跌统计 | 自己接数据源、清洗、声明复权口径 |
| 看指标状态 | 直接问均线、MACD、RSI、布林带的当前状态 | 用同一个指标函数做可复现计算 |
| 按条件筛股票 | 描述条件得到候选名单,适合选研究标的 | 把筛选条件写进信号逻辑,纳入回测 |
| 参数扫描与热力图 | 可以得到单组参数的结论 | 跑完整网格、留存全部组合结果,做样本外复核 |
| 未来函数与过拟合审计 | 不具备:对话不会替你重算指标或做样本外切分 | 可做截断重算、样本内/外切分与成本敏感性测试 |
| 可复现与版本管理 | 对话记录不等于可复现实验 | 代码、数据口径、参数与输出都能进版本库 |
无已证实集成。官方仓库与文档中没有出现对方的说明,本机技能目录里也没有对应的 backtesting 技能;前者需要自行 pip 安装,后者是一组独立的量化/数据技能。是否存在后续集成,以双方官方说明为准;本页不做替代性暗示。
可以先后使用、互不依赖:先用技能路线快速判断方向(看行情、筛标的、算风险指标、验证想法大致表现),再用自建路线做可复现的代码级验证。但两者之间没有自动打通——数据要自己导出与整理,口径也要自己对齐,以各自官方文档与技能说明为准。
要看「新手」指的是什么:如果目标是把研究问题问清楚、先看结果,技能路线上手更快,需要的是描述清楚任务的能力;如果目标是学会量化编程、做可复现的回测,自建路线更轻量易入门,但需要 Python 与 pandas 基础。两条路线的学习曲线不同,可以按目标选择,以官方文档与技能说明为准。
可以,但要自己完成三件事:把数据整理成时间索引 + OHLC(V) 列的形态、确认复权口径与时间区间一致、检查缺失值与停牌处理方式。任何一步没对齐,回测结论就会系统性偏离;具体列名与接口以所用数据源官方文档为准。
视具体技能而定:部分数据类技能需要自备 Token 或 API Key(如 tushare、iwencai、mx-data 方向),部分仅依赖公开数据源;授权状态是「目录可见 + 可安装」,不代表已授权。各技能的授权方式、额度与费用以对应服务方与技能说明为准,本页不代为承诺。
意味着本页只能证明两件事:本项目是独立开源项目,本机确实装有若干量化相关技能。它不意味着两者已被互相收录或授权,也不意味着可以在任意一侧直接调用另一侧。判断集成与否,应以双方官方仓库、官方文档与技能说明为准。