随着计算机技术的发展,投资者不再只局限于传统投资策略,机器学习在资本市场得到广泛应用。机器学习的核心是通过机器模仿人类的思考过程以及思维习惯,通过对现有数据的学习,对问题进行预测和决策。目前,机器学习已在人脸识别、智能投顾、自然语言处理等方面得到广泛应用。
机器学习可以分为两类,一类是无监督学习,另一类是监督学习。监督学习是指按照已有的标记进行学习,即已经有准确的分类信息。比如二分类问题,一类是“好”,另一类是“不好”,这种明确地指出分类基准的问题。这类模型包括:神经网络、决策树、支持向量机等。
无监督学习是指针对未标记过的数据集进行学习。比如聚类问题,没有准确的标准说明应该聚成几类,只有相对概念。这类模型包括:K_means聚类、层次聚类法等。
支持向量机是最典型的一类机器学习模型,常用于解决二分类问题。支持向量机的原理是在一个样本空间内,找到一个平面,将样本数据分为两个部分,即两个分类,这个平面就叫做超平面。
怎样确定超平面?
已知A、B、C三条线均可以将样本空间分为两类,那么问题来了,应该选择哪一个?
SVM模型指出,如果超平面能够将训练样本没有错误地分开,并且两类训练样本中离超平面最近的样本与超平面之间的距离是最大的,则把这个超平面称作最优超平面,即上图中的B平面。两类样本中距离最优超平面的点成为支持向量,支持向量机模型的名字由此得出。
支持向量机背后的数学原理十分优美,但由于推导过程过于复杂,这里不再赘述。总之,支持向量机的核心就是寻找最优超平面。
支持向量机不仅可以解决线性可分问题,也可以解决非线性可分问题。其核心思想是将原始样本点映射到高维空间上,将非线性转化为线性可分,在高维空间中找到满足条件的最优超平面,再映射到低维空间中。
在利用支持向量机进行预测之前,先将数据集分为训练集和测试集。常用的分类方法是将数据及进行8:2分解,0.8部分是训练集,0.2部分是测试集。用训练集训练模型,再用测试集评价模型的准确率等指标。
在利用支持向量机预测时,还有很重要的一步是进行参数优化。SVM的参数包括以下几个。
参数符号 | 参数说明 |
---|---|
C | 罚函数,错误项的惩罚系数,默认为1。C越大,对错误样本的惩罚力度越大,准确度越高但泛化能力越低(泛化能力是指拓展到测试集中的准确率)。C越小,允许样本增加一点错误,使泛化能力提高。 |
Kernel | 核函数,包括linear(线型核函数)、poly(多项式核函数)、rbf(高斯核函数)、sigmod(sigmod核函数)。 |
degree | 当核函数选成多项式核函数时对应的阶数。 |
Gamma | 核函数系数。 |
还有一些其他的参数,因为本示例不对其进行优化,所以这里不再赘述了。
本示例采用网格搜索算法优化参数,训练好的参数为C = 0.6, gamma = 0.001,训练后的准确率为 0.50。(这个准确率虽然看起来很低,但在现实生活中准确率都处于较低水平,这里暂时用这个优化后的参数进行建模。)
第一步:获取原始数据,这里获取2016-04-01到2017-07-30的数据。
第二步:计算SVM模型的输入变量。
x 表示输入的特征值,共7个,分别为:
参数符号 | 计算方法 |
---|---|
x1 | 最新收盘价/15日收盘价均值 |
x2 | 现量/15日均量 |
x3 | 最新最高价/15日均价 |
x4 | 最新最低价/15日均价 |
x5 | 现量 |
x6 | 15日区间收益率 |
x7 | 15日区间标准差 |
y 表示5个交易日后收盘价是否上涨,
参数符号 | 含义 |
---|---|
y = 1 | 表示股价上涨 |
y = 0 | 表示股价下跌 |
第三步:利用训练好的模型预测股价未来走向。若上涨(y=1)则开仓。
第四步:设置止损止盈点。
若已经持有仓位则在盈利大于10%的时候止盈,在星期五损失大于2%的时候止损。
回测时间:2017-07-01 09:00:00 到 2017-10-01 09:00:00
回测初始资金:1000万
回测标的:SHSE.600000
详见:https://www.myquant.cn/docs/python_strategyies/112
设定初始资金1000万,手续费率为0.01%,滑点比率为0.01%。回测结果如下图所示。
回测期累计收益率为7.99%,年化收益率为81.02%,沪深300指数收益率为2.30%,策略收益率远远跑赢指数。策略最大回撤为2.97%,胜率100%。
为了检验策略的稳健性,改变回测时间,得到结果如下。
回测期 | 时长 | 年化收益率 | 最大回撤 |
---|---|---|---|
2017.08.01-2017.10.01 | 2个月 | 81.02% | 2.97% |
2017.08.01-2017.12.31 | 5个月 | 43.68% | 12.16% |
2017.08.01-2018.01.31 | 6个月 | 43.24% | 12.16% |
2017.08.01-2018.08.01 | 12个月 | 39.21% | 13.34% |
2017.08.01-2019.08.01 | 24个月 | 29.95% | 25.10% |
2017.08.01-2020.08.01 | 36个月 | 75.32% | 23.50% |
由上表可知,策略整体收益均大于0,部分时间段收益率超过了50%,策略的最大回撤能控制在一个合理水平内。即使改变回测期,回测结果表现仍然较好,策略表现较为稳健。
注:此策略只用于学习、交流、演示,不构成任何投资建议。