R语言有状态依赖强度的非线性、多变量跳跃扩散过程模型似然推断分析股票价格波动

简介: R语言有状态依赖强度的非线性、多变量跳跃扩散过程模型似然推断分析股票价格波动

跳跃扩散过程为连续演化过程中的偏差提供了一种建模手段。但是,跳跃扩散过程的微积分使其难以分析非线性模型。本文开发了一种方法,用于逼近具有依赖性或随机强度的多变量跳跃扩散的转移密度。通过推导支配过程时变的方程组,我们能够通过密度因子化来近似转移密度,将跳跃扩散的动态与无跳跃扩散的动态进行对比。在这个框架内,我们开发了一类二次跳跃扩散,我们可以计算出对似然函数的精确近似。随后,我们分析了谷歌股票波动率的一些非线性跳跃扩散模型,在各种漂移、扩散和跳跃机制之间进行。在此过程中,我们发现了周期性漂移和依赖状态的跳跃机制的依据。

简介

现实世界的过程经常受到许多随机输入源的影响,导致各种随机行为,形成过程轨迹的一个组成部分。因此,在对这种现象进行建模时,模型方程必须考虑到过程动态的各种随机性来源。

尽管扩散过程在连续过程的建模中被广泛使用,但通常假设布朗运动作为过程随机演化的驱动机制。如果布朗运动不够,可以对模型过程进行概括,使其应用更加实际。

一个这样的概括是在模型过程的轨迹中包括随机发生的 "跳跃"。这种修改主要是在金融背景下进行的,其中扩散模型被用来描述价格/资产过程的动态,这些价格/资产过程在观察到的时间序列中会出现看似自发的频繁跳动。例如,人们通常假设一个给定的股票价格过程的对数收益为正态分布。通过假设股票价格过程的动态变化遵循几何布朗运动,这一假设可以很容易地被纳入随机微分方程中。

其中Xt表示时间t的股票价格,由此可见,对数(Xt)-对数(Xs)∼N((μ-σ2/2)(t-s), σ2(t-s)),对于t>s。然而,股票价格收益率的正态性长期以来一直受到争议,经验证据表明,收益率往往表现出正态分布不能很好复制的特征。其中最广为人知的是模型过程中明显缺乏重尾的现象。这一点可以通过计算描述性的统计数据来证明,比如观察到的收益率序列的偏度和峰度,随后可以与正态分布下的相应统计数据进行对比。在扩散过程的背景下,这种差异通常是通过建立随机波动率模型来弥补的,其中收益过程的扩散系数本身被视为一个随机过程。也就是说,修改后的过程可以采取以下形式:

其中a(σ 2 t , t)和b(σ 2 t , t)分别表示方差过程的漂移和扩散,B (1) t和B (2) t是相关的布朗运动。随机波动率模型通过允许对数收益的方差随时间变化,更准确地捕捉股票价格收益的尾部行为。

然而,在解释随机波动率机制时需要注意。事实上,当 B (1) t 和 B (2) t 不相关时,对数收益过程的边际分布是以方差过程的已知初始值为条件的(即Xt|Xs, σ2 s for t > s),仍然是正态分布,即存在强相关,在这种情况下,对数收益的边际分布可能是偏斜的,尾部比正态分布下预测的略厚,由此产生的转移密度可能没有足够的leptokurtic来解释短转移期内的极端收益事件。

为了说明这一点,考虑对标准普尔500指数(S&P 500)的每日对数收益的滚动估计。让Xti表示标准普尔500指数在时间ti的值,然后用带宽h定义一个峰度滚动估计值。

描述峰度的滚动估计和时间差估计,计算为{K(ti, h) - K(ti-1, h) : i = h, h + 1, . . N},在1990-01-01至2015-12-31的时间段内使用h=250天的带宽。在这个带宽下,差分序列代表了将滚动估计值向前移动一天所引起的估计峰度的变化,即(大约)过去一年的数据。此外,我们还将峰度的总体估计值(在整个时间段内计算)与正态分布的估计值叠加在一起。

根据总体估计,样本的峰度明显超过了正态分布的估计。然而,一年的滚动估计显示,尽管对数收益系列的峰度通常高于正态分布的峰度,但总体估计的规模可归因于一些极端收益事件的发生。这些事件表现为峰度的滚动估计值中突然出现的尖峰,在时间差的估计值中可以清楚地看到。

为了解释这种极端事件,Merton(1976)提出在扩散轨迹中加入跳跃,以便建立一个比几何布朗运动的连续路径所预测的更精确的资产价格回报模型,在这种情况下,修改后的随机微分方程(SDE)的形式为

其中z˙t表示正态分布的跳跃随机变量,Nt是强度恒定的泊松过程,即Nt-Ns∼Poi(λ(t - s))。在这种表述下,极端事件被明确地包含在随机微分方程中,作为扩散轨迹中随机发生的不连续跳跃。因此,观察到的对数收益的尾部行为和布朗运动的尾部行为之间的差异,通过加入跳跃机制得到了缓解。在此基础上,我们可以扩展该模型,以建立一个带有跳跃的随机波动率模型,例如:

其中跳跃同时影响着收益率和波动率。利用这一点,可以保留随机波动率的有用特性,同时直接说明极端收益事件和波动率的跳跃。

标量的例子

为了证明矩量方程在分析跳跃扩散模型中的应用,我们考虑一个具有随机强度的非线性、时间不均一的跳跃扩散。设

λ(Xt, r˙t, t) = r˙t,其中强度参数r˙t的动态变化由连续时间马尔科夫链(CTMC)给出。

转移率矩阵

在方程的动态作用下,该过程表现出线性漂移和波动,随时间周期性变化。此外,该过程还受到随机发生的跳跃事件的影响,跳跃强度随时间在λ1和λ2之间随机转换。我们需要评估强度过程随时间变化的期望值。从˙rt的转移概率矩阵中,可以得到

图将得到的近似值与不同时间点的模拟轨迹计算的频率分布进行了比较。与矩方程一样,转移密度近似值似乎准确地复制了指定时间段内的转移密度。周期性波动的影响可以从转移密度曲面的振荡形状中看出。

for(i in 1:4)plot(log(moments\[i,\])~time,type='l')
  lines(log(moments\[i,\])~time)

legend('bottomright',bty='n')

for(i in 2:5) h1 =simhists\[\[i\]\]
    surface3d(x,ch)  
  plot(1:2, type='n', main="", xlab="", ylab="",axes=FALSE)

通过重复计算不同初始条件下的转移密度近似值--我们不是从低跳频状态开始,而是让过程从高跳频状态开始--我们可以直观地看到随机强度的影响。图比较了强度过程的两个初始状态的近似过渡密度。在高强度制度下,过渡密度明显比低强度制度下更偏斜。这是很直观的,因为尽管无论强度过程的状态如何,跳跃分布都是固定的,但在假定的参数集下,跳跃通常会假设正值。

因此,如果跳跃发生得更频繁,那么与低强度区制下相比,该过程很可能在某一特定时间内从其初始状态进一步传播。注意到,尽管强度过程转换回低强度状态的概率不为零,但与从低强度状态开始相比,平均而言,在转移期的持续时间内,强度预计会更高。这可以通过比较假设参数下强度过程的两个初始状态的h(t, λ, β)来验证。

得到的参数估计值与真实的参数集相当吻合,但μz21是个明显的例外。然而,仔细检查发现,在跳跃扩散模型下计算出的估计值确实是一个有效的估计值,因为直接从跳跃实现中计算出的值是相当相似的。事实上,在这个实验中,跳跃信号是相当强的,因为跳跃分布的分散性相对于扩散参数来说是很大的。因此,跳跃和扩散动态之间的对比度很高,足以对跳跃区制的动态做出相当准确的推断。

尽管估计的参数接近真实的参数集,但在模拟中产生的特定的跳跃实现序列包含在真实参数集下相对不可能的值。尽管这样,跳跃区制的参数仍然可以被准确地提取出来,尽管保留了不可能的跳跃序列的属性。

对谷歌股票价格波动的应用

在次贷危机后的世界里,投资者已经越来越意识到了解股票价值的大幅波动对投资组合和金融产品的影响的重要性。因此,分析金融数据的技术已经变得越来越复杂,而且往往侧重于更好地管理与极端事件相关的风险和机会,包括在高频和低频交易范围内。

与此同时,数据市场也有了类似的发展,成千上万的经济变量和股票的高度详细数据几乎可以免费获得。期权交易所(CBOE)发布了在主要证券交易所上市的一些大盘股的波动率指数。通过使用诸如S & P 500波动率指数,这些股票波动率指数可以量化单个股票价格过程的波动性,而不是股票指数的波动。

事实上,单个股票过程的动态可能与一组股票的总体动态有很大的不同。因此,股票波动率指数在量化投资组合中的风险敞口方面非常有用,这些投资组合对此类股票和相关过程有大量投资。通过使用各种跳跃扩散模型,我们试图对互联网搜索巨头谷歌的股票波动率进行建模。

图显示了谷歌股票波动率(VXGOG)从2010年开始到2015年底的轨迹,以每日为单位进行采样。在接下来的分析中,我们以年为单位来衡量时间,并使用准确的日期来观察,以构建连续观察的转移期限。

# 谷歌股票波动率
 #做一个数据的图表
 plot(Vt~time1,type='l',lwd=1)

为了对波动率时间序列进行建模,我们定义了一些嵌套在SDE中的跳跃扩散模型。

跳跃强度为λθ(Xt, t),旨在复制波动率序列的突出特征和动态变化。利用广义二次方程框架,我们可以为方程建立一个模板,可以用来拟合各种形式的漂移、扩散和跳跃。为了对波动率序列的漂移进行建模,我们使用了线性均值回归的漂移结构。

请注意,先验参数大多是无信息的,然而,它们确实有助于将相关参数限制在适当的领域内。例如,θ8被限制在[0,1]区间内,否则似然会包含多个相同的模型。我们可以将跳跃扩散过程拟合到观察到的序列中,并计算出参数估计值。

# 计算参数估计值
estimates(model_1)

从建模的角度来看,通过比较模型与传统扩散模型的拟合,可以清楚地看到跳跃式扩散的使用。例如,与它的无跳跃对应模型--股票波动率的时间同质性CIR模型相比。

与DIC的比较显示了拟合度的大幅提高。

# 比较DIC值
dic(model\_1, model\_2)

尽管参数估计值可以说明过程的跳跃区制的动态,但JGQD.mcmc()函数为评估跳跃事件的概率提供了一个有用的统计数字。从模型输出中,我们可以访问列表变量,它给出了在MCMC运行的每个迭代中观察到至少一次跳跃的估计平均概率。因此,我们可以画出上述概率的频率直方图,以便深入了解一个典型转移跳跃到来的拟合概率。

# 做一个每个转移期的平均跳跃概率的柱状图。
 hist(zero.jump\[seq(burns,updates,1)\]

根据直方图,我们可以预期在任何一个交易日看到至少一次波动率的跳跃,概率约为6.5%。

作为参考,我们还叠加了每个转移区间的跳跃概率的解码序列。也就是说,我们估计了每个观察到的转移期包含跳跃的概率(基于基础模型),并人为地选择了预(后)测的跳跃到达的时间序列。这是通过强加一个启发式规则来实现的,即90%或更高的包含跳跃的估计概率(包含在模型输出列表变量中)被认为是检测跳跃事件的决定性因素。尽管不严格,但对探索性分析很有用。

从图上看,估计的到达时间似乎与波动率序列中的大幅波动相吻合。具体来说,一些解码的到达似乎是结构性的,在波动率周期性上升之后观察到波动率的下降......更深入的分析将在接下来的研究中进行,但要考虑以下几点。

plot(deprob~time)
abline(h=0.8)

plot(Vt~time1)
for(i in 1:length(at.dates)segments(dates, 10, dates\[i\])


相关文章
|
3月前
|
数据挖掘 数据处理
R语言统计基本概念:探索描述性统计与推断统计的奥秘
【8月更文挑战第30天】描述性统计与推断统计是R语言统计分析中的两大基石。描述性统计帮助我们直观地了解数据的分布特征和基本属性,而推断统计则允许我们基于样本数据对总体进行推断和预测。在数据分析的实际应用中,两者相辅相成,共同构成了数据分析的完整框架。掌握这两大概念及其在R语言中的实现方法,对于提升数据分析能力和决策效率具有重要意义。
|
6月前
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
|
6月前
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
|
2月前
|
数据采集
基于R语言的GD库实现地理探测器并自动将连续变量转为类别变量
【9月更文挑战第9天】在R语言中,可通过`gd`包实现地理探测器。首先,安装并加载`gd`包;其次,准备包含地理与因变量的数据框;然后,使用`cut`函数将连续变量转换为分类变量;最后,通过`gd`函数运行地理探测器,并打印结果以获取q值等统计信息。实际应用时需根据数据特点调整参数。
126 8
|
2月前
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
3月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
6月前
【R语言实战】——Logistic回归模型
【R语言实战】——Logistic回归模型
|
6月前
|
机器学习/深度学习 数据可视化
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
21天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3