python寻找波峰波谷算法,python 自动找曲线规律

首页 > 经验 > 作者:YD1662022-11-03 06:27:27

01 引言

作为金融时间序列的专题推文,【手把手教你】时间序列之日期处理主要介绍了使用Python处理时间序列的日期和统计分析;【Python量化基础】时间序列的自相关性与平稳性主要介绍了时间序列的一些基础概念,包括自相关性、偏自相关性、白噪声和平稳性;而【手把手教你】使用Python玩转金融时间序列模型主要介绍了AR、MA、ARMA和ARIMA模型的基本原理与Python的实现。从上一篇推文不难看出,使用ARMA等模型对股票收益率的时间序列建模效果不是很理想,主要在于忽略了时间序列的异方差和波动聚集特性。所谓波动性聚集,是指金融时间序列的波动具有大波动接着大波动,小波动接着小波动的特征,即波峰和波谷具有连续性。ARCH和GARCH模型正是基于条件异方差和波动聚集的特性建模的。本次推文着重介绍 ARCH和GARCH模型的基本原理及其Python实现。

02 股票收益率时间序列特点

在介绍ARCH和GARCH模型之前,我们先来看看金融资产收益率的时间序列有哪些比较突出的特点。仍然以沪深300指数为例,考察其收益率时间的分布和统计特性。下面的Python代码与上一篇推文类似,包括导入需要用到的库、定义画图函数和使用tushare获取数据等。

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)) 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

使用tushare获取沪深300交易数据

import tushare as ts token='输入你的token' pro=ts.pro_api(token) df=pro.index_daily(ts_code='000300.SH') df.index=pd.to_datetime(df.trade_date) del df.index.name df=df.sort_index() df['ret']=np.log(df.close/df.close.shift(1)) #df.head() ts_plot(df.ret.dropna(),lags=30,title='沪深300收益率')

python寻找波峰波谷算法,python 自动找曲线规律(1)

从上图可以看出,沪深300指数收益率时间序列呈现出以下几个现象,具有一定的普遍性。

03 ARCH模型

ARCH模型全称是自回归条件异方差模型,Autoregressive Conditionally Heteroskedastic Models - ARCH(p),是Engle在1982年分析英国通货膨胀率时提出的模型,主要用于刻画波动率的统计特征。

一般先假设收益率序列满足某个经典时间序列模型(MA、AR或ARMA),以AR(1)模型为例:

python寻找波峰波谷算法,python 自动找曲线规律(2)

收益率yt的波动率(条件方差)可以使用残差项的波动率进行刻画:

python寻找波峰波谷算法,python 自动找曲线规律(3)

为了刻画资产收益率的这种波动特性,可以令残差项的条件方差与过去残差项的平方相关。因此,ARCH(p)模型可以表示为:

python寻找波峰波谷算法,python 自动找曲线规律(4)

首页 12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.