1.關于Tusahre
Tushare是一個免費、開源的python财經資料接口包。主要實作對股票等金融資料從資料采集、清洗加工 到 資料存儲的過程,能夠為金融分析人員提供快速、整潔、和多樣的便于分析的資料。其網址為:http://tushare.org/,打開之後的界面如下:
在界面左側,可以看到能夠抓取很多資料。
2.Tushare的安裝與使用
在Tushare界面有對其安裝與使用的介紹:
初步的調用方法為:
import tushare as ts
ts.get_hist_data('600848') #一次性擷取全部日k線資料
得到結果:
第一列是日期,後邊的是各類價格,包括開盤價、最高價、收盤價等等,具體在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)
可以看到轉去了上證指數的各類價格資料以及最後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()
藍色為訓練集序列波動圖,紅色為測試集序列波動圖。
4.對上證指數收益率做初步時間序列分析
(1)直接用最後一個值作為測試集的預測值
藍色為訓練集序列,綠色為測試集序列,紅色為預測值序列,得到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))
得到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))
得到RMSE為2.3849。
可以看到,最後移動平均法的均方誤差最低,預測效果最好。
原文釋出時間為:2018-10-11
本文作者:博觀厚積
本文來自雲栖社群合作夥伴“
Python愛好者社群”,了解相關資訊可以關注“
”。