1. 课程导论:组合风险归因的意义、训练集切分与样本构建的核心挑战、课程目标与学习路径

1.1 组合风险归因:从“赚了多少”到“为什么赚/亏”

在量化投资中,仅仅计算组合的总收益率或总风险(如波动率、VaR)是远远不够的。投资经理、风控官和监管机构需要回答一个更深刻的问题:“组合的风险到底来自哪里?” 这就是组合风险归因的核心使命。

风险归因将总风险拆解为多个可解释的组成部分,通常包括:

  • 因子归因:组合暴露于哪些系统性风险因子(如市场、规模、价值、动量、利率、信用利差)?每个因子贡献了多少风险?
  • 资产/行业归因:哪些具体资产或行业板块是风险的主要来源?
  • 决策层归因:宏观配置、行业轮动、个股选择等不同决策层级分别贡献了多少风险?
核心意义:风险归因不仅是合规要求,更是优化投资流程的引擎。它帮助识别“非预期风险暴露”、验证投资策略的一致性,并为动态风险预算调整提供数据基础。

1.2 训练集切分与样本构建:风险归因模型的“地基”

构建一个可靠的风险归因模型(如多因子模型、协方差矩阵估计、机器学习风险模型),其第一步也是最容易被忽视的一步,就是训练集切分与样本构建。这一步直接决定了模型能否捕捉到真实的风险结构,还是陷入过拟合或时序错位。

核心挑战集中在以下三个维度:

挑战维度 具体问题 后果
时序依赖性 金融时间序列具有自相关、波动率聚集、非平稳性。随机切分会破坏时序结构,导致未来信息泄露。 模型在回测中表现优异,但在实盘中失效(回测过拟合)。
样本内/外偏差 如何定义“训练集”和“测试集”的边界?使用滚动窗口、扩展窗口还是固定窗口?窗口长度如何选择? 风险因子载荷估计不稳定,协方差矩阵奇异或噪声过大。
数据稀疏性与幸存者偏差 股票数量随时间变化,退市、停牌、新上市如何处理?样本构建时是否剔除了退市股票? 风险归因结果被幸存者偏差严重扭曲,低估尾部风险。
常见误区:许多从业者直接使用“随机划分”或“简单按年划分”来构建训练集和测试集。这在风险归因场景中几乎总是错误的,因为它忽略了金融数据最根本的时序依赖性和非平稳性。

1.3 课程目标与学习路径

本课程旨在系统性地解决上述挑战,帮助学员掌握一套可落地的训练集切分与样本构建方法论,从而为后续的组合风险归因模型打下坚实的数据基础。

课程将围绕以下三大目标展开:

  1. 理解原理:掌握金融时间序列切分的统计学原理(如时序交叉验证、膨胀测试集、组合交叉验证)。
  2. 掌握方法:熟练运用多种样本构建技术(如滚动窗口、扩展窗口、蒙特卡洛模拟、Bootstrap 重采样)。
  3. 实战应用:在 Python 中实现完整的训练集切分流水线,并集成到风险归因框架中。

下图展示了本课程的核心知识体系与学习路径:

课程知识体系与学习路径 模块1:基础概念 风险归因原理 & 数据特性 模块2:切分方法 时序交叉验证 & 窗口策略 模块3:样本构建 重采样 & 幸存者偏差处理 模块4:Python 实战流水线 Pandas / NumPy / Scikit-learn 时序切分实现 模块5:风险归因模型集成 因子模型 / 协方差估计 / 边际风险贡献 模块6:回测评估与稳健性检验 学习路径:自底向上,逐层递进

1.4 课程预期收获

完成本课程后,你将能够:

  • 独立设计并实现一套适用于多因子风险模型的时序交叉验证框架。
  • 正确处理幸存者偏差、未来信息泄露和数据非平稳性问题。
  • 使用 Python 构建可复用的训练集切分与样本构建工具类。
  • 将构建好的样本直接应用于组合风险归因(如因子暴露计算、边际风险贡献分解)。
学习建议:本课程包含大量代码实战。建议在学习每个模块时,同步打开 Jupyter Notebook 进行练习。重点关注“切分逻辑”与“风险归因结果”之间的因果关系。