大家好,又见面了,我是你们的朋友全栈君。
基于因子模型的选股策略是股票市场量化应用最广泛的模型之一。然而很多时候,使用因子模型在实盘运行的绩效并不理想,究其原因可能是由于因子选择的偏差,市场风格轮动等。但还有一个显著的因素,就是选取因子之间可能存在高度的多重共线性,导致模型对股票价格与市场的解释能力存在很大偏误。
为了在筛选因子之初就避免陷入这样的误区。本文介绍一种VIF(方差膨胀检验)方法,来对因子之间的线性相关关系进行检验,从而帮助投资者们在可以选取到独立性更好的因子,增强因子模型的解释能力。
一、方法介绍
所谓VIF方法,计算难度并不高。在线性回归方法里,应用最广泛的就是最小二乘法(OLS),只不过我们对每个因子,用其他N个因子进行回归解释。
其中有一个检验模型解释能力的检验统计指标为R^2(样本可决系数),R^2的大小决定了解释变量对因变量的解释能力。而为了检验因子之间的线性相关关系,我们可以通过OLS对单一因子和解释因子进行回归,然后如果其R^2较小,说明此因子被其他因子解释程度较低,线性相关程度较低。
注:之所以不使用协方差计算相关性是由于协方差难以应用在多元线性相关情况下。给出VIF计算方法:
从上文很容易看出,VIF越高解释变量和因变量之间线性相关性就越强。
二、检验实践
数据来源:聚宽量化平台投资研究板块
选取因子:EPS(每股收益),
ROE(净资产收益率),
market_cap(市值),
pb(市净率),
’net_profit_ratio’(销售净利率),
’gross_income_ratio’,(销售毛利率)
’quick_ratio’,(速动比率)
’current_ratio’(流动比率(单季度))
(后面四个因子来源于聚宽因子库)
时间窗口选取:2012.3.4—2018.7.4
回望频率:两个月检
1. 获取数据:(鉴于篇幅仅展示2012-03-04当日前十支股票相关因子数据)
2. 缺失值检验:(鉴于篇幅仅展示2013-03-04当日检验情况)
返回0代表无缺失值,返回其他数字代表缺失值数量
3. 被检验两两因子间线性相关性预了解(图例,鉴于篇幅仅展示2013-03-04当日检验情况)
案例图表示,各因子对市值因子market_cap的解释能力
蓝色阴影部分,是回归直线斜率95%的置信区间
4. 计算并获取每个时点下被解释因子与其余7个因子之间的回归VIF值,绘制时间序列图
分别是百分比堆积图,和绝对数值图(柱状图)。通过百分比堆积图可以看出,各因子的VIF值全程比较稳定,所以其占据总体的百分比也稳定。柱状图可以看出各因子值细节,各位读者可以去聚宽克隆该研究,即可看到更清晰图片。
5. 全段测试计算时间内,各因子VIF值均值,比较大小(图例)
6. 相比而言quick_ratio这一因子的VIF在窗口期平均值较低,因而这就提示了我们如果在构建因子模型时,采用其余其中因子时可以考虑添加这一因子,增强模型的解释能力。
三、方法总结与体会
使用VIF进行检验的方法主要为,对某一因子和其余因子进行回归,得到R^2,计算VIF,剔除因子中VIF高的因子,保留VIF较低的因子,以此类推,直到得到一个相关性较低的因子组合来增强模型的解释能力。
在实际测试过程中,并非要指定一个VIF阈值,比如某因子的VIF值超过阈值才剔除,而是通过观察所有因子值的VIF值,如果发现该值较大(显著离群),剔除该因子即可。本次我们的几个因子表现都非常出色,VIF值稳定且没有离群较大值,因此,没能找到任何一个需要剔除的因子。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132336.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...