ITPub博客

首页 > 人工智能 > > 利用Scikit-learn机器学习库的特征分类进行vnpy期货量化交易(简介)

利用Scikit-learn机器学习库的特征分类进行vnpy期货量化交易(简介)

作者:张国平 时间:2019-06-25 15:50:47 0 删除 编辑

这个算是一个小坑,因为我也还在学习过程中,代码慢慢完善。一开始在python 2.7,vnpy 1.9.2环境中实现。后面在python 3.7也基本实现,增加支持了xgboost。代码写的繁杂,多多抱歉。


首先说说Scikit-learn是Python语言中专门针对机器学习应用而发展起来的一款开源框架,相对于现在深度学习库tensorflow,由于Scikit-learn本身不支持深度学习,也不支持GPU加速,但是相对于tensorflow那种近乎黑箱的多层神经网络,还是比较好从数学来解释分析。


分类是指识别给定对象的所属类别,属于监督学习的范畴,最常见的应用场景包括垃圾邮件检测和图像识别等。目前Scikit-learn已经实现的算法包括:支持向量机(SVM),最近邻,逻辑回归,随机森林,决策树以及多层感知器(MLP)神经网络等等。这里会使用逻辑回归,决策数, MLP神经网络和SVM向量机,其实都是两句代码事情。


不考虑内部的复杂数学逻辑,这里功能性的使用Scikit-learn特征分类的功能。

 1) 选取的特征值,为了避免数据值非逻辑化,这里不直接使用点位最高点这些,而使用那些和具体点位无关的指标,比如atr,cci,rsi,std和bar的涨跌百分比。

 2) 利用这些特征值进行分类,这里对于期货走势就是三类,1 是之后上涨,0是之后无规律,-1是之后下跌,这里使用线性回归分析当前时点之后6根K线的走势,如果斜度下,那么当前时点归为-1下跌类,斜度上,为1上涨,如果取信p值不够,或者上下斜率不大,为0。

那么特征值就是atr,cci,rsi,std和bar的涨跌百分比,当然你可以加入KDJ,MACD更多;类别就是三类1,0,-1,利用机器学习,找出特征值和类别的隐含逻辑,进而指导交易,非常粗糙。


整体代码逻辑如下,这里大量借鉴这个 。



1. 期货K线数据, 导入k线数据,并整理加入特性和类属性

• 利用之前做的DataAnalyzer,读取Mongodb或者csv的1分钟k数据, 放入Dataframe来处理,按照定义合并出n分钟k线,这里n为10

• 还是利用DataAnalyzer,利用ta-lib方法。给Dataframe加入atr,cci,rsi,std,macd和涨跌百分比。

• 使用新方法addTrend,利用scipy.stats的线性回归求出当前时点之后的斜率,给与分类值-1,0,1.



2. 数据处理,为了后面机器学习,把特征数组和类数组划分出来,并且划分训练机和测试集。

(1)划分出特征数组 X,和类别数组y

(2)划分训练集和测试集

• model_selection.train_test_split()



3. 特征工程,之前需求很多特征,其实有些并没有体现规律,或者完全随机,那么没有意义,可以删除

• 根据P值选:feature_selection.SelectFpr()

• 按照百分比选出最高分特征:feature_selection.SelectPercentile()

这里使用SelectPercentile,


4. 模型定义调参/选择

这里使用下面模式进行分析,然后利用网格调参

1)LogisticRegression 逻辑回归

2)DecisionTreeClassifier 决策树

3)SVC 支持向量分类

4)MLP 神经网络

• 交叉验证+网格搜索:model_selection.GridSearchCV()


5. 模型测试和评价,使用选取最好的模型,进行测试看看拼接

• 模型预测:model.predict()

• Accuracy:metrics.accuracy_score()

• Presicion:metrics.precision_score()

• Recall:metrics.recall_score()


6. 模型保存和调用

• 模型保存:joblib.dump()

• 模型调用:joblib.load(),这里就可以在vnpy中使用了,其实放在其他交易平台也差不多。


后面代码整理放在后面帖子,最后,只做参考,我发现虽然准确率有差不多70%,但是都是要你空仓,大智慧。。。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22259926/viewspace-3137182/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
SAP 金融风险管理产品专家

注册时间:2009-08-05

  • 博文量
    229
  • 访问量
    635993