7 收益模型与组合优化
课程目标: 本讲旨在深入探讨量化投资策略构建中的两个核心环节:如何构建有效的股票收益率预测模型以捕捉阿尔法,以及如何运用投资组合优化技术将预测转化为实际的投资组合,同时有效管理风险和成本。我们将覆盖从因子挖掘、筛选、预测到组合构建、约束管理、风险模型及回测评估的全过程。
课程结构:
- Part 1: 收益率预测模型——寻找阿尔法
- 引言与基本概念
- 预测变量的来源与实例
- 预测变量的筛选标准详解
- 收益率预测的具体流程与方法
- Part 2: 风险模型——以Barra为例
- 风险模型的基本概念
- Barra多因子模型结构
- 模型求解与纯因子投资组合
- 协方差矩阵的求解与调整
- Part 3: 投资组合优化与实践考量
- 收益与风险模型错位问题
- 常见的组合优化目标函数
- 优化中的常见约束条件
- 交易成本的考量
- 策略回测与评估要点
- 结论与总结
7.1 Part 1: 收益率预测模型——寻找阿尔法
7.1.1 引言
在量化投资的世界里,我们追求的是系统性、纪律性地获取超越市场基准的收益,即阿尔法 (Alpha)。这趟旅程通常始于对未来资产收益的预测。为何需要复杂的模型?因为市场有效性假说告诉我们,无风险的超额收益难以持续存在。我们需要依赖严谨的数据分析和模型构建,发掘市场中可能存在的定价偏差或风险补偿机会。
然而,仅仅拥有好的预测是不够的。如何将成百上千个股票的预测收益率转化为一个实际可投资、风险可控的投资组合?这就是投资组合优化的用武之地。它帮助我们在预期收益、风险暴露、交易成本和各种现实约束之间做出最优的权衡。
本讲座将遵循 预测 -> 优化 的逻辑链条,带你深入了解这两个关键步骤。
7.1.2 收益率模型:获取”阿尔法”
7.1.2.1 基本术语澄清
在深入细节之前,必须厘清几个核心概念,它们的混淆常常导致误解:
- 预测变量 (Return Predictors): 这是我们用来预测未来股票(或其他资产)收益率的指标、特征或信号。例如,市净率 (Book-to-Market)、过去12个月的动量、分析师盈利预测修正等。这是我们构建收益模型的基础。
- 因子 (Factors): 在学术金融(特别是资产定价理论)中,“因子”通常指解释资产收益共同变动的系统性风险来源(如市场因子、规模因子、价值因子),或者是构建用于捕捉这些风险溢价的投资组合(如Fama-French三因子模型中的SMB, HML投资组合)。
- 阿尔法 (Alpha, α): 在资产定价模型(如CAPM或多因子模型)的语境下,阿尔法指模型无法解释的那部分超额收益,通常被视为衡量投资经理技巧或策略有效性的指标(定价误差)。
关键区别与联系:
- 我们寻找的预测变量,其有效性可能来源于它能捕捉到未被主流风险因子定价的阿尔法(错误定价),也可能因为它本身就是对某种风险因子暴露的衡量(风险补偿)。例如,低市净率(预测变量)可能有效,因为它代表了价值因子的暴露(获取价值风险溢价),也可能因为它捕捉到了市场对价值股的暂时性错误定价(获取阿尔法)。
- 业界的”阿尔法因子”通常指的就是我们所说的”预测变量”,这与学术定义有所不同。本讲将主要使用”预测变量”来指代用于预测收益的指标,用”因子”指代风险因子或因子组合,用”阿尔法”指代定价模型残差或超额收益目标。 清晰区分这些概念,有助于我们理解预测的来源,并为后续的风险管理和组合优化打下基础。
7.1.2.2 寻找预测变量
预测变量的来源多种多样,主要可以归为以下几类:
- 基于传统量价和财务数据发现新异象:
- 这是最经典也是最常用的领域。研究者通过分析历史数据寻找能够预测未来收益的模式。
- 实例:
- 价值类: 低市净率 (P/B)、低市盈率 (P/E)、低市销率 (P/S)、高股息率 (Dividend Yield)。逻辑:买入被低估的公司。
- 动量类: 过去6-12个月收益率高 (Momentum)。逻辑:赢者恒赢的趋势持续。
- 反转类: 过去1个月收益率低 (Short-term Reversal)。逻辑:对短期过度反应的修正。
- 质量类: 高净资产收益率 (ROE)、高毛利率 (Gross Profitability)、低财务杠杆、稳健的盈利增长。逻辑:优质公司长期表现更优。
- 低风险/低波动类: 低历史波动率 (Low Volatility)、低Beta。逻辑:“低风险异象”,低风险股票反而有更高的风险调整后收益。
- 其他:小市值 (Size,尽管争议较大)、高流动性/低流动性(根据市场环境)、机构持股变化、分析师预期修正等。
- 改进已有变量:
- 随着市场演变和研究深入,对现有变量的简单应用可能效果减弱,需要不断改进。
- 实例:
- 考虑无形资产的价值因子: 传统的P/B可能低估了技术、医药等行业公司的价值,可以尝试加入研发投入、品牌价值等调整Book Value。
- 经行业调整的因子: 某些指标在行业间不可比(如金融业的P/B与其他行业差异巨大),需要进行行业中性化处理或计算行业内相对值。
- 动态调整因子: 某些因子的有效性可能具有周期性(如动量在市场剧烈反转时可能失效),需要结合市场状态进行调整或切换。
- 使用另类数据 (Alternative Data):
- 随着技术发展,非传统的、结构化程度较低的数据源成为新的阿尔法矿藏。
- 实例:
- 文本数据: 利用自然语言处理 (NLP) 技术分析新闻报道、社交媒体帖子、分析师电话会议记录、公司公告,提取市场情绪、关注度、管理层态度等信息。
- 卫星图像: 分析停车场车辆密度预测零售商业绩,监测工厂活动判断工业产出,评估港口货物吞吐量判断贸易活跃度,观察农作物长势预测产量。
- 信用卡/电子支付交易数据: 分析消费者支出模式、特定商户流水,提前预测公司销售额和经济景气度。
- 供应链数据: 通过追踪公司间的订单流、物流信息,判断上下游需求变化,预测行业趋势。
- 网络爬虫数据: 抓取电商平台价格与销量、招聘网站职位数量、APP下载量与活跃度等。
- 地理位置数据: 通过手机信令分析人流密度,预测商场、景点的客流量。
- ESG数据: 环境、社会、公司治理数据,用于评估公司的可持续性和潜在风险。
- 优势与挑战: 另类数据通常时效性强,能提供传统数据以外的独特视角。但面临数据清洗难度大、非结构化处理复杂、获取成本高、可能存在隐私和合规风险、历史数据短、信噪比可能较低等挑战。需要强大的数据处理能力和模型构建能力。
7.1.2.3 挑选预测变量的标准
并非所有看似相关的变量都能成为好的预测变量。一个理想的预测变量应满足以下六大核心标准:
- 逻辑性 (Intuitiveness):
- 要求: 变量背后应有合理的经济学或行为金融学解释,说明它为什么能够预测未来收益(是风险补偿还是错误定价?)。
- 重要性: 这是避免数据挖掘 (Data Mining / Data Snooping) 的第一道防线。如果一个变量缺乏逻辑支撑,即使历史回测表现很好,也可能是偶然发现的伪相关,未来很可能失效。
- 检验: 进行文献回顾,思考其经济学含义,能否构建一个令人信服的故事。
- 持续性 (Persistence):
- 要求: 实证数据必须支持理论逻辑,变量的预测能力需要在样本内外都能持续存在,尤其是在样本外(Out-of-Sample)。
- 检验方法:
- 信息系数 (Information Coefficient, IC):
- 计算:每期计算预测变量 \(z_{it}\) (通常是截面排序百分位或标准化值)与下一期收益率 \(R_{it+1}\) 的截面相关系数 \(IC_t = corr(z_{it}, R_{it+1})\)。
- 评估:
- IC均值 (Mean IC): \(\overline{IC} = \frac{1}{T} \sum_{t=1}^T IC_t\)。衡量平均预测能力。通常要求绝对值大于2%(月频)或1%(日频)才被认为有较好的潜力,但无绝对标准。
- IC标准差 (Std Dev of IC): \(\sigma_{IC}\)。衡量预测能力稳定性。
- 信息比率 (Information Ratio, IR): \(IR = \frac{\overline{IC}}{\sigma_{IC}}\)。衡量预测能力的夏普比率,越高越好,表示预测能力越稳定。IR > 0.5 通常被认为不错。
- IC的t统计量: \(t(IC) = \frac{\overline{IC}}{\sigma_{IC} / \sqrt{T}}\)。检验IC均值是否显著异于零,通常要求绝对值大于2。
- 可视化: 绘制IC值的时间序列图,观察其稳定性。绘制IC的分布直方图。 [此处可插入图表演示IC时间序列和分布]
- 分层回测 (Portfolio Sort / Backtesting):
- 步骤:
- 每期期末,根据预测变量 \(z_{it}\) 对所有股票进行排序。
- 将股票分成N组(如5组或10组,称为Quintiles或Deciles)。
- 构建多空组合:做多表现预期最好的一组(Top Quintile/Decile),做空表现预期最差的一组(Bottom Quintile/Decile)。通常是等权重或市值加权。
- 计算该多空组合在下一期的收益率。
- 重复以上步骤,得到多空组合的净值曲线。
- 评估:观察净值曲线是否长期向上,计算年化收益、夏普比率、最大回撤等指标。检验多空组合平均收益的t统计量。 [此处可插入典型的分层回测净值曲线图]
- 步骤:
- 因子衰减 (Alpha Decay): 关注预测能力是否随时间减弱。原因可能是因子被市场发现和学习后逐渐失效,或者市场结构发生变化。检验方法包括比较前期和后期的IC或回测表现。
- 信息系数 (Information Coefficient, IC):
- 信息增量性 (Information Increasement):
- 要求: 新发现的预测变量相对于已有的变量(尤其是已知的因子,如市值、价值、动量等)应该能提供额外的、独立的预测信息,而不是已有信息的简单重复。
- 检验方法:
- 变量相关性分析: 计算新变量与已有变量(或其他候选变量)之间的相关系数。如果相关性过高(如绝对值 > 0.7),则增量信息有限,可能存在共线性问题。
- 条件排序法 (Conditional Sort): 先根据一个已知因子(如市值)将股票分组,然后在每个组内再根据新变量排序并构建多空组合。观察新变量在控制了已知因子后是否仍然有效。
- Fama-MacBeth 回归: 这是检验增量信息最常用的方法。
- 模型:在每个截面期 \(t\),用新变量 \(z_{new, it}\) 和一组控制变量 \(z_{control, kit}\) (如市场Beta、市值、账面市值比、动量等)同时预测下一期收益 \(R_{it+1}\): [ R_{it+1} = {0t} + {new, t} z_{new, it} + k {k, t} z_{control, kit} + _{it+1} ]
- 检验:计算每个控制变量系数的时间序列均值 \(\bar{\gamma}_k\) 及其t统计量。关键是看新变量的系数均值 \(\bar{\gamma}_{new}\) 是否在统计上显著异于零(t绝对值 > 2)。如果显著,说明在控制了其他因素后,新变量仍有独立的预测能力。
- 变量正交化: 将新变量对已有因子进行回归,取残差作为新的、与已有因子正交的变量,再检验这个残差项的预测能力。
- 稳健性 (Robustness):
- 要求: 预测变量的有效性不应过度依赖于特定的参数设定、算法选择、样本区间或市场环境。
- 检验方法:
- 参数敏感性: 改变因子的计算方式(如动量因子用过去11个月还是12个月?价值因子用P/B还是P/E?)、异常值处理方法(Winsorization比例?MAD阈值?)、数据频率(日频?周频?月频?)等,观察结果是否依然显著。
- 算法敏感性: 如果使用了复杂的模型(如机器学习),尝试不同的算法或超参数设定。
- 样本区间检验: 将整个样本期分成几段(如按时间前后分、按牛熊市分),检验因子在不同子样本内的表现是否一致。
- 不同市场检验: 如果条件允许,检验该因子在不同国家或地区的市场(如A股、港股、美股)是否同样有效。
- 不同资产类别检验: 检验因子是否能推广到其他资产(如债券、商品、货币)。
- 可投资性 (Investability):
- 要求: 因子策略需要在现实中能够以合理的成本和规模进行投资。
- 考量因素:
- 信息衰减速度 (Half-life of Information): 因子信号从产生到失效的时间有多长?高频因子(如基于订单簿信息)可能几分钟或几小时就失效了,需要极快的交易系统。低频因子(如基于年报的价值因子)可能持续几个月甚至几年。
- 换手率 (Turnover): 基于该因子构建的投资组合需要多频繁地调整持仓?换手率 = (期间买入金额 + 期间卖出金额) / 2 / 期初资产净值。高换手率意味着高交易成本。
- 交易成本 (Transaction Costs): 包括显性成本(佣金、印花税)和隐性成本(冲击成本、价差成本)。冲击成本指大额交易对市场价格产生不利影响,与交易规模和市场流动性有关。
- 流动性 (Liquidity): 因子是否集中在低流动性的股票上?如果是,当资金规模扩大时,可能难以按照理想价格买卖,导致实际收益低于回测收益。
- 策略容量 (Strategy Capacity): 该策略能够容纳多大的资金规模?当管理资金超过一定规模后,交易成本会显著上升,或者因子有效性本身会因为市场冲击而下降,从而限制了策略的扩展能力。
- 普适性 (Pervasiveness):
- 要求: 最优秀的因子往往具有一定的普适性,即它们不仅在最初发现的市场或资产类别中有效,在其他市场、其他资产类别、不同时间段内也或多或少能观察到类似的效果。
- 意义: 这进一步增强了我们对因子逻辑性和稳健性的信心,降低了它是数据挖掘偶然结果的可能性。
- 实例: Fama-French因子中的价值和规模效应、动量效应,在不同国家股票市场、甚至其他资产类别(如债券、商品)中都有文献支持其存在性(尽管强度和形式可能不同)。
总结: 一个真正好的预测变量需要通过这六大标准的严格考验,这是一个系统性的筛选过程。
7.1.2.4 收益率预测流程
将筛选出的合格预测变量应用于实际预测,通常遵循以下步骤:
- 确定投资范围 (Universe Selection):
- 原始股票池: 首先定义一个基础范围,如全部A股、沪深300成分股、中证500成分股、特定行业(如医药、科技)等。
- 优化股票池 (剔除黑名单): 在原始池基础上,剔除不适合量化交易或风险过高的股票:
- 流动性过低: 如日均交易额过小、长期停牌的股票。
- 风险过高: ST、*ST股票、即将退市股、净资产为负的公司。
- 上市时间过短: 次新股(通常波动大,历史数据短,规律不稳定)。
- [可选] 某些负面特征: 如极高换手率、极高波动率、估值极高但盈利能力差、近期有重大负面事件(如财务造假、监管处罚)等。 目标: 聚焦于具有较好流动性和基本面、行为相对规范的股票池,提高模型的稳定性和有效性。
- 剔除预测变量异常值 (Outlier Treatment):
- 原因: 原始因子数据中可能存在极端值,会对后续的标准化、打分或回归产生不成比例的影响,需要处理。
- 常用方法:
- 缩尾法 (Winsorization): 将超出特定分位数(如1%和99%)的值替换为边界值。简单直接,但可能损失信息。
- 截尾法 (Trimming): 直接删除超出特定分位数的值。损失信息更多。
- 标准差法: 将超出均值加减 N 倍标准差(如 N=3)的值进行处理(缩尾或截尾)。对数据分布形态敏感,易受极端值本身影响。
- 中位数绝对偏差法 (Median Absolute Deviation, MAD):
- 计算: \(MAD = median(|X_i - median(X)|)\)。
- 处理: 将 \(X_i\) 替换为 \(median(X) \pm N \times MAD / 0.6745\) (分母是为了在正态分布下近似标准差)。N通常取3或5。
- 优点: 对极端值不敏感,更为稳健。 推荐优先考虑MAD法。
- 预测收益率 (Return Forecasting):
- 非参数化预测:
- 条件选股法: 根据多个指标设定阈值筛选股票,简单直接但可能持股不稳定、易过拟合。
- 排序打分法 (Ranking and Scoring):
- 对每个通过检验的预测变量 \(k\),计算其因子值 \(z_{kit}\)。
- 因子值标准化: 通常进行截面标准化,使其在不同因子间可比。常用Z-Score:\(Z_{Score, kit} = \frac{z_{kit} - mean_i(z_{kit})}{std_i(z_{kit})}\) (注意是每期对所有股票计算均值和标准差)。
- 多因子合成综合得分: 将多个标准化后的因子得分合成为一个综合得分 \(Z_{Score, it}\)。
- 等权合成: \(Z_{Score, it} = \sum_{k} \frac{1}{K} Z_{Score, kit}\)。
- IC加权合成: \(w_k \propto \overline{IC}_k\) 或 \(w_k \propto IR_k = \overline{IC}_k / \sigma_{IC_k}\) 或 \(w_k \propto t(IC_k)\)。给历史表现更好、更稳定的因子赋予更高权重。
- 分层合成: 先在同一大类(如价值类、动量类)内部进行合成,再在不同大类之间进行合成。可以降低因子间的相关性干扰。
- 最终排序: 根据综合得分 \(Z_{Score, it}\) 对股票池中的股票进行排序,预期得分越高的股票未来收益越高。 优点: 选股数量可控,相对简单。缺点: 未完全利用因子与收益间的定量关系,权重设定相对主观。
- 参数化预测 (线性回归):
- 目标:建立预测变量 \(z_{it-1}\) 与未来收益 \(R_{it}\) 之间的定量关系。
- 方法一:基于历史系数的预测
- 在每个历史截面期 \(t=1, ..., T\),进行截面回归:\(R_{it} = c_t + b_t z_{it-1} + \epsilon_{it}\) (如果是多因子,则 \(R_{it} = c_t + \sum_k b_{kt} z_{k,it-1} + \epsilon_{it}\))。
- 得到系数的时间序列 \(c_t, b_t\) (或 \(b_{kt}\))。
- 计算历史系数的均值 \(\bar{c}, \bar{b}\) (或 \(\bar{b}_k\))。
- 使用当前最新因子值 \(z_{iT}\) (或 \(z_{k,iT}\))预测下一期收益:\(\hat{R}_{i,T+1} = \bar{c} + \bar{b} z_{iT}\) (或 \(\hat{R}_{i,T+1} = \bar{c} + \sum_k \bar{b}_k z_{k,iT}\))。
- 优点:考虑了因子系数的时变性。缺点:需要足够长的历史数据计算稳定的均值。
- 方法二:基于面板回归的预测
- 将所有时间和截面数据放在一起进行面板回归(固定效应或随机效应模型):\(R_{it} = c + b z_{it-1} + \alpha_i + \eta_t + \epsilon_{it}\) (此处简化, \(\alpha_i\) 个体效应, \(\eta_t\) 时间效应)。
- 得到估计系数 \(\hat{c}, \hat{b}\)。
- 使用当前最新因子值 \(z_{iT}\) 预测下一期(相对)收益:\(\hat{R}_{i,T+1} = \hat{c} + \hat{b} z_{iT}\)。
- 优点:利用了所有数据,系数估计可能更稳健。缺点:假设了系数不随时变。
- 注意: 回归方法需要处理潜在的多重共线性问题(如果因子间相关性高),可以考虑使用逐步回归筛选变量,或使用正则化方法(如Ridge回归、Lasso回归)来压缩系数,提高模型稳定性。
- 与主动收益 \(\alpha\) 的关系 (Grinold’s Fundamental Law of Active Management): 预测的超额收益 \(\hat{\alpha}_{it}\) 可以近似理解为: [ {it} {} Z_{Score, it} ] 其中 IC 是信息系数,\(\sigma_{\alpha}\) 是主动收益波动率,Z-Score 是标准化因子得分。这说明预测收益的幅度取决于预测能力 (IC)、承担的主动风险 (\(\sigma_{\alpha}\)) 以及当前因子暴露强度 (Z-Score)。
- [可选] 机器学习预测:
- 对于复杂的非线性关系、高维数据交互,可以使用机器学习模型,如:
- 树模型: 随机森林 (Random Forest)、梯度提升决策树 (GBDT, XGBoost, LightGBM)。能自动处理非线性和交互效应,对异常值不敏感。
- 神经网络: 深度学习模型。能捕捉更复杂的模式。
- 挑战: 模型复杂度高,容易过拟合,可解释性差,对数据量和计算资源要求高。需要非常谨慎地进行模型选择、调优和验证。
- 对于复杂的非线性关系、高维数据交互,可以使用机器学习模型,如:
- 非参数化预测:
7.2 Part 2: 风险模型——以Barra为例
7.2.1 引言
在量化投资中,风险模型与收益模型同等重要,是投资组合构建的两大支柱。如果说收益模型帮助我们预测”哪些资产会带来更高收益”,那么风险模型则帮助我们理解”这些资产可能带来多大风险”。风险模型的核心是通过多因子模型实现降维,方便地计算股票的协方差矩阵,并以此作为投资组合风险控制的依据。
风险模型在量化投资中的重要性体现在以下几个方面:
- 风险衡量: 量化组合的整体风险(如波动率、VaR)
- 风险分解: 理解风险的来源(市场风险、行业风险、风格因子风险等)
- 风险控制: 在优化过程中限制特定的风险暴露
- 优化输入: 为投资组合优化提供关键输入(协方差矩阵)
本部分将以业界广泛应用的Barra风险模型为例,介绍风险模型的基本原理、构建方法及应用。
7.2.2 Barra多因子模型结构
Barra模型是由MSCI(原Barra公司)开发的一系列风险模型,在全球范围内被广泛应用于投资组合风险管理。对于中国市场,我们以CNE5模型(中国市场第五代风险模型)为例进行说明。
7.2.2.1 基本结构
Barra CNE5模型包含三类因子:
- 国家因子: 一个单一的因子,代表整体市场风险
- 行业因子: 多个行业因子(如P个),代表不同行业的特有风险
- 风格因子: 多个风格因子(如Q个),包括规模、价值、动量、波动率、流动性等
在t时刻,该多因子模型可以表示为:
\[R_{it}^e = \beta_{i}^C \lambda_{Ct} + \sum_{p=1}^{P} \beta_{i}^{I_p} \lambda_{I_p,t} + \sum_{q=1}^{Q} \beta_{i}^{S_q} \lambda_{S_q,t} + u_{it}\]
其中: * \(R_{it}^e\) 是股票i在t时刻的超额收益率(相对无风险利率) * \(\beta_{i}^C\) 是股票i在国家因子上的暴露(所有股票均为1) * \(\beta_{i}^{I_p}\) 是股票i在行业因子\(I_p\)上的暴露(通常为0或1) * \(\beta_{i}^{S_q}\) 是股票i在风格因子\(S_q\)上的暴露 * \(\lambda_{Ct}\)、\(\lambda_{I_p,t}\)、\(\lambda_{S_q,t}\) 分别是国家因子、行业因子和风格因子的收益率 * \(u_{it}\) 是特质性收益率(模型无法解释的部分)
7.2.2.2 因子暴露的确定
Barra模型的一个特点是风格因子暴露的确定方法:
直接使用公司特征: 不同于传统的时序回归方法,Barra模型直接使用公司特征作为因子暴露的原始值。例如,使用市值的对数作为规模因子的暴露,账面市值比作为价值因子的暴露等。
标准化处理: 对原始暴露值进行标准化,包括:
- 市值加权去均值: 确保市场组合在任何风格因子上的暴露为零
- 除以标准差: 使不同因子的暴露具有可比性
行业因子的特殊处理: 为避免共线性问题(所有行业暴露之和等于国家因子暴露),Barra模型对行业因子收益率施加约束:
\[s_{I_1}\lambda_{I_1,t} + s_{I_2}\lambda_{I_2,t} + \cdots + s_{I_P}\lambda_{I_P,t} = 0\]
其中\(s_{I_p}\)是行业\(I_p\)的市值权重。
7.2.2.3 国家因子的特殊性
国家因子在Barra模型中扮演着特殊角色。可以证明,国家因子投资组合近似等于市值加权的市场组合。这是因为:
- 所有股票在国家因子上的暴露均为1
- 行业因子收益率的加权和为0(根据约束条件)
- 风格因子暴露的市值加权和为0(根据标准化处理)
因此,国家因子实质上充当了截距项的作用,代表了整体市场的系统性风险。
7.2.3 模型求解与纯因子投资组合
7.2.3.1 模型求解过程
Barra模型的求解是在每个时期t进行截面回归,通过加权最小二乘法(WLS)估计因子收益率和特质性收益率。求解步骤如下:
- 构建因子暴露矩阵\(\beta\)(N×K矩阵,N为股票数量,K为因子数量)
- 确定回归权重矩阵W(Barra假设特质性收益率的方差与市值平方根成反比)
- 考虑行业因子的约束条件,构建约束矩阵C
- 使用带约束的加权最小二乘法求解纯因子投资组合的权重矩阵\(\Omega\)
- 根据权重矩阵计算因子收益率和特质性收益率
7.2.3.2 纯因子投资组合
求解过程中得到的权重矩阵\(\Omega\)的每一行代表一个”纯因子投资组合”。这些投资组合具有以下特性:
- 国家因子的纯因子投资组合:
- 近似等于市场组合
- 在国家因子上暴露为1
- 在所有行业上有正的暴露
- 在所有风格因子上暴露为0
- 行业因子的纯因子投资组合:
- 资金中性(权重和为0)
- 100%做多该行业,100%做空国家因子投资组合
- 反映了行业相对市场组合的超额收益
- 在所有风格因子上暴露为0
- 风格因子的纯因子投资组合:
- 资金中性
- 仅在该风格因子上有1个单位的暴露
- 在其他所有因子(包括行业和其他风格因子)上暴露为0
这些纯因子投资组合的特性使得它们成为理解和分析因子风险的理想工具。
7.2.4 协方差矩阵的求解与调整
风险模型的核心目标是估计股票的协方差矩阵\(\Sigma\)。根据因子模型的性质,股票协方差矩阵可以分解为:
\[\Sigma = \beta \Sigma_{\lambda} \beta' + \Sigma_{\epsilon}\]
其中\(\Sigma_{\lambda}\)是因子协方差矩阵,\(\Sigma_{\epsilon}\)是特质性收益率的协方差矩阵(对角矩阵)。
7.2.4.1 协方差矩阵估计的挑战
直接使用历史数据估计协方差矩阵面临以下挑战:
- 噪声大: 历史样本协方差矩阵包含大量噪声,对参数敏感
- 非平稳性: 市场结构和波动性是时变的,历史关系不一定代表未来
- 维度灾难: 当股票数量N很大时,协方差矩阵的估计和求逆计算困难
为了解决这些问题,Barra模型采用了一系列统计调整方法。
7.2.4.2 特征因子调整法
特征因子调整法是针对因子协方差矩阵\(\Sigma_{\lambda}\)的调整方法,主要步骤包括:
- 对因子样本协方差矩阵进行特征分解,得到特征向量矩阵和特征值矩阵
- 通过自助法(bootstrap)模拟,计算特征因子的偏差统计量
- 根据偏差统计量对特征值进行调整
- 使用调整后的特征值重构因子协方差矩阵
这种方法能有效消除特征因子组合方差事前估计的偏差,使得事后偏差统计量接近1.0。
7.2.4.3 贝叶斯收缩法
贝叶斯收缩法主要用于调整特质性收益率的协方差矩阵\(\Sigma_{\epsilon}\),基本思路是:
将股票按市值分组,计算每组的平均特质性波动率作为先验
结合先验和样本波动率,通过贝叶斯收缩得到后验估计:
\[\hat{\sigma}_i^{bs} = \eta_i \bar{\sigma}_g^i + (1-\eta_i)\hat{\sigma}_i\]
其中\(\eta_i\)是收缩系数,取决于样本波动率与先验的偏离程度
通过优化收缩系数,最小化偏差统计量
这种方法能有效提高特质性波动率估计的准确性和稳定性。
7.2.5 风险模型的应用
Barra风险模型在量化投资中有广泛的应用:
- 风险预测: 预测投资组合的波动率和风险价值(VaR)
- 风险分解: 将组合风险分解为因子风险和特质性风险
- 风险归因: 分析组合表现的来源
- 投资组合优化: 提供协方差矩阵作为优化的关键输入
- 风险控制: 监控和管理投资组合在各因子上的暴露
需要注意的是,风险模型并非完美无缺。它基于历史数据和特定假设,在极端市场环境下可能失效。因此,在使用风险模型时,应当结合其他风险管理工具和方法,保持审慎态度。
7.3 Part 3: 投资组合优化与实践考量
7.3.1 过渡
前面两部分,我们分别探讨了如何构建有效的收益预测模型以及如何使用风险模型来估计资产的协方差结构。现在,我们面临的问题是:如何利用这些预测信息和风险估计,结合现实约束,构建一个最优的投资组合?这就是投资组合优化 (Portfolio Optimization) 要解决的核心问题。
7.3.2 收益与风险模型错位问题
一个实践中非常重要但常被忽视的问题是:你用于预测收益的模型(Alpha Model)与你用于衡量和控制风险的模型(Risk Model)可能并不一致,即模型错位。
- 问题根源:
- Alpha模型关注的是预测变量 \(z_{\alpha}\) (或 \(\beta_{\alpha}\),即对预测变量的暴露)。
- Risk模型关注的是风险因子 \(f_R\) 及其暴露 \(\beta_R\)。
- 当 \(z_{\alpha}\) 所代表的信息不能被风险模型中的因子 \(f_R\) 完全解释时,就发生了错位。例如,你可能用一个独特的另类数据因子预测收益,但你的风险模型(比如一个标准的Barra模型)并不包含这个因子。
- 影响:
- 我们可以将预期收益 \(\mu\) (来自Alpha模型) 分解为两部分:
- \(\mu_{\parallel}\): 能够被风险模型因子空间解释的部分。
- \(\mu_{\perp}\): 不能被风险模型因子空间解释的部分(即 \(\text{Cov}(\mu_{\perp}, f_R) = 0\))。这部分收益的风险在风险模型看来是特质性风险 (Idiosyncratic Risk)。
- 标准的均值-方差优化器 \(\max \omega' \mu - \frac{\zeta}{2} \omega' \Sigma \omega\) 在评估风险时,只会认为 \(\mu_{\perp}\) 的风险是 \(\sigma_{\epsilon}^2\) (特质风险),而 \(\mu_{\parallel}\) 的风险包含了系统性因子风险(来自 \(\Sigma\) 的因子协方差部分)和特质风险。
- 由于优化器低估了 \(\mu_{\perp}\) 的真实(但未被风险模型捕捉的)系统性风险,它会倾向于过度配置在这部分”伪阿尔法”上,因为它看起来提供了”低风险”的收益。这会导致最终组合的实际风险特征与优化目标不符。
- 我们可以将预期收益 \(\mu\) (来自Alpha模型) 分解为两部分:
- 简化数值案例:
- 假设只有两个资产A和B,一个风险因子F。真实收益过程:\(R_A = 0.5 F + \epsilon_A\), \(R_B = -0.5 F + \epsilon_B\)。\(\sigma_F^2 = 1\), \(\sigma_{\epsilon_A}^2 = \sigma_{\epsilon_B}^2 = 1\)。风险模型 \(\Sigma\) 能完美捕捉 F。
- 你的Alpha模型预测 \(\mu_A = 1, \mu_B = 1\)。这个Alpha (\(\mu = [1, 1]'\)) 与风险因子 F 正交 (\(\beta_F = [0.5, -0.5]'\)),即 \(\mu = \mu_{\perp}\)。
- 无约束 MVO 解 \(\omega \propto \Sigma^{-1} \mu\)。由于 \(\mu\) 与 F 正交,\(\Sigma^{-1} \mu\) 将主要由特质风险的倒数决定,导致对A和B的配置很高。
- 但实际上,\(\mu\) 的来源可能隐含着某种未被F捕捉的系统风险。优化器基于错误的风险评估(认为 \(\mu\) 的风险只是特质风险)做出了过于激进的配置。
- 解决方法:
- 调整风险模型 (理论上可行,实践中困难): 将Alpha模型中的预测变量也纳入风险模型中作为风险因子。但这可能需要构建自己的风险模型,尤其在使用第三方风险模型时不可行。
- 改进优化过程 (更常用): 在优化目标函数中加入对这部分”无法解释的阿尔法”\(\mu_{\perp}\) 的额外惩罚项。
- \(\max_{\omega} \omega' \mu - \frac{\zeta}{2} \omega' \Sigma \omega - \frac{\theta}{2} \omega' (\mu_{\perp} \mu_{\perp}') \omega\)
- 这个惩罚项 \(\frac{\theta}{2} \omega' (\mu_{\perp} \mu_{\perp}') \omega\) 实质上是增加了对 \(\mu_{\perp}\) 方向风险的惩罚。\(\theta\) 是惩罚系数,需要根据对 \(\mu_{\perp}\) 真实风险的估计来设定。\(\mu_{\perp}\) 可以通过将 \(\mu\) 对风险因子 \(\beta_R\) 回归取残差得到。
- 现状: 这个问题在实践中需要关注,尤其是在使用内部Alpha模型和外部通用风险模型时。忽视模型错位可能导致策略的实际风险远超预期。
7.3.3 常见目标函数
给定预期收益向量 \(\mu\) 和协方差矩阵 \(\Sigma\),投资组合优化的目标是在收益和风险之间找到最佳平衡点。以下是几种常见的优化目标函数:
- 均值-方差优化 (Mean-Variance Optimization, MVO): (Markowitz, 1952)
- 目标: 最大化预期收益,同时惩罚组合方差(风险)。 [ _{} ’ - ’ ] 其中 \(\omega\) 是投资组合权重向量,\(\zeta\) 是风险厌恶系数 (Risk Aversion Parameter)。\(\zeta\) 越大,投资者越厌恶风险,优化结果中风险的比重越大(越倾向于低风险组合)。
- 无约束解: \(\omega_{mvo} = (\zeta \Sigma)^{-1} \mu\)。(假设 \(\Sigma\) 可逆)
- 直观理解: 在所有预期收益相同的组合中选择方差最小的;在所有方差相同的组合中选择预期收益最高的。这些最优组合构成了效率前沿 (Efficient Frontier)。 [此处可插入效率前沿图]
- 优点: 理论基础坚实(基于投资者效用最大化),是现代投资组合理论的基石。明确在风险和收益间进行权衡。
- 缺点/挑战:
- 参数敏感性: 优化结果对输入参数 \(\mu\) 和 \(\Sigma\) 高度敏感,尤其是 \(\mu\)。实践中,\(\mu\) 的预测误差很大,微小的 \(\mu\) 变化可能导致权重 \(\omega\) 发生剧烈变动。这被称为“误差最大化器” (Error Maximization) 问题,即优化过程可能放大了 \(\mu\) 的估计误差。
- 估计误差: \(\mu\) 和 \(\Sigma\) 都需要基于历史数据或其他模型进行估计,存在估计误差。
- 极端权重: 无约束或约束较弱时,可能产生非常集中或极端(极大或极小/负)的权重,不符合实际。
- 改进: 针对参数敏感性问题,发展出了鲁棒优化 (Robust Optimization)、Black-Litterman 模型(结合市场均衡预期和主观观点)、重采样 (Resampling)、风险预算 (Risk Budgeting) 等方法。对 \(\Sigma\) 的估计可以使用压缩估计量 (Shrinkage Estimators) 提高稳健性。
- 最小方差 (Minimum Variance):
- 目标: 找到具有最低可能风险(方差)的投资组合,不考虑预期收益 \(\mu\)。 [ _{} ’ ] 通常带有约束,如 \(\omega' \mathbf{1} = 1\) (权重和为1,即全投资)。
- 最优解 (带 \(\omega' \mathbf{1} = 1\) 约束): \(\omega_{mv} = \frac{\Sigma^{-1} \mathbf{1}}{\mathbf{1}' \Sigma^{-1} \mathbf{1}}\)。
- 优点: 不依赖于难以准确预测的预期收益 \(\mu\),结果相对更稳健。
- 缺点: 完全忽略了收益目标,可能选出一个预期收益非常低的组合。
- 适用场景: 当对收益预测极度不自信时,或投资者的首要目标是绝对风险最小化。
- 最大多样化 (Maximum Diversification):
- 目标: 最大化组合的多样化比率 (Diversification Ratio),即组合内各资产加权平均波动率与组合整体波动率之比。 [ _{} ] 其中 \(\sigma\) 是各资产的预期波动率向量 (\(\sigma_i = \sqrt{\Sigma_{ii}}\))。通常也带 \(\omega' \mathbf{1} = 1\) 约束。
- 最优解 (带 \(\omega' \mathbf{1} = 1\) 约束): \(\omega_{md} \propto \Sigma^{-1} \sigma\) (与MVO形式类似,只是用 \(\sigma\) 替代了 \(\mu\))。
- 直观理解: 目标是让组合的风险(分母)相对于其成分资产的(加权)平均风险(分子)尽可能小,即通过资产间的低相关性来分散风险。
- 优点: 关注于风险结构的分散化,也不直接依赖于 \(\mu\) 的预测(但依赖于 \(\sigma\) 和 \(\Sigma\))。
- 风险平价 (Risk Parity / Equal Risk Contribution, ERC):
- 目标: 构建一个组合,使得每个资产对组合总风险的贡献相等。
- 风险贡献: 资产 \(i\) 的边际风险贡献 (Marginal Contribution to Risk) 是 \(\frac{\partial \sigma_p}{\partial \omega_i} = \frac{(\Sigma \omega)_i}{\sigma_p}\),总风险贡献是 \(\omega_i \times \frac{\partial \sigma_p}{\partial \omega_i} = \frac{\omega_i (\Sigma \omega)_i}{\sigma_p}\),其中 \(\sigma_p = \sqrt{\omega' \Sigma \omega}\) 是组合总波动率。
- 优化问题: (形式不唯一,一种是)最小化各资产风险贡献之间的差异: [ {} {i=1}^N _{j=1}^N ( _i ()_i - _j ()_j )^2 ] 通常带 \(\omega' \mathbf{1} = 1\) 和 \(\omega \ge 0\) 约束。
- 特殊解析解 (简化条件下): 如果所有资产两两之间的相关系数 \(\rho_{ij}\) 都相等 (即 \(\rho_{ij} = \rho\) for \(i \neq j\)),则风险平价组合的权重近似与其波动率的倒数成正比:\(\omega_{rp,i} \propto 1 / \sigma_i\)。即波动率越低的资产,权重越高。
- 优点:
- 实现了风险在各资产间的均衡分配,避免风险过度集中于少数高波动资产。
- 同样不直接依赖于 \(\mu\) 的预测。
- 在多资产类别配置(股票、债券、商品等)中非常流行。
- 求解: 通常需要数值优化算法(迭代求解)。
7.3.4 不同目标函数的比较与等价条件
这些不同的优化目标函数看似不同,但在特定条件下是等价的,这有助于我们理解它们背后的假设:
- MVO 是最一般化的框架。 其他几种可以看作是MVO在对预期收益 \(\mu\) 做出特定假设时的特例:
- 最小方差 (Min Variance) 等价于 MVO 中假设所有资产的预期超额收益都相等 (\(\mu_i = \mu_j\) for all i, j)。此时优化目标只剩下最小化 \(\omega' \Sigma \omega\)。
- 最大多样化 (Max Diversification) 等价于 MVO 中假设所有资产的预期夏普比率都相等 (\(\mu_i / \sigma_i = \mu_j / \sigma_j\) for all i, j)。此时 MVO 的解 \(\omega \propto \Sigma^{-1} \mu\) 变为 \(\omega \propto \Sigma^{-1} \sigma\) (因为 \(\mu \propto \sigma\)),这与最大多样化解一致。
- 风险平价 (Risk Parity) 在更严格的条件下等价于MVO:假设所有资产夏普比率相等,并且所有资产间的相关系数也都相等 (\(\rho_{ij} = \rho\) for all \(i \neq j\))。
- 等权重 (Equal Weight) 是一种更特殊的风险平价,需要假设所有资产夏普比率相等、相关系数相等、且波动率也相等 (\(\sigma_i = \sigma_j\))。
- 核心启示:
- 你选择哪种优化方法,实际上反映了你对输入参数(尤其是预期收益 \(\mu\))有多少信心。
- 如果你对 \(\mu\) 的预测非常有信心,MVO 理论上最优。
- 如果你对 \(\mu\) 的预测完全没信心,最小方差或风险平价可能是更稳健的选择。
- 如果你相信所有资产提供相似的风险调整后收益(夏普比率),最大多样化可能是合适的。
- 如果连对波动率和相关性的估计都没信心,或者作为一种最朴素的起点,等权重也是一种选择(它隐含了最强的对称性假设)。
- 实践中,往往需要在 MVO 的理论最优和 MinVar/MaxDiv/RP 的稳健性之间进行权衡,或者使用改进的 MVO 方法(如鲁棒优化)。
7.3.5 常见约束条件
理论上的最优解往往不符合现实投资的限制和风控要求。因此,在优化过程中必须加入各种约束条件 (Constraints)。
- 预算约束 (Budget Constraint):
- 全投资: \(\sum_i \omega_i = \omega' \mathbf{1} = 1\)。表示所有资金都投出去。这是最常见的约束。
- 允许现金: \(\sum_i \omega_i \le 1\)。
- 美元中性 (Dollar Neutral): \(\sum_i \omega_i = 0\)。常见于多空策略,多头头寸总金额等于空头头寸总金额。
- 卖空约束 (Short-Selling Constraint):
- 禁止卖空: \(\omega_i \ge 0\) for all i。即不允许持有负权重。在中国A股市场,融券做空受到较多限制。
- 限制卖空: 如 \(\omega_i \ge -L_{short}\)。
- 原因: 监管限制、券源限制、风险控制(理论上卖空损失无限)。
- 头寸上下限约束 (Position Limits):
- 个股层面: \(L_i \le \omega_i \le U_i\)。例如,单只股票权重不超过5%。
- 组合层面: 对特定集合(如行业、板块)的总权重进行限制 \(L_p \le \sum_{i \in \text{Group } p} \omega_i \le U_p\)。例如,单一行业权重不超过20%。
- 原因: 分散化要求(避免风险过度集中)、流动性考虑(大权重难以快速建仓/平仓)、满足基金合同或监管要求。
- 换手率约束 (Turnover Constraint):
- 目标: 限制投资组合相对于上期组合 \(\omega^-\) 的调整幅度,以控制交易成本。
- 个股换手: \(|\omega_i - \omega^-_i| \le \phi_i\)。
- 组合总换手: \(\sum_i |\omega_i - \omega^-_i| \le \Phi\) (单边换手率)。
- 原因: 交易成本是侵蚀收益的重要因素,必须加以控制。过于频繁的交易也可能是不必要的噪音交易。
- 持仓数量约束 (Cardinality Constraint):
- 目标: 控制组合中持有股票的数量范围。
- 形式: \(N_L \le \sum_i \delta_i \le N_U\),其中 \(\delta_i\) 是一个0/1的整数变量,当 \(\omega_i \neq 0\) 时 \(\delta_i = 1\),否则 \(\delta_i = 0\)。还需要配合 \(\omega_i\) 的上下限约束。
- 原因: 避免持仓过于分散(难以管理和跟踪)或过于集中。某些策略希望维持一个相对集中的组合。
- 影响: 引入整数变量 \(\delta_i\) 会使优化问题从标准的二次规划 (QP) 或线性规划 (LP) 变为混合整数规划 (Mixed Integer Programming, MIP),计算复杂度显著增加。
- 因子暴露约束 (Factor Exposure Constraint):
- 目标: 控制组合在某些风险因子上的暴露程度。
- 绝对暴露: \(L_k \le \sum_i \omega_i \beta_{ik} \le U_k\),其中 \(\beta_{ik}\) 是股票 \(i\) 在因子 \(k\) (如市值因子、价值因子)上的暴露度。例如,限制组合的整体市盈率范围。
- 主动暴露 (Active Exposure): \(L_k \le \sum_i (\omega_i - \omega_{Bi}) \beta_{ik} \le U_k\),其中 \(\omega_B\) 是基准组合的权重。用于控制组合相对于基准在特定风格上的偏离。
- 风格中性 (Style Neutral): 将主动暴露的上下限设为0,即 \(\sum_i (\omega_i - \omega_{Bi}) \beta_{ik} = 0\)。例如,构建一个对市值因子、价值因子都保持中性的组合,以剥离这些常见的风险来源,专注于其他Alpha来源。
- 行业中性 (Industry Neutral): 将每个行业的总权重 \(\sum_{i \in \text{Industry } j} \omega_i\) 约束为等于基准在该行业的权重 \(\sum_{i \in \text{Industry } j} \omega_{Bi}\) (或在一个小范围内)。
- 原因: 主动管理风险,确保组合的风险收益特征符合预期,避免承担不希望承担的风险(如不希望赌行业轮动,就做行业中性)。
- 跟踪误差约束 (Tracking Error Constraint):
- 目标: 控制组合收益率相对于基准组合 \(B\) 的波动性(标准差)。
- 形式: \((\omega - \omega_B)' \Sigma (\omega - \omega_B) \le \sigma^2_{TE, max}\),其中 \(\sigma_{TE}\) 是跟踪误差。
- 原因: 适用于有明确跟踪基准的增强型指数基金或相对收益策略,确保组合表现不会过度偏离基准。
约束的影响:
- 降低理论最优解: 加入约束通常会使得优化结果在目标函数上的表现(如夏普比率)差于无约束的最优解。
- 提高实际可行性: 约束使得组合满足了现实要求,更易于管理和执行。
- 改变组合结构: 约束会直接影响最终的权重分配。
- 计算复杂度: 线性约束通常不增加优化难度(LP、QP仍是标准问题),但绝对值约束(如换手率)、二次约束(如跟踪误差)会增加一些复杂度,而整数约束(如持仓数量)则会大大增加计算难度。
- 可能无解: 过于严格或相互冲突的约束可能导致优化问题没有可行解。
7.3.6 交易成本模型
交易成本是量化投资中不可忽视的部分,它直接侵蚀策略收益。聪明的做法是在投资组合优化阶段就将预期的交易成本纳入考量,而不是优化完再估算成本。
将交易成本作为惩罚项加入目标函数: [ {} {} - _{} ] 其中 \(TC(\omega, \omega^-)\) 是从当前持仓 \(\omega^-\) 调整到目标持仓 \(\omega\) 所产生的总交易成本,\(\gamma_{TC}\) 是对交易成本的厌恶系数(或直接令 \(\gamma_{TC}=1\),将成本视为对收益的直接抵扣)。
交易成本的构成:
- 显性成本 (Explicit Costs):
- 佣金 (Commission): 券商收取的费用,通常按交易金额的一定比例计算。
- 印花税 (Stamp Duty): 政府收取的税费,通常只在卖出时收取(A股)。
- 交易所规费等。
- 这些成本相对固定和明确。
- 隐性成本 (Implicit Costs):
- 价差成本 (Bid-Ask Spread Cost): 买入价(Ask)通常高于卖出价(Bid),这个差额就是交易者必须支付的成本。对于流动性差的股票,价差可能很大。成本约等于交易金额 × (Spread / Mid-Price) / 2。
- 冲击成本 (Market Impact Cost): 指交易行为本身对市场价格产生的不利影响。当你大量买入时,可能会推高价格;大量卖出时,可能会压低价格。这种成本难以精确事前估计,通常与交易规模、交易速度、股票流动性、市场波动性等因素有关。 冲击成本往往是机构投资者最大的交易成本来源。
- 机会成本 (Opportunity Cost): 指未能及时完成交易或分拆交易导致错失的价格变动。
- 显性成本 (Explicit Costs):
交易成本的建模: 优化中常用简化的模型来近似总交易成本。
- 线性成本函数: [ TC() = _i c_i |_i - ^-_i| ] 其中 \(c_i\) 代表交易资产 \(i\) 的单位边际成本(可以包含佣金、税费、价差成本等的估计)。这个模型假设单位交易成本是固定的,与交易量大小无关。适用于小额交易或主要考虑固定比例成本的情况。优化问题通常仍是QP或LP(如果目标函数也是线性的)。
- 二次成本函数 (考虑冲击成本): [ TC() = _i c_i |_i - ^-_i| + _i d_i (_i - ^-_i)^2 ] 这里增加了一个交易量平方的项,用来模拟冲击成本——交易量越大 (\(\Delta \omega_i = |\omega_i - \omega^-_i|\) 越大),单位冲击成本越高 (\(d_i \Delta \omega_i\)),总冲击成本增长更快。\(d_i\) 是与流动性相关的冲击成本系数(流动性越差,\(d_i\) 越大)。
- 优点: 更真实地反映了大额交易的成本。
- 影响: 目标函数变为非线性(即使原始目标是线性的),但如果 \(\Sigma\) 是正定的,且 \(d_i \ge 0\),通常仍然是凸优化问题(QP),可以用标准求解器解决。
- 更复杂的模型: 还可能包括分段线性函数、幂函数等来更精细地刻画冲击成本。
参数估计: \(c_i\) 和 \(d_i\) 需要根据历史交易数据、市场微观结构信息或第三方模型(如券商提供的TCA报告分析)来估计。
关键作用: 将交易成本纳入优化,可以使得优化器在追求预期收益和控制风险的同时,自动平衡交易带来的成本,从而找到一个净收益(扣除成本后) 更优的投资组合,并有助于平滑组合的换手率。
7.3.7 回测与评估
设计好了收益预测模型和组合优化框架后,绝不能直接投入实盘。必须通过严格的历史回测 (Backtesting) 来评估整个策略的表现,并发现潜在问题。
- 回测的重要性:
- 绩效评估: 检验策略在过去市场环境中的实际表现(收益、风险、稳定性)。
- 模型验证: 验证模型假设的有效性(因子是否持续有效?优化是否达到预期效果?)。
- 参数调优: 基于回测结果调整模型参数或规则(但要警惕过拟合)。
- 风险识别: 发现策略在特定市场条件下可能出现的极端风险(如大幅回撤)。
- 可行性检验: 考虑交易成本、流动性等现实因素后,策略是否仍然有利可图。
- 关键回测指标:
- 收益类: 年化收益率 (Annualized Return)、累计收益率。
- 风险类: 年化波动率 (Annualized Volatility)、最大回撤 (Max Drawdown,衡量策略可能经历的最大损失幅度)、下方波动率 (Downside Deviation)、风险价值 (Value at Risk, VaR)、条件风险价值 (Conditional VaR / Expected Shortfall)。
- 风险调整后收益: 夏普比率 (Sharpe Ratio,(年化收益 - 无风险利率) / 年化波动率)、索提诺比率 (Sortino Ratio,使用下方波动率代替总波动率)、信息比率 (Information Ratio, IR,(策略年化收益 - 基准年化收益) / 年化跟踪误差,衡量主动管理能力)。
- 交易类: 年化换手率 (Annualized Turnover,衡量交易频率和潜在成本)、平均持仓周期。
- 回测中的常见陷阱 (必须避免):
- 前视偏差 (Lookahead Bias): 在回测的某个时间点,使用了当时尚未发生的未来信息。例如:
- 使用了当天收盘价做出的交易决策,但在当天开盘或盘中就执行了交易(应该用T-1或更早的信息做T时刻的决策)。
- 使用了发布日期晚于决策日期的财务数据(如用1月底发布的年报数据做1月初的决策)。
- 对全样本数据进行了标准化或参数估计,然后用于样本内不同时间点的决策(应该是滚动使用截止到当前时间点的数据)。
- 幸存者偏差 (Survivorship Bias): 回测只使用了当前仍然存在于市场上的股票数据,忽略了那些历史上曾经存在但后来退市、被并购的公司。这会高估策略表现,因为差的公司被排除了。必须使用包含已退市股票的数据库进行回测。
- 数据挖掘/过拟合偏差 (Data Snooping / Overfitting Bias): 过度拟合历史数据,找到了看似有效但实际上只是噪音的模式。策略在样本内表现极好,但在样本外(未来实盘)表现很差。解决方法包括:
- 坚持经济学逻辑。
- 严格区分样本内(In-Sample, IS)用于模型开发和样本外(Out-of-Sample, OOS)用于模型验证。
- 进行交叉验证 (Cross-Validation)。
- 对模型复杂度进行惩罚(如正则化)。
- 进行敏感性分析和压力测试。
- 未充分考虑交易成本和冲击: 回测假设能以理论价格成交,忽略或低估了佣金、税费、价差和市场冲击,导致结果过于乐观。应在回测中加入合理的交易成本模型。
- 忽略流动性约束: 假设可以无限量地买卖任何股票,而实际中小盘股或低流动性股票可能无法承载大资金。
- 前视偏差 (Lookahead Bias): 在回测的某个时间点,使用了当时尚未发生的未来信息。例如:
- 好的回测实践:
- 使用高质量、干净、包含退市股票的数据。
- 严格模拟实际交易流程,避免前视偏差。
- 包含合理的交易成本和滑点假设。
- 进行严格的样本外测试。
- 不仅关注平均表现,还要分析极端事件和风险暴露。
- 进行多维度归因分析,理解收益和风险的来源。
7.4 结论与总结
本次课我们深入探讨了量化投资策略构建的两个核心支柱:收益率预测模型和投资组合优化。
- 收益预测方面: 我们讨论了从哪里寻找预测变量(传统数据、另类数据),如何用严格的标准(逻辑性、持续性、增量性、稳健性、可投资性、普适性)进行筛选,以及将这些变量转化为具体收益预测的流程和方法(打分法、回归法等)。核心是找到真正有效、稳健且具有逻辑支撑的阿尔法来源。
- 组合优化方面: 我们介绍了优化所需的关键输入(预期收益 \(\mu\) 和风险模型 \(\Sigma\)),强调了两者模型错位的风险及应对。我们对比了不同的优化目标函数(MVO、最小方差、最大多样化、风险平价),理解了它们背后的假设和适用场景。我们还详细讨论了实践中必须考虑的各类约束条件(预算、卖空、头寸、换手、因子暴露、跟踪误差等)以及交易成本模型,并将它们整合进优化框架。核心是将预测转化为风险可控、成本有效、满足现实约束的最优投资组合。
- 实践考量: 我们补充了风险模型的重要性,并强调了严格回测在策略上线前的关键作用,指出了常见的陷阱。
量化投资是一个不断迭代、持续优化的过程。 从因子挖掘、模型构建、组合优化到业绩归因、风险监控,每个环节都需要精细的设计和严格的检验。随着技术的发展(如AI/ML的应用深化)、数据的丰富(更多另类数据的涌现)和市场的演变,这个领域始终充满挑战与机遇。
最终目标是,通过系统化、纪律化的方法,构建能够穿越市场周期、持续创造价值的投资策略。 希望本次讲座能为你理解和实践量化投资提供一个坚实的框架。