前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习在统计套利中的应用

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

作者头像
量化投资与机器学习微信公众号
发布2018-01-29 11:21:37
2.3K0
发布2018-01-29 11:21:37
举报

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

1. 简介

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

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

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

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

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

2. 线性回归

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

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

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

图1:100只成分股线性回归的残差

从图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选择出来的重要因子,这可能会严重损害我们方法的有效性。为了实现一个系统的方法,持续学习可能是一个值得尝试的办法,根据最新信息更新我们的特征集。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化投资与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档