PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化

简介: PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化

这篇文章介绍了一类离散随机波动率模型,并介绍了一些特殊情况,包括 GARCH 和 ARCH 模型。本文展示了如何模拟这些过程以及参数估计。这些实验编写的 Python 代码在文章末尾引用。

离散随机波动率模型

是一个随机基,有一个完整的 的可测量子集 , 一个概率测量 和一个过滤

  • 因此,时间实例使用非负整数进行索引
  • 获取序列的第一个 t元素 , 记

_离散随机波动率_(   DSV) 模型中, 是一个实值 stochastic process (一系列随机变量)满足以下方程:

其中:

  • Z 是 F 的噪声过程。
  • φi 是实数,我假设 并且 gi ,hi 是非负值。
  • fi 、gi 和 h_ihi 是过程的确定性函数。
  • 过程 通常称为 _偏移_,而 σ 称为  X的_波动率。_因为σ 是一个随机过程,所以上面定义的过程 X 属于一个随机波动率模型的大家族。
  • 对于噪声过程 Z,使得每个 Z_t的均值和方差都存在,我们有 .

案例

制定通用 DSV 模型的特化:

后移算子 ,对于 ,产生其参数过程的滞后版本,即 , 和 , 如果 . 例如

为方便起见,我设置 .

对于下面列表中的所有特殊情况,我假设函数 fi 、gi 和 h_i 从参数过程中选择一个元素,即 , 和 .

GARCH 过程定义另外设置

_GARCH(1, 1)_过程非常流行:

ARCH 过程中,波动性具有简化形式,对于所有 i,λi = 0,并且

_ARCH(1)_过程还 满足 对所有   :

模拟

离散随机波动率模型通常用于对观察到的时间序列的对数收益进行建模。因此,为了模拟原始时间序列的路径,我们需要模拟其对数收益并计算 .

由带参数的高斯噪声驱动的 GARCH(1,1) 过程的样本路径 :

path( \[0.001, 0.2, 0.25\])
cumprod* repeat.reshape
plt.subplots

注意 σ 过程为 不能低于 ≈0.0353

最大似然估计

最大似然(ML)参数估计是所有讨论模型的选择方法,因为转换密度,即给定过去信息的 X_t 的密度 是明确已知的。因此,过程样本路径 x 的对数似然函数由下式给出

其中 ,而 是 Z的密度。将上述对数似然函数最小化可得到 的最大似然估计

.

蒙特卡罗研究

为了测试 ML 参数估计过程,我进行了以下蒙特卡罗实验。

  • 使用参数 (0.001, 0.2, 0.25) 模拟长度为 5000 的 2500 个独立 GARCH(1,1) 过程路径。我使用了高斯噪声,即 .
  • 将这些路径中的每一个都输入到 ML 估计并获得估计的参数向量 .
  • 此优化过程中参数的搜索范围限制为 [1e-8, 1]。
  • 将原始 与估计的 进行比较。
  • 使用参数向量 模拟 GARCH(1,1),计算均值和标准差,并将它们与“真实”均值和标准差(分别为 5.098 和 1.084)进行比较。

正如期望的那样,估计量 非常不准确,并且在大多数情况下,甚至不接近真实向量 。特别是,估计的 通常设置为零(参见下面的直方图)。

ps = \[0.001, 0.2, 0.25\]
cumprod * repeat
print, np.std

另一方面,来自估计的 的过程均值和标准偏差要准确得多。这是一件好事,因为我们通常更关心恢复未知数据生成过程的特征,而不是模型的真实参数值。

mes, stvs, esms 
  
    ax\[1\].hist
    fig.tight_layout

柯西噪音

噪声过程  不必归一化为均值 0 和方差 1。实际上,我们只需要确保随机变量 Zt 的分布具有密度即可。如果是这种情况,过程模拟和 ML 估计都可以按照描述的方式工作。

那么如何用从柯西分布中采样的噪声替换高斯噪声呢?在许多概率论书籍中,柯西分布被用作反例,因为它具有许多“病态”特性。例如,它没有均值,因此也没有方差。

我不知道柯西分布中的不稳定样本是什么样子的。看一下带有参数向量的 GARCH(1,1) 过程的示例路径 :

如果使用路径生成函数的时间足够长,甚至可能会生成溢出异常。因此,我用来生成上面显示的直方图的 Python 函数失败了。为了了解原因,让我们使用来自柯西分布的样本生成一些直方图:

柯西分布具有分位数函数

评估 给出

这意味着,例如,在 0.0001 的概率下,采样值大于 3183.10。为了比较,让我们计算标准正态分布的相应分位数:

norm.ppf(0.99)

norm.ppf(0.999)

norm.ppf(0.9999)

相关文章
|
3月前
|
数据采集 数据可视化 搜索推荐
Python数据分析全流程指南:从数据采集到可视化呈现的实战解析
在数字化转型中,数据分析成为企业决策核心,而Python凭借其强大生态和简洁语法成为首选工具。本文通过实战案例详解数据分析全流程,涵盖数据采集、清洗、探索、建模、可视化及自动化部署,帮助读者掌握从数据到业务价值的完整技能链。
393 0
|
3月前
|
存储 数据可视化 BI
Python可视化应用——学生成绩分布柱状图展示
本程序使用Python读取Excel中的学生成绩数据,统计各分数段人数,并通过Matplotlib库绘制柱状图展示成绩分布。同时计算最高分、最低分及平均分,实现成绩可视化分析。
183 0
|
7月前
|
运维 监控 算法
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
MSET-SPRT是一种结合多元状态估计技术(MSET)与序贯概率比检验(SPRT)的混合框架,专为高维度、强关联数据流的异常检测设计。MSET通过历史数据建模估计系统预期状态,SPRT基于统计推断判定偏差显著性,二者协同实现精准高效的异常识别。本文以Python为例,展示其在模拟数据中的应用,证明其在工业监控、设备健康管理及网络安全等领域的可靠性与有效性。
856 13
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
|
2月前
|
数据采集 数据可视化 API
驱动业务决策:基于Python的App用户行为分析与可视化方案
驱动业务决策:基于Python的App用户行为分析与可视化方案
|
3月前
|
存储 数据采集 数据可视化
Python自动化分析知网文献:爬取、存储与可视化
Python自动化分析知网文献:爬取、存储与可视化
|
5月前
|
数据可视化 数据挖掘 数据安全/隐私保护
Python实现时间序列动量策略:波动率标准化让量化交易收益更平稳
时间序列动量策略(TSMOM)是一种基于资产价格趋势的量化交易方法,通过建立多头或空头头寸捕捉市场惯性。然而,传统TSMOM策略因风险敞口不稳定而面临收益波动问题。波动率调整技术通过动态调节头寸规模,维持恒定风险水平,优化了策略表现。本文系统分析了波动率调整TSMOM的原理、实施步骤及优势,强调其在现代量化投资中的重要地位,并探讨关键参数设定与实际应用考量,为投资者提供更平稳的风险管理体验。
173 4
Python实现时间序列动量策略:波动率标准化让量化交易收益更平稳
|
5月前
|
监控 安全 Linux
Arista CloudVision 2025.1 - 多云和数据中心网络自动化、监控和分析
Arista CloudVision 2025.1 - 多云和数据中心网络自动化、监控和分析
197 2
Arista CloudVision 2025.1 - 多云和数据中心网络自动化、监控和分析
|
4月前
|
数据采集 Web App开发 自然语言处理
利用Python构建今日头条搜索结果的可视化图表
利用Python构建今日头条搜索结果的可视化图表
|
6月前
|
运维 监控 安全
如何高效进行网络质量劣化分析与流量回溯分析?-AnaTraf
在数字化时代,网络质量分析与流量回溯对保障业务运行至关重要。网络拥塞、丢包等问题可能导致业务中断、安全隐患及成本上升。传统工具常缺乏细粒度数据,难以溯源问题。流量回溯分析可还原现场,助力精准排障。AnaTraf网络流量分析仪作为专业工具,能高效定位问题,提升团队响应力,降低运营风险。
如何高效进行网络质量劣化分析与流量回溯分析?-AnaTraf
|
6月前
|
大数据
“你朋友圈的真面目,大数据都知道!”——用社交网络分析看透人情世故
“你朋友圈的真面目,大数据都知道!”——用社交网络分析看透人情世故
190 16

推荐镜像

更多