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

推出【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指数和相应的成分股,使用了日频最高价、最低价、收益率、成交金额、营业收入增长率和次日停牌因子等数据。

策略流程图如下:

策略参数配置

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

策略主程序

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

1、训练分类器:

2、预测:

3、交易下单:

策略回测

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

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

原文发布于微信公众号 - 量化投资与机器学习(ZXL_LHTZ_JQXX)

原文发表时间:2016-12-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

时间序列异常检测 EGADS Surus iForest

时间序列异常检测 (原文链接:http://wurui.cc/tech/time-series-anomaly-detection/) 本文总结了我在时间序列异...

1.6K40
来自专栏AI科技评论

选中自然语言处理任务的连续表达 | 微软IJCAI2016演讲PPT

微软研究院在IJCAI2016的Tutorial上讲述了自己将深度学习、深度神经网络应用于不同场景的情况,之前第二部分提到了深度学习在统计机器翻译和会话中的应用...

31850
来自专栏企鹅号快讯

TensorFlow 资源大全中文版

编译:伯乐在线 - Yalye,英文:jtoy http://blog.jobbole.com/110558/ jtoy 发起整理的 TensorFlow 资源...

291100
来自专栏IT派

教程 | 预测电影偏好?如何利用自编码器实现协同过滤方法

推荐系统使用协同过滤的方法,通过收集用户的偏好信息来预测特定用户的兴趣。协同过滤技术的基本假设是,如果用户 A 对某个问题与人 B 有相同的口味或意见,那么 A...

13130
来自专栏用户2442861的专栏

循环神经网络——实现LSTM

网络回忆:在《循环神经网络——介绍》中提到循环神经网络用相同的方式处理每个时刻的数据。

24020
来自专栏磐创AI技术团队的专栏

谷歌发布迄今最大注释图像数据集,190万图像目标检测挑战赛启动

18930
来自专栏AI科技大本营的专栏

多图|入门必看:万字长文带你轻松了解LSTM全貌

作者 | Edwin Chen 编译 | AI100 第一次接触长短期记忆神经网络(LSTM)时,我惊呆了。 原来,LSTM是神经网络的扩展,非常简单。深度学...

34670
来自专栏Python中文社区

Python机器学习工具:Scikit-Learn介绍与实践

Scikit-learn 简介 官方的解释很简单: Machine Learning in Python, 用python来玩机器学习。 什么是机器学习 机...

22370
来自专栏机器之心

深度 | 从数据结构到Python实现:如何使用深度学习分析医学影像

选自Medium 作者:Taposh Dutta-Roy 机器之心编译 运用深度学习技术进行图像和视频分析,并将它们用于自动驾驶汽车、无人机等多种应用场景中已成...

83490
来自专栏机器之心

教程 | 预测电影偏好?如何利用自编码器实现协同过滤方法

18530

扫码关注云+社区

领取腾讯云代金券