案例分析:股票涨跌预测
目标和背景
采用逻辑回归方法,使用过去 5 天的收益率 X 来预测未来一天的涨跌 Y,
并依据涨跌概率大小来构建多空投资组合。
解决方案和程序
- 拟合模型:将其中 450 天数据作为训练样本,拟合一个逻辑回归模型,得
到参数估计。用最后 50 天数据作为预测样本,用于检验模型效果。 - 计算信息系数:检验样本中股票涨跌的预测和实际涨跌的相关系数大约为
0.077,即信息系数,用来度量因子或因子组合的好坏。 - 构建多空投资组合:等比例持有预测上涨概率最大的 10 支股票,做空上
涨概率最小的 10 支股票,画出组合收益图。
参考代码:
import numpy as np
import numpy.linalg as la
import pandas as pd
import os
import matplotlib.pyplot as plt
index_path = r’data\SZ399300.TXT’
index300 = pd.read_table(index_path,
encoding = ‘cp936’,header = None)
idx = index300[:-1]
idx.columns = [‘date’,‘o’,‘h’,‘l’,‘c’,‘v’,‘to’]
idx.index = idx[‘date’]
stock_path = r’data\hs300’
names = os.listdir(stock_path)
close = []
for name in names:
spath = stock_path + ‘\’ + name
df0 = pd.read_table(spath,
encoding = ‘cp936’,header = None)
df1 = df0[:-1]
df1.columns = [‘date’,‘o’,‘h’,‘l’,‘c’,‘v’,‘to’]
df1.index = df1[‘date’]
df2 = df1.reindex(idx.index,method = ‘ffill’)
df3 = df2.fillna(method = ‘bfill’)
close.append(df3[‘c’].values)
data = np.asarray(close).T
retx = (data[1:,:]-data[:-1,:])/data[:-1,:]
n = 500
n1 = 50
p = 5
train = retx[-n:-n1,:]
ret = train[p:,:].ravel()
X1 = train[4:-1,:].ravel()[:,np.newaxis]
X2 = train[3:-2,:].ravel()[:,np.newaxis]
X3 = train[2:-3,:].ravel()[:,np.newaxis]
X4 = train[1:-4,:].ravel()[:,np.newaxis]
X5 = train[:-5,:].ravel()[:,np.newaxis]
y_train = (ret>0).astype(int)
X_train = np.hstack((X5,X4,X3,X2,X1))
test = retx[-n1:,:]
ret2 = test[p:,:].ravel()
X1 = test[4:-1,:].ravel()[:,np.newaxis]
X2 = test[3:-2,:].ravel()[:,np.newaxis]
X3 = test[2:-3,:].ravel()[:,np.newaxis]
X4 = test[1:-4,:].ravel()[:,np.newaxis]
X5 = test[:-5,:].ravel()[:,np.newaxis]
y_test = (ret2>0).astype(int)
X_test = np.hstack((X5,X4,X3,X2,X1))
from sklearn import linear_model
from sklearn.metrics import classification_report
clf = linear_model.LogisticRegression(C=1e2,fit_intercept=True)
clf.fit(X_train,y_train)
y_pred0 = clf.predict(X_train)
print(classification_report(y_train, y_pred0))
np.corrcoef([y_train,y_pred0])
y_pred = clf.predict(X_test)
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))
np.corrcoef([y_test,y_pred]) # Information Coefficient, IC
holding_matrix = np.zeros((n1-p,300))
for j in range(n1-p):
#prob = clf.predict_proba(test[j:j+5,:].T)[:,1]
prob = clf.predict_proba(test[j:j+p,:].T)[:,1]
long_position = prob.argsort()[-10:]
short_position = prob.argsort()[:10]
holding_matrix[j,long_position] = 0.05
holding_matrix[j,short_position] = -0.05
tmp_ret = np.sum(holding_matrix*test[p:],axis = 1)
portfolio_ret = np.append(0,tmp_ret)
plt.plot(np.cumprod(1+portfolio_ret))
plt.legend([‘Performance of LR’],loc=‘upper left’)
plt.savefig(r’fig\stockret-lr’)
plt.plot(np.cumprod(1+portfolio_ret))
plt.plot(np.cumprod(1+portfolio_ret),‘–’)
plt.legend([‘Logistic Regression’,‘neural network’])
plt.savefig(r’fig\stockret-lrnn’)
plt.show()
运行结果:
案例分析:股票涨跌预测相关推荐
- Java分析股票涨跌走势
程序能不能像人脑一样,看一眼就知道,哪个时间段是涨哪个时间段股票在下跌? 我要达到这种效果: 网上找了很多资料,都是python的,而且也没有解决我的问题. 我需要实现的是,能智能地对数据分段,像局部 ...
- python随机森林模型简单股票涨跌预测
前言: 学了差不多10多天的入门机器学习,突然发现学好数学是多么的重要,以前上学时还觉得数学只要学会加减乘除就可以了,什么导数,回归方程都没什么用,这段时间真后悔死,看了好多模型原理推导,有好多的数学 ...
- 【点宽专栏】基于深度学习的股票涨跌预测
01背景 股票价格的预测是学界和业界一直以来尝试去研究解决的问题,由于股票的价格受到的影响因素众多,涵盖了上市公司基本面,产品价格的波动,国内的宏观经济数据,国际市场的各种金融资产和价格的波动等等,并 ...
- python股票交易模型_python随机森林模型简单股票涨跌预测
import numpy as np import pandas as pd import tushare as ts import matplotlib.pyplot as plt from pyl ...
- 股票涨跌预测方法之四:实际预测
前一阵子在同学的鼓动下,花了一个多月研究了股票行情的预测方法,熟悉了常见的炒股术语及技术指标,现总结如下,纯属兴趣,如果想依照本文的方法来短线操作获利,请绕道. 前面模型都已经搭好了,最后一步就是更新 ...
- 股票涨跌预测方法之二:股票技术指标计算
前一阵子在同学的鼓动下,花了一个多月研究了股票行情的预测方法,熟悉了常见的炒股术语及技术指标,现总结如下,纯属兴趣,如果想依照本文的方法来短线操作获利,请绕道. 研究的第二步就是了解常用的股票技术指标 ...
- SWAT模型案例分析
SWAT模型的产生 SWAT模型的最直接前身是SWRRB模型.而SWRRB模型则起始于20世纪70年代美国农业部农业研究中心开发的CREAMS(Chemicals, Runoff, and Erosi ...
- 【西安】SWAT模型高阶十七项案例分析
[案例实践]:本次学习共十七个实践案例 1)遥感产品和SWAT模型快速建模 2)基于水文响应单元(HRU)的水资源时空分布特征 3)基于自定义流域与河道的SWAT模型建模与分析 4)子流域划分原理及其 ...
- LightGBM模型简单预测股票涨跌情况
最近入迷研究各种股票分析的指标,一想不如用熟悉的Python帮忙搞一搞,顺便做了一个二分类预测模型,供大家参考学习,也欢迎有量化分析兴趣的朋友沟通交流! Python中使用akshare这个第三方库来 ...
- stata统计分析及行业应用案例分析_描述性统计分析的应用——基于描述性统计分析识别优质股票...
描述性统计分析的应用 -基于描述性统计分析识别优质股票 内容导入: 大家好,这里是每天分析一点点. 上期给大家介绍离散趋势,本期介绍描述性统计分析的基本原理与应用,包括集中趋势.离散趋势.偏度与峰度的 ...
最新文章
- c语言太极图编程语言,利用C语言的Cairo图形库绘制太极图实例教程.pdf
- 面向中文短文本的实体链指任务竞赛亚军DeepBlueAI团队技术分享
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1107:校门外的树
- Sherman-Morrison公式及其应用
- linux misc device字符杂项设备驱动
- 一个SPS + K2 + InfoPath + Mobile + Exchange的工作流程演示系统
- Dataset XML 序列化,什么是序列化
- PostgreSQL 如何实现网络压缩传输或加密传输(openssl)
- c++语言编程软件视频教程下载,C++编程开发全套视频教程下载
- 数据安全-整体解决方案
- 正确区分LJMP、AJMP、SJMP、JMP跳转指令
- 【实习面经】头条后台开发岗一面凉经
- [渝粤教育] 南京交通职业技术学院 计算机基础 参考 资料
- 腾讯乐固多渠道打包配置
- Pytorch 结合Sobel滤波的卷积操作来提取图像的轮廓图!
- 2011年11月校园招聘JAVA面试题整理
- nvidia驱动版本查询
- Ltspice测量波形的相关数据
- xp局域网内共享设置
- Mac 高效工作指南