bt / cost models & fixed income
bt 交易成本建模与固定收益:成本模型怎么用
bt 把交易成本抽象成可替换的模型对象:bt/__init__.py 公开导出 CostModel、SqrtCostModel、AlmgrenChrissCostModel 三个成本相关类;此外还有固收与对冲证券类型(FixedIncomeSecurity、CouponPayingSecurity、HedgeSecurity、CouponPayingHedgeSecurity)与相应的策略类。这一页说明它们各自解决什么问题、什么时候不必用。
三种成本模型
抽象基类
平方根冲击
瞬时+永久冲击
三种成本模型分别适合什么场景?
成本模型决定「成交要付多少钱」,直接影响高换手策略的净收益;下表给出选择依据。
| 模型 | 建模思路 | 适用场景 | 注意点 |
|---|---|---|---|
CostModel | 成本模型的抽象基类,定义接口 | 需要自定义成本函数时继承它 | 直接使用意义有限,通常作为扩展点 |
SqrtCostModel | 成本随交易量按平方根增长 | 流动性一般、需反映冲击成本 | 参数需与标的流动性匹配 |
AlmgrenChrissCostModel | 区分瞬时与永久价格冲击 | 大额交易、对冲击敏感的研究 | 参数较多,需说明取值来源 |
| 佣金 / 固定成本配置 | 按交易额或笔数计费 | 常规手续费场景 | 费率假设要写进报告,便于复现 |
| 无成本假设 | 不配置成本模型 | 只验证逻辑、做机制对比 | 结论不能当作可实现的净收益 |
| 成本对结论的影响 | 同一策略跑含成本/不含成本两遍 | 判断策略是否被成本吃掉 | 高换手策略差异通常最明显 |
固定收益与对冲证券怎么用?
bt 的证券层不止一种普通股票证券,源码里还有固收与对冲相关类(bt/core.py)。下表说明各自定位。
| 类 | 定位 | 适用场景 | 注意点 |
|---|---|---|---|
FixedIncomeSecurity | 固收类证券的基础类型 | 债券类资产建模 | 字段与现金流假设比普通证券多 |
CouponPayingSecurity | 带票息的证券 | 付息债券 | 票息与付息频率需与数据一致 |
HedgeSecurity | 对冲用途的证券 | 套保与对冲研究 | 对冲比例与成本要显式说明 |
CouponPayingHedgeSecurity | 票息 + 对冲组合类型 | 复杂固收对冲 | 偏进阶,先用小样本验证 |
FixedIncomeStrategy | 固收专用策略容器 | 固收组合回测 | 与普通 Strategy 的假设不同,勿混用 |
RenormalizedFixedIncomeResult | 固收结果的归一化封装 | 固收统计口径对齐 | 口径以官方文档为准 |
现金流、公司行为与保证金怎么处理?
这些算法用于让回测更接近真实账户,但都需要数据侧配合;下表给出用途与前置条件。
| 算法 / 类 | 用途 | 适用场景 | 注意点 |
|---|---|---|---|
CorporateActions | 处理分红送转等公司行为 | 长区间股票回测 | 数据需带对应字段,否则无法生效 |
CapitalFlow | 外部资金流入流出 | 定投、分期投入 | 现金流假设要写清 |
SetNotional | 按名义金额设置仓位 | 固定金额建仓 | 与按权重分配的方式不同 |
UpdateRisk / PrintRisk | 更新与打印风险状态 | 含杠杆或对冲的组合 | 打印类只输出信息 |
HedgeRisks | 对冲风险敞口 | 套保研究 | 需要明确对冲标的与比例 |
Margin | 保证金相关处理 | 杠杆场景 | v1.2.3 修复了保证金维持追缴与证券乘数相关问题,注意版本 |
什么时候不必用这些高级功能?
成本与固收类功能会显著增加配置与解释成本,下面四种情况可以先不用。
| 情况 | 建议 | 原因 |
|---|---|---|
| 只比较算法链结构是否生效 | 先不配成本模型 | 验证逻辑阶段不需要成本假设,避免两个变量混在一起 |
| 标的流动性很好、交易频率低 | 用简单费率即可 | 复杂冲击模型对结论影响有限 |
| 数据里没有现金流字段 | 不要开公司行为类算法 | 缺少字段时算法无法生效,只会增加误判 |
| 没有固收数据与估值口径 | 先做权益组合 | 固收建模依赖票息与到期结构,口径不全时结论不可用 |
| 只做单资产研究 | 用更轻的工具 | bt 的组合与成本能力用不上,学习成本不划算 |
| 不确定成本参数来源 | 先做敏感性测试 | 参数直接决定成本结论,需说明取值依据 |
bt 成本与固收常见问题
不配成本模型的结果能不能用?
能用于验证逻辑与机制对比,但不能当作可实现的净收益。含成本与不含成本两个结果通常要一起看,尤其在高换手策略上差异明显。
三种成本模型可以叠加吗?
通常按「替换」理解:一次回测配置一种成本模型。具体可配置项与参数以官方文档为准,本站不列默认值以免与版本更新不一致。
成本参数从哪里来?
应来源于你自己的交易经验、券商费率或公开的冲击成本估计,并在报告里写清假设。bt 提供的是建模框架,不提供参数取值。
固定收益回测需要什么数据?
除价格外通常还需要票息、付息频率等现金流字段,且估值口径要与你的研究目标一致。bt 提供固收证券类与策略容器,数据仍需自备。
保证金与杠杆功能有什么风险?
杠杆会放大亏损,且涉及追缴规则;不同版本对保证金与证券乘数的处理曾有修复。使用前请以官方 release 说明与文档为准,并自行评估风险。
这些功能在实盘同样适用吗?
不适用。bt 是回测库,成本模型与固收类只在本库回测流程内生效;实盘的成本与执行需要另行实现。