股票多因模的归验

转 股票多因子模型的回归检验

作者:石川,量信投资创始合伙人,清华大学学士、硕士,麻省理工学院博士;精通各种概率模型和统计方法,擅长不确定性随机系统的建模及优化。知乎专栏:https://zhuanlan.zhihu.com/mitcshi。

**摘要:**收益率均值和因子暴露在截面上的关系就是多因子模型研究的问题。本文讨论一些平时在使用多因子模型时遇到的常见问题,如截面回归 vs 时序回归、使用 portfolio returns 和宏观经济指标作为因子有什么不同、以及因子暴露应该如何确定等。

引言:
这是迄今为止我写的最重要的文章,没有之一。

本文的题目是股票多因子模型的回归检验。说它重要,是因为在多因子模型被用于资产定价(选股)越来越普及的今天,很多人不一定搞清楚了多因子模型中常见的时间序列回归、截面回归之间到底有什么区别,以及它们在本质上又是何其相似;不一定搞清楚在使用多因子模型给资产定价时,需要关注的 statistical tests 目标到底是什么;不一定搞清楚在回归残差存在时序或截面相关性时,模型参数的 standard errors 可能完全是不准确的以至于给出错误的推断……

本文旨在讨论一些平时在使用多因子模型时可能遇到的各种困惑(比如什么时候用截面回归、什么时候用时序回归;使用 portfolio returns 作为因子和其他比如宏观经济指标作为因子有什么不同等)。由于篇幅有限,我会把写作重点放在对核心概念的解读上。此外,在本文中还会涉及对 Barra 模型的一些思考。

文章的最后一节将会安利写作时使用的主要参考文献(下文中对于时序和截面回归的讲解、以及对 Fama-MacBeth 回归的说明来自 John Cochrane 的经典教材 Asset Pricing 以及他在芝加哥大学的同名网上课程的相关部分),感兴趣的小伙伴在阅读本文后可以进一步参考。

最后一个小建议:请在一个能静下心来思考的心境下和环境中阅读此文。

1.多因子模型的回归测试

多因子模型是 Asset Pricing(资产定价)的一种常见方法(其他的方法还包括 consumption-based model 等)。一个多因子模型(假设 K 个因子)的表达式如下:
0_1535510129126_360截图20180829103516774.jpg

其中 R_i 代表股票 i 的超额收益;β_i 为股票 i 的 K × 1 阶因子暴露(factor exposure,也称因子载荷 factor loading)向量;λ 为 K × 1 阶因子收益率均值向量;E[.] 为数学求期望公式。

多因子模型研究的核心问题是股票的(超额)收益率期望在截面上(即不同的股票之间)为什么会有差异 —— 根据模型,如果一支股票在因子上的暴露(β_i)高,则它的期望收益(E[R_i])也应该更高。

“ The central economic question is why average returns vary across assets; expected returns of an asset should be high if that asset has high betas or risk exposure to factors that carry high risk premia.”

虽然本文才刚开始,不过让我们停一停,take a break。我想再强调一下上面这句话:多因子模型研究的是个股收益率均值在截面上(cross-sectional)的差异。我们不关心个股的收益率 R_i 在时间序列上是如何随着每期因子收益率来波动的(这是 model of variance),我们只关心 R_i 的期望E[R_i] 在截面上和对应的 β_i 之间的关系(这是 model of the mean)。

我们选择的因子代表了收益率的一种结构。一旦结构给定后,个股(或者任何一个投资组合)的预期收益率就完全由它在这些因子上的暴露决定了 —— 暴露高,预期收益率就高;预期收益率是因子暴露的线性函数。怎样找到最好的因子结构 —— 即哪些因子使得个股在截面上的预期收益率区分度高 —— 就是因子模型研究的问题。

仍然晦涩?用下面这个图解释一下(因为要做图,所以假设单因子,比如 CAPM 模型)。下图中横坐标为 β_i,纵坐标为 E[R_i],每个点代表一支股票。根据因子模型,每个股票的预期收益率 E[R_i] 和 β_i 成正比。图中这条直线就代表 E[R_i] = β_i × λ,它的斜率 λ 就是因子的预期收益。由于所有的股票收益率都仅仅是样本数据,因此即便 E[R_i] = β_i × λ 完美满足,在每个样本内,E[R_i] 和 β_i × λ 之间也有残差,正如图中的 α_i 所示。

0_1535510376168_360截图20180829103910351.jpg

因为一共有 N 支股票,因此这张图中的直线反映的是 N 个 E[R_i] 和 N 个对应的 β_i 在截面上的关系 —— 正如前文反复强调的,多因子模型反映的是收益率均值和因子暴露在截面上的关系。

我们最熟悉的因子模型无疑是 CAPM,它因为只有一个市场因子所以是多因子模型的一个特例。人们最早的猜测是市场因子的收益率和个股在该因子上的 β 就可以解释截面上不同股票收益率之间的区别。但大量的实证结果显示如果我们把个股的 E[R_i] 和它们针对市场因子的 β_i 画出来,则实际的斜率较模型的结果来说太小了,说明仅仅用单一市场因子无法很好的解释 E[R_i] 在截面上的差别。

这之后,Black、Jensen 以及 Scholes 提出了 Black CAPM,它在 CAPM 的基础上又加入了一个因子,使得这个双因子模型更好的解释 E[R_i] 在截面上的差别。再后来,Fama 和 French 提出了大名鼎鼎的三因子模型,它在市场因子的基础上加入 HML 和 SMB 两个因子。这些努力都是为了能够更好的解释我们在股票收益率数据中观察到的 E[R_i] 在截面上的差别。

拿来一个多因子模型,应该怎么定量的评估它能否很好的解释 E[R_i] 呢?我们应该关注三点:Estimate(估计)、Standard Errors(标准误)、以及 Test(检验),见下表。

0_1535510467267_360截图20180829104052767.jpg

对于截面关系式 E[R_i] = β_i’λ + α_i,我们使用回归分析(既可以通过时序回归、也可以是截面回归,后面会具体讲)确定参数 α、β、λ 的估计值和标准误。只有有了准确的(无偏且相合)估计值和正确的标准误,才能评价因子是否有效(比如正确计算因子收益率 λ 的置信区间,从而判断这个因子是否有风险溢价)。下文会谈到,由于残差 α 在截面以及时序(特别是截面)上有相关性,因此在标准误的计算上必须格外小心。

在上述截面关系式中,α_i 代表了个股 i 的定价错误(pricing error)。如果我们能够在统计上证明所有股票的 α_i 都很接近零,那么这个多因子模型就是很好的模型 —— 这些因子能够较好的解释个股截面预期收益率的差别。因此,多因子模型的回归检验中的重中之重、也是我们唯一关注的 test,就是所有这些 α_i 联合起来是否在统计上足够接近零。

“ We want to know whether all the pricing errors are jointly equal to zero.”

根据上述说明,多因子模型的回归检验可以简单总结成以下几点:

1. 挑选因子,计算个股在这些因子上的暴露 β_i;
2. 找到个股(超额)收益率均值 E[R_i] 和因子暴露 β_i 在截面上的关系;
3. 计算每个个股的定价错误 α_i,联合检验这些 α_i 是否在统计上为零。

无论我们用什么因子(基本面因子、宏观经济因子、技术面因子);无论在确定截面关系时我们采用时序回归还是截面回归

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
产生多音干扰可以使用多个正弦波叠加的方式来模拟。以下是一个简单的 MATLAB 代码示例,产生两个频率分别为1kHz和5kHz的正弦波作为多音干扰并绘制时域图和频谱图: ``` fs = 10e6; % 采样率 T = 1/fs; % 采样间隔 L = 1024; % 信号长度 t = (0:L-1)*T; % 时间向量 s = sin(2*pi*100e3*t); % 基带信号 s_interfere = s + 0.1*sin(2*pi*1e3*t) + 0.1*sin(2*pi*5e3*t); % 叠加多音干扰信号 % 绘制时域图 figure(1); subplot(2,1,1); plot(t, s); xlabel('时间(秒)'); ylabel('幅度'); title('基带信号'); subplot(2,1,2); plot(t, s_interfere); xlabel('时间(秒)'); ylabel('幅度'); title('叠加多音干扰后的信号'); % 绘制频谱图 nfft = 2^nextpow2(L); % FFT长度 S = fft(s, nfft)/L; % 基带信号的FFT f = fs/2*linspace(0,1,nfft/2+1); % 频率向量 S_interfere = fft(s_interfere, nfft)/L; % 叠加干扰信号的FFT figure(2); subplot(2,1,1); plot(f, 2*abs(S(1:nfft/2+1))); xlabel('频率(Hz)'); ylabel('幅度'); title('基带信号频谱'); subplot(2,1,2); plot(f, 2*abs(S_interfere(1:nfft/2+1))); xlabel('频率(Hz)'); ylabel('幅度'); title('叠加多音干扰后的信号频谱'); ``` 在上述代码中,使用 `sin` 函数分别产生1kHz和5kHz的正弦波,并将它们分别乘以 `0.1` 叠加到基带信号上作为干扰信号。使用 `subplot` 函数分别绘制了基带信号和叠加干扰信号的时域图和频谱图。在频谱图中,使用 `fft` 函数对信号进行FFT变换,并使用 `abs` 函数计算幅度谱。在实际应用中,需要根据具体情况进行参数设置和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值