【时间序列】ARIMA预测股票数据

%matplotlib inline
import pandas as pd
import pandas_datareader
import datetime
import matplotlib.pylab as plt
import seaborn as sns
from matplotlib.pylab import style
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

style.use('ggplot')    
plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False 
stockFile = 'data/T10yr.csv'
stock = pd.read_csv(stockFile, index_col=0, parse_dates=[0])

stock.head(10)

在这里插入图片描述

stock_week = stock['Close'].resample('W-MON').mean()
stock_train = stock_week['2000':'2015']
stock_train.plot(figsize=(12,8))
plt.legend(bbox_to_anchor=(1.25, 0.5))
plt.title("Stock Close")
sns.despine()

在这里插入图片描述

stock_diff = stock_train.diff()
stock_diff = stock_diff.dropna()

plt.figure()
plt.plot(stock_diff)
plt.title('一阶差分')
plt.show()

在这里插入图片描述

acf = plot_acf(stock_diff, lags=20)
plt.title("ACF")
acf.show()

在这里插入图片描述

pacf = plot_pacf(stock_diff, lags=20)
plt.title("PACF")
pacf.show()

在这里插入图片描述

model = ARIMA(stock_train, order=(1, 1, 1),freq='W-MON')

result = model.fit()
pred = result.predict('20140609', '20160701',dynamic=True, typ='levels')

plt.figure(figsize=(6, 6))
plt.xticks(rotation=45)
plt.plot(pred)
plt.plot(stock_train)

在这里插入图片描述

发布了116 篇原创文章 · 获赞 10 · 访问量 1345

猜你喜欢

转载自blog.csdn.net/weixin_44727383/article/details/105007619