7.4 因子模型
财经评论员经常说“当前市场看好价值型股票”,“市场正在关注盈利增长”,或“投资者正关注通货膨胀数据”。我们应当如何量化这些及其他影响收益率的常见因素呢?
量化金融里有一个非常有名的因子模型(也称套利定价理论,APT),试图捕获影响收益率的各种因素,如盈利增长率、利率、市值等,这些因素被称为“因子”。数学上,可以将N 只股票的超额收益率(收益率减去无风险利率) R 表示为:
R=Xb+u
其中, X 为N × N 的因子风险矩阵, b 为N 维因子收益率向量, u 为N维特有收益率向量。(虽然这一量化模型中的所有变量都与时间有关,但为了简便,这里我们假设都与时间无关。)
“因子风险”、“因子收益率”和“特有收益率”这些术语在量化金融模型中很常见,因此有必要先对这些概念做一些介绍。因子收益率是股票收益率的共同驱动因素,与单个股票无关。因子风险表示对各个共同驱动因素的敏感度。所有不能用共同因子解释的收益率部分就是特有收益率(比如,仅与某只股票有关,可以看做是APT 模型中的随机噪声部分)。假设每只股票的特有收益率与其他股票的特有收益率之间是不相关的。
我们通过Fama-French 三因子模型( Fama and French, 1992 )这样一个简单的因子模型来说明。这一模型假定股票的超额收益率只与三个因子风险线性相关:股票的贝塔值(相对市场指数的敏感度)、市值、账面市值比率。对于不同股票或是不同时间段,这三个因子风险都是不同的。(常常将因子风险标准化,使得所有股票的因子风险的均值为0 ,标准差为1 。)
现在,我们已经知道如何计算因子风险,那么因子收益率和特有收益率呢?我们无法直接计算因子收益率和特有收益率,必须用股票的超额收益率对因子风险进行多元线性回归,来得到因子收益率的估计值。注意,每只股票代表线性回归上的一个数据点,我们必须对每一个时间段单独做线性回归,如果需要多个时间段上的均值,可以将所有这些时间段上的值汇总成一个训练集,再对其做一次回归。
如果对Fama-French 三因子模型进行线性回归来拟合多个时间段的数据,你会发现市值因子收益率通常是负的(意味着小盘股的收益率通常高于大盘股),账面市值比率因子收益率通常是正的(意味着价值型股票的收益率通常高于成长型股票)。由于大部分股票的业绩与市场指数是正相关的,贝塔因子收益率也是正的。
Fama-French 模型并非因子模型的唯一选择口事实上,你可以在模型中引入更多因子。例如,可以选择权益收益率作为一个风险因子,还可以选择股票收益率与基准利率的相关性作为另一个因子风险。你可以选择任意数量的经济的、基本面的或技术的因子。选择的因子风险是否合理将决定因子模型能否充分解释股票的超额收益率。如果因子风险(或者说整个模型)选择得不恰当,线性回归将会产生显著的特有收益率,并且拟合方程的R2 统计量将会很小。根据专家( Grinold and Kahn, 1999 )的建议,1 000 只股票的月度收益率和50 个因子之间一个好的因子模型, R2 应当在30% ~40% 之间。
这些因子模型看起来好像只能解释历史数据,也就是说给定历史收益率和因子风险,可以计算出历史时间段的因子收益率。但是,这些历史的因子收益率对我们的交易有何用处呢?事实上,因子收益率通常比个股收益率更稳定。换句话说,它们具有“惯性”。因此,可以假设它们的值从当期(从回归得到)到下一期保持不变。如果真是这样,只要因子风险选择得当并且时变的特有收益率不显著,就可以预测超额收益率。
这里需要做一点澄清。尽管我之前说,如果因子收益率具有惯性,因子模型就能够用于预测(因此也就能够用于交易),但并不意味着因子模型不能用于股票收益率的均值回归。实际上,因子风险可以用于均值回归。如果股票收益率是均值回归的,前一期的收益率为负值,则相应的因子收益率就会是正值。
如果你想建立一个基于基本面因子的交易模型,这里可以提供一些能够获取历史因子数据的供应商:
? Capital IQ: www. capitaliq. com
? Compustat: www二compustat. com
? MSCI Barra: www.mscibarra.com
? Northfield Information Services· www.northinfo.com
? Quantitative Services Group: www.qsg.com
例7.4 因子模型举例:主成分分析
我之前提到的因子风险主要包括经济的(如利率〉、基本面的〈如账面市值比率〉和技术的〈如前期收益率)。获得一个包含大量股票的投资组合因子风险的历史数据,并用于对因子模型进行回测,对于独立交易员来说是非常昂贵且不切实际的。(那些准备购买数据的人,可以参考正义中的名单。〉不过,有一种因子模型,其构建只依赖于历史收益丰。这个方法叫做主成分分析( PCA )。
用主成分分析构建因子风险和因于收益率,必须假设因子风险在估计的时间段内是不变的〈时间独立)。〈这排除了表示均住回归或惯性的因子,因为这些因子风险都与前期收益卒有关〉。支重要的是,如果假设因子收益率之间“不相关”,协方差矩阵bbT 就是对角矩阵。如果用协方差矩阵RRT 的特征向量作为APT 方程R=Xb+u 中矩阵X 的列向量,可知bbT 的确是对角矩阵,并且矩阵RRT 的特征位正好就是因子收益率b的方差。但是,如呆因子数量与股票数量相等,我们就不需要使用因子分析了,因为只要选取几个具有较大特征值的特征向量就能构成矩阵X。特征向量的个数是一个需要优化的交易模型参数。
下面的MATLAB 程序〈可从epchan. com/book/ example7 _ 4. m 下载)展示了一个对S&P600 小盘股使用主成分分析的可能交易策略。这一策咯假设因子收益率具有惯性,即从本期到下期,因子收益率的值保持不变。因此,可以买入基于这些因子的期望收益率最高的股票,卖出期望收益率最低的股暴。如果发现这一策略的乎均收益率为负,表明对收益率具有惯性的假设是不合适的,或者策咯的特有收益率太大了以至于笨咯失效。
clear;
%使用回望交易日作为估计区间(训练集〉,以此来决定因子风险
%回望期交易日为252 天,因子5 个
%交易策略为:购买下一个交易日期望收益率最高的50 只股票
topN=50;
%选用SP600 小盘股做测试(此MATLAB 二进制输入文件包含交易日,
股票,开盘价,最高价,最低价,收盘价〉
load('IJR 20080114’>;
mycls = fillMissingDa ta (cl) ;
positions Table= zeros( size( cl>
% dailyret 的行是在不同时间段上的观察值
dailyret= (mycls- lagl (mycls)) /lagl (mycls);





因子模型在实际交易中的业绩如何呢?其实这主要取决于所使用的因子模型。但总体上看,基本面和宏观经济因子主导的因子模型有一个主要缺陷:假设投资者始终会用相同的标准对公司进行估值。换句话说,因子收益率必须具有惯性,模型才会有效。
例如,虽然价值(账面市值比率)因子的收益率通常是正的,但有时候会是负值,如20 世纪90 年代后期的互联网泡沫期间, 2007 年8 月和12 月,由于投资者偏好成长性股票的原因。就像《经济学家》报道的那样,成长型股票在2007 年受到追捧的一个原因就是相对于价值型股票的溢价已经大幅度缩小了( Economist, 2007的。另一个原因是美国经济增长的放缓,使得投资者倾向选择那些盈利能够持续增长,而不是那些受经济衰退所拖累的股票。
因此,在技资者的估值方法发生改变的这段时间内,因子模型也很可能出现大幅度挫跌,即使是很短的一段时间。不过话说回来,对于任何隔夜持仓的交易模型来讲,这是个常见的问题。