【点宽专栏】SVM带你玩转期货品种

【点宽专栏】SVM带你玩转期货品种

策略概要

SVM支持向量机

SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法(如基于规则的分类器和人工神经网络)都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。

SVM支持向量机量化交易策略

根据MATLAB提供的机器学习SVM支持向量机系列工具包,根据预测标签0和1设计交易信号:信号为0表示做空;信号为1表示做多。在商品期货上,该SVM策略表现一般,在金融期货上,该策略表现各异。其中,在沪深股指上表现最好,年化收益率达24.65%,胜率达54.98%。

策略优化

仅仅使用SVM进行趋势预测得到的胜率或者收益都不是很理想,我们需要增加信号过滤条件来优化该策略,最简单的是增加双均线策略:当5日均线大于30日均线时,过滤做多信号;当5日均线小于30日均线时,过滤做空信号。对策略进行优化之后,策略回测表现有一定提高。其中,策略优化后在沪深股指上表现有:年化收益率为27.76%,胜率高达60%

策略研究

Logistic回归:一种广义线性回归模型

1.1 概念

logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。

假设函数为:
【点宽专栏】SVM带你玩转期货品种

其中x是n维特征向量,函数g就是logistic函数。则函数图像如下:

【点宽专栏】SVM带你玩转期货品种
从而,当我们要判断一个新来的特征属于哪个类时,只需求h_θ (x)即可,若大于0.5,就是y=1的类,反之,属于y=0的类。

1.2 线性分类的一个例子

如下图:
【点宽专栏】SVM带你玩转期货品种
在2维空间中找到一个分类超平面,将空间上的点分类。直线就是一个超平面,将不同类型的两种点分开。
【点宽专栏】SVM带你玩转期货品种

超平面可以用分类函数f(x)=w^Tx+b表示:

当f(x)等于0的时候,x便是超平面上的点;

f(x)大于0的点对应y=1的数据点;

f(x)小于0的点对应y=-1的数据点。

而寻找最合适的超平面,就是使得这条直线离直线两边的数据的间隔最大 (虚线上的点称为支持向量)。

1.3 最大间隔分类器的定义

【点宽专栏】SVM带你玩转期货品种

最大间隔分类器的目标函数可以定义为:max γ
根据间隔的定义有:
【点宽专栏】SVM带你玩转期货品种

该目标函数可以转化为:
【点宽专栏】SVM带你玩转期货品种

从线性可分到线性不可分

2.1 拉格朗日对偶性变换

对于之前的目标函数:
【点宽专栏】SVM带你玩转期货品种

由于求1/ω 的最大值相当于求1/2|ω |^2的最小值,所以上述目标函数等价于:
【点宽专栏】SVM带你玩转期货品种

这是一个凸二次规划问题。

可以通过拉格朗日对偶性变换到对偶变量的优化问题,即线性可分条件下支持向量机的对偶算法,这样做的优点是:一者对偶问题往往容易求解,二者可以自然的引入核函数,进而推广到非线性分类问题。

通过拉格朗日对偶性变换得到的目标函数为(若x_i是支持向量的话,红色部分为0):
【点宽专栏】SVM带你玩转期货品种

2.2 特征空间的隐式映射:核函数

核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数的优点就是它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就是说避免了直接在高维空间中的复杂计算。
【点宽专栏】SVM带你玩转期货品种

多项式核函数:
【点宽专栏】SVM带你玩转期货品种

高斯核函数:
【点宽专栏】SVM带你玩转期货品种

线性核函数:
【点宽专栏】SVM带你玩转期货品种

SVM支持向量机

3.1 概念

支持向量机(support vector machine)是一种分类算法。它通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。

SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法(如基于规则的分类器和人工神经网络)都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。

逻辑模式(logistic)以及决策树模式都是使用直线方法,SVM使用非线性方法。SVM结构流程图如下:
【点宽专栏】SVM带你玩转期货品种

3.2 基于MATLAB的SVM交易策略

MATLAB函数:

SVMstruct=svmtrain(

trainData,

statesData,

‘kernel_function’,

‘rbf’

)

trainData:表示每行代表一个训练样本;

statesData:表示data中每个样本所属种类(只能有两个类);

‘kernel_function’:表示SVM的方法;

‘rbf’:表示’kernel_function’方法的具体实现。

y=svmclassify(

SVMstruct,

trainData(end-lags2+2:end,:)

)

y=1:上涨

y=0:下跌

SVM策略回测

4.1 回测设置

(1)品种设置:单品种交易。

(2)资金分配:固定手数,每次下单1手。

(3)回测时间:20150101- 20180101

(4)回测频率:60分钟

4.2 品种选择

点宽量化平台auto-trader(AT)是一个多品种量化交易平台,它支持期货标的品种交易。目前AT可以获取共48个商品期货品种,与国内市场上的商品期货数量吻合,这些商品期货分别是:上海期货交易所14种、大连商品交易所16种、郑州商品交易所18种。根据品种流动性,我们选择2017年成交量前10的商品期货进行回测。其流动性如下图所示:
【点宽专栏】SVM带你玩转期货品种

如上图,成交量排名前10的有:螺纹钢、铁矿石、豆粕、甲醇、PTA、玉米、热轧卷板、天然橡胶、菜籽粕、镍。

而对于金融期货方面,中金所有5个品种的主力合约,分别为中证、沪深、上证、长债和国债。

4.3 策略信号

特征选择:以前一天的最高价、最低价收盘价为特征,预测当天的涨跌情况。

根据预测标签0和1设计交易信号:信号为0表示做空;信号为1表示做多。

4.4 回测结果

对前面选出的10个商品期货品种进行单品种回测,回测结果如下:
【点宽专栏】SVM带你玩转期货品种

由表可知,总体来讲,该SVM策略在商品期货上表现都不理想。我们来看看SVM策略在金融期货上的表现。

对于金融期货,我们对5个金融期货主力合约进行单品种回测,回测结果如下:
【点宽专栏】SVM带你玩转期货品种

由表可得,该SVM策略在金融期货表现各异,其中,在沪深股指上表现最好,年化收益率达24.65%,胜率达54.98%。

SVM在沪深股指(IF)回测的权益曲线如下:
【点宽专栏】SVM带你玩转期货品种

策略优化

仅仅使用SVM进行趋势预测得到的胜率或者收益都不是很理想,我们需要增加信号过滤条件来优化该策略,最简单的是增加双均线策略。

双均线过滤信号如下:

1)当5日均线大于30日均线时,过滤做多信号。

2)当5日均线小于30日均线时,过滤做空信号。

回测结果如下

对于10个商品期货品种有:
【点宽专栏】SVM带你玩转期货品种

对于5个金融期货品种有:
【点宽专栏】SVM带你玩转期货品种

由上两表可得,对策略进行优化之后,策略回测表现有一定提高,但效果并不明显。

SVM优化后的沪深股指(IF)回测的权益曲线如下:
【点宽专栏】SVM带你玩转期货品种

结论

1、该SVM策略在商品期货上表现一般,在金融期货上表现各异。

2、对策略进行优化时,增加双均线策略进行信号过滤,回测表现有一定提高。

3、该SVM的特征选择过于简单粗暴,并没有对更多特征进行统计分析和择优,这可能是策略表现不好的原因之一。

4、该SVM并没有进行参数优化操作,这也可能是该策略表现不好的原因之一。

5、SVM策略重点在于对特征的选择以及参数的优化步骤,而本文并没有对该步骤进行深入研究和统计分析。有兴趣的读者可以对这两步骤进行优化,或许会得到预想不到的结果呢!

上一篇:吴恩达机器学习(支持向量机)


下一篇:机器学习day8-SVM训练误差为0的解存在问题