天天看點

Python調用Tushare抓取上證指數并作初步分析示例

1.關于Tusahre

Tushare是一個免費、開源的python财經資料接口包。主要實作對股票等金融資料從資料采集、清洗加工 到 資料存儲的過程,能夠為金融分析人員提供快速、整潔、和多樣的便于分析的資料。其網址為:http://tushare.org/,打開之後的界面如下:

Python調用Tushare抓取上證指數并作初步分析示例

在界面左側,可以看到能夠抓取很多資料。

2.Tushare的安裝與使用

在Tushare界面有對其安裝與使用的介紹:

Python調用Tushare抓取上證指數并作初步分析示例
初步的調用方法為:

import tushare as ts

ts.get_hist_data('600848') #一次性擷取全部日k線資料

得到結果:

Python調用Tushare抓取上證指數并作初步分析示例

第一列是日期,後邊的是各類價格,包括開盤價、最高價、收盤價等等,具體在Tushare裡邊都有詳細介紹。

3.調用Tushare抓取上證指數并作可視化

上證指數的代碼為00001,在這裡抓取2017-01-01到2018-03-31期間的資料,并對其漲跌幅,也就是收益率進行初步可視化。代碼如下:

import tushare as ts

import pandas as pd

import matplotlib.pyplot as plt

import numpy as np

df = ts.get_hist_data('000001',start='2017-01-01',end='2018-03-31')

df.head(10)

Python調用Tushare抓取上證指數并作初步分析示例

可以看到轉去了上證指數的各類價格資料以及最後turnover的換手率。但是有一個問題就是資料的date的降序的,即日起從2018年3月往2017年1月排列的,需要排序。

sz=df.sort_index(axis=0, ascending=True) #對index進行升序排列

sz_return=sz[['p_change']] #選取漲跌幅資料

test=sz_return[255:] #測試集

train=sz_return[0:255] #劃分訓練集 #對訓練集與測試集分别做趨勢圖

plt.legend(loc='best')

plt.figure(figsize=(10,5)) train['p_change'].plot() plt.show()

plt.legend(loc='best')

plt.figure(figsize=(10,5)) test['p_change'].plot(c='r')

plt.show()

Python調用Tushare抓取上證指數并作初步分析示例

藍色為訓練集序列波動圖,紅色為測試集序列波動圖。

4.對上證指數收益率做初步時間序列分析

(1)直接用最後一個值作為測試集的預測值

Python調用Tushare抓取上證指數并作初步分析示例

藍色為訓練集序列,綠色為測試集序列,紅色為預測值序列,得到RMSE為2.7924。

(2)直接用訓練集平均值作為測試集的預測值

#Simple Average

y_hat_avg = test.copy() #copy test清單

y_hat_avg['avg_forecast'] = train['p_change'].mean() #求平均值

plt.figure(figsize=(12,8))

plt.plot(test['p_change'], label='Test')

plt.plot(train['p_change'], label='Train')

plt.legend(loc='best')

plt.plot(y_hat_avg['avg_forecast'], label='Average Forecast') plt.show()

print(rms)

rms = sqrt(mean_squared_error(test.p_change, y_hat_avg.avg_forecast))

Python調用Tushare抓取上證指數并作初步分析示例

得到RMSE為2.4192。

(3)直接用移動平均法最後一個值作為測試集的預測值

#Moving Average

y_hat_avg = test.copy()

y_hat_avg['moving_avg_forecast'] = train['p_change'].rolling(30).mean().iloc[-1]

#30期的移動平均,最後一個數作為test的預測值 plt.figure(figsize=(12,8))

plt.plot(test['p_change'], label='Test')

plt.plot(train['p_change'], label='Train')

plt.legend(loc='best')

plt.plot(y_hat_avg['moving_avg_forecast'], label='Moving Average Forecast') plt.show()

print(rms)

rms = sqrt(mean_squared_error(test.p_change, y_hat_avg.moving_avg_forecast))

Python調用Tushare抓取上證指數并作初步分析示例

得到RMSE為2.3849。

可以看到,最後移動平均法的均方誤差最低,預測效果最好。

原文釋出時間為:2018-10-11

本文作者:博觀厚積

本文來自雲栖社群合作夥伴“

Python愛好者社群

”,了解相關資訊可以關注“

”。