金融时序模型(ARIMA)

生悠久没有更新了!!!咱再没空也未可以忘记学习啊~

近期凭同事认同,朋友可以,都涉及一就股票”湖北四特酒”,所以虽然用来试水,接下去会介绍下简单介绍下该模型概念,以及python咋样运用该型。

基本概念

ARIMA模型的齐全叫做于回归活动平均模型,全称是(ARIMA, Autoregressive
Integrated Moving Average
Model)。也记作ARIMA(p,d,q),是总结模型(statistic
model)中很是广的等同栽用来拓展时类别预测的型。

建模步骤
  1. 抱给考察系统时序列数据;
  2. 本着数据绘图,观测是否为平安时间系列;对于非平稳时间体系要先行举行d阶差分运算,化为平稳时间系列;
  3. 透过第二步处理,已经沾平静时间系列。要本着稳定时间体系分别求得其打相关周详ACF偏自相关周全PACF,通过对从相关图和偏自相关图的解析,得到最佳的美学原理,阶层
    p
    阶数 q
  4. 由于上述得到的d、q、p,得到ARIMA模型。然后起针对得的范举办模型检验。
实战解析

规律大概知道,实践也依旧会出多题目。下边就经过Python语言贴起重大实现代码。

事先上最终结出图,黑色虚线为预测有,实线为当前股价,预测趋势发展
# 文中使用到这些基础库:
import tushare as ts 
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf,plot_pacf

# 获得贵州茅台数据
df_source = ts.get_hist_data('600519')

# 对收盘价进行排序
ser_close = df_source['close'].sort_index()

# 收盘曲线
ser_close.plot(kind='line', c='r', label='Close')

# 20日均线
ser_close.rolling(window=20).mean().plot(kind='line', c='b', ls='--', alpha=.8, label='M_20')

# 趋势不平稳,对数据进行一阶差分
df_close['diff1'] = df_close['close'].diff(1)
# 二阶差分
df_close['diff2'] = df_close['diff1'].diff(1)

# 日频数据太多,对数据做降频处理
df_close_resample = df_close.resample('W-MON').mean()

# AM与MA定阶,落在置信区间的前一个点位为模型阶数
acf_dif = plot_acf(train_dif1, lags=20)
pacf_dif = plot_pacf(train_dif1, lags=20)

# 把得到的参数放进模型中训练
model = ARIMA(stk_train_set['close'], order=(1, 1, 1), freq='W-MON')
arima_result = model.fit()

# 得到预测结果
pred_vals = arima_result.predict(startdate,enddate,dynamic=True, typ='levels')

ARIMA pre result