600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 一阶广义差分模型_贵州茅台(600519)股价预测 (ARIMA模型)

一阶广义差分模型_贵州茅台(600519)股价预测 (ARIMA模型)

时间:2022-01-23 11:57:20

相关推荐

一阶广义差分模型_贵州茅台(600519)股价预测 (ARIMA模型)

7月股票又点火,为了不误导各位成为绿油油的韭菜,声明本文写于.11.23;当时周围的朋友、同事都在谈论这只股票,所以就建了个模型预测了下

先上最终结果图,红色虚线为预测部分,实线为当前股价,预测趋势向上

基本概念

ARIMA模型的全称叫做自回归移动平均模型,全称是(ARIMA, Autoregressive Integrated Moving Average Model)。也记作ARIMA(p,d,q),是统计模型(statistic model)中最常见的一种用来进行时间序列预测的模型。

建模步骤

获取被观测系统时间序列数据;对数据绘图,观测是否为平稳时间序列;对于非平稳时间序列要先进行d阶差分运算,化为平稳时间序列;经过第二步处理,已经得到平稳时间序列。要对平稳时间序列分别求得其自相关系数ACF和偏自相关系数PACF,通过对自相关图和偏自相关图的分析,得到最佳的阶层 p和阶数 q由以上得到的d、q、p,得到ARIMA模型。然后开始对得到的模型进行模型检验。

实战解析

原理大概清楚,实践却还是会有诸多问题。下面就通过Python语言贴出主要实现代码。

# 文中使用到这些基础库:import tushare as ts import pandas as pdimport matplotlib.pyplot as pltfrom statsmodels.tsa.arima_model import ARIMAfrom 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')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。