59bt.algos 类总数
8 组按用途分类
可复用算法对象即插即用
证据bt/algos.py(2026-09-20)
All 59
59 个算法分别是什么?
下表按组列出全部类名(名称与 1.2.3 版源码一致),并给出每组的典型搭配与注意点。
| 分组 | 全部类名 | 典型搭配 | 注意点 |
|---|---|---|---|
| 调度(8) | RunOnce, RunPeriod, RunDaily, RunWeekly, RunMonthly, RunQuarterly, RunYearly | 算法链最前 | 缺调度算法时不会按预期频率触发;RunPeriod 可自定义周期 |
| 日历与条件触发(5) | RunOnDate, RunAfterDate, RunAfterDays, RunIfOutOfBounds, RunEveryNPeriods | 配合调度使用 | 边界写错会整段不调仓,先用小样本验证 |
| 选券(11) | SelectAll, SelectThese, SelectHasData, SelectN, SelectMomentum, SelectWhere, SelectRandomly, SelectRegex, SelectTypes, SelectActive, ResolveOnTheRun | 接在调度之后 | 它写入 temp['selected'],SelectAll 默认排除无数据与价格 ≤0 的证券 |
| 权重(11) | WeighEqually, WeighSpecified, ScaleWeights, WeighTarget, WeighInvVol, WeighERC, WeighMeanVar, WeighRandomly, LimitWeights, LimitDeltas, TargetVol | 接在选券之后 | 权重算法依赖 selected;等权之外的方法需要额外输入(波动率、协方差等) |
| 再平衡与成交(6) | Rebalance, RebalanceOverTime, PTE_Rebalance, CapitalFlow, SetNotional, CloseDead | 算法链收尾 | 不写再平衡就不会成交;RebalanceOverTime 把调整分摊到多期 |
| 逻辑与统计(6) | Require, Not, Or, SetStat, StatTotalReturn, StatMultiPeriodReturn | 条件分支与记录 | 统计量不是绩效指标,需在结果对象里读 |
| 交易与公司行为(5) | CorporateActions, ClosePositionsAfterDates, RollPositionsAfterDates, ReplayTransactions, SimulateRFQTransactions | 现金流与到期处理 | 偏进阶,先确认数据里有对应字段 |
| 风险与保证金(5) | UpdateRisk, PrintRisk, HedgeRisks, Margin, SelectRandomly 之外的调试类见调度组 | 对冲与保证金场景 | v1.2.3 修复了保证金维持追缴与证券乘数问题,注意版本差异 |
| 打印与调试(4) | PrintDate, PrintTempData, PrintInfo, Debug | 插在任意位置 | 只输出信息、不改变交易结果,排查完记得移除 |
计数说明:分组共 59 个类,个别类按主要用途归档(如
LimitWeights/LimitDeltas/TargetVol 归入权重与风控组)。完整类名以 bt/algos.py 与官方 algos 文档为准。Scheduling
调度类算法怎么选?
调度决定「什么时候动手」,是算法链的起始环节。下表给出常见需求对应的选择。
| 需求 | 用哪个 | 适用场景 | 注意点 |
|---|---|---|---|
| 只跑一次(建仓后不动) | RunOnce | 买入持有基准 | 适合做对照基准,不适合策略评估 |
| 每日调仓 | RunDaily | 高频再平衡研究 | 换手与成本会显著上升 |
| 每周 / 每月 / 每季 / 每年 | RunWeekly / RunMonthly / RunQuarterly / RunYearly | 常规组合再平衡 | 月度最常见;注意月内交易日差异 |
| 自定义周期 | RunPeriod / RunEveryNPeriods | 非标准调仓频率 | 周期与统计窗口要匹配 |
| 指定日期 / 某日之后 | RunOnDate / RunAfterDate / RunAfterDays | 事件驱动研究 | 日期必须落在数据区间内 |
| 越界才动手 | RunIfOutOfBounds | 阈值再平衡 | 阈值参数决定敏感度,先做敏感性测试 |
Selection and weighting
选券与权重怎么配?
选券决定候选集合,权重决定资金分配;两者常常一起替换,下表给出常见组合。
| 研究问题 | 选券 + 权重组合 | 适用场景 | 注意点 |
|---|---|---|---|
| 全部标的等权 | SelectAll + WeighEqually | 基准组合 | 作为对照最常用 |
| 只取前 N 名 | SelectN + WeighEqually(或 + ScaleWeights) | 集中度研究 | N 的取值对结果影响很大,别只测一个值 |
| 按动量选 | SelectMomentum + 权重类算法 | 趋势跟随 | 动量窗口与调仓频率要匹配 |
| 按条件筛 | SelectWhere / SelectRegex / SelectHasData | 按字段或名称过滤 | 条件表达式写错会选出空集合 |
| 风险平价 / 逆波动 | WeighERC / WeighInvVol | 降波动组合 | 需要波动率估计窗口,数据不足会退化 |
| 均值方差优化 | WeighMeanVar | 经典组合优化 | 对输入估计敏感,结果要谨慎解读 |
Choose by task
「我想做这件事」该用哪个算法?
把研究意图直接映射到算法,是最快的上手方式;不确定时先用最小样本验证触发行为。
| 我想做 | 先用 | 再补 | 注意点 |
|---|---|---|---|
| 建一个可比较的基准 | RunOnce + SelectAll + WeighEqually | Rebalance | 基准要固定数据与区间 |
| 每月再平衡 | RunMonthly | 选券 + 权重 + 再平衡 | 缺任一环都会异常 |
| 控制单券上限 | LimitWeights | Rebalance | 限额会在权重之后生效 |
| 降低换手 | LimitDeltas 或 RebalanceOverTime | 成本模型 | 降换手可能牺牲跟踪效果 |
| 按波动率目标配置 | TargetVol | 权重类算法 | 它是风险目标不是收益目标 |
| 做归因与记录 | SetStat / StatTotalReturn | PrintInfo | 统计量需在结果里读取 |
| 排查算法顺序问题 | Debug / PrintTempData | — | 排查完记得移除 |
| 模拟公司行为与现金流 | CorporateActions / CapitalFlow | SetNotional | 数据需带对应字段 |
Boundaries
算法库覆盖不到的地方有哪些?
59 个算法覆盖的是「组合再平衡」这一类回测,不等于全功能交易系统;下面六条是需要自建或另找工具的部分。
| 能力 | bt 是否提供 | 说明 |
|---|---|---|
| 行情数据 | 不提供 | 自备「日期 × 标的」价格矩阵,或用本机财经数据类技能取数 |
| 逐笔撮合与盘口 | 不提供 | bt 按数据行推进,不适合逐笔撮合类研究 |
| 实盘下单 | 不提供 | 回测库不包含交易通道 |
| 绩效统计与图表 | 经 ffn 提供 | 字段与口径以 ffn 文档为准 |
| 参数寻优框架 | 不直接提供 | 可自写循环调用 bt.run 做对照,注意过拟合 |
| 中文文档 | 官方为英文 | 本站中文说明基于官方仓库与包源码整理,细节以官方为准 |
FAQ
bt 算法库常见问题
59 个算法都会用到吗?
不会。多数研究只用到调度、选券、权重、再平衡四组里的十来个类;打印调试(Debug/PrintInfo)与公司行为类属于按需使用。先把四组主流程用熟,再按需扩展。
为什么同一个算法在不同页面说法不一样?
可能是版本差异。本站类名与数量以 PyPI 包 bt 1.2.3 的 bt/algos.py 为准(2026-09-20 核验);官方文档若更新,以官方为准。
能不能直接用算法类名当策略名?
bt.Strategy 的入参里带策略名(如示例里的 "equal_weight"),与算法类名无关;命名建议能反映「选券 + 权重 + 频率」三个要素,便于多策略对比时辨认。
算法参数在哪里看?
以官方 algos 文档与类 docstring 为准;本页只做分组与用途映射,不列默认值,避免文档更新后与本页不一致。
有没有办法批量比较不同算法组合?
可以自己写循环:对每个算法组合构造 bt.Strategy 与 bt.Backtest,用 bt.run 汇总或逐个对比 result.display() 输出。注意固定数据、区间与成本假设,只改变量。
这些算法能用于实盘吗?
不能。算法库是回测执行逻辑,不包含实盘通道与风控执行;把它当成研究工具,实盘需要另建系统并自负风险。