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()
OLS Regression Results
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 参数解读)的更多相关文章

  1. 如何编写一个带命令行参数的Python文件

    看到别人执行一个带命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持带命 ...

  2. 安装Anaconda 之后使用ubuntu自带python

    我们知道,Ubantu系统会自带python,当你在terminal窗口中输入python,就会显示默认安装的python的信息.比如我的16.04就自带了python2.7和3.5,但是安装了Ana ...

  3. RollingRegression(滚动回归分析)之Python实现

    # -*- coding: utf-8 -*-"""Created on Sat Aug 18 11:08:38 2018 @author: acadsoc"& ...

  4. python函数参数的pack与unpack

    python函数参数的pack与unpack 上周在使用django做开发的时候用到了mixin(关于mixin我还要写一个博客专门讨论一下,现在请参见这里),其中又涉及到了一个关于函数参数打包(pa ...

  5. python处理参数的getopt的使用

    在写脚本程序的时候需要添加一些额外的参数来实现脚本的附加功能或者增强功能,通常的做法是同sys.argv[i]直接来获取参数的值,但是这个比较局限,要求参数的输入一定要按照顺序. fileName = ...

  6. python 函数参数介绍

    python 函数参数介绍 python 使用过程总,总会遇到 *args,**kw形式的参数,总是一头雾水,而且网上介绍的或是叫法不一,为此专门深入实践进而了解了函数参数的使用 具体请看代码 #-* ...

  7. Python 函数参数类型大全(非常全!!!)

    Python 函数参数类型大全(非常全!!!) 1.在python编写程序里面具有函数文档,它的主要作用是为了让别人可以更好的理解你的函数,所以这是一个好习惯,访问函数文档的方式是: MyFuncti ...

  8. Python函数参数详解

    Python函数参数详解 形参与实参 什么是形参 在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名. 什么是实参 在调用函数阶段传入的值称为实际参数,简称实参.相当于"变量值& ...

  9. 『无为则无心』Python函数 — 26、Python函数参数的传递方式

    目录 1.位置参数 2.关键字参数 3.缺省参数(默认参数) 4.不定长参数(可变参数) (1)包裹位置传递 (2)包裹关键字传递 5.位置参数.默认参数.可变参数的混合使用 6.拓展:参数解包 提示 ...

随机推荐

  1. 思甜雅---关于qq的NABCD的模型分析

    个人连接:http://www.cnblogs.com/xiaoliulang/ 关于QQ的NABCD模型 N--Need 随着电脑的普及,人们在网络上进行交流的时间越来越多,由于现有的交流工具还不是 ...

  2. Github介绍

    Git是一个分布式的版本控制系统,最初由LinusTorvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.包括Rubinius和Mer ...

  3. 第一次Sprint

    项目刚开始做的话,离客户的需求应该,蛮远的. 用的是eclipse加安卓模拟器在弄. 目前主要弄APP的界面和一些主要的功能算法,各个功能板块的位置划分的内容. Github团队地址是:https:/ ...

  4. beta版验收互评

    排名 团队名称 项目名称 优点 缺点,bug 报告 1 别看了你没救了队 校园帮帮帮(已发布) 实现普通用户的登陆,修改个人信息,发布信息,下订单的功能:管理员登陆,修改个人信息,发布信息,下订单,增 ...

  5. 【转帖】M1、M2增速

    M1.M2增速的背离与广义财政的资金滞留有关 作者: 万钊 2016-07-19 17:20 近期M1.M2增速的背离,引起了各方的极大关注.我们知道,M1以活期存款为主,具有高波动性,其增速与M2背 ...

  6. OneZero——Review会议(2013.5.20)

    1. 时间: 2016年5月20日. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http://www.cnb ...

  7. Personal Software Process (PSP)

    日期 分类 开始时间 结束时间 中断时间 净时间 活动 备注 C U 2016/03/15 随笔 9:30 10:40 0 70 博客更新 更新<软件项目管理(1)> Y Minute 随 ...

  8. sleep、yield、wait、join的区别(阿里面试)

    1.  Thread.sleep(long) 和Thread.yield()都是Thread类的静态方法,在调用的时候都是Thread.sleep(long)/Thread.yield()的方式进行调 ...

  9. fullstack

    fullstack https://www.fullstack.io/ https://www.fullstack.io/write-a-book https://github.com/fullsta ...

  10. BZOJ1559[JSOI2009]密码——AC自动机+DP+搜索

    题目描述 输入 输出 样例输入 10 2 hello world 样例输出 2 helloworld worldhello 提示 这题算是一个套路题了,多个串求都包含它们的长为L的串的方案数. 显然是 ...