金融时间序列分析:5. AR模型实例(Python)

0. 目录

金融时间序列分析:9. ARMA自回归移动平均模型
金融时间序列分析:8. MA模型实例(Python)
金融时间序列分析:7. MA滑动平均模型
金融时间序列分析:6. AR模型实例
金融时间序列分析:5. AR模型实例(Python)
金融时间序列分析:4. AR自回归模型
金融时间序列分析:3. First Demo By Python
金融时间序列分析:2. 数学分析模型
金融时间序列分析:1. 基础知识


1. 前言

本文简单谈谈如何用Python构建AR模型,并进行数据预测。
本文承接前文:
金融时间序列分析:3. First Demo By Python
这篇文章介绍了用Python获取数据、数据预处理、稳定性分析、以及定阶。在此,本文就不再介绍这些内容,直接进入AR模型部分。

金融时间序列分析:4. AR模型

2. 定阶

在之前的文章简单介绍了定阶这个过程,这里在详细介绍下。
在前一篇文章中,我说:

简单的理解就是找到时间序列的周期,比如说气温这一项,就有明显的年度周期性,前几年的同期数据对预测当年的气温有极大的参考意义。

从统计学上讲就是寻找是得ACF(样本自相关系数)最大的时间间隔。

在学习完AR模型后,我们进一步理解就是要采用多少阶的模型比如AR(1), AR(2)….

看下ACF和PACF:
金融时间序列分析:5. AR模型实例(Python)_第1张图片

从图中可以看出:1, 2, 4, 8, 20都可以采用。
但是有一点,从AR模型公式看,当阶越大,数据处理难度越高。

Python也提供一个定阶的函数adfuller:

def adf_test(ts):
    adftest = adfuller(ts, autolag='AIC')
    adf_res = pd.Series(adftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used'])

    for key, value in adftest[4].items():
        adf_res['Critical Value (%s)' % key] = value
    return adf_res

通过int(adf_res[‘Lags Used’])获取响应的阶数。

3. AR模型预测

Python statsmodels.tsa.arima_model包中提供ARMA,ARIMA等模型。
具体使用方法如下:

from statsmodels.tsa.arima_model import ARMA, ARIMA

def draw_ar(ts, w):
    arma = ARMA(ts, order=(w,0)).fit(disp=-1)
    ts_predict = arma.predict()

    plt.clf()
    plt.plot(ts_predict, label="PDT")
    plt.plot(ts, label = "ORG")
    plt.legend(loc="best")
    plt.title("AR Test %s" % w)
    plt.savefig("./PDF/test_ar_"+ str(w) +".pdf", format='pdf')

其中w是传入的阶数。
输出如下:
金融时间序列分析:5. AR模型实例(Python)_第2张图片

预测的结果差强人意……

4. 置信水平分析

金融时间序列分析:5. AR模型实例(Python)_第3张图片

你可能感兴趣的:(量化投资,Python,金融,数据分析,量化交易系统)