100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python量化选股策略_【机器学习】第六课:基于SVM的量化选股策略

python量化选股策略_【机器学习】第六课:基于SVM的量化选股策略

时间:2024-07-04 00:55:02

相关推荐

python量化选股策略_【机器学习】第六课:基于SVM的量化选股策略

导语

接触过机器学习或数据挖掘算法的人都应该知道支持向量机(SVM),支持向量机一经提出就得到了广泛应用。本文主要探讨该算法在金融领域量化投资多因子策略上的应用。在这篇文章中,先是介绍了SVM的基本原理,之后会介绍如何利用python的机器学习库(scikit-learn)来编程实现svm多因子选股策略,主要是通过回测实证来帮助大家更深层次的理解SVM在量化投资领域上的应用。

SVM原理

支持向量机主要分为三类:线性可分支持向量机,线性支持向量机,非线性支持向量机。

1、线性可分支持向量机,又称硬间隔支持向量机

一个数据集是线性可分当且仅当存在一个分隔超平面

将数据集完美分隔,如下图所示:

如上图所示,存在一个分隔超平面将训练样本集完闰分开,对应的分类决策函数为:

正如我们所看到的,一个数据集如果是线性可分的,那么就存在无数个分隔超平面可以将其分隔开,如下图所示:

那么如何找到最优的分隔超平面,这里采用的是最大化样本集到分隔超平面的距离,具体推导可参考李航-统计学习方法这本书。这里直接给出结论:

求解带约束的极值问题用拉格朗日乘子法,最终推导公式:

求解得到:

因此就得到了最优分隔超平面:

对应的分类决策函数:

2、线性支持向量机,又称软间隔支持向量机

相对于线性可分支持向量机,线性支持向量机中数据集中有一些特异点(outlier),因些不存在一个分隔超平面将样本集完美分隔,但是除去这些特异点外,又存在分隔超平面该样本集完美分隔开。

这里采用的解决方法是对每个样本引进一个松弛变量,这样线性支持向量机的算法推导公式为:

对应的对偶问题:

最终求解:

这样就可以确定最优分隔超平面与分类决策函数。

3、非线性可分支持向量机

对于线性可分与线性近似可分数据集,我们可以采用线性可分支持向量机与线性支持向量机求解,但现实中,大多数都是线性不可分的情况,那就不得不采用非线性可分支持向量机。它的原理就是将原数据集空间映射到更高维甚至无究维上,使得映射后的数据集在高维(无穷维)空间线性可分。这里映射的技巧就是核函数。

如下图所示,原数据集(左)线性不可分,那么可以通过核函数映射到更高维使其线性可分,如右图所示:

将核函数应用于支持向量机中求解非线性可分问题算法:

求得最优解:

选择其一个满足约束条件的分量,计算

最终分类决策函数:

SVM多因子策略研究与实证

策略思想:以季度为单位,选取一些财务因子作为训练样本,对于类别值,如果未来一个季度涨幅超过5%标记为1,反之为-1,然后用支持向量机算法进行训练,预测结果为1且未持仓则买入,预测结果为-1且已持仓则卖出。

特征因子选取:选取-06-30(半年报)时刻,沪深300成分股的市盈率、市净率、总市值、流通市值、净资产收益率roe加权、总资产报酬率roa、销售净利率、净利润/营业总收入、息税前利润/营业总收入、基本每股收益同比增长率、每股经营活动产生的现金流量净额同比增长率、营业总收入同比增长率、净利润同比增长率、经营活动产生的现金流量净额同比增长率、应收账款周转天数、应付账款周转天数、存货周转率、应收账款周转率、应付账款周转率、流动比率、速动比率共21个财务因子。

数据标准化:数据标准化方法有很多,本文采用高斯预处理方法,即每个特征因子减去它对应的均值再除以它的标准差((x–x.mean)/x.std)。

参数优化方法:本文使用交叉验证的方法对惩罚参数与径向基函数(高斯核函数)参数Sigma进行优化筛选。交叉验证方法具体为选取的训练样本集分为K份,依次选取其中的K-1份作为训练集,剩下一份作为验证集,通过算法在验证集上的表现进行打分,再对打分进行取平均作为此参数对应的分数,依次选择不同的参数进行打分,确定最终的参数。

回测结果:

初始资金:10000000

回测频率:每天

回测日期:-03-01 — -03-01

资金曲线图如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。