Bitget下载

注册下载Bitget下载,邀请好友,即有机会赢取 3,000 USDT

APP下载   官网注册

1.引言

择时交易是指利用某种方法来判断大势的走势情况,是上涨还是下跌或者是盘整。如果判断是上涨,则买入持有;如果判断是下跌,则卖出清仓;如果判断是震荡,则进行高抛低吸,这样可以获得远远超越简单买入持有策略的收益率,所以择时交易是收益率最高的一种交易方式。

支持向量机(SVM)择时认为股票市场中金融规律复杂、影响因素太多,大量的信息直接产生的关系往往是非线性的,传统数学模型还需要苛刻的假设,无法很好的进行描述。而SVM作为数学挖掘领域应用于模式识别的新技术,克服了传统统计模式识别的缺点,具备良好的机器识别能力。本篇文章是参考参考东证期货《基于SVM 模型的期货择时交易策略》进行策略的复现。

2.支持向量机基础知识

1.1 线性支持向量分类机

1.2 非线性支持向量分类机

3.模型构建

支持向量机按标签Y是否连续可以分为分类模型和回归模型,当标签Y与特征X之间存在时间跨度时支持向量机也是预测模型。而择时模型的本质就是通过某些特定的特征X来预测未来某个时间点的某个特定对象的涨跌。

从投资周期和时间的维度看,择时策略可以分成日内择时、日频择时、周频择时等。日内择时就是加工分钟甚至秒级别价、量信息,然后发出日内买卖信号;日频择时是每日收盘发出买卖信号,指导下一个交易日的买卖操作;周频择时自然就是每周末发出信号指导下周的操作。除了日内择时外,几乎所有的日频、周频择时策略都难以突破“胜率与赔率,两者不可兼得”的魔咒。量化择时策略兼顾信号次数的频繁性和胜率的关系,通常而言,信号越频繁,出错概率就越大,策略的胜率就会越低。同时量化择时策略是一个beta型的策略(大盘涨择时净值也涨,大盘跌择时净值也很难涨),因此它不可避免的有回撤。

模型的基本流程:①收集数据,选择不同的指标(基本的历史行情信息,开盘价、收盘价、最高价以及最低价等)构成特征矩阵;②基于金融序列的性质进行特征提取;③训练SVM,参数可以给定、网格法寻优、PSO寻优、GA寻优等;④模型评价,统计学中通常是利用分类准确率来衡量模型的好坏,对择时模型需要建立回测阶段,整体衡量择时模型。我们针对沪深300股指期货进行择时交易,建立日频的交易策略,参考东证期货《基于SVM 模型的期货择时交易策略》。

3.1 特征选取和处理

机器学习中选取特征类似量化策略中选取因子,是关乎模型好坏最关键的部分,其次是参数的设定。在《基于SVM 模型的期货择时交易策略》中构建了两种类型的特征。

最终得到的结果看第一种表现较好一些,这里我选择先复现一下特征集合A的12个特征,日后可以添加一些其他的特征进行回测,构建更好的特征集。

关于Dimension reduction(降维)分为特征选择(feature selection)和特征提取(feature extraction)。特征选择是在原有特征中选择出显著的特征(重要特征),特征提取是在原有特征的基础上总结得到新的特征(类似主成分),将原始特征转换为一组具有明显物理意义或者统计意义或核的特征。特征选择常用的方法有过滤式、封装式、集成式,特征提取常用的方法有PCA等。

金融序列之间通常存在相关性需要进行数据预处理,上述研报用PCA进行降维。从主成分累积共享图可以看出,4个主成分的累积共享已达到95%以上,这些特征之间的相关性较大,之后可以增加一些特征相关性较低的指标进行改进。

3.2 数据标签

当数据特征为第n天的数据值时,用第n+1天的涨跌作为标签值以达到预测得到目的,涨(第n+1日收盘价>第n日收盘价)记为+1,跌(第n+1日收盘价<第n日收盘价)记为-1。在AT回测过程中开平仓操作都是对今日进行的,因此特征值构造时数值以昨天作为基准。

3.3 训练集和测试集

构造择时模型与普通的分类模型不同,因为金融数据是实时更新的,因此训练集样本也是增量变化的,为了节约每次的训练时间,我们用动态模式来看待择时模型。测试集为第n+1天(即回测当天),训练集为过去的n天,训练集的样本个数在整个过程中不发生变化但样本却实时更新,这里的n就是研报提到的滑动窗口,关于滑动窗口大小的选取可以根据回测结果好坏进行讨论,不同的回测策略所对应的最佳窗口大小不同。本文暂时给定n=25。(这里如果不考虑样本量增加带来计算时间成本的上升,也可以将训练集设定为样本总量不断增加,也就是从初始日期开始到当前回测天前的一天都作为训练集,不进行滑动处理而进行增量学习。)

4.模型实现和回测

模型的数据和回测均基于Auto-trader软件,SVM的实现需要事先安装MATLAB的libsvm工具箱。

数据获取:回测当日为测试集,回测前n天为训练集。为了构造出测试集和训练集至少要读取回测日前n+20天的数据进行运算(因为有的特征为前20天平均)。而这里n我们暂时取为25天,之后可以对n的取值进行讨论,这里一天指的是一个交易日。

策略运算部分:数据未进行归一化,用pca进行降维,svm参数给定(pso也可但运算时间较长)

回测策略:标的资产为沪深300股指期货,买入信号为今日收盘价预测为上涨时建仓买入,卖出信号为今日收盘价预测为下跌时平仓,每次交易固定份额100份,回测时间取20160101-20161001。

回测结果

结果分析和改进:策略表现一般,而且不够稳定,需要进一步设置止盈止损。本文目前着重于策略实现没有增加做空策略,而且在没有对特征的选取、滑动窗口的选取和止盈止损策略进行讨论,日后可以继续改进。

策略实现:具体代码可见策略资源,基于SVM的股指期货择时策略

https://www.digquant.com.cn/stra.php?mod=model&pid=230