Python学习笔记:初识Tushare

一、Tushare概述

  • Tushare官网:http://tushare.org/
    在这里插入图片描述
  • Tushare是一个免费、开源的Python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析。应一些用户的请求,从0.2.5版本开始,Tushare同时兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。

二、安装Tushare

  • 前提是安装了pandas和lxml
    在这里插入图片描述

1、安装Tushare

pip install tushare

在这里插入图片描述

2、导入Tushare,查看版本

在这里插入图片描述

三、获取历史行情数据

1、get_hist_data()函数

(1)参数说明

  • code:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
  • start:开始日期,格式YYYY-MM-DD
  • end:结束日期,格式YYYY-MM-DD
  • ktype:数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
  • retry_count:当网络异常后重试次数,默认为3
  • pause:重试时停顿秒数,默认为0

(2)返回值说明

  • date:日期
  • open:开盘价
  • high:最高价
  • close:收盘价
  • low:最低价
  • volume:成交量
  • price_change:价格变动
  • p_change:涨跌幅
  • ma5:5日均价
  • ma10:10日均价
  • ma20:20日均价
  • v_ma5:5日均量
  • v_ma10:10日均量
  • v_ma20:20日均量
  • turnover:换手率【注:指数无此项】

2、实例演示

(1)读取泸州老窖(000568)从2020-01-01到2020-10-31的周K线数据并绘制K线图

import tushare as ts
data = ts.get_hist_data(code='000568', start='2020-01-01', end='2020-10-31', ktype='W')

在这里插入图片描述

  • 由此可以看出,从2020-01-01到2020-10-31这段日期,有43个周
  • 获取反序数据,这样数据就是按照日期升序排列
    在这里插入图片描述
  • 利用mplfinance绘制K线图
import mplfinance as mpf
import pandas as pd
data.index = pd.DatetimeIndex(data.index)
mpf.plot(data, type='candle', volume=True)

在这里插入图片描述

(2)读取泸州老窖(000568)从2020-01-01到2020-10-31的日K线数据并绘制K线图

在这里插入图片描述

(3)读取泸州老窖(000568)从2020-01-01到2020-10-31的月K线数据并绘制K线图

在这里插入图片描述

  • 查看返回数据的所有列名
    在这里插入图片描述

四、线性回归模型 - 股票回归分析

1、编写程序

在这里插入图片描述

# -*- coding: utf-8 -*-
"""
Created on Sun Nov  1 19:48:44 2020

@author: howard

线性回归模型 - 股票回归分析
"""

import tushare as ts
import pandas as pd
from pylab import mpl
import statsmodels.api as sm
import matplotlib.pyplot as plt

mpl.rcParams['font.sans-serif'] = ['FangSong'] 
mpl.rcParams['axes.unicode_minus'] = False 

# 定义起始与终止日期
start_date='2019-01-01'
end_date='2019-12-31'

# 获取上证综指与泸州老窖数据
data_sh = ts.get_hist_data(code='sh', start=start_date, end=end_date)
data_lzlj = ts.get_hist_data(code='000568', start=start_date, end=end_date)

# 反序
data_sh = data_sh[::-1]
data_lzlj = data_lzlj[::-1]

# 数据探索,查看前五行数据
print('上证综指前5条:')
print(data_sh.head())
print('泸州老窖前5条:')
print(data_lzlj.head())

# 上证综指与泸州老窖的收盘价
close_sh = data_sh["close"]
close_lzlj = data_lzlj["close"]
# 数据探索,查看前五行数据
print('上证综指[收盘价]前5条:')
print(close_sh.head()) 
print('泸州老窖[收盘价]前5条:')
print(close_lzlj.head()) 

# 将上证综指与泸州老窖进行数据合并
stock = pd.merge(data_sh, data_lzlj, left_index = True, right_index = True)
stock = stock[["close_x", "close_y"]]  # 把合并之后的闭盘价格拿出来
stock.columns = ["上证综指", "泸州老窖"]
# 数据探索,查看前五行数据
print('上证综指与泸州老窖[收盘价]前5条:')
print(stock.head())

# 统计每日收益率
# .diff()函数用来将数据进行某种移动之后与原来的数据进行比较得出差异的数据
# .shift()函数可以把数据移动指定位数,period=-1左移1位,period=1右移1位
daily_return = (stock.diff() / stock.shift(periods = 1)).dropna()  
# 数据探索,查看前五行数据
print('上证综指与泸州老窖[每日收益率]前5条:')
print(daily_return.head())
# 找出当天收益率大于5%的数据
print('泸州老窖[收益率>5%]的数据:')
print(daily_return[daily_return["泸州老窖"] > 0.05]['泸州老窖'])

# 每日收益率可视化
fig, ax = plt.subplots(nrows = 1, ncols = 2, figsize = (15, 6))
daily_return["上证综指"].plot(ax = ax[0])
ax[0].set_title("上证综指")
daily_return["泸州老窖"].plot(ax=ax[1])
ax[1].set_title("泸州老窖")
plt.show()

# 散点图
fig, ax = plt.subplots(nrows = 1, ncols = 1, figsize = (12, 6))
plt.scatter(daily_return["泸州老窖"], daily_return["上证综指"])
plt.title("每日收益率散点图 from 泸州老窖 & 上证综指")
plt.show()

# 回归分析
daily_return["intercept"] = 1.0 # 设置截距项
# OLS(Ordinary Least Squares):最小二乘法进行回归分析
model = sm.OLS(daily_return["泸州老窖"], daily_return[["上证综指", "intercept"]])
results = model.fit()  # 做拟合  
print('拟合结果:')
print(results.summary()) 

2、运行程序,查看结果

在这里插入图片描述

扫描二维码关注公众号,回复: 12091623 查看本文章
上证综指前5条:
               open     high    close  ...       v_ma5      v_ma10      v_ma20
date                                   ...                                    
2019-01-02  2497.88  2500.28  2465.29  ...  1228108.57  1172327.01  1238786.22
2019-01-03  2461.78  2488.48  2464.36  ...  1195562.45  1179691.14  1217014.69
2019-01-04  2446.02  2515.32  2514.87  ...  1315718.52  1240907.00  1224202.50
2019-01-07  2528.70  2536.98  2533.09  ...  1399514.87  1297645.51  1242024.18
2019-01-08  2530.30  2531.35  2526.46  ...  1477222.72  1340073.49  1266536.27

[5 rows x 13 columns]
泸州老窖前5条:
             open   high  close    low  ...     v_ma5    v_ma10    v_ma20  turnover
date                                    ...                                        
2019-01-02  40.98  41.50  39.60  39.55  ...  72700.43  78355.23  77597.78      0.63
2019-01-03  39.60  39.81  38.13  37.70  ...  82682.11  83459.72  79313.23      0.77
2019-01-04  37.81  38.99  38.97  37.60  ...  89905.70  82961.39  78037.63      0.68
2019-01-07  39.13  39.40  38.72  38.48  ...  96102.32  86066.74  78787.87      0.75
2019-01-08  38.75  38.99  38.77  38.06  ...  96714.55  81076.16  78904.97      0.49

[5 rows x 14 columns]
上证综指[收盘价]5条:
date
2019-01-02    2465.29
2019-01-03    2464.36
2019-01-04    2514.87
2019-01-07    2533.09
2019-01-08    2526.46
Name: close, dtype: float64
泸州老窖[收盘价]5条:
date
2019-01-02    39.60
2019-01-03    38.13
2019-01-04    38.97
2019-01-07    38.72
2019-01-08    38.77
Name: close, dtype: float64
上证综指与泸州老窖[收盘价]5条:
               上证综指   泸州老窖
date                      
2019-01-02  2465.29  39.60
2019-01-03  2464.36  38.13
2019-01-04  2514.87  38.97
2019-01-07  2533.09  38.72
2019-01-08  2526.46  38.77
上证综指与泸州老窖[每日收益率]5条:
                上证综指      泸州老窖
date                          
2019-01-03 -0.000377 -0.037121
2019-01-04  0.020496  0.022030
2019-01-07  0.007245 -0.006415
2019-01-08 -0.002617  0.001291
2019-01-09  0.007077  0.018571
泸州老窖[收益率>5%]的数据:
date
2019-01-15    0.087341
2019-02-11    0.069943
2019-03-18    0.100056
2019-04-10    0.052251
2019-04-26    0.070233
2019-05-10    0.060709
2019-05-15    0.100071
2019-06-11    0.060963
2019-06-27    0.061516
2019-08-14    0.054545
Name: 泸州老窖, dtype: float64

拟合结果:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                   泸州老窖   R-squared:                       0.321
Model:                            OLS   Adj. R-squared:                  0.318
Method:                 Least Squares   F-statistic:                     114.0
Date:                Sun, 01 Nov 2020   Prob (F-statistic):           4.90e-22
Time:                        20:58:19   Log-Likelihood:                 597.07
No. Observations:                 243   AIC:                            -1190.
Df Residuals:                     241   BIC:                            -1183.
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
上证综指           1.2541      0.117     10.675      0.000       1.023       1.486
intercept      0.0024      0.001      1.762      0.079      -0.000       0.005
==============================================================================
Omnibus:                       36.842   Durbin-Watson:                   1.788
Prob(Omnibus):                  0.000   Jarque-Bera (JB):               64.069
Skew:                           0.824   Prob(JB):                     1.22e-14
Kurtosis:                       4.900   Cond. No.                         88.0
==============================================================================

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

猜你喜欢

转载自blog.csdn.net/howard2005/article/details/109431502
今日推荐