搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 量化投资与机器学习 > 【Matlab量化投资】支持向量机择时策略

【Matlab量化投资】支持向量机择时策略

量化投资与机器学习 2017-11-29

推出【Matlab量化投资系列】

机器学习

所谓机器学习,其实就是根据样本数据寻找规律,然后再利用这些规律来预测未来的数据(结果)。

但是,直到今天,机器学习也没有一种被大家广泛认同的理论框架产生,这个也是机器学习被大家诟病的原因之一:它是没有理论基础的。


目前机器学习的方法大概可以分为以下几种:

1、经典的参数统计估计方法:基于传统统计学,需要已知的样本分布形式,局限性比较大。

2、经验非线性方法:利用已知样本建立非线性模型(如人工神经网络),克服了传统参数估计方法的困难,但缺乏统一的数学理论。

3、统计学习理论(SLT):专门研究小样本情况下机器学习规律的理论,核心概念是VC维概念,解决了神经网络结构选择、局部极小点等问题。支持向量机(SVM)就是基于这一理论产生的。


   SVM支持向量机择时策略


支持向量机

支持向量机是用来解决分类问题的。

先考虑最简单的情况,豌豆和米粒,用晒子很快可以分开,小颗粒漏下去,大颗粒保留。用一个函数来表示就是当直径d大于某个值D,就判定为豌豆,小于某个值就是米粒。

d>D, 豌豆;d<D, 米粒


在数轴上表现为d左边就是米粒,右边就是绿豆,这是一维的情况。

但是实际问题没这么简单,考虑的问题不单单是尺寸。


一个花的两个品种,怎么分类?

假设决定他们分类的有两个属性,花瓣尺寸和颜色。单独用一个属性来分类,像刚才分米粒那样,就不行了。这个时候我们设置两个值:尺寸x和颜色y。

我们把所有的数据都丢到x-y平面上作为点,按道理如果只有这两个属性决定了两个品种,数据肯定会按两类聚集在这个二维平面上。

我们只要找到一条直线,把这两类划分开来,分类就很容易了,以后遇到一个数据,就丢进这个平面,看在直线的哪一边,就是哪一类。

例如:x+y-2=0这条直线,我们把数据(x,y)代入,只要认为x+y-2>0的就是A类,x+y-2<0的就是B类。


以此类推,还有三维的,四维的,N维的属性的分类,这样构造的也许就不是直线,而是平面,超平面。

例如:一个三维的函数分类 :x+y+z-2=0,这就是个分类的平面了。


有时候,分类的那条线不一定是直线,还有可能是曲线,我们通过某些函数来转换,就可以转化成刚才的那种多维的分类问题,这个就是核函数的思想。

例如:分类的函数是个圆形x^2+y^2-4=0。这个时候令x^2=a; y^2=b,还不就变成了a+b-4=0 这种直线问题了。


这就是支持向量机的思想。

机的意思就是算法,机器学习领域里面常常用“机”这个字表示算法。


支持向量意思就是数据集种的某些点,位置比较特殊,比如刚才提到的x+y-2=0这条直线,直线上面区域x+y-2>0的全是A类,下面的x+y-2<0的全是B类,我们找这条直线的时候,一般就看聚集在一起的两类数据,他们各自的最边缘位置的点,也就是最靠近划分直线的那几个点,而其他点对这条直线的最终位置的确定起不了作用,所以我姑且叫这些点叫“支持点”(意思就是有用的点),但是在数学上,没这种说法,数学里的点,又可以叫向量,比如二维点(x,y)就是二维向量,三维度的就是三维向量(x,y,z)。所以 “支持点”改叫“支持向量”,听起来比较专业,NB。


所以就是”支持向量机了。


当然了,SVM的实际理论要复杂的多,如果大家有兴趣,就自行去搜索一下参考资料来看啦,由于篇幅关系,这边就不赘述了。


   核函数分类


目前应用最多的四类核函数分别为:线性核函数、多项式核函数、高斯核函数和Sigmoid核函数。

选择不同的核函数和参数,SVM的性能会有很大的差异,因此核函数及其参数的选择是SVM理论和应用研究中的一个重要课题。

 

SVM看上去是比较复杂,但是在实际应用当中还是比较简单的,因为Matlab本身就已经提供了SVM的工具箱(函数),我们直接调用就可以了,当然,大家也可以自行去安装一些其他SVM的工具箱来实现。

 

那下面我们就开始编写策略啦~

小编所使用的数据、策略回测、交易等等都是来自于国泰安量化终端Quantrader。而小编使用的策略编写语言是Matlab,实现策略不要太简单。


   策略简介


订阅中证800指数和相应的成分股,使用了日频最高价、最低价、收益率、成交金额、营业收入增长率和次日停牌因子等数据。

策略流程图如下:

【Matlab量化投资】支持向量机择时策略

   策略参数配置


根据之前提到的订阅的交易代码和数据,使用Quantrader可以直接配置如下:

【Matlab量化投资】支持向量机择时策略

【Matlab量化投资】支持向量机择时策略

   策略主程序


数据准备好了之后,我们就可以开始码代码啦。

1、训练分类器:

【Matlab量化投资】支持向量机择时策略

2、预测:

【Matlab量化投资】支持向量机择时策略

3、交易下单:

【Matlab量化投资】支持向量机择时策略

   策略回测


策略写完了当然要用历史数据回测看看绩效。同样的,使用Quantrader,完成回测。

【Matlab量化投资】支持向量机择时策略

从过去3年半的绩效来看,这个策略年化收益约50%左右,夏普达到了2。

【Matlab量化投资】支持向量机择时策略


完整版源代码请点击阅读原文


关注者


从1到10000+


每天我们都在进步


阅读量前10文章

No.01

No.02

No.03

No.04

No.05

No.06

No.07

No.08

No.09

No.10


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《【Matlab量化投资】支持向量机择时策略》的版权归原作者「量化投资与机器学习」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注量化投资与机器学习微信公众号

量化投资与机器学习微信公众号:ZXL_LHTZ_JQXX

量化投资与机器学习

手机扫描上方二维码即可关注量化投资与机器学习微信公众号

量化投资与机器学习最新文章

精品公众号随机推荐