当前位置:首页 > 经验 >

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

来源:原点资讯(www.yd166.com)时间:2022-11-03 06:27:27作者:YD166手机阅读>>

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指数收益率时间序列呈现出以下几个现象,具有一定的普遍性。

  • 自相关性比较弱,但对其进行变换后,如取平方、绝对值等,则表现出很强的自相关性(见后文);
  • 收益率的条件方差(Conditional Variance)随着时间而变化,即存在条件异方差的特征。
  • 收益率序列的波动具有持续性,即存在波动集聚(Volatility Clustering)的现象。比如2007-2008、2015-2016、2019具有较大的波动性。
  • QQ图显示,收益率并不服从正态分布,极端值较多,具有厚尾的现象。
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)

栏目热文

python算法实例精讲(python编程100个经典算法)

python算法实例精讲(python编程100个经典算法)

前言:这篇文章主要介绍了Python集合常见运算,结合具体实例形式分析了Python使用集合生成随机数的几种常用算法的效...

2022-11-03 06:16:49查看全文 >>

python三种算法(python算法基本步骤)

python三种算法(python算法基本步骤)

1.KNN 分类算法由于knn算法涉及到距离的概念,KNN 算法需要先进行归一化处理1.1 归一化处理 scalerfr...

2022-11-03 06:34:30查看全文 >>

python必背100源代码(编程必背50个代码)

python必背100源代码(编程必背50个代码)

对于大部分Python学习者来说,核心知识基本已经掌握了,但"纸上得来终觉浅,绝知此事要躬行",要想完全...

2022-11-03 06:06:55查看全文 >>

python编写计算公式(python编辑计算公式)

python编写计算公式(python编辑计算公式)

《GitHub精选》是我们分享GitHub中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个可以生...

2022-11-03 06:11:05查看全文 >>

python算法的四个步骤(python入门学习算法)

python算法的四个步骤(python入门学习算法)

CDA数据分析师 出品相信大家在做一些算法经常会被庞大的数据量所造成的超多计算量需要的时间而折磨的痛苦不已,接下来我们围...

2022-11-03 06:31:09查看全文 >>

python算法详细图解(python三种算法)

python算法详细图解(python三种算法)

作者:武沛齐 出处:http://www.cnblogs.com/wupeiqi/本文版权归作者和博客园共有为啥会有上述...

2022-11-03 06:28:27查看全文 >>

python学习经典算法(python初学者必备十大算法)

python学习经典算法(python初学者必备十大算法)

一般应用分类分析用于提炼应用规则利用构建算法过程中的分类规则;以决策树为例:决策树分类节点表示局部最优化的显著特征值,每...

2022-11-03 06:41:03查看全文 >>

Python常用算法(python常见算法库)

Python常用算法(python常见算法库)

来源:博客园 链接:http://kb.cnblogs.com/page/210687/算法一:快速排序算法快速排序是由...

2022-11-03 06:15:01查看全文 >>

python算法大全(python必背100例)

python算法大全(python必背100例)

导读:本文是一些机器人算法(特别是自动导航算法)的Python代码合集。其主要特点有以下三点:选择了在实践中广泛应用的算...

2022-11-03 06:20:29查看全文 >>

python算法入门实例(python初学者必备十大算法)

python算法入门实例(python初学者必备十大算法)

1.猜数字 1到4能组成多少个互不相同且不重复数字的三位数?分别是?分析:可填在百位、十位、个位的数字都是1、2、3、4...

2022-11-03 06:09:52查看全文 >>

文档排行