APP下载

基于AdaBoost-ElasticNet的套利算法

2019-05-07高波涌孙建明

中国计量大学学报 2019年1期
关键词:套利股价股票

李 兵,高波涌,孙建明,余 翠

(1.中国计量大学 信息工程学院,浙江 杭州 310018;2.中国计量大学 经济与管理学院,浙江 杭州 310018)

随着我国金融创新的推进和计算机技术的飞速发展,量化交易这一证券投资方式已经具备了较成熟的发展条件。近年来,配对交易作为套利算法的一种,在我国股市投资中崭露头角。套利算法中的配对交易是一种经典的量化交易策略,属市场中性策略。配对交易的具体思想是从市场上找出历史股价走势相接近的股票进行配对,当配对的股票价差偏离历史均值时,则做空高股价股票的同时做多低股价股票,等待它们恢复到之前的均衡关系,并由此赚取两只股票价格收敛过程中的收益。国外的配对交易通常建立在股市可以做空的机制下,而在我国目前股票还不能卖空,但我国融资融券和股指期货的推出使得配对交易成为了可行且有效的证券投资策略。

尽管套利算法中的配对交易思想非常简单,但由于其收益波动性小、稳定且与市场无关等特性,在投资界被广泛应用。配对交易的核心点在于找到高度相关的股票对以及股票对股价之间存在着的数量关系,同时这也是配对交易的困难所在。目前,传统的配对交易主要有四种方法,包括相关系数、协整法[1]、随机价差法[2]以及最小距离法[3]。在国内的研究中,王春峰等[4]基于一个衡量股票间价格差异的指标进行了股票组合配对。王春丽等[5]以相对价差代替绝对价差作为交易标的进行统计套利配对交易。但这些股票配对方法都假定股票对满足特定的模式,这是一个很大的限制。实际中股票对之间的价格关系存在多种可能,不能以偏概全,这些方法寻找到的股票对可能只是其中的一部分。而且通常的配对交易方法只能用于寻找两只股票之间的线性关系,而对于多只股票之间的复杂关系往往无能为力。多股票之间的配对交易研究在国内寥寥无几。殷蕾等[6]将配对交易推广到多股票上,提出了一种基于协整的多股票配对交易方法,相较于一直持有股票组合可以获得超额收益。叶映彤等[7]使用栈式自动编码器构建一个能够根据股票价格相关性预测股票价格的模型,并生成一个完整的量化交易算法。

针对上述问题,本文将股票的基本面与量化方法结合,引入聚类的思想,使用K-means++算法在套利配对交易选择股票对时打破行业的限制,从而发现被忽略的但可能存在配对机会的股票。然后在聚类的结果簇内,本文提出使用AdaBoost-ElasticNet算法来替换传统的配对交易方法,来挖掘多只股票股价之间存在着的套利机会,形成一种新的套利算法。此外,本文使用同花顺MindGo量化平台进行回测来验证这种套利算法的有效性和实战价值。

1 相关理论

1.1 K-means++算法

在聚类问题中,K-means算法是将数据集划分为K个簇,每个簇Cj的中心为cj(j=1,2,…,K)。在划分的过程中,K-means算法的目的是找到K个簇中心使得聚类所得的划分簇最小化平方误差

(1)

K-means算法的初始簇中心是在数据集中随机选取的,它只能找到局部最优。K-means++算法[8]是针对这一问题的改进算法,K-means++算法在选取第n+1(0

1.2 Elastic-net算法

Elastic-net算法[9]是一种联合Lasso的L1正则化项和Ridge的L2正则化项作为惩罚项的线性回归模型,起到了平衡模型稀疏性和非稀疏性的作用——减少了由于稀疏性所带来的模型泛化能力不足与信息丢失的情况,同时缓解了非稀疏性模型的解释性差和信息冗余的情况。

Elastic-net回归系数可以表达为

(2)

式(2)中,Pα(w)是Elastic-net惩罚项,并且

(3)

λ和α均是非负正则化参数.当α为0时,式(2)是Ridge回归;当α为1时,式(2)是Lasso回归。

1.3 AdaBoost算法

AdaBoost算法[10]是最具代表性的提升算法。AdaBoost算法的主要思想是通过迭代每次学习一个基学习器,每次迭代中,提高那些被前一轮学习器预测相对误差较大数据的权重,而降低那些相对误差较小数据的权重。

对于回归任务,根据第m次迭代的每个样本相对误差emi计算基学习器的权重系数αm,同时对训练样本的权重分布进行更新,如式(4)和(5):

(4)

(5)

式(5)中,Zm是规范化因子,wmi是第m次迭代时每个样本的权重,N是数据集样本数。

最后,根据迭代完以后的基学习器权重系数对基学习器进行线性组合,得到最终的强学习器G(x)如式(6):

(6)

式(6)中,g(x)是所有αm·Gm(x),m=1,2,…,M的中位数,Gm(x)是每轮迭代学到的基学习器。

2 基于AdaBoost-ElasticNet的多股票配对交易策略

2.1 基本思想

传统套利算法中配对交易大多是在证券市场从同行业中找出历史股价走势相近的两只股票进行配对,当配对股票的价差偏离历史均值时,预期价差会恢复正常,所以对这两只股票进行多空建仓,买入价格较低的股票,卖出价格较高的股票,等待两只股票的价差恢复历史均值时反向平仓,由此赚取股票价差收敛的收益。

本文基于AdaBoost-ElasticNet的套利算法思想如图1。首先,选取沪深300成分股作为股票池,获取估值、利润、成长和运营这四大类财务因子数据作为股票的量化指标。同时,为避免偶然性,选取多年的财务数据。再通过股票财务数据对股票进行K-means++聚类。然后,在经过K-means++聚类得到的某个簇内选择一只股票作为目标股票,假设其股价序列为Y,簇内除了目标股票以外所有其他股票的股价序列为(X1,X2,…,Xn),如果能找到一个函数f使得Y≈f(X1,X2,…,Xn),那么可以将f(X1,X2,…,Xn)视作一只与目标股票Y组成一个股票对的虚拟股票Y′。最后,参考配对交易的思想对该股票对进行套利。

图1 基于AdaBoost-ElasticNet的套利算法Figure 1 An arbitrage algorithm based on AdaBoost-ElasticNet

在这里,经分析和实验后本文提出使用AdaBoost-ElasticNet算法来描述Y与(X1,X2,…,Xn)之间的映射关系。AdaBoost-ElasticNet算法的主要思路是选择Elastic-net算法作为AdaBoost的基学习器,通过一系列的提升迭代,反复学习得到大量基于Elastic-net算法的基学习器,最后通过对学到的基学习器进行线性组合得到最终的强学习器。

2.2 数据处理

本文选取了2010年4月16日的沪深300成分股作为研究对象,剔除了在2008年4月16日后上市和在2018年4月16日前退市的18只股票,获取这些股票2010年4月16日至2016年4月16日这7年的财务数据作为聚类原始数据集,获取2010年4月16日至2018年4月16日每个交易日的股票收盘价来发掘股票股价之间的数量关系。其中2010年4月16日至2016年4月16日的股价数据为训练数据,2016年4月17日至2018年4月16日的股价数据为测试数据。本文上市公司财务数据和股票价格数据来源于同花顺。

由于披露出来的上市公司财务数据存在缺失,因此,本文剔除了缺失超过三分之二的财务因子,用平均值填补缺失少1/3的财务因子,得到的数据集中特征共297个。

另外,各财务因子数据的量纲不同以及不同股票股价范围不同,因此需要对数据进行标准化处理。本文使用确保每个特征均值为0、标准差为1的z-score标准化处理:

(7)

式(7)中,x为原始数据,x*为标准化后的数据,μ是原始数据的均值,δ是原始数据的标准差。

2.3 交易方法

在传统的套利配对交易中,开仓时会买入股票对中股价较低的,卖出股价较高的股票,平仓时反向操作。但在本文套利算法中,我们会得到一个关于目标股票Y的虚拟股票Y′,不存在一种方法可以在实际交易中构建出Y′,更无法买卖Y′,因此需要采用不同于传统配对交易的交易手段。以下是一些可行的交易方法。

1)当Y和Y′价格出现偏差时,若Y

2)可以根据Y′的趋势来交易Y来获取盈利。当预测Y′上涨时,买入目标股票;当预测Y′下跌时,卖出目标股票。如果未来Y与Y′向同一个方向变化,那么就会盈利。

3 实验与回测

3.1 聚类分析

本文在对筛选后的282只股票进行K-means++聚类时采用的是自从2010年4月16日到2016年4月16日共7年的财务数据,数据中特征维相较于样本维较大。因此,本文在对股票进行K-Means++聚类分析前使用主成分分析(Principal component analysis, PCA)来剔除数据中的冗余信息,降低聚类分析对异常点的敏感度,从而提高聚类的准确率和效率。本文在做主成分分析时保留了原始数据集85%的信息,数据特征维度从297降到45,经此方法有效降低了聚类数据集的维度。

在确定K-Means++聚类的K值时,本文参考了申银万国行业(以下简称申万)分类标准。282只股票共被划分为22个申万一级行业,59个申万二级行业,因此本文在15~70范围内通过Elbow method[11]确定K值为42,即282只股票被分为42个簇。

3.2 预测能力

本文提出的套利算法有效且能盈利的关键点在于预测得到的Y′是否与目标股票Y呈现类似的变动趋势。本文采用均方根误差(Root mean square error, RMSE)和平均绝对百分比误差(Mean absolute percentage error, MAPE)来衡量算法预测得到的Y′与Y的变动趋势差异.RMSE和MAPE的值均是越小越好。

(8)

(9)

在聚类得到的42个簇中,有38个簇内的股票数量较少,经实验,这些簇不适用本文策略。在剩余的4个簇中,实验发现,在簇中选取一只股票作为目标股票的可行方法是,该簇内要有半数以上的股票与该股票的股价序列相关性大于0.8。

本文选取含有股票数量最多的一个聚类结果簇来挖掘该簇内股票股价中蕴含的套利机会。被选择的簇内有88只股票,本文在簇内选取的符合条件的目标股票Y是深圳能源(000027),该簇内有46只股票与目标股票相关性在0.8以上。

为了挖掘多股票股价之间的数量关系,证明本文算法的性能可行性,本文尝试了多种机器学习算法与本文算法对比。本文涉及到的算法参数均通过网格搜索来调节。

决策树以及其他所有基于树的回归模型都不能外推(extrapolate),也不能超过训练数据范围之外,而本文的套利算法研究基于历史数据,这其中隐含了时序关系,因此一旦未来某种股票的股价一直上涨或下降偏离了该股票历史数据范围且不再恢复,那么该套利算法将会失效。所以决策树以及其他所有基于树的模型均不能挖掘其中的数量关系。

将本文AdaBoost-ElasticNet算法分别与基于协整的传统配对交易中使用的普通最小二乘法(OLS)、没有经过提升的Elastic-net算法和支持向量机(SVM)算法进行了对比分析,预测能力如图2所示。这四种算法的预测评价指标如表1。

图2 四种算法的预测曲线Figure 2 Forecast curves of four algorithms

算法RMSEMAPEOLS7.057 2108.918 6SVR0.649 18.167 0Elastic net0.257 93.403 5本文算法0.198 02.590 7

实验结果表明基于协整的传统配对交易策略中使用的OLS算法并不能挖掘出本文套利算法中多只股票之间的数量关系。对于本文的问题,SVM算法的预测能力较差,Elastic-net算法有一定的预测能力,但也劣于本文算法。

结合本文套利算法思想和传统方法策略思想上述预测结果存在差异的原因在于:第一,本文套利算法源于传统配对交易策略,但又与之不同,这也正是OLS算法完全不适用而经过正则化的Elastic-net线性回归模型具有预测能力的主要原因;第二,提升方法是进一步提升算法性能的有效手段。

3.3 策略评价

前文给出了针对本文套利算法的交易方法,结合本文算法的预测能力,显然第二种方法是比较适合的,即根据的Y′变动趋势来交易目标股票Y。本文算法在回测中,若预测Y′的上涨幅度超过1%,则买入目标股票Y;若预测Y′下跌,则卖出目标股票Y。

为了了解本文套利算法的收益情况,本文使用了同花顺MindGo中高效快捷的回测环境。同花顺MindGo是一个AI量化交易平台,拥有高质海量的金融数据,最接近真实市场环境的仿真交易平台。在2016年4月16日至2018年4月16日,以10万元为初始资金,对比目标是大盘沪深300指数和一直持有该目标股票。收益率变化曲线如图3。另外,本文套利算法的最大回撤为2.05%,夏普比率为3.13。

图3 收益率曲线Figure 3 Return curves

交易次数是一个可以衡量策略回测结果是否可靠的指标,过少的交易次数往往意味着回测结果不可靠。在图3中,策略收益率曲线中的每一次转折都代表着一次交易。在两年的回测过程中,本文套利算法共触发了78次交易,买入卖出股票各39次。这较好地证明了本文套利算法的有效性,说明了本文套利算法取得的高收益低回撤并不是一次属于运气好的偶然情况。

通过回测结果可以发现本文套利算法的收益不受大盘变化的影响——不管大盘趋势是上涨还是下跌,本文套利算法均可获得非常可观的收益,这显然符合配对交易是市场中性的这一特性。而且本文套利算法在获得显著收益的同时,大大地降低了最大回撤,提高了夏普比率。这表明本文套利算法在提高收益的同时,还可以降低承担的风险,具有较强的实际应用价值。

4 结 论

本文提出了一种基于AdaBoost-ElasticNet的套利算法,其主贡献在于使用K-means++聚类方法来打破传统股票配对交易过程中备选股票对选取时的行业限制,而且运用机器学习算法代替传统配对交易中选择股票对的方法,来寻找更多复杂、隐晦的套利机会。本文的套利算法为配对交易、套利提供了新的思路。从实验结果来看,本文套利算法相较于跟随大盘和一直持有个股可以获得显著的收益,2.05%的低最大回撤和3.13的高夏普比率说明了本文套利方法可以降低风险,这些表明了本文套利算法具有较强的实战价值。

当然,本文套利算法还存在着值得研究和改进的地方,具体如下。

首先,本文套利算法是通过发掘历史数据的数量关系来对股票进行交易的,这种模式会受到股价剧烈波动的影响。一旦某只股票的股价受到宏观因素等的影响上涨或下跌且不再恢复,那么多只股票之间的数量关系可能不复存在,策略因此失效,需重新挖掘。而且数据波动的干扰会导致算法的预测能力不够。在以后我们通过在线学习(Online learning)来捕捉多只股票之间最新的数量关系,或者使用高频数据来减少时间的跨度,来保证这种套利算法的实时性和有效性。

其次,并不是所有的股票都可以挖掘出这种数量关系,而且满足条件的股票并不是一直处于盈利状态,可能存在亏损。因此,在实际中,我们需要找出所有满足条件的股票进行资产组合,通过持有资产的合理搭配,使得在保证收益的同时,又可以进一步降低投资风险。

最后,由于我国股市的T+1制度,当日买进的股票需要等到下一个交易日才能卖出,因此该套利算法在运行的过程中会错失一些交易机会导致收益减少。而期货市场是T+0制度,因此在以后的工作中,我们会通过迁移学习(Transfer learning)将本文套利算法思想应用到股指期货中。

猜你喜欢

套利股价股票
期货套利交易浅谈
盘中股价升跌引起持股者情绪变化
牛股盘中冲高回落尾市拉涨停行为解读
我国股指期货套利策略研究
我国股指期货套利策略研究
无套利定价理论及未来研究方向
基于协整的统计套利在中国股票市场的实证研究
基于协整的统计套利在中国股票市场的实证研究
本周创出今年以来新高的股票
本周创出今年以来新高的股票