目标和背景
采用逻辑回归方法,使用过去 5 天的收益率 X 来预测未来一天的涨跌 Y,
并依据涨跌概率大小来构建多空投资组合。
解决方案和程序

  1. 拟合模型:将其中 450 天数据作为训练样本,拟合一个逻辑回归模型,得
    到参数估计。用最后 50 天数据作为预测样本,用于检验模型效果。
  2. 计算信息系数:检验样本中股票涨跌的预测和实际涨跌的相关系数大约为
    0.077,即信息系数,用来度量因子或因子组合的好坏。
  3. 构建多空投资组合:等比例持有预测上涨概率最大的 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()
运行结果:

案例分析:股票涨跌预测相关推荐

  1. Java分析股票涨跌走势

    程序能不能像人脑一样,看一眼就知道,哪个时间段是涨哪个时间段股票在下跌? 我要达到这种效果: 网上找了很多资料,都是python的,而且也没有解决我的问题. 我需要实现的是,能智能地对数据分段,像局部 ...

  2. python随机森林模型简单股票涨跌预测

    前言: 学了差不多10多天的入门机器学习,突然发现学好数学是多么的重要,以前上学时还觉得数学只要学会加减乘除就可以了,什么导数,回归方程都没什么用,这段时间真后悔死,看了好多模型原理推导,有好多的数学 ...

  3. 【点宽专栏】基于深度学习的股票涨跌预测

    01背景 股票价格的预测是学界和业界一直以来尝试去研究解决的问题,由于股票的价格受到的影响因素众多,涵盖了上市公司基本面,产品价格的波动,国内的宏观经济数据,国际市场的各种金融资产和价格的波动等等,并 ...

  4. python股票交易模型_python随机森林模型简单股票涨跌预测

    import numpy as np import pandas as pd import tushare as ts import matplotlib.pyplot as plt from pyl ...

  5. 股票涨跌预测方法之四:实际预测

    前一阵子在同学的鼓动下,花了一个多月研究了股票行情的预测方法,熟悉了常见的炒股术语及技术指标,现总结如下,纯属兴趣,如果想依照本文的方法来短线操作获利,请绕道. 前面模型都已经搭好了,最后一步就是更新 ...

  6. 股票涨跌预测方法之二:股票技术指标计算

    前一阵子在同学的鼓动下,花了一个多月研究了股票行情的预测方法,熟悉了常见的炒股术语及技术指标,现总结如下,纯属兴趣,如果想依照本文的方法来短线操作获利,请绕道. 研究的第二步就是了解常用的股票技术指标 ...

  7. SWAT模型案例分析

    SWAT模型的产生 SWAT模型的最直接前身是SWRRB模型.而SWRRB模型则起始于20世纪70年代美国农业部农业研究中心开发的CREAMS(Chemicals, Runoff, and Erosi ...

  8. 【西安】SWAT模型高阶十七项案例分析

    [案例实践]:本次学习共十七个实践案例 1)遥感产品和SWAT模型快速建模 2)基于水文响应单元(HRU)的水资源时空分布特征 3)基于自定义流域与河道的SWAT模型建模与分析 4)子流域划分原理及其 ...

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

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

  10. stata统计分析及行业应用案例分析_描述性统计分析的应用——基于描述性统计分析识别优质股票...

    描述性统计分析的应用 -基于描述性统计分析识别优质股票 内容导入: 大家好,这里是每天分析一点点. 上期给大家介绍离散趋势,本期介绍描述性统计分析的基本原理与应用,包括集中趋势.离散趋势.偏度与峰度的 ...

最新文章

  1. c语言太极图编程语言,利用C语言的Cairo图形库绘制太极图实例教程.pdf
  2. 面向中文短文本的实体链指任务竞赛亚军DeepBlueAI团队技术分享
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1107:校门外的树
  4. Sherman-Morrison公式及其应用
  5. linux misc device字符杂项设备驱动
  6. 一个SPS + K2 + InfoPath + Mobile + Exchange的工作流程演示系统
  7. Dataset XML 序列化,什么是序列化
  8. PostgreSQL 如何实现网络压缩传输或加密传输(openssl)
  9. c++语言编程软件视频教程下载,C++编程开发全套视频教程下载
  10. 数据安全-整体解决方案
  11. 正确区分LJMP、AJMP、SJMP、JMP跳转指令
  12. 【实习面经】头条后台开发岗一面凉经
  13. [渝粤教育] 南京交通职业技术学院 计算机基础 参考 资料
  14. 腾讯乐固多渠道打包配置
  15. Pytorch 结合Sobel滤波的卷积操作来提取图像的轮廓图!
  16. 2011年11月校园招聘JAVA面试题整理
  17. nvidia驱动版本查询
  18. Ltspice测量波形的相关数据
  19. xp局域网内共享设置
  20. Mac 高效工作指南

热门文章

  1. winapi消息大全
  2. 魔兽世界燃烧的远征服务器状态,魔兽世界燃烧的远征前夕补丁 燃烧的远征副本介绍...
  3. 基于分布式认知工业互联网的汽车零部件质量溯源平台
  4. 各种字符集和编码详解(转)
  5. Microsoft SQL Server 2000的版本区别及选择
  6. 教你做Android逆向
  7. JavaScript中常用的的字符串方法总结+详解
  8. 浙江高职考计算机专业本科,浙江高职自主招生考什么科目
  9. Dubbo太难了,我决定加入Spring Cloud阵营了...
  10. MySQL 管理之道读书总结