发布 2026-10-14 · 更新 2026-10-25

回测一个组合,而不只是一只股票

单只股票的回测几乎会美化一切。组合回测加上了决定策略能否活下去的那几件事:相关性、调仓,以及只有多个持仓同时交易时才会出现的成本。


本页目录

为什么一只不够

单只股票的回测回答的是:「这条规则在这一只上会不会有效?」

这几乎从来不是你真正要问的问题。你跑的是一个组合,而组合引入了三件单只标的会藏起来的事。


组合加上的三件事

一、相关性

两只各自看起来很好的股票,可能是同一个赌注。

如果持仓 那么
不相关 涨跌部分抵消 —— 路径更平滑
高度相关 亏损同时到来 —— 回撤是叠加的

十只相关标的组成的组合,是多绕了几步的单个仓位。 相关性在单只回测里看不见,而它正是多数「看起来的分散」消失的地方。

二、调仓

组合必须重新配权。多久调一次、调到什么目标,会改变结果:

方式 取舍
固定周期 可预期,但可能什么都没变也在交易
阈值触发 只在权重漂移到足够远时才交易
从不调 权重漂向赢家 —— 常常变成一个意外的赌注

每次调仓都是交易,每笔交易都带着成本。

三、同时成本

单只回测假设一次一笔交易。组合调仓可能一次性交易多只标的 —— 在同一个时刻,吃同一份流动性。

这里正是回测的成本假设从「一个细节」变成关键的地方。 十只标的同时调仓,不会每只都拿到单只成交价。


组合回测必须写明什么

必须写明 否则
股票池 你不知道哪些实际可交易
权重规则 半条策略缺失
调仓规则 换手率 —— 及其成本 —— 未知
相关性假设 分散是声称的,不是测量的
成本模型 结果是费前的,而费用可能终结它

一个这些都没写的组合回测,是一个塞了更多名字的单只回测。


可复现地搭起来

每一块都需要一次你能重跑的取数:股票池、价格、因子、窗口。

# 可复现的输入,是检查组合结果的唯一方式。
curl "https://api.ashareapi.com/v1/kline?code=sh600519&period=day&count=250"

如果成分序列无法复现,组合结果就无法被检查 —— 而一个没被检查的组合结果,是一个关于组合的故事。


随之而来的检查

组合搭好之后,前面那篇教程的三个检查依然适用:

  • 前视偏差 —— 每次调仓时,每个输入都已知吗?
  • 成本 —— 写明了没,包括同时交易的问题?
  • 幸存者偏差 —— 股票池包含那些失败的名字吗?

组合让这三条都更难、更重要,而不是更简单。


下一步

出处