ML系列——主成分策略【附源码】

ML系列——PCA特征组合

PCA方法简介

这个方法使用股票的历史量价数据,在N个股票的横截面上向前追溯M天。在原始的Avellaneda的论文中,他假设所有的横截面都是完全一致的,然而在实践中,这个假设是不靠谱的,比如沪深300的成分股会随着时间的变化而变化。

我们定义股票在任意给定的时间点上t0,往前追溯M+1天的收益率矩阵:

其中Sit代表股票i在时间t上的复权价格,Δt=1/252。因为股票收益的波动性,我们还需要将其进行标准化。

其中:

我们的经验相关系数矩阵定义如下:

在选用沪深300股票池的情况下,ρ的维度是300x300,往往我们有用的数据量要远远小于我们需要估计的参数,在我们沪深300的具体例子里,参数数量是45150。事实上,如果我们考虑用每日收益数据,非常长的数据长度在实际中不一定有意义,市场的波动、股票的相关系数都在变动,那么其中一个选择就是使用滑动数据窗口。

一般比较常用的方法是对相关矩阵进行建模,我们对后验相关矩阵进行SVD分解得到特征值和特征向量,并按照如下顺序排列:

我们的特征向量也按照上述顺序排列:

我们来看下针对2017年沪深300的pca分解,来看下特征数量与方差解释程度的关系:

我们可以看到前三个特征向量解释了超过80%的变异方差

我们称上述这些 λ1,⋯,λm,m<N为显著的特征向量。每一个特征向量,我们都认为它是一个特征股票组合,在组合中每只股票的权重定义如下:

于是,每一个特征组合的收益率为:

们来分别看下前两个特征向量的组合构成,首先是第一个特征组合:

第二个特征组合:

根据论文的解释,特征组合之间的收益是不相关。每一只股票收益都可以被分解并投射到m个特征因子和残差上,于是PCA提供了一种很自然的方式构建风险因子。很容易,我们可以证明相关举证可以分解为一个秩为m的矩阵以及一个满秩的对角矩阵:

其中δij是Kronecker delta,

这意味着我们只需要少量显著的特征向量再加上一个对角的“噪音”矩阵就可以解释市场的总体方差。

策略实现逻辑

现在来介绍下我们的PCA策略实现逻辑

因为PCA是非监督学习,主要是做特征的“映射”,所以我们不需要太长的历史数据,我们选取2016年到2017年底共两年的沪深300股票前复权数据。同时我们采用滚动训练的方式去训练我们的PCA,每次选取6个月的训练数据来训练模型,然后应用在后六个月的测试数据上,大致思路如下图所示:

每个训练期,我们都会更新指数列表,因为数据成分可能在这个期间内发生变化。然后我们还注意到历史越长的数据实际上对未来的影响关系越来越弱,所以我们会对股票收益率进行指数加权,以突出最近的数据权重

最后就是在每个训练周期内,如何去选取特征向量的数量了,因为我们观察到在不同时间周期内,主成分数量对解释变异程度存在比较大的差异。所以我们采取动态调整的方式,我们选取70%的方差变异解释率作为阈值,每次只选取刚好大于70%的特征向量的数量,这样也有助于防止对噪音的拟合。还有一个小细节的就是我们发现在某些情况下,特征向量的绝对值会非常大,这导致我们的特征组合拥有难以置信的组合杠杆,所以我们也对单只股票最大杠杆率做了最高3倍的限制,最终的组合权重是这些被选特征组合的加权,所以总杠杆不会这么高,但是注意,我们最终的特征组合仍然是一个多空组合

下图是我们在训练期上的表现:

总结

本教程在很大程度上是对论文的复现,在实现的过程中也发现并总结了如下一些问题:

1.PCA对数据非常敏感,数据加权、数据长度的选取以及缺失数据的处理都会极大得影响模型结果。

2.特征向量解释称组合权重,在逻辑上存在一定的问题,并且我们的处理方式是全额投资,然而如果特征向量存在加总和为负的情况,也就是特征组合是一个净空头头寸,那么将无法用全额投资的方式去分配权重

3.论文的假设少量的特征向量选取有助于获得超过基准组合,这个在理论上没有依据。

4.特征向量如果作为风险因子,同样会存在上述我说的敏感性问题。

参考文献

《Statistical Arbitrage in the U.S. Equities Market, Marco Avellaneda∗† and Jeong-Hyun Lee∗》

策略完整代码:《ML系列——主成分策略

本文由BigQuant《量化研究每周精选》原创推出,版权归BigQuant所有,转载请注明出处。

宽邦科技
宽邦科技

提供金融行业人工智能平台和服务解决方案,研发了全国首个人工智能量化投资平台BigQuant,拥有全栈人工智能平台和大规模机器学习和深度学习框架与算法,为券商、银行、保险、资管等金融机构以及更多企业提供AI技术方案和业务解决方案,实现机构及企业的AI转型和升级。

入门PCA
5
相关数据
非监督学习技术

非监督式学习是一种机器学习的方式,并不需要人力来输入标签。它是监督式学习和强化学习等策略之外的一种选择。在监督式学习中,典型的任务是分类和回归分析,且需要使用到人工预先准备好的范例(base)。一个常见的非监督式学习是数据聚类。在人工神经网络中,自组织映射(SOM)和适应性共振理论(ART)则是最常用的非监督式学习。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

噪音技术

噪音是一个随机误差或观测变量的方差。在拟合数据的过程中,我们常见的公式$y=f(x)+\epsilon$中$\epsilon$即为噪音。 数据通常包含噪音,错误,例外或不确定性,或者不完整。 错误和噪音可能会混淆数据挖掘过程,从而导致错误模式的衍生。去除噪音是数据挖掘(data mining)或知识发现(Knowledge Discovery in Database,KDD)的一个重要步骤。

异方差技术

异方差(Heteroscedasticity)指一系列的随机变量其方差不相同。 当我们利用普通最小平方法(Ordinary Least Squares)进行回归估计时,常常做一些基本的假设。其中之一就是误差项(Error term)的方差是不变的。异方差是违反这个假设的。如果普通最小平方法应用于异方差模型,会导致估计出的方差值是真实方差值的偏误估计量(Biased standard error), 但是估计值(estimator)是不偏离的(unbiased)

推荐文章
暂无评论
暂无评论~