Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数股票价格时间

宋宪
• 阅读 303

全文链接:https://tecdat.cn/?p=33809

原文出处:拓端数据部落公众号

随机波动模型(Stochastic volatility models)经常被客户用来对股票价格随时间的变动性进行建模。波动性(volatility)是随时间的对数收益的标准差。与假设波动性恒定不变不同,随机波动模型具有隐变量参数,可以在每个时刻对波动性进行建模。

import numpy as np

这个例子使用了随机变分推断(stochastic variational inference)。

数据

我们将对标普500指数按日回报的波动性进行建模。让我们加载过去三年的数据。

df = pd.read_csv('Pt.csv')

我们可以查看随时间的原始指数值:

# 绘制原始标普500指数性能
plt.plot(df['S&P 500'])

......

Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数股票价格时间

但我们也可以计算对数收益的差异,然后将其建模以估计波动性。

# 计算对数收益
y = df['S&P 500'].values

......

# 绘图
plt.plot(y.T)
......

Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数股票价格时间

模型

在每个时间点 ((i)),我们将对该时间点的对数收益进行建模 ((y_i))。模型允许随时间改变波动性,因此每个时间点的波动性由该时间点的参数 ((s_i)) 控制。

然而,我们不能让每个时间点的尺度参数 ((s_i)) 完全独立,否则模型会过度拟合数据!

我们将使用正态分布作为每个 (s) 参数的变分后验分布,对于 (\nu) 和 (\sigma):

让我们使用 ProbFlow 构建这个模型。

class Stolity(pf.Model):

    def __init__(self, N):
  
......1),
                               transform=tf.exp)

    def __call__(self):
  
......
        self.add_kl_loss(s_posteriors, s_priors)
        return pf.StudentT(self.nu(), 0, tf.exp(self.s()))

然后我们可以实例化该模型,

model = Stocty(N)

并将其拟合到数据上!

model.fit(y,
......)

检查拟合结果

我们可以查看参数 (\sigma) 和 (\nu) 的后验分布:

model.posterior_plot([
......)

Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数股票价格时间

但更重要的是,我们可以绘制随时间变化的波动性的 MAP 估计:

plt.plot(y.T)

......

Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数股票价格时间

由于这是一个贝叶斯模型,我们还可以对每个时间点的波动性量进行不确定性估计:

# 从后验分布中抽样
Ns = 50

......

# 绘制随时间变化的后验分布
plt.plot(y.T)

......
plt.show()

Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数股票价格时间


Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数股票价格时间

最受欢迎的见解

1.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e7%bb%98%e5%88%b6%e7%94...)用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用

2.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e7%94%9f%e5%ad%98%e5%88...)R语言GARCH-DCC模型和DCC(MVT)建模估计

3.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e5%a6%82%e4%bd%95%e5%9c...)R语言实现 Copula 算法建模依赖性案例分析报告

4.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e4%b8%ad%e4%bd%bf%e7%94...)R语言COPULAS和金融时间序列数据VaR分析

5.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e7%94%9f%e5%ad%98%e5%88...)R语言多元COPULA GARCH 模型时间序列预测

6.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80ggplot2%e8%af%af%e5%b7%a...)用R语言实现神经网络预测股票实例

7.[](https://tecdat.cn/r-%e8%af%ad%e8%a8%80%e7%bb%98%e5%88%b6%e5%8...)r语言预测波动率的实现:ARCH模型与HAR-RV模型

8.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e5%a6%82%e4%bd%95%e6%89...)R语言如何做马尔科夫转换模型markov switching model

9.matlab使用Copula仿真优化市场风险

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
PhoneGap设置Icon
参考:http://cordova.apache.org/docs/en/latest/config\_ref/images.html通过config.xml中的<icon标签来设置Icon<iconsrc"res/ios/icon.png"platform"ios"width"57"height"57"densi
可莉 可莉
3年前
18个常用 webpack插件,总会有适合你的!
!(https://oscimg.oschina.net/oscnet/71317da0c57a8e8cf5011c00e302a914609.jpg)来源| https://github.com/Michaellzg/myarticle/blob/master/webpack/Plugin何为插
Wesley13 Wesley13
3年前
MySQL总结(十一)子查询
!(https://oscimg.oschina.net/oscnet/upa344f41e81d3568e3310b5da00c57ced8ea.png)子查询1\.什么是子查询需求:查询开发部中有哪些员工selectfromemp;通
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这