arch模型的思路_基于VAE的波动率模型——NSVM模型浅析

1c8d9236b14eb4b574f3a047f540c86d.png

对于不确定性的准确估计是金融领域一直追求的目标,而价格变化的波动率通常被用来作为不确定性的度量,因此波动率估计在投资、估值、风险管理和货币政策制定等金融领域中都是非常重要的。这篇文章将会介绍一种利用变分自动编码器(Variational Auto-Encoders,VAE)来估计波动率的模型——NSVM,其整体思路主要是参考我前一篇文章中介绍过的VRNN和SRNN模型,建议没看过文章的同学先看一下。

段易通:生成时间序列的VAE——VRNN与SRNN模型浅析​zhuanlan.zhihu.com
c9534e95f4122ec5e454b749ca4c1260.png

波动率模型

在金融领域中,用来估计和预测波动率的模型被叫做波动率模型,我们可以用它来描述波动率的动态变化。在介绍NSVM之前,我们先简单地总结一下金融领域中常见的波动率模型,一般按照确定性和随机性而分成两类:确定性波动率模型(Deterministic Volatility Models)和随机波动率模型(Stochastic Volatility Models)。

  1. 确定性波动率模型

这类模型认为未来的波动率与已知的历史信息具有确定的关系,例如非常经典的GARCH模型:

其中

是时间序列的第t步,
是第t步的波动率。

在GARCH的基础上还有很多衍生模型,这类模型都是确定性的波动率模型。

2. 随机波动率模型

这类模型认为波动率是并不是确定的,例如经典的Heston模型,模型的dynamic为:

其中

是对数收益率,
代表两个相关的Wiener过程,满足

可以看出,这类模型的波动率是由一个潜在的随机过程

来决定的。

一般形式

设时间序列为

,潜在的随机过程(latent stochastic process)为
,那么波动率的process可以写做:

我们可以对

稍作一些限制,让它们在给定历史的条件下服从高斯分布,即有如下的自回归形式:

这里说一下采用这种自回归的潜在随机过程的原因:首先我们认为一支股票的波动率不会仅仅受到自身的影响,还会受到外部环境的作用,而且外部环境也是一直在变化的,因此我们用一个潜在随机过程

来表示它;另外相比于i.i.d,基于历史的自回归方式更适合于具有一定历史依赖性的时间序列。

Neural Stochastic Volatility Models

接下里就正式开始介绍NSVM,对于上面的自回归形式,其实看过之前那篇文章后就会发现,它其实就是序列VAE的生成过程:先从一个已知历史信息的先验分布中采样得到潜变量

,再根据由历史信息和
确定的
条件生成分布中采样得到生成样本
。这样一来,序列VAE自然而然地就可以作为一个波动率模型。

和前一篇文章类似,我们还是从生成和推断两部分来看:

1.生成过程

,序列的
联合概率分布可以写为:

其中

代表生成网络的参数,
的联合概率分布可写做:

我们用RNN的隐层状态

来代表历史信息
,则可以得到生成网络:

生成过程如下图所示:

3228f822d11c181fd35fd43b9d536b5c.png

简单说一下两个子网络的流程:

  • 自回归网络:如上图a所示,对于
    ,首先通过
    得到
    (RNN的输入为
    ),然后用
    从中得到先验分布的均值和方差,最后采样得到
  • 条件生成网络:如上图b所示,对于
    ,首先通过
    得到隐状态
    (注意这里RNN的输入为
    ),然后用
    从中得到条件生成分布的均值和方差,最后采样得到

2.推断过程

对于潜变量

,我们认为它
与历史
以及整个序列
都有关
,因此近似后验分布可以写为:

其中

代表推断网络的参数。

为了能够捕捉到

的信息,我们用一个自回归RNN和一个双向RNN来构建推断网络:

推断过程如下图所示:

903535a90d8e9e3263b80ed2c3cce254.png

简单说一下流程:先用

捕捉到整个序列
的信息,然后通过包含有
信息的
得到隐状态
,接着通过
得到近似后验分布的均值和方差,最后从该正态分布中采样得到
,即推断出

3.目标函数

NSVM的目标函数如下,虽然形式不同,但其实将

展开后,与前一篇文章中的序列VAE的目标函数是一致的。

4.预测未来序列

作为一个波动率模型,NSVM除了要对时间序列进行建模以外,还需要能够基于历史信息来对未来做出预测,接下来就利用NSVM,从历史序列

中生成未来一步的

思路也很简单,只需要计算:

其中

是后验分布,可以由推断网络来代替;
可以通过自回归网络得到;而
可以通过条件生成网络来得到。

具体步骤如下:

  1. 利用训练好的推断网络,得到
    的S条采样路径
  2. 利用自回归网络,计算下一时间步的潜变量分布
    ,采样得到
  3. 利用条件生成网络,计算下一时间步的序列值分布
  4. 对所有路径求均值

这样我们就通过蒙特卡洛的方法估计出了

的概率分布,可以看出该分布是
由S个高斯分布混合而成的。如果接下来继续要做多步预测的话,就从这个分布中采样得到
,然后重复上面的步骤,如下面的算法所示。

e5ace13c8f2f92dd144ace070ed3a353.png

实验

为了验证这个波动率模型的有效性,论文在真实的股票序列上进行了实验,这次稍微详细介绍一下实验。

数据处理

原始数据是162支来自中国A股的日频close价格序列,每个序列都是单变量的,选择的股票都是2006年或更早上市、且停牌时间小于50天的,这样就能尽可能地减小于由于序列不够长或数值缺失而引起的噪声;对于缺失的数据,这里用了stochastic regression imputation来进行填充(在前20天数据拟合出来的高斯分布中采样填充);序列

采用对数收益率,即
,并对其做归一化。

现在我们把样本的序列变为多变量的,设定一个参数d,从162个单变量序列中选d个出来,组成一个d维变量的时间序列,用它作为一个样本,实验中设定d=6,这样最多就有

个样本,当然这里并不会构造这么多,大概只有2000条样本;时间序列的长度是2570(大约7年),其中前2000步作为训练集,剩下的570步作为测试集。

baseline模型

确定性波动率模型:

  • Quadratic models:ARCH(1)、 GARCH(1,1)、GJR-GARCH(1,1,1)
  • Absolute value models:AVARCH(1)、AVGARCH(1,1)、TARCH(1,1,1)
  • Exponential models:EARCH(1)、EGARCH(1,1)

随机波动率模型:

  • MCMC volatility model:stochvol
  • Gaussian process volatility model:GP-Vol

模型设定

具体参数这里就不说了,这里主要说一下模型在实验中是如何做训练和预测的。训练阶段的流程图如下

6c9757933bf8c3dc137978a0fcd85472.png

训练阶段可以分为3步:

  1. 把历史序列
    输入到推断网络当中,然后从中采样得到潜变量序列
  2. 输入到条件生成网络当中,结合已知的前一步序列值
    ,逐时间步地给出重构序列的概率分布
  3. 计算真实序列在输出概率分布上的似然值,通过上文中的目标函数来对生成和推断网络进行训练。

预测阶段的流程图如下:

b85c15ece62cb9e14c6a4d5e80ede2e9.png

预测阶段可以分为3步:

  1. 把历史序列
    输入到推断网络当中,然后从中采样得到潜变量序列
  2. 利用自回归网络,输入潜变量序列
    ,得到下一时间步的
  3. 利用条件生成网络,预测下一时间步的

在实验中模型会连续重复步骤20次,预测出未来20步的序列,然后再扩充训练集序列长度并重新训练模型。

结果

下图是NSVM与其它baseline模型在测试集上的预测结果,这里采用的评价指标是negative log-likelihood (NLL),其中-diag和-corr分别代表对角矩阵和rank-1 perturbation的两种协方差矩阵(即方差网络输出的协方差

可以取这两种形式)。可以看出,NSVM-corr的表现优于其它baseline模型。

92ce2d7d7be9c0cbdc7a7105eac09ed7.png

下图模型在真实股票序列上的波动率建模结果,可以看出NSVM在适度价格波动(moderate price fluctuation)的区间上更稳定(如[1600,2250]),而在剧烈变化的地方更敏感(如2250之后),而且NSVM的非线性性质也令其能快速适应当前的波动水平,而GARCH则会衰退得慢一些(如[1000,2000])。

32d88841238ee17019611d6ba090db0e.png

总结

对比前一篇文章中的那两个序列VAE模型,可以发现这次的NSVM其实就是VRNN和SRNN的融合版本,它的自回归网络来自于VRNN,而推断网络中的双向RNN则来自于SRNN。通过baseline中的随机波动率模型,可以看出潜变量在波动率模型当中是很常见的,因此序列VAE这种引入了潜变量序列的模型确实也比较贴合这个金融问题。

参考文献

[1] A neural stochastic volatility model

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值