原标题:【手把手教你】使用Python玩转金融时间序列模型
01 引言
上一篇推文《Python量化基础:时间序列的自相关性与平稳性》着重介绍了时间序列的一些基础概念,包括自相关性、偏自相关性、白噪声和平稳性,以及Python的简单实现。本文在此基础上,以沪深300指数收益率数据为例,探讨如何使用Python对平稳时间序列进行建模和预测分析。时间序列经典模型主要有自回归模型AR,移动回归模型MA,移动自回归模型ARMA,以及差分移动自回归模型ARIMA,今天主要介绍这四种模型的基本原理以及Python的实现步骤。
02 AR模型
AR模型全称为Autoregressive Models,即自回归模型,用于刻画因变量能由它的多个滞后项表示。p阶自回归模型可以写成:
下面模拟一个AR(1)模型。
import pandas as pd
import numpy as np
import statsmodels.tsa.api as smt
#tsa为Time Series analysis缩写
import statsmodels.api as sm
import scipy.stats as scs
from arch import arch_model
#画图
import matplotlib.pyplot as plt
import matplotlib as mpl
%matplotlib inline
#正常显示画图时出现的中文和负号
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
#先定义一个画图函数,后面都会用到
def ts_plot(data, lags=None,title=''): if not isinstance(data, pd.Series):
data = pd.Series(data)
#matplotlib官方提供了五种不同的图形风格,
#包括bmh、ggplot、dark_background、fivethirtyeight和grayscale
with plt.style.context('ggplot'):
fig = plt.figure(figsize=(10, 8))
layout = (3, 2)
ts_ax = plt.subplot2grid(layout, (0, 0), colspan=2)
acf_ax = plt.subplot2grid(layout, (1, 0))
pacf_ax = plt.subplot2grid(layout, (1, 1))
qq_ax = plt.subplot2grid(layout, (2, 0))
pp_ax = plt.subplot2grid(layout, (2, 1))
data.plot(ax=ts_ax)
ts_ax.set_title(title+'时序图')
smt.graphics.plot_acf(data, lags=lags, ax=acf_ax, alpha=0.5)
acf_ax.set_title('自相关系数')
smt.graphics.plot_pacf(data, lags=lags, ax=pacf_ax, alpha=0.5)
pacf_ax.set_title('偏自相关系数')
sm.qqplot(data, line='s', ax=qq_ax)
qq_ax.set_title('QQ 图')
scs.probplot(data, sparams=(data.mean(),
data.std()), plot=pp_ax)
pp_ax.set_title('PP 图')
plt.tight_layout()
return
# 模拟AR(1) 过程
#设置随机种子(括号里数字无意义)
np.random.seed(1)
#模拟次数
n=5000
#AR模型的参数
a = 0.8
#扰动项为正态分布
x = w = np.random.normal(size=n)
for t in range(1,n):
x[t] = a*x[t-1] + w[t]
#画图
ts_plot(x, lags&#