策略建模与回测
策略建模与回测
本章讨论如何在给定因子与交易规则的前提下,构建形式化的收益/风险模型,并在历史数据上进行回测(Backtest)。我们会从较抽象的研究视角出发,引入必要的数学框架和文献背景,然后再落到实务层面的回测原则与常见陷阱。
如果你已经学习过 asset-pricing 中的均值–方差分析(第三章)、CAPM(第四章)和因子模型(第五章),可以把本章视为这些理论在“量化策略回测”场景下的工程化版本:同样的随机收益和风险度量,但更强调信息集、自洽性以及可实现性。
在整个章节中,我们默认读者已经接受资产收益是一个随机过程这一基本假设:
回测所做的工作,是利用有限样本对这一 DGP 的某些特征(如均值、方差、尾部行为等)进行估计,并据此判断策略在未来是否值得投入真实资本。所有的绩效指标和检验,都隐含着关于这一 DGP 的统计假设,这一点在后续的计量方法章节会进一步展开。
论文精读模块:从“预测收益”到“可交易组合”
这一章的 fundamental 是回测纪律:任何策略都必须在时点 的信息集 下生成仓位,然后到 才观察收益。前沿机器学习论文没有改变这条规则,反而让它更重要。模型越复杂,越容易在信息集、训练窗口、文本数据和调参过程中发生前视偏差。
一个现代量化策略可以拆成四个函数:
这里 是信号, 是预期收益或评分, 是风险估计, 是交易成本和约束。很多初学者只盯着 ,也就是“模型预测准不准”。但真正的回测成败往往发生在 :预测如何变成权重,权重如何受到成本、换手、容量和风险暴露限制。
Wang et al. (2026) 的 NBER 工作论文 Machine Learning Meets Markowitz 可以作为本章的前沿主读。它不是简单说机器学习预测更好,而是把预测模型接到 Markowitz 组合选择上。学生读这类论文时,要把它和均值—方差公式连起来:
传统 Markowitz 的难点是 和 都要估计,而且 的估计误差会被优化器放大。机器学习能提供更灵活的 ,但如果没有收缩、约束和成本控制,组合可能变得极端。这就是为什么“预测误差下降”不等于“策略更好”。论文中的表格如果只报告 forecast loss,你要继续找组合绩效、换手率、交易成本和风险暴露。
近年的金融深度学习综述,如 Giantsidi and Tarantola (2025),适合放在背景层:它说明深度模型能捕捉非线性、时变关系和复杂交互。但在回测讲义中,综述的作用不是证明“深度学习先进”,而是提醒你每一种模型都要经过同一组策略检验:
| 检验层 | 要回答的问题 | 常见失败方式 |
|---|---|---|
| 信息集检验 | 数据在 时点是否已经发布、可交易、可获取 | 使用修订后财报、未来指数成分、未来文本训练语料。 |
| 训练窗口检验 | 模型是否只用过去数据训练和调参 | 用全样本标准化、全样本选特征、全样本调参。 |
| 组合映射检验 | 信号如何变成仓位 | 预测分数好,但权重集中、换手过高、容量不足。 |
| 成本压力检验 | 交易成本、滑点和冲击成本后是否仍有效 | 小市值、低流动性组合在纸面上赚钱,实盘难执行。 |
| 因子暴露检验 | 收益是否只是市场、价值、动量或行业暴露 | 策略 alpha 在因子回归后消失。 |
Kelly et al. (2026) 的 NBER 工作论文 Scaling Point-in-Time Language Models 可以作为“信息集检验”的最新案例。普通大语言模型可能在训练语料中见过未来文本,如果直接拿来做历史回测,就会把未来信息带回过去。point-in-time 模型按月份只使用当时以前的文本训练,目的就是让文本 embedding 满足 约束。这个例子比泛泛说“避免 look-ahead bias”更具体:不是只有价格数据会穿越,文本模型、新闻语料和公司披露 embedding 也会穿越。
因此,本章后面所有绩效指标都要放在这个系统里理解。夏普比率、最大回撤、Calmar、alpha 和 t 统计量不是孤立数字,而是对同一个策略函数 的不同诊断。一个合格的回测报告至少应说明:
- 数据在什么时间点可用;
- 模型如何滚动训练和调参;
- 预测如何转成权重;
- 成本和约束怎样进入;
- 因子暴露和样本外稳定性是否被检查。
做到这一步,前沿模型才真正进入量化研究,而不是停留在“换一个更复杂的预测器”。
1. 策略收益的形式化表示
设 为资产 在时间 的简单收益率(可理解为“从 到 的收益率”):
其中 为价格, 为期间分红或利息。
若我们在时点 持有权重向量 ,满足
- (单元资金约束),
- 如允许多空,则 可为负;如要求多头,则 。
则从 到 的策略组合收益率可写作:
其中 。
在静态策略(权重固定)情况下,长期收益率序列就是上述式子的时间序列;在动态策略中, 会随时间根据信号调整,需要显式写成 ,其中 是我们在时点 可观测的信息集(包括因子、价格、成交量等)。
在资产定价文献中,常假设
其中 为系统性因子(如 Fama–French 因子), 为暴露, 为资产特有超额收益。如果我们的量化策略主要通过 部分获利,那么回测的目标就是估计并验证这一 序列在样本内外是否显著为正。
在策略层面,也可以定义“策略因子模型”:
其中 是策略收益, 为无风险收益, 即策略在控制市场和风格因子后的超额收益。经典的“因子回归”就是通过对 做 t 检验来判断策略是否存在统计显著的 alpha。
2. 线性因子模型与横截面回归
多因子模型的经典形式(参见 Fama & MacBeth, 1973)是在横截面上回归资产收益率与因子暴露:
- :资产 在时点 上的第 个因子暴露;
- :截面上第 个因子的价格(risk premium)。
对每个时间截面 分别做一次回归,就得到一条时间序列 ,其均值
可以理解为第 个因子的平均风险溢价。若 在统计上显著为正(例如 t 统计显著大于 0),则可以认为该因子在样本期内“有价格”,可以用来构建策略。
在更偏“策略构建”的视角下,我们也可以反过来:
- 先从数据中抽象出一组因子;
- 通过上述横截面回归检验其溢价是否存在;
- 然后基于因子暴露构建组合权重(在后续章节详细讨论)。
形式上,Fama–MacBeth 两步法可以概括为:
- 第一步(时间序列回归):
对每个资产 ,在时间序列维度上回归收益对因子:
得到每个资产的暴露估计 ; - 第二步(横截面回归):
在每个截面上,用第一步得到的暴露解释截面收益:
进而对 求平均,得到因子的平均价格 。这一框架可以推广到更一般的规格,包括引入工具变量、控制特定特征等,在资产定价实证与量化因子研究中非常常见。
3. 策略回测的基本结构
形式上,一个离散时间回测可以写作如下伪代码:
- 初始化资本 ;
- 对每个交易日(或任意时间步) :
- 根据信息集 计算信号或目标权重 ;
- 根据交易约束、成本模型,将实际权重 调整为靠近 ;
- 观察从 到 的资产收益 ;
- 更新组合价值:。
关键点在于:
- 信息集 必须只包含在 时刻真正可见的数据,以避免前视偏差;
- 交易成本、滑点、成交约束等需要在步骤 2 中明确建模,而不是简单假设“按收盘价全额成交”。
从概率论的角度,可以将回测视为在一族可行策略集合 上选取一个映射 :
并在给定 DGP 的情况下,评估相应的收益过程 的性质。不同的策略类(线性策略、阈值策略、机器学习策略等)对应不同的函数空间 ,回测的本质是对“在过去样本中表现较好”的那些 进行筛选和诊断。
4. 绩效指标的数学定义
回测产出的主要对象是策略收益率时间序列 ,在此基础上我们定义若干常见绩效指标。
4.1 年化收益率与波动率
设日度收益率为 ,。定义累计收益:
若一年有 个交易日(例如 ),则年化收益率常定义为:
样本平均收益率为
样本标准差为
则年化波动率为:
以上假设收益近似独立同分布。在实际策略中,收益往往存在自相关,此时简单的 放大可能低估风险,需要更复杂的建模(例如 HAC 协方差估计)。
若考虑收益的一阶自相关 ,简单的年化波动率调整可以写作:
其中 是滞后 期的自相关系数, 为截断阶数。更系统的处理方式是采用 Newey–West 类型的长期方差估计器,这在“计量方法”章节会专门讨论。
4.2 夏普比率(Sharpe Ratio)
设无风险利率为 (若忽略,可视为 0),则年化夏普比率定义为:
在日度数据上,若 很小,可以使用近似形式:
学术上,夏普比率是对“单位风险获取多少超额收益”的度量;在 Grinold & Kahn (2000) 视角下,它也可以由信息系数和交易规模分解出来,用于评估一个 Alpha 源的质量。
在假设收益独立同分布且近似正态的前提下,样本夏普比率的 t 统计量可以近似写作:
这一近似有助于在学术研究中评估某一策略夏普比率的统计显著性(见 Jobson & Korkie, 1981;Lo, 2002)。在实务中,更重要的是比较不同策略在相同数据窗口下的夏普差异,而不是孤立看单一策略的绝对数值。
4.3 最大回撤与 Calmar 比率
设策略净值为 。定义直到时点 的历史最高净值:
则时点 的回撤为:
整个样本期的最大回撤为:
Calmar 比率常定义为:
它强调“在遭受多大历史损失的情况下实现了多少年化收益”,在某些偏主观的基金评价中比夏普更直观。
在偏“风险管理”的视角下,还可以考虑下行风险相关度量,例如半标准差、下行偏差以及基于分位数的 VaR/CVaR(后续章节会详细介绍)。这些指标与回撤结合使用,可以更全面地刻画策略的尾部风险特征。
净值、历史高点与回撤
净值曲线回答赚了多少;回撤曲线回答过程中需要承受多深的亏损。
回撤图的价值在于把“亏过多少”从最终收益里单独拿出来。很多策略期末净值看起来不错,但中途可能经历了投资者很难承受的压力期;这也是为什么实盘评估不能只看年化收益和夏普比率。Calmar 比率把年化收益放在最大回撤的背景下看,更贴近资金管理里的生存问题。
5. 回测频率与持仓更新
5.1 日度回测
适用于中低频策略,例如:
- 按日、按周或按月调仓的股票多因子策略;
- 中低频 CTA 策略。
此时,时间索引可以理解为交易日,持仓在每个调仓日更新:
- 若每 日调仓一次,则 只有在 时发生变化,其余时间保持不变;
- 回测引擎需要正确处理“信号生成日与成交日的对应关系”,例如:
- 用 T 日收盘数据生成 T+1 日盘中或收盘的交易指令。
5.2 事件驱动与高频回测(概览)
对于日内或高频策略,时间步不再是固定日历,而是由事件(订单、成交、价格跳变)触发:
- 事件可以是“收到新的行情 tick”、“订单部分成交”或“到达某个时间阈值”;
- 策略逻辑在这些事件发生时被调用,根据当前状态和信息集做出决策;
- 回测需要模拟订单簿、排队与撮合规则,这在市场微结构章节会进一步讨论。
研究导向的角度,事件驱动回测可以被视为对一个连续时间随机过程的离散近似,其难点在于:
- 如何在有限的历史数据下合理逼近真实的订单簿动力学;
- 如何处理“反馈效应”(策略本身对价格形成的影响)。
从数学金融的角度,高频回测可以与鞅理论、伊藤过程等连续时间模型建立联系,但在实际工程实现中,更多依赖经验建模(例如基于 Hawkes 过程或简化的限价订单簿模型)而非完全解析的闭式解。这也是微结构研究与高频量化中的一个重要交叉领域。
6. 回测中的常见偏差与陷阱
尽管前一章在数据层面已经讨论了幸存者偏差和前视偏差,在回测实现时仍有大量技术细节会重新引入这些问题。
6.1 幸存者偏差与样本构建
- 只使用当前仍在指数中的成分股来做历史回测,会漏掉历史上被剔除或退市的资产;
- 要避免这一点,需要:
- 使用历史成分列表重构当期可投资标的池;
- 对退市资产保留其最后报价和退市相关处理(现金替代、估值方式等)。
6.2 前视偏差(再次强调)
代码层面最常见的前视偏差包括:
- 使用了“未来日期”的数据列(例如用 T+1 日的开盘价来计算 T 日信号);
- 使用了“最后一次已经调整好的财报数值”来构建 T 之前的因子,而不是使用“当时已披露版本”;
- 在排序或截面统计时,不小心引入了后验的样本信息。
更形式化地说,若我们在 时刻的决策函数 使用了 或 中的信息,就违反了自洽的信息集假设 ,从而导致回测结果对未来信息敏感,具有不可实现性。
6.3 交易成本与成交模型过于乐观
简单的“按收盘价成交且无成本”假设在学术教学上尚可,但在研究导向的实务环境中会造成显著偏差:
- 忽略显性成本(佣金、印花税、挂牌费等);
- 忽略隐性成本(冲击成本、机会成本、价差损失);
- 假设任意规模都能瞬间以某个理想价格成交,忽略了流动性约束。
更精细的模型通常会:
- 将价差(bid–ask spread)的一半作为基础成本;
- 将成交量的某个比例与价格冲击函数结合,模拟大额交易的价格影响;
- 使用成交量加权平均价(VWAP)或区间价格作为更接近真实的成交价近似。
6.4 参数过拟合与多重检验
在同一份数据上反复测试大量策略、频繁调参,会严重放大小样本中的偶然性:
- 样本内表现极好的策略,在样本外很可能迅速失效;
- 多重检验问题使得传统 t 检验和 p 值不再可靠。
研究导向的解决方案包括:
- 严格的训练/验证/测试集划分;
- 使用滚动窗口和“跨时间交叉验证”方法;
- 使用 White’s Reality Check 或 SPA 检验等更高级的统计方法评估策略显著性(White, 2000; Hansen, 2005)。
在更精细的设置中,还可以考虑引入“模型复杂度惩罚”,例如通过信息准则(AIC/BIC)或 VC 维、Rademacher 复杂度等概念,从理论层面约束可接受的模型族复杂度,从而降低过拟合风险。这部分思想与统计学习理论和机器学习中的结构风险最小化是一致的。
7. 简单线性回测模型的数学小结
将上述内容抽象成一个简化的线性模型,可以写作:
- 因子生成:
其中 是因子向量, 为一个映射,只依赖于已知信息集 。 - 信号与权重:
可以是线性函数(如多因子线性打分)或非线性模型(如树模型)。 - 策略收益:
其中 是交易成本函数,通常依赖于权重变化 及市场流动性。
理论上,我们希望在某个意义下最大化
或更一般地,最大化某个效用函数 。这与均值–方差优化、效用最大化、甚至强化学习框架都有直接联系。
8. 自学手册:搭建一个可信的最小回测
8.1 学习目标
学完本章后,你应当能够:
- 用 描述策略收益,并说明权重与收益的时间错位;
- 写出一个不看未来的日度或月度回测循环;
- 计算年化收益、波动、夏普、最大回撤和换手率;
- 识别回测中常见的时序错误、成本低估和参数过拟合;
- 把回测结果拆成样本内、验证期和样本外评估。
8.2 研究场景
你已经从第 02 章得到一个月度多因子打分 Score_{i,t}。现在需要回答:如果每月末根据打分调仓,这个信号是否能在 2017-2024 年样本外获得正信息比率?研究经理希望看到的不是一张漂亮净值图,而是一份可审计的回测说明:
- 信号在什么时候生成?
- 订单在什么时候成交?
- 成本和冲击如何扣除?
- 参数是否在测试期前固定?
- 表现是否来自少数极端月份?
8.3 定义与工作流逻辑
| 模块 | 需要固定的定义 | 常见检查 |
|---|---|---|
| 信息集 | 包含哪些当时可见字段 | 禁止使用 或未来财报 |
| 信号 | 是否与第 02 章因子口径一致 | |
| 调仓 | 何时从信号生成 | 月末信号、下月首日成交 |
| 成本 | 如何估计 | 半价差、佣金、冲击、拒单 |
| 净值 | 现金、分红、退市处理 | |
| 评估 | 指标和检验窗口 | 样本内/外分离、稳健标准误 |
最小可信回测可以按下面顺序执行:
- 固定数据版本、标的池、调仓日历和参数;
- 在每个 只读取 内可见数据;
- 生成目标权重,并应用组合约束;
- 用下一可交易时点的可实现价格成交;
- 扣除交易成本和冲击成本;
- 记录净值、持仓、交易、风险暴露和异常事件;
- 分窗口输出绩效与诊断指标。
8.4 迷你案例:月度调仓时间线
一个常见的正确时间线如下:
| 日期 | 动作 | 可使用信息 |
|---|---|---|
| 2024-04-30 收盘后 | 计算因子和打分 | 截至 2024-04-30 已披露、已落库的数据 |
| 2024-05-01 或下一交易日前 | 生成目标权重 | 固定后的打分、风险模型和约束 |
| 2024-05-02 开盘/区间 VWAP | 模拟成交 | 不能用 2024-05-02 收盘后才知道的信息 |
| 2024-05-31 | 计算本月收益 | 用持仓期间真实收益和成本更新净值 |
若你在 2024-04-30 收盘前就假设能使用 2024-04-30 收盘价计算信号并按同一收盘价成交,需要明确这是否符合真实交易流程;多数中低频研究会更保守地设为“收盘后生成信号,下一交易日成交”。
比较正确错位与同月泄漏
静态结果:正确错位的毛收益合计为 −11.50%,加入示意成本后为 −12.35%;泄漏版本却显示 +25.50%。泄漏版本几乎必然显得优秀,因为仓位由待预测收益本身决定。真实回测还应复利、处理现金和公司行动;这里故意只保留时间错位这一件事。
8.5 常见错误与研究陷阱
- 权重和收益同日对齐错误:用 乘 ,等于拿未来信号交易过去收益。
- 成本模型只扣佣金:多因子策略的换手率往往较高,半价差和冲击成本可能吞掉大部分 alpha。
- 把测试期用于调参:每次看样本外结果后再改参数,测试期就变成了训练集。
- 忽略不可成交资产:涨跌停、停牌、流动性枯竭会让理想回测无法落地。
- 只展示全样本夏普:隐藏了策略在不同市场状态下的退化、回撤和尾部风险。
8.6 自测题与答案提示
- 为什么 必须只依赖 ? 答案提示:这是可实现性的核心。若 使用未来收益或未来数据,回测收益不可能在实盘复制。
- 回测中“无成本表现”还有什么价值? 答案提示:它可视为理论上界,用于判断信号毛收益是否足够大;但不能作为部署依据。
- 参数在训练期、验证期、测试期中应如何使用? 答案提示:训练期拟合,验证期选择和冻结参数,测试期只做一次最终评估。
- 为什么收益自相关会影响夏普显著性? 答案提示:自相关降低独立观测数量,简单 年化和普通 t 检验会高估显著性。
8.7 小结与过渡
回测不是把信号套进历史价格,而是一次严格的“可实现性模拟”。本章要求你把信息集、成交时点、成本、约束和绩效检验全部写清楚。下一章会进一步讨论:在信号和回测通过初筛后,如何把预期收益、风险模型和现实约束合成一个可管理的投资组合。
参考文献(节选):
- Fama, E. F., & MacBeth, J. D. (1973). "Risk, return, and equilibrium: Empirical tests." Journal of Political Economy.
- Fama, E. F., & French, K. R. (1993). "Common risk factors in the returns on stocks and bonds." Journal of Financial Economics.
- Grinold, R. C., & Kahn, R. N. (2000). Active Portfolio Management. McGraw-Hill.
- White, H. (2000). "A reality check for data snooping." Econometrica.
- Hansen, P. R. (2005). "A test for superior predictive ability." Journal of Business & Economic Statistics.