1. 程式人生 > >股票預測

股票預測

gpl sta gpo fig drop das eve pandas fit

  利用ARIMA模型來進行時間序列的預測,數據集是雅虎財經的離線股票數據

  

import pandas as pd
import pandas_datareader
import datetime
import matplotlib.pyplot 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#用來正常顯示負號 stock = pd.read_csv(D:/T10yr.csv, index_col=0, parse_dates=[0]) # print(stock.head()) stock_week = stock[Close].resample(W-MON).mean() stock_train = stock_week[2000 : 2012] # print(stock_train)
stock_train.plot(figsize=(12, 8)) plt.legend(bbox_to_anchor=(1.25, 0.5)) plt.title(Stock Close) sns.despine()# 刪除上方和右方的邊框 # plt.show() #數據差異過大,進行一階差分 stock_diff = stock_train.diff() stock_diff = stock_diff.dropna() print(stock_diff) plt.figure()#新生成一塊畫布 plt.plot(stock_diff) plt.title(一階差分) # plt.show()
#畫圖ACF確定幾階 acf = plot_acf(stock_diff, lags=20) plt.title(ACF) # plt.show() #PACF pacf = plot_pacf(stock_diff, lags=20) plt.title(PACF) # plt.show() #ARIMA model model = ARIMA(stock_train, order=(1, 1, 1), freq=W-MON) result = model.fit() # print(result.summary()) pred = result.predict(20110103, 20160701, dynamic=True, typ=levels) print(pred) plt.figure(figsize=(6, 6)) plt.plot(pred) plt.plot(stock_week) plt.show()

股票預測