个股与指数的回归分析(自带python ols 参数解读)
python信用评分卡建模(附代码,博主录制)

http://blog.csdn.net/csqazwsxedc/article/details/51336322(转)
# 一 个股与指数的回归分析 ## 1.1 数据加载 加载分析所需的Python库
import statsmodels.api as sm
import statsmodels.formula.api as smf
import statsmodels.graphics.api as smg
import patsy
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from scipy import stats
import seaborn as sns
确定起止时间为2015年1月1日至2015年12月31日
import datetime
start = datetime.datetime(2015,1,1)
end = datetime.datetime(2015,12,31)
- 1
- 2
- 3
获取”上证综指”2015年股价数据,记为datasz; 获取”机器人”公司2015年股价数据,记为datajqr。
from pandas.io.data import DataReader
datass = DataReader("000001.SS","yahoo",start,end)
datajqr = DataReader("300024.SZ","yahoo",start,end)
- 1
- 2
- 3
D:\software\新建文件夹 (4)\lib\site-packages\pandas\io\data.py:33: FutureWarning: The pandas.io.data module is moved to a separate package (pandas-datareader) and will be removed from pandas in a future version. After installing the pandas-datareader package (https://github.com/pydata/pandas-datareader), you can change the import “from pandas.io import data, wb“ to “from pandas_datareader import data, wb“. FutureWarning)
datass.head()
| Open | High | Low | Close | Volume | Adj Close | |
|---|---|---|---|---|---|---|
| Date | ||||||
| 2015-01-05 | 3350.52 | 3350.52 | 3350.52 | 3350.52 | 0 | 3350.52 |
| 2015-01-06 | 3351.45 | 3351.45 | 3351.45 | 3351.45 | 0 | 3351.45 |
| 2015-01-07 | 3373.95 | 3373.95 | 3373.95 | 3373.95 | 0 | 3373.95 |
| 2015-01-08 | 3293.46 | 3293.46 | 3293.46 | 3293.46 | 0 | 3293.46 |
| 2015-01-09 | 3285.41 | 3285.41 | 3285.41 | 3285.41 | 0 | 3285.41 |
datajqr.head()
| Open | High | Low | Close | Volume | Adj Close | |
|---|---|---|---|---|---|---|
| Date | ||||||
| 2015-01-01 | 39.39 | 39.39 | 39.39 | 39.39 | 0 | 39.37083 |
| 2015-01-02 | 39.39 | 39.39 | 39.39 | 39.39 | 0 | 39.37083 |
| 2015-01-05 | 38.83 | 39.33 | 37.30 | 39.01 | 20750100 | 38.99101 |
| 2015-01-06 | 38.76 | 41.29 | 38.50 | 41.22 | 24357600 | 41.19994 |
| 2015-01-07 | 41.21 | 41.60 | 40.05 | 40.18 | 16364700 | 40.16044 |
## 1.2 个股与上证指数数据探索性分析
close_ss = datass["Close"]
close_jqr = datajqr["Close"]
得到上证综指2015年各交易日收盘价的简单统计结果,如下所示。共有233个上证综指的股价数据,指数的平均值为3739.79,最小值为2927.29,最大值为5166.35。
close_ss.describe()
count 233.000000 mean 3739.794893 std 538.105387 min 2927.290000 25% 3320.680000 50% 3617.060000 75% 4034.310000 max 5166.350000 Name: Close, dtype: float64 得到机器人公司2015年各交易日收盘价的简单统计结果,如下所示。共有261个上证综指的股价数据,股价的平均值67.31,最小值为39.01,最大值为128.00。
close_jqr.describe()
count 261.000000 mean 67.317433 std 20.643055 min 39.010000 25% 51.800000 50% 68.500000 75% 82.550000 max 128.000000 Name: Close, dtype: float64 观察上证综指和机器人公司的股价波动图,如下所示,可以看到,上证综指与机器人公司的股价波动有着相对一致的趋势,机器人公司股价波动较上证综指更大。
fig,ax = plt.subplots(nrows=1,ncols=2,figsize=(15,6))
close_ss.plot(ax=ax[0])
ax[0].set_title("SZZZ")
close_jqr.plot(ax=ax[1])
ax[1].set_title("JQR")
stock = pd.merge(datass,datajqr,left_index = True, right_index = True)
stock = stock[["Close_x","Close_y"]]
stock.columns = ["SZZZ","JQR"]
stock.head()
| SZZZ | JQR | |
|---|---|---|
| Date | ||
| 2015-01-05 | 3350.52 | 39.01 |
| 2015-01-06 | 3351.45 | 41.22 |
| 2015-01-07 | 3373.95 | 40.18 |
| 2015-01-08 | 3293.46 | 40.15 |
| 2015-01-09 | 3285.41 | 39.36 |
根据股价得到上证综指和机器人公司的日收益率序列,如下所示。
daily_return = (stock.diff()/stock.shift(periods = 1)).dropna()
daily_return.head()
| SZZZ | JQR | |
|---|---|---|
| Date | ||
| 2015-01-06 | 0.000278 | 0.056652 |
| 2015-01-07 | 0.006714 | -0.025230 |
| 2015-01-08 | -0.023856 | -0.000747 |
| 2015-01-09 | -0.002444 | -0.019676 |
| 2015-01-12 | -0.017072 | 0.004827 |
观察日收益率序列的简单统计值,如下所示。上证综指日收益率平均值为0.000556,最小值为-0.0849,最大值为0.0769.机器人公司股价的平均值为0.003665,最小值为-10.00,最大值数据为异常值。
daily_return.describe()
| SZZZ | JQR | |
|---|---|---|
| count | 232.000000 | 232.000000 |
| mean | 0.000556 | 0.003665 |
| std | 0.025194 | 0.050061 |
| min | -0.084907 | -0.100017 |
| 25% | -0.011398 | -0.021297 |
| 50% | 0.002583 | -0.000724 |
| 75% | 0.016720 | 0.026968 |
| max | 0.076940 | 0.209524 |
观察异常值数据
daily_return[daily_return["JQR"] > 0.105]
| SZZZ | JQR | |
|---|---|---|
| Date | ||
| 2015-10-12 | 0.07694 | 0.209524 |
经分析,该日股价数据异常的原因主要是10月8日和10月9日两个交易日的股价数据缺失,导致该日收益率的计算基数为2015年9月30日。
画出上证综指和机器人公司日收益率波动图
fig,ax = plt.subplots(nrows=1,ncols=2,figsize=(15,6))
daily_return["SZZZ"].plot(ax=ax[0])
ax[0].set_title("SZZZ")
daily_return["JQR"].plot(ax=ax[1])
ax[1].set_title("JQR")
<matplotlib.text.Text at 0x7671a40dd8>
画出上证综指和机器人公司日收益率直方图和密度图,如下所示,可以发现,总体上,上证综指和机器人公司日收益率服从正态分布。相对而言,机器人公司的日收益率较上证综指偏低。
fig,ax = plt.subplots(nrows=1,ncols=2,figsize=(15,6))
sns.distplot(daily_return["SZZZ"],ax=ax[0])
ax[0].set_title("SZZZ")
sns.distplot(daily_return["JQR"],ax=ax[1])
ax[1].set_title("JQR")
<matplotlib.text.Text at 0x76725906a0>
画出上证综指和机器人公司股价日收益率散点图,如下所示。
fig,ax = plt.subplots(nrows=1,ncols=1,figsize=(12,6))
plt.scatter(daily_return["JQR"],daily_return["SZZZ"])
plt.title("Scatter Plot of daily return between JQR and SZZZ")
<matplotlib.text.Text at 0x76726657b8>
散点图表明,上证综指和机器人公司的股价可能存在线性的正相关关系。
1.3 个股与上证综指回归分析
import statsmodels.api as sm
加入截距项。
daily_return["intercept"]=1.0
以个股为自变量,上证综指为因变量,对个股和上证综指进行回归分析。得到回归结果,如下所示。
model = sm.OLS(daily_return["JQR"],daily_return[["SZZZ","intercept"]])
results = model.fit()
results.summary()
| Dep. Variable: | JQR | R-squared: | 0.382 |
|---|---|---|---|
| Model: | OLS | Adj. R-squared: | 0.379 |
| Method: | Least Squares | F-statistic: | 142.0 |
| Date: | Fri, 18 Mar 2016 | Prob (F-statistic): | 8.29e-26 |
| Time: | 22:16:56 | Log-Likelihood: | 421.79 |
| No. Observations: | 232 | AIC: | -839.6 |
| Df Residuals: | 230 | BIC: | -832.7 |
| Df Model: | 1 | ||
| Covariance Type: | nonrobust |
| coef | std err | t | P>|t| | [95.0% Conf. Int.] | |
|---|---|---|---|---|---|
| SZZZ | 1.2275 | 0.103 | 11.915 | 0.000 | 1.025 1.431 |
| intercept | 0.0030 | 0.003 | 1.151 | 0.251 | -0.002 0.008 |
| Omnibus: | 8.703 | Durbin-Watson: | 1.824 |
|---|---|---|---|
| Prob(Omnibus): | 0.013 | Jarque-Bera (JB): | 9.653 |
| Skew: | 0.350 | Prob(JB): | 0.00801 |
| Kurtosis: | 3.714 | Cond. No. | 39.8 |
一元最小二乘法回归结果表明,机器人公司的股票日收益率与上证综指日收益率之间存在显著的正相关关系。其中,可决系数为0.382,表明上证综指日收益率变量对机器人日收益率变量有较强的解释力,模型拟合结果较好,F统计量和Omnibus统计量的P值都接近于0,自变量的作用显著。t统计量的P值接近于0,表明上证综指变量显著。自变量系数为1.2275,表明机器人公司股票的日收益率波动比上证综指大,该个股的风险更大,可能获得的收益和损失也更大。平均上证综指日收益率波动1%,个股日收益率波动1.2275%。Durbin-Waston检验的值为1.824,表明收益率数据不存在序列相关性。Jarque-Bera的P值接近于0,表明日收益率数据服从正态分布。
https://study.163.com/provider/400000000398149/index.htm?share=2&shareId=400000000398149( 欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章)

个股与指数的回归分析(自带python ols 参数解读)的更多相关文章
- 如何编写一个带命令行参数的Python文件
看到别人执行一个带命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持带命 ...
- 安装Anaconda 之后使用ubuntu自带python
我们知道,Ubantu系统会自带python,当你在terminal窗口中输入python,就会显示默认安装的python的信息.比如我的16.04就自带了python2.7和3.5,但是安装了Ana ...
- RollingRegression(滚动回归分析)之Python实现
# -*- coding: utf-8 -*-"""Created on Sat Aug 18 11:08:38 2018 @author: acadsoc"& ...
- python函数参数的pack与unpack
python函数参数的pack与unpack 上周在使用django做开发的时候用到了mixin(关于mixin我还要写一个博客专门讨论一下,现在请参见这里),其中又涉及到了一个关于函数参数打包(pa ...
- python处理参数的getopt的使用
在写脚本程序的时候需要添加一些额外的参数来实现脚本的附加功能或者增强功能,通常的做法是同sys.argv[i]直接来获取参数的值,但是这个比较局限,要求参数的输入一定要按照顺序. fileName = ...
- python 函数参数介绍
python 函数参数介绍 python 使用过程总,总会遇到 *args,**kw形式的参数,总是一头雾水,而且网上介绍的或是叫法不一,为此专门深入实践进而了解了函数参数的使用 具体请看代码 #-* ...
- Python 函数参数类型大全(非常全!!!)
Python 函数参数类型大全(非常全!!!) 1.在python编写程序里面具有函数文档,它的主要作用是为了让别人可以更好的理解你的函数,所以这是一个好习惯,访问函数文档的方式是: MyFuncti ...
- Python函数参数详解
Python函数参数详解 形参与实参 什么是形参 在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名. 什么是实参 在调用函数阶段传入的值称为实际参数,简称实参.相当于"变量值& ...
- 『无为则无心』Python函数 — 26、Python函数参数的传递方式
目录 1.位置参数 2.关键字参数 3.缺省参数(默认参数) 4.不定长参数(可变参数) (1)包裹位置传递 (2)包裹关键字传递 5.位置参数.默认参数.可变参数的混合使用 6.拓展:参数解包 提示 ...
随机推荐
- beta版说明书
项目名称:GoGoing 软件使用说明: 在主界面是可以点击选择景点门票区间来选择景点,同时也可搜索景点显示信息. 还可以通过定位功能显示附近景点. 点开门票区间后是一些景点的图片和简介,还可以通过距 ...
- Python学习笔记 -- 第六章 文件操作
I/O编程 在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这 ...
- <构建之法>第三10、11、12章
第十章 典型用户和场景 问题:如何更准确知道用户的需求是什么,设计出满足用户的软件? 第十一章 软件设计与实现 问题:软件设计过程中,如何管理设计变更? 第十二章 用户体验 问题:在何时开始设计用户体 ...
- git 的安装及使用
一.Git的安装和使用 1.1 Linux下版本库的创建 1.1.1 创建一个版本库 repository,在一个合适的地方创建一个空目录: root@zengyue:/# mkdir -p /hom ...
- vue props 用法(转载)
前面的话 组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过 props ...
- HTML 页面的 批量删除的按钮
function delAll(){ var sid=""; $("[name='ids']:checked").each(function(){ sid+=$ ...
- ASP.NET MVC自定义异常处理
1.自定义异常处理过滤器类文件 新建MyExceptionAttribute.cs异常处理类文件
- Oracle PLSQL 客户端 连接Oracle12.2 出现权限问题的解决办法以及绿色版Oracle客户端的使用.
1. 同事反馈登录最新的oracle12.2 的数据库时登录不上报错: 2. 记得当时查过资料, Oracle 在12.2 增加了客户端连接数据库的加密级别 比较早的oracle客户端比如11.2.0 ...
- 快速排序Qsort
快速排序Qsort是所有学习算法和数据结构最基础的一个部分,也是考试题和面试的一个小重点. 快速排序的时间复杂度为O(N*lgN),而且常数因子很小. 对于随机数据,效率特别高: 对于构造的恶意数据, ...
- BZOJ1500[NOI2005]维修数列——非旋转treap
题目描述 请写一个程序,要求维护一个数列,支持以下 6 种操作: 请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格 输入 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初 ...