查看原文
其他

机器学习在统计套利中的应用

2016-04-20 CHINAQIR 量化投资与机器学习

谢谢大家的支持!现在该公众号开通了评论留言功能,你们对每篇推文的留言与问题,可以通过【写评论】给圈主留言,圈主会及时回复您的留言。

查看之前文章请点击右上角,关注并且查看历史消息,谢谢您的支持!


1. 简介

 

在投资领域,统计套利通常是指利用数学模型捕捉定价的无效性从而获利的过程。基本的假设是,价格将向历史平均回归。最常用且最简单的统计套利例子就是配对交易。如果股票PQ属于同一行业或具有相似的特性,我们预期这两只股票的回报是相互跟踪的。因此,如果PtQt分别代表相应的价格时间序列,我们对系统建模如下

其中Xt表示一个均值回复的Ornstein-Uhlenbeck随机过程。

 

在我们感兴趣的许多例子中,漂移项α相比Xt的波动非常小,因此经常被直接忽略。模型显示了一个反向投资策略,当Xt很小的时候,我们可以做多一美元的股票P同时做空β美元的股票Q;反过来,如果Xt很大的时候,我们可以空股票P同时多股票Q

 

这种类型的配对交易机会取决于相似资产对的存在,因此是有限的。在这里,我们对配对交易进行自然延伸,称为指数套利。我们开发的交易系统试图捕捉目标资产与合成人造资产之间的差异。目标资产为伦敦证券交易所上市的iShares FTSE/MACQ;合成人造资产由一个数据流表示,来自于被认为与目标流相关的大量解释流数据集的线性组合。在我们的例子中,我们使用富时100指数的100只股票价格数据来复制目标资产。

 

我们首先对100只成分股做线性回归,选取的时间窗口为20094月到9月的101个交易日。通过主成分分析提取关键因素后,我们对模型进行校准,并将时间窗口切小到60天。使用的是每只股票的收盘价。这里的重点是将股票价格数据分解为系统性部分和非系统性部分,并对非系统性部分进行统计建模。我们同时使用线性回归和支持向量回归,并收集分解后的残余项。最后,我们对残差项建立自回归模型,研究均值回复特征,从而对目标资产生成交易信号。

 

2. 线性回归

 

我们选取2009428日至918日共计101天的数据。我们选择这个时间段的原因是,给定100个特征变量,我们至少需要101个观察变量来训练线性回归模型中的101个参数。为了避免参数的过度拟合,我们只使用101个训练例子。

Pt表示目标资产,Qit表示第i只股票在时间t的数据。线性模型可以表示如下,

Matlab中实现普通最小二乘法算法,我们得到参数θ和训练误差,即残差。

1100只成分股线性回归的残差

从图1中,我们看到,实证误差是可以接受的。然而,当我们用训练集以外的30个样本测试这个线性模型时,推广误差远非令人满意,如图2所示。这意味着我们正面临着过度拟合的问题,即使我们使用了可能的最小的训练集。造成这个问题的主要原因还是参数过多。因此,我们采用主成分分析法来降低模型的维度。

2: 30天检测数据上的推广误差

 

3. 主成分分析(PCA

 

现在,我们使用PCA来分析100只股票。相关矩阵的估计窗口为101天。位于频谱图顶端的特征值与其余大部分具有明显的差异。通过查看图3中相关矩阵的特征值,问题就变得很明显。显然,前20个特征值几乎显示了矩阵的所有信息。

3:相关矩阵的特征值

现在,我们应用验证规则来寻找,到底使用多少个主成分能让我们得到最小的推广误差。考虑到模型维度的降低,我们重置窗口大小到60天以避免过度拟合的问题。对前20大主成分60天训练集的数据建立多元线性回归模型,我们发现,前12大主成分在30天测试数据上得到的推广误差最小。样本外残差如图4所示。

4:前12大主成分在30天样本外数据上测试的推广误差

我们快速回顾这12大主成分在60天训练集上的实证误差。从图5中我们可以看到,残差从数量级上来说不如图1令人满意,但是它成功解释了在使用100只成分股时的残差趋势。因此,通过使用PCA降低模型的维度,我们可以避免参数的过度拟合。接下来,我们将利用样本内主成分回归后的残差生成交易信号。

5:前12大主成分在60天训练集数据上的实证误差

 

4. 支持向量回归(SVR

 

我们对通过主成分分析(PCA)得到的12个特征属性使用支持向量回归(SVR),采用高斯内核并用经验决定内核的宽度、成本和ε(松弛变量)参数。在用Matlab工具箱实现后,从图6和图7的训练误差图和测试误差图中,我们并没有看到这种方法起到了任何改善作用。这里的主要问题是,需要确定合适的SVR参数。

6:对12大主成分在60天训练集上使用SVR得到的实证误差

7:对12大主成分在30天测试集上使用SVR得到的实证误差

 

5. 均值回复过程

 

我们想要对目标资产的价格进行建模,如此以致得到衡量系统偏离程度的漂移项所占的比例,以及向整体行业水平均值回复的价格波动。当观察到价格波动显著偏离均衡时,我们构建一个交易策略。对股票引入一个参数均值回复模型,Ornstein-Uhlembeck过程,

dX(t)被认为一个平稳随机过程的增量,对价格中没有反映在行业中的非系统性波动进行建模,即前一部分中主成分线性回归的残差。注意,增量dX(t)的无条件期望值为0,条件期望值等于

条件期望值,即预期日收益的预测值,正负取决于(m-X(t))的符号。

 

这个过程是平稳的,可以通过一阶自回归模型进行估计。我们使用时间长度为60天的残差,并假设这个参数在整个窗口中是恒定的。事实上,模型显示如下,

其中,

因此,我们得到

 

6. 生成信号

 

我们定义一个标量,称为s-score

s-score度量的是合成残差与单位标准差均衡之间的距离,即在我们的模型中,给定股票距离理论均衡值的距离。根据该领域的实证研究,我们基于均值回复的基础信号为

1)当s < -1.25时,买入iShare FTSE

2)当s > 1.25时,卖出iShare FTSE

3)当s < 0.75时,平掉iShare FTSE的空头仓位;

3)当s > -0.75时,平掉iShare FTSE的多头仓位;

 

基本逻辑是,只有当s-score远离均衡,且只有当我们认为我们检测到满足协整关系的残差出现异常变动时,才会开仓,然后当s-score接近水平0时平仓,因为我们预计大多数股票大部分时间是接近平衡的。因此,我们的交易规则是检测股票的大波动进行交易,并假设这个波动最终将回归平均。图8显示了在训练集中的60天里产生的信号。

8: 60天里的交易信号

 

7. 总结

 

我们注意到在建立线性回归时,PCA有效地帮助了在100个特征属性中进行降维,从而摆脱过度拟合的问题。然而,我们看到,为了有效使用支持向量回归,关于学习SVR参数的技术还有待开发。我们看到,在测试数据(60天数据)上,当数值低的时候买入iShare FTSE,在数据高时卖出iShare FTSE,是具有盈利能力的。另一方面,在未来,非系统性因子可能表现出不规律性,可能导致指数系统性表现不佳或者显著优于PCA选择出来的重要因子,这可能会严重损害我们方法的有效性。为了实现一个系统的方法,持续学习可能是一个值得尝试的办法,根据最新信息更新我们的特征集。


量化投资与机器学习

知识、能力、深度、专业

勤奋、天赋、耐得住寂寞



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存