• 量化策略建模:
    1.建立训练集:
    X:t时刻之前的特征因子(价格、价格衍生特征、文本特征等)
    Y:t时刻之前对应的标签(价格、买卖交易)
    2.建立测试集
    t时刻之后的特征/因子
    3.常用的feature
    Time Lags:将滞后期(时间窗口)前的数据样本的指标作为特征
  • direction_pred_main.py
    创建滞后序列
from __future__ import print_function
##python2.x或python3.x均用python 3.x的print格式import datetime
import numpy as np
import pandas as pd
import tushare as tsfrom sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix
from sklearn.svm import SVCdef create_lagged_series(symbol, start_date_str, end_date_str, lags=5):"""根据start_data, end_date创建symbol的收盘价的滞后序列因为当期的数据会受前期数据的影响默认滞后期为5天"""date_str_fmt = '%Y-%m-%d'start_date = datetime.datetime.strptime(start_date_str, date_str_fmt)one_yr_before_start = start_date - datetime.timedelta(days=365)one_yr_before_start_str = one_yr_before_start.strftime(date_str_fmt)# 从TuShare获取数据hist_data = ts.get_k_data(symbol, one_yr_before_start_str, end_date_str)hist_data['date'] = pd.to_datetime(hist_data['date'])hist_data.set_index('date', inplace=True)# 创建存储滞后序列的DataFramehist_lag = pd.DataFrame(index=hist_data.index)hist_lag['today'] = hist_data['close']hist_lag['volume'] = hist_data['volume']# 创建一个滞后序列for i in range(0, lags):hist_lag['lag{}'.format(str(i + 1))] = hist_data['close'].shift(i + 1)# 创建收益率DataFrameret_df = pd.DataFrame(index=hist_lag.index)ret_df['volume'] = hist_lag['volume']ret_df['today'] = hist_lag['today'].pct_change() * 100.0#计算当前元素与前一个的相差百分比# 如果绝对值小于0.0001,将其设置成0.0001ret_df['today'] = ret_df['today'].apply(lambda x: 0.0001 if abs(x) < 0.0001 else x)# 为收益率DataFrame创建对应的滞后序列for i in range(0, lags):ret_df['lag{}'.format(str(i + 1))] = \hist_lag['lag{}'.format(str(i + 1))].pct_change() * 100.0# 创建label列,用1, -1 标识涨/跌ret_df['direction'] = np.sign(ret_df['today'])ret_df = ret_df[ret_df.index >= start_date]return ret_df
  • 调用hs300进行建模
if __name__ == "__main__":# 创建沪深300指数的滞后序列lag_ret_df = create_lagged_series('hs300', '2018-01-01', '2020-02-10', lags=5)# 使用前两天的数据作为训练集X = lag_ret_df[['lag1','lag2','lag3']]y = lag_ret_df['direction']# 测试数据分为两部分,2015-01-01之前和滞后start_test = datetime.datetime(2019,12,1)# 分割训练集和测试集X_train = X[X.index < start_test]X_test = X[X.index >= start_test]y_train = y[y.index < start_test]y_test = y[y.index >= start_test]# 候选模型print('准确率与混淆矩阵\n')# 课后作业:请使用交叉验证的方式选择最优超参数以提高性能models = [('逻辑回归', LogisticRegression()),('支持向量机', SVC(C=1000000.0, cache_size=200, class_weight=None,coef0=0.0, degree=3, gamma=0.0001, kernel='rbf',max_iter=-1, probability=False, random_state=None,shrinking=True, tol=0.001, verbose=False)),('随机森林', RandomForestClassifier(n_estimators=1000, criterion='gini',max_depth=None, min_samples_split=2,min_samples_leaf=1, max_features='auto',bootstrap=True, oob_score=False, n_jobs=1,random_state=None, verbose=0))]# 遍历所有模型for model in models:# 模型训练model[1].fit(X_train, y_train)# 预测pred = model[1].predict(X_test)# 输出准确率和混淆矩阵print('{}:\n{:.2f}'.format(model[0], model[1].score(X_test, y_test)))print('{}\n'.format(confusion_matrix(pred, y_test, labels=[-1, 1])))
  • 利用voting法进行模型融合
try:from sklearn.ensemble import VotingClassifier
except:try:import sklearnprint("WARNING: [VotingClassifier] not available\n","WARNING: [import sklearn] reports version: ",sklearn.__version__, "\n"+60*"|")except:print("WARNING: impossible to [import sklearn] at all\n",60*"|")voting_clf=VotingClassifier(estimators=[('log_reg',LogisticRegression()),('svc',SVC(C=1000000.0, cache_size=200, class_weight=None,coef0=0.0, degree=3, gamma=0.0001, kernel='rbf',max_iter=-1, probability=True, random_state=None,shrinking=True, tol=0.001, verbose=False)),('rfc',RandomForestClassifier(n_estimators=1000, criterion='gini',max_depth=None, min_samples_split=2,min_samples_leaf=1, max_features='auto',bootstrap=True, oob_score=False, n_jobs=1,random_state=None, verbose=0))],voting='hard')voting_clf.fit(X_train,y_train)pred=voting_clf.predict(X_test)score_vot=voting_clf.score(X_test,y_test)

机器学习预测股票涨跌相关推荐

  1. 使用机器学习预测股票涨跌(附工具类,一键调用)

    1.前置准备 数据来源使用tushare pro,具体操作请看链接,注册就可以使用了 Tushare金融大数据开放社区 2.直接放源码 封装没有做好,很多重复代码,凑合看吧,python不太会,有大佬 ...

  2. 量化交易是不是用机器预测股票涨跌?这靠谱吗?

    量化交易是不是用机器预测股票涨跌?是又不全是,量化交易是策略制定的基础上进行自动化交易,也不能全说是机器预测涨跌的,而且机器学习预测股票涨跌也不太靠谱,结果和丢硬币差不了太多. 虽然用机器学习来预测涨 ...

  3. python支持向量机 股票_小蛇学python(4)利用SVM预测股票涨跌

    最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...

  4. python应用(3)svm模型预测股票涨跌

    最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...

  5. svm预测股价 python_小蛇学python(4)利用SVM预测股票涨跌

    最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...

  6. 机器学习预测股票收益(一)之随机森林模型

    机器学习预测股票收益(一)之随机森林模型 前言 一.导入库和数据 二.处理数据以及计算特征变量 三.使用随机森林回归预测股票收益 1.构建训练集和测试集 2.查看预测结果 四.根据预测结果构建long ...

  7. CNN模型预测股票涨跌的始末过程——(一)股票数据的获取

    CNN模型预测股票涨跌的始末过程--(一)股票数据的获取[附源码和数据] 股票数据的获取 Choice数据 - 东方财富 Tushare BigQuant 最后列一下我下载成功的数据 股票数据的获取 ...

  8. 逻辑回归模型预测股票涨跌

    http://www.cnblogs.com/lafengdatascientist/p/5567038.html 逻辑回归模型预测股票涨跌 逻辑回归是一个分类器,其基本思想可以概括为:对于一个二分类 ...

  9. LightGBM模型简单预测股票涨跌情况

    最近入迷研究各种股票分析的指标,一想不如用熟悉的Python帮忙搞一搞,顺便做了一个二分类预测模型,供大家参考学习,也欢迎有量化分析兴趣的朋友沟通交流! Python中使用akshare这个第三方库来 ...

  10. R语言逻辑回归Logistic回归分析预测股票涨跌

    最近我们被客户要求撰写关于逻辑回归的研究报告,包括一些图形和统计输出. 视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠心病风 ...

最新文章

  1. oracle解锁system密码,Oracle System密码忘记 密码修改、删除账号锁定lock
  2. mongodb 对内存的占用监控 ——mongostat,linux系统可用的内存是free + buffers + cached...
  3. 一个人的渺小与微不足道。
  4. 玩转控件:封装Dev的LabelControl和TextEdit
  5. STM32F412应用开发笔记之二:基本GPIO控制
  6. pjk static tp.php,在测试服上偶然出现 Error: Loading chunk 5 failed.
  7. python接口自动化测试二十二:文件下载
  8. Intellij IDEA 修改默认配置
  9. 基于ssm校园餐厅订餐管理系统获取(java毕业设计)
  10. mysql可视化连接的错误及解决方案
  11. matlab最小二乘法解超定方程,超定方程和最小二乘法
  12. 一键轻松去除抖音火山等短视频水印~
  13. 公共基础知识中计算机知识,公共基础知识之计算机知识总结
  14. 【利用Python进行数据分析——经验篇2】计算微博转发/评论/点赞h指数的Python代码
  15. 2018年3大UI设计趋势,你知道吗?
  16. Mysql查询各门课程成绩大于85分的学生名单—纠正网上大部分文章的错误
  17. 普拉图和施泰纳问题的实验解法
  18. 十进制小数转化为二进制小数
  19. QQ邮箱SMTP限流
  20. echart地图下钻

热门文章

  1. oracle11g基于bootstrap$中的ind$表损坏系列五
  2. 通过TCP网络协议实现控制台多人聊天功能,另附私聊@功能。(java)
  3. python输入五个数并求平均值、保留一位小数_程序功能要实现输入理财产品金额和存款天数,计算预计收益金额(保留1位小数)。...
  4. 【AngularJS】 # AngularJS入门
  5. 【数学建模】论文排版
  6. 线上实习 牛刀小试——增删改查
  7. MTK6577+Android之GPIO驱动简介
  8. 大数据产品价值主张_大数据对商业模式创新的影响
  9. MyEclipse 中文转英文
  10. 2019测试指南-web应用程序安全测试(二)指纹Web应用程序