首页 > 编程语言 >【视频】随机波动率SV模型原理和Python对标普SP500股票指数预测|数据分享|附代码数据

【视频】随机波动率SV模型原理和Python对标普SP500股票指数预测|数据分享|附代码数据

时间:2023-06-10 23:56:08浏览次数:53  
标签:Python 模型 波动 SV 建模 马尔可夫 随机 标普

全文链接:http://tecdat.cn/?p=22546

最近我们被客户要求撰写关于随机波动率SV模型的研究报告,包括一些图形和统计输出。

什么是随机波动率?随机波动率 (SV) 是指资产价格的波动率是变化的而不是恒定的

“随机”一词意味着某些变量是随机确定的,无法精确预测。

图片

在金融建模的背景下,随机建模迭代随机变量的连续值,这些值彼此不独立。非独立的意思是虽然变量的值会随机变化,但其起点将取决于其先前的值,因此取决于其先前的值,依此类推;这描述了所谓的随机游走。

图片


点击标题查阅往期内容

图片

Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV,Stochastic Volatility) 模型

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

随机波动率的经验证据 

在定义了波动率的含义之后,我们现在通过讨论波动率随机变化的证据来引导其余部分。我们(大体上)遵循,对现金和期权市场中观察到的价格行为进行一些实证观察。我们考虑了一些经济解释,并将它们与手头的主题联系起来:

厚尾 

现在普遍接受的是,资产收益的经验分布是尖峰的意思(大致),即关于均值的四阶矩大于具有相同方差的正态分布的相同统计量。这意味着观察到更多的极端回报和更少的中等回报,“尖峰”意味着实际分布中靠近均值的天数更多,“厚尾”表示极端收益率出现的频率高于正态分布的预测,比如出人意料的“黑天鹅事件”。 

图片

波动性聚类和持久性

看一眼金融时间序列通常会立即发现高波动期和低波动期。 

图片

事实上,肥尾和波动性聚类是同一枚硬币的两个方面。众所周知,分布的混合,例如根据正态分布分布的价格变化,但具有随机方差,可以复制肥尾。然而,通过直接将基础价格分布建模为具有肥尾,可以同样很好地解释肥尾和波动性聚类。另一个经验事实是波动机制的持续存在,存在高波动期和低波动期,而不仅仅是随机事件。这一观察表明了任何提议的波动率模型的某些内容。

什么是随机建模?

随机建模是一种用于帮助做出投资决策的财务模型。这种类型的建模使用随机变量预测不同条件下各种结果的概率。

随机建模呈现数据并预测结果,这些结果说明了一定程度的不可预测性或随机性。许多行业的公司都可以使用随机模型来改进他们的业务实践并提高盈利能力。在金融服务领域,规划师、分析师和投资组合经理使用随机模型来管理他们的资产和负债并优化他们的投资组合。

关键要点

  • 随机模型使用随机变量预测不同条件下各种结果的概率。

  • 随机建模呈现数据并预测结果,这些结果说明了一定程度的不可预测性或随机性。

  • 在金融服务领域,规划师、分析师和投资组合经理使用随机模型来管理他们的资产和负债并优化他们的投资组合。

  • 与随机建模相反的是确定性建模,它每次都为一组特定的输入提供相同的精确结果。

  • 蒙特卡洛模拟是随机模型的一个例子。它可以根据单个股票收益的概率分布来模拟投资组合的表现。

相关视频

**

拓端

,赞31

了解随机建模:恒定与可变

要理解随机建模的概念,将其与相反的确定性建模进行比较会有所帮助。

确定性建模产生恒定的结果

无论您重新计算模型多少次,确定性建模都可以为特定的一组输入提供相同的精确结果。在这里,数学性质是已知的。它们都不是随机的,只有一组特定值和一个问题的答案或解决方案。对于确定性模型,不确定因素是模型外部的。

随机建模产生多变的结果

另一方面,随机建模本质上是随机的,模型中内置了不确定因素。该模型产生了许多答案、估计和结果——例如将变量添加到复杂的数学问题中——以查看它们对解决方案的不同影响。然后在各种情况下重复多次相同的过程。

波动性

资产的波动性是期权定价的关键组成部分。随机波动率模型是出于对期权定价的 Black Scholes 模型进行修改的需要而开发的,该模型未能有效地考虑到标的证券价格波动性可能发生变化的事实。Black Scholes 模型反而做了简化假设,即基础证券的波动性是恒定的。随机波动率模型通过允许基础证券的价格波动率作为随机变量波动来纠正这一点。通过允许价格变化,随机波动率模型提高了计算和预测的准确性。

图片

图片

随机波动的一般形式 

连续时间金融模型被写成使用随机微分方程的扩散过程。我们正在研究的模型的一般形式是 

图片

和 

图片

和 

图片

这些方程意味着 S 的瞬时回报由一些确定性项加上一些随机噪声给出。本身遵循类似(但更一般)的随机动态。

Heston 随机波动率模型

Heston 模型是由金融学者 Steven Heston 在 1993 年创建的随机波动率模型。该模型使用波动率或多或少是随机的假设,并具有以下区别于其他随机波动率模型的特征:

  • 它考虑了资产价格与其波动性之间的相关性。

  • 它将波动理解为回归均值。

  • 它不要求股票价格遵循对数正态概率分布。

如下图所示,观察到的股票波动率可能会飙升至高于或低于平均水平,但似乎总是在平均水平附近。高波动期之后通常是低波动期,反之亦然。使用均值回归确定波动范围并结合 预测 技术,投资者可以选择最佳交易。

图片

Python随机波动率(SV)模型对标普500指数时间序列波动性预测

资产价格具有随时间变化的波动性(逐日收益率的方差)。在某些时期,收益率是高度变化的,而在其他时期则非常平稳。随机波动率模型用一个潜在的波动率变量来模拟这种情况,该变量被建模为随机过程。下面的模型与 No-U-Turn Sampler 论文中描述的模型相似,Hoffman (2011) p21。

图片

这里,r是每日收益率序列,s是潜在的对数波动率过程。


建立模型

首先,我们加载标普500指数的每日收益率。

 
returns = (pm.get_data("SP500"))
returns[:5]

图片

正如你所看到的,波动性似乎随着时间的推移有很大的变化,但集中在某些时间段。在2500-3000个时间点附近,你可以看到2009年的金融风暴。

 
ax.plot(returns)

图片指定模型。

 
GaussianRandomWalk('s', hape=len(returns))
nu = Exponential(  .1)
r = StudentT(  pm.math.exp(-2*s),
                    obs=returns)

拟合模型

对于这个模型,最大后验(Maximum A Posteriori,MAP)概率估计具有无限的密度。然而,NUTS给出了正确的后验。

 
pm.sample(tune=2000
Auto-assigning NUTS sampler...

图片

图片

 
plot(trace['s']);

图片

观察一段时间内的收益率,并叠加估计的标准差,我们可以看到该模型是如何拟合一段时间内的波动率的。

 
plot(returns)
plot(exp(trace[s]);

图片

 
 np.exp(trace[s])

图片

参考文献

  1. Hoffman & Gelman. (2011). The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo.

图片

点击文末 “阅读原文”

获取全文完整资料。

本文选自《随机波动率SV模型原理和Python对标普SP500股票指数时间序列波动性预测》。

点击标题查阅往期内容

HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV,Stochastic Volatility) 模型
R语言隐马尔可夫模型HMM连续序列重要性重抽样CSIR估计随机波动率模型SV分析股票收益率时间序列
马尔可夫Markov区制转移模型分析基金利率
马尔可夫区制转移模型Markov regime switching
时变马尔可夫区制转换MRS自回归模型分析经济时间序列
马尔可夫转换模型研究交通伤亡人数事故时间序列预测
如何实现马尔可夫链蒙特卡罗MCMC模型、Metropolis算法?
Matlab用BUGS马尔可夫区制转换Markov switching随机波动率模型、序列蒙特卡罗SMC、M H采样分析时间序列
R语言BUGS序列蒙特卡罗SMC、马尔可夫转换随机波动率SV模型、粒子滤波、Metropolis Hasting采样时间序列分析
matlab用马尔可夫链蒙特卡罗 (MCMC) 的Logistic逻辑回归模型分析汽车实验数据
stata马尔可夫Markov区制转移模型分析基金利率
PYTHON用时变马尔可夫区制转换(MRS)自回归模型分析经济时间序列
R语言使用马尔可夫链对营销中的渠道归因建模
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计
R语言隐马尔可夫模型HMM识别不断变化的股票市场条件
R语言中的隐马尔可夫HMM模型实例
用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)
Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV,Stochastic Volatility) 模型
MATLAB中的马尔可夫区制转移(Markov regime switching)模型
Matlab马尔可夫区制转换动态回归模型估计GDP增长率
R语言马尔可夫区制转移模型Markov regime switching
stata马尔可夫Markov区制转移模型分析基金利率
R语言如何做马尔可夫转换模型markov switching model
R语言隐马尔可夫模型HMM识别股市变化分析报告
R语言中实现马尔可夫链蒙特卡罗MCMC模型

标签:Python,模型,波动,SV,建模,马尔可夫,随机,标普
From: https://www.cnblogs.com/tecdat/p/17472221.html

相关文章

  • 用Python白嫖WPS付费功能:把PPT转为 1张 长图,1行代码搞定
    大家好,这里是程序员晚枫,小红薯也叫这个名。读者群......
  • Python爬虫--BOSS直聘网Python相关职业招聘信息
    一、选题的背景为什么要选择此选题?要达到的数据分析目标是什么?从社会、经济、技术、数据来源等方面进行描述(200字以内)(10分)   最近Python大热,Python在数据分析、后端开发、人工智能、运维、全栈开发等多方面都具有得天独厚的优势。在一些行业爬虫工程师,人工智能,爬虫工程......
  • Python网络爬虫对汽车团购报名的爬取及分析
    一、选题背景 现如今汽车已逐步进入家庭中,对于一些准备购入新车的家庭,犹豫不决,不知道现在市场上与车友们推荐的哪些车,此次爬虫项目将对网上的团购排名进行爬取,更能简单直观的让大家依据个人情况来挑选自己中意的车辆详情。二、设计方案1.主题式网络爬虫名称  《python网络......
  • python爬虫——深圳市租房信息数据分析
    一、选题背景因为深圳经济非常不错,想必想要去深圳工作的人也不少。衣食住行是生活的基本需求。衣和食好解决,不喜欢的衣服可以买新的,不好吃的食物可以换一家吃。可是在住宿上,买房和租房的置换成本都相对较高,因此房源选择尤为慎重。作为目前买不起房的人自然是以租房为主,但是租房我......
  • python爬虫------------旅游的地点的爬取和可视化
    1.选题背景我国旅游行业的极速发展,因为之前疫情原因,使得国内旅游成为新风潮,由于国内疫情解封,使得中国成为最先开放旅游的国家,本次项目可视化就是分析国内旅游的数据,分析适合出行旅游的时间与地点信息.2.设计方案 1.向目标网络发送请求   2.获取数据网页源码   3.筛......
  • python爬虫------------旅游的地点的爬取和可视化 2
    随笔-2  文章-0  评论-0  阅读- 55python爬虫------------旅游的地点的爬取和可视化  1.选题背景我国旅游行业的极速发展,因为之前疫情原因,使得国内旅游成为新风潮,由于国内疫情解封,使得中国成为最先开放旅游的国家,本次项目可视化就是分析国内旅游......
  • python日记-os、sys学习
    OS模块:os模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。至今位置用到的os.path.abspath(path)  返回绝对路径;linux:(环境变量)os.environ['USER']:当前使用用户。os.environ['LC_COLLATE']:路径扩展的结果排序时的字母顺序。......
  • Python Joblib库使用学习总结
    实践环境python3.6.2Joblib简介Joblib是一组在Python中提供轻量级流水线的工具。特别是:函数的透明磁盘缓存和延迟重新计算(记忆模式)简单易用的并行计算Joblib已被优化得很快速,很健壮了,特别是在大数据上,并对numpy数组进行了特定的优化。主要功能输出值的透明快速磁盘......
  • python网络爬虫课程设计--探索Taylor Swift歌词
    python网络爬虫课程设计--探索TaylorSwift歌词一、选题的背景泰勒·斯威夫特(TaylorSwift),1989年12月13日出生于美国宾夕法尼亚州,美国乡村音乐、流行音乐创作女歌手、演员、慈善家。 2006年,与独立唱片公司大机器唱片签约,推出首支单曲《TimMcGraw》与发行首张同名专辑《Taylor......
  • v831开发日记-交叉编译之python-build解析
    python部分#!/usr/bin/envpython#-*-coding=utf-8-*-##@filefromhttps://github.com/Neutree/c_cpp_project_framework#@authorneucrack#@licenseApache2.0##这段代码使用Python语言,导入了sys和os模块。它定义了一个名为sdk_env_name的变量,其值为"LIBMAIX_......