背景

tushare ID=399224

机器学习已经广泛地应用在数据挖掘、计算机视觉、生物特征识别、证券市场分析和DNA序列测序等领域。机器学习算法可以分为有监督学习,无监督学习,强化学习3种类型。在有监督学习中,最早可以追溯到1936年Fisher发明的线性判别分析,在当时还没有机器学习的概念,其后出现贝叶斯分类器、logistic回归、KNN算法等零碎化的机器学习算法,不成体系,直至1980年开始,机器学习才成为一个独立的研究方向。在1995年则诞生了两种经典的算法-SVM和AdaBoot,由于支持向量机方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性和学习能力之间寻求最平衡的点,以获得最好的推广能力,主要有可解决小样本情况下单机器学习问题、可解决高维问题、可解决非线性问题等。

下面基于python使用sklearn对比亚迪进行股票涨跌预测

数据来源于tushare

下面使用python进行建模

数据来自tushare平台

如果没有账号点击此处创建:https://tushare.pro/register?reg=399224

导入工具包

#!/usr/bin/env python#coding=utf-8
import pandas as pd
from pandas.io.parsers import read_csv
from sklearn import svm,preprocessing
import matplotlib.pyplot as plt
import tushare as ts
import matplotlib
import numpy as np
from matplotlib.pyplot import MultipleLocator
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
from sklearn.pipeline import make_pipeline
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.utils._testing import ignore_warnings
from sklearn.exceptions import ConvergenceWarning

接下来从tushare导入数据以及设置图像中文

matplotlib.rcParams['axes.unicode_minus']=False
plt.rcParams['font.sans-serif']=['SimHei']ts.set_token('your token')#输入你的token
pro = ts.pro_api()
list_ans=[]code='002594.SZ'#可选择其他股票
data=pro.daily(ts_code=code, start_date='20200701', end_date='20210926')
for i in range(0,data.shape[0]):# print(data.loc[i,"trade_date"])#20200727data.loc[i,"trade_date"]=(data.loc[i,"trade_date"])[0:4]+"-"+(data.loc[i,"trade_date"])[4:6]+"-"+(data.loc[i,"trade_date"])[6:]
data['data']=pd.to_datetime(data.trade_date,format='%Y-%m-%d')
origDf=data.sort_values(by='data')
origDf.reset_index(drop=True, inplace=True)

清洗数据以及选择特征向量

df=origDf[['close','high', 'low','open','vol','trade_date']]
#diff列表示本日和上日收盘价的差
df['diff'] = df["close"]-df["close"].shift(1)
df['diff'].fillna(0, inplace = True)for i in range(0,df.shape[0]):if df['diff'][i]>0:df.loc[i,'up']=1else:df.loc[i,'up']=0target = df['up']
length=len(df)trainNum=int(length*0.8)
predictNum=length-trainNum#选择指定列作为特征列
feature=df[['close','high','low','open','vol']]#标准化处理特征值
feature=preprocessing.scale(feature)#训练集的特征值和目标值featureTrain=feature[1:trainNum-1]
targetTrain=target[1:trainNum-1]

设置分类器

def get_name(estimator):name = estimator.__class__.__name__if name == 'Pipeline':name = [get_name(est[1]) for est in estimator.steps]name = ' + '.join(name)return nameclassifiers = [(DecisionTreeClassifier(random_state=0), {#决策树}),(LogisticRegression(random_state=0), {#逻辑回归'C': np.logspace(-2, 7, 10)}),(make_pipeline(StandardScaler(), LinearSVC(random_state=0, tol=1e-5)), {'linearsvc__C': np.logspace(-2, 7, 10)}),#SVM(RandomForestClassifier(n_estimators=10),{}),(GradientBoostingClassifier(n_estimators=50, random_state=0), {'learning_rate': np.logspace(-4, 0, 10)})
]

训练模型

names = [get_name(e) for e, g in classifiers]
for est_idx, (name, (estimator, param_grid)) in enumerate(zip(names, classifiers)):MachineLearning_Tool = GridSearchCV(estimator=estimator, param_grid=param_grid)with ignore_warnings(category=ConvergenceWarning):MachineLearning_Tool.fit(featureTrain,targetTrain)predictedIndex=trainNum#逐行预测测试集while predictedIndex<length:testFeature=feature[predictedIndex:predictedIndex+1]predictForUp=MachineLearning_Tool.predict(testFeature)df.loc[predictedIndex,'predictForUp']=predictForUppredictedIndex = predictedIndex+1#该对象只包含预测数据,即只包含测试集dfWithPredicted = df.loc[trainNum:length,]pre=list(dfWithPredicted['predictForUp'])act=list(dfWithPredicted['up'])K=0for i in range(0,dfWithPredicted.shape[0]):if pre[i]==act[i]:K=K+1#开始绘图,创建两个子图figure = plt.figure()#创建子图    (axclose, axUpOrDown) = figure.subplots(2, sharex=True)dfWithPredicted['close'].plot(ax=axclose)dfWithPredicted['predictForUp'].plot(ax=axUpOrDown,color="red", label='Predicted Data')dfWithPredicted['up'].plot(ax=axUpOrDown,color="blue",label='Real Data',linestyle="--" )plt.legend(loc='best') #绘制图例#设置x轴坐标标签和旋转角度major_index=dfWithPredicted.index[dfWithPredicted.index%2==0]major_xtics=dfWithPredicted['trade_date'][dfWithPredicted.index%2==0]plt.xticks(major_index,major_xtics)plt.setp(plt.gca().get_xticklabels(), rotation=30)plt.title("通过"+name+"预测"+code[0:6]+"的涨跌情况")plt.rcParams['font.sans-serif']=['SimHei']x_major_locator=MultipleLocator(4)plt.gca().xaxis.set_major_locator(x_major_locator)#plt.savefig(name+code[0:6]+".png",figsize=[10,10])plt.show()

得出结果图:




基于机器学习的量化投资策略相关推荐

  1. [量化学院]价值选股策略——基于机器学习算法

    文献回顾 回顾价值策略 价值策略通俗地讲就是买入便宜股票,卖出昂贵股票,思想非常简单和直观.但是实际操作上这非常困难,因为我们没办法直接观察股票的真实价值.投资者可以从不同的视角采用不同的指标来估计股 ...

  2. 期货策略matlab,精选股票、期货量化投资策略系列(一)基于Matlab

    原标题:精选股票.期货量化投资策略系列(一)基于Matlab 编辑部 微信公众号 关键字全网搜索最新排名 『量化投资』:排名第一 『量 化』:排名第一 『机器学习』:排名第四 我们会再接再厉 成为全网 ...

  3. matlab统计所有股票分析,MATLAB金融算法分析实战:基于机器学习的股票量化分析...

    MATLAB金融算法分析实战:基于机器学习的股票量化分析 作者:吴婷;余胜威 编著 出版日期:2017年07月 文件大小:32.24M 支持设备: ¥50.00在线试读 适用客户端: 言商书局 iPa ...

  4. 【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略

    数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数 ...

  5. 从实战经验来看 究竟如何才能做出赚钱的量化投资策略?

    大宗商品的投资工具将因为场内期权的到来变的更加多样化和精细化.今天推荐一位量化私募基金经理在第九届R语言会议上所作报告,主要围绕量化投资实践经验以及一些经典的理论知识,梳理量化投资的方法论体系,希望为 ...

  6. Python机器学习与量化交易

    文章目录 1. 量化交易简介 1.1 量化交易的历史 1.2 什么是量化交易 1.3 量化交易分类 1.4 金融产品及衍生品的投资策略 1.5 量化交易的优势 1.6 如何做量化交易项目 2. 量化回 ...

  7. python 量化交易_基于Python的量化交易工具清单(上)

    -- Python量化工具清单 -- 以下内容来源于Wilson Freitas的Github项目"Awesome Quant".原文中包含了丰富的语言类别,但是后续介绍主要针对P ...

  8. 快速上手,教你开发第一个基于 AutoML 的量化投资决策应用

    投资决策是对各种投资方案进行综合分析,选出最佳方案的过程.面对网络上盈千累万的市场信息,如何充分地对信息进行选择.利用,做出最佳决策,是无数投资决策者亟待解决的问题.基于AI的投资决策支持系统能使决策 ...

  9. 多因子系列(二):基于机器学习选股策略(附源码)

    在第一篇中,我们实现了一个简单单因子的策略模型,但是在实际中,我们是远远不会满足于一个因子甚至几个因子的. 市场上目前挖掘出来的因子成千上万个,如何有效筛选出比较好的几个因子构建一个选股模型呢? 手动 ...

  10. 基于机器学习的电影票房分析与预测系统

    温馨提示:文末有 CSDN 平台官方提供的博主 Wechat / QQ 名片 :) 1. 项目简介 票房作为衡量电影能否盈利的重要指标受诸多因素共同作用影响且其影响机制较为复杂,电影票房的准确预测是比 ...

最新文章

  1. 2022-2028年中国数字化制造产业研究及前瞻分析报告
  2. Matlab编程与数据类型 -- 字符型数组
  3. Android Activity要点(2)
  4. 关于Transformer,面试官们都怎么问?
  5. python数组排序奇数在前偶数在后_数组排列(奇数在前,偶数在后)
  6. CLR 4.0有哪些新东西? -- 状态错乱异常 Corrupted state Exception
  7. linux 文件查找
  8. composer 安装
  9. 嵌入式开发|STM32工程中添加Bootloader实现串口程序下载
  10. 局域网监控软件是企业数据安全的最强护盾
  11. spss数据分析_相关分析
  12. Android adb shell启动应用程序的方法
  13. j2cache多级缓存
  14. iredmail mysql 配置_CentOS下iRedMail安装配置
  15. 机器学习知识地图 —— 概述
  16. foxmail邮箱修改服务器,foxmail基本设置方法.foxmail使用技巧
  17. 手机定位(原生android定位)
  18. 前后端分离之使用Files进行文件图片上传和下载
  19. 表格比手机屏幕宽时不压缩,可左右滚动,格子内容不换行
  20. 微众银行AI团队领衔推动人工智能国际标准的制定

热门文章

  1. Oracle (08)JDBC
  2. 20210726:FLAC刻录音乐CD教程05-总结
  3. Tumblr 架构设计
  4. linux取证——基础取证命令集合
  5. java mysql sqlhelper_Java访问MySQL数据库的SqlHelper类以及测试程序
  6. ElementUI 日期组件在IE下数据无法正常显示
  7. 几种常用cv工具的颜色通道总结
  8. 8B10B编码表,8B10B编码表格,8B10B查表内容
  9. TOM邮箱6.0版全面上线,全新交互设计,让办公更从容
  10. 使用OpenSSL自建CA及颁发证书、吊销证书