FRM模型十二:极值理论

news/2024/6/17 6:55:01

目录

  • 极值理论介绍
    • GEV
    • POT
  • 代码实现

极值理论介绍

在风险管理中,将事件分为高频高损、高频低损、低频高损、低频低损。其中低频高损是一种非常棘手的损失事件,常出现在市场大跌、金融体系崩溃、金融危机以及自然灾害等事件中。

由于很难给极端事件一个准确的定义,所以可观测的历史数据非常少。这种问题不仅仅出现在风险管理领域,在其他行业也很普遍。

极值理论(Extreme-value theory )是统计学的一种专门用于研究随机变量分布的极端尾部行为。与一般的中心趋势型统计方法不同,中心趋势性统计方法核心是中心极限定理,但是极端值无法应用中心极限定理(中心极限定理假设样本数量足够大时服从正态分布)。

GEV

假设一个随机损失变量X是独立同分布的(iid)。从F(x)中抽取的一个样本大小为n,且该样本的最大值为M(如果n很大,我们可以把M看作一个极值)。根据Fisher-Tippett定理,当n变大时,极值(即Mn)的分布收敛到下面的广义极值(GEV)分布

其中
μ \mu μ:极端值的平均数

σ \sigma σ:极端值的标准差

ϵ \epsilon ϵ:形状参数,描述极值分布的尾部形状

ϵ > 0 \epsilon>0 ϵ>0,服从Frechet分布,呈现出肥尾的特点。比如t分布,帕累托分布。
ϵ = 0 \epsilon=0 ϵ=0,服从Gumbel分布,呈现出指数型尾部,尾部相对瘦(light)。比如正态分布,对数正态分布。
ϵ < 0 \epsilon<0 ϵ<0,服从Weibull分布,呈现出比正态分布尾部更瘦的形态。该分布尤其不适用在金融实证中,由于金融数据一般呈现肥尾的特点。
在这里插入图片描述

POT

GEV在实际应用中可能会漏掉极值点,POT在此基础上进行改良,先设定一个阈值(threshold),超过阈值的损失分布服从POT分布,这种方法比GEV方法需要更少的参数。
在这里插入图片描述
β \beta β:规模参数

ϵ \epsilon ϵ:形状参数,描述极值分布的尾部形状

由此可推导VaR和ES的计算方法:
V a R = μ + β ϵ { [ n N u ( 1 − α ) − ϵ ] − 1 } VaR=\mu+\frac{\beta}{\epsilon}\{[\frac{n}{N_{u}}(1-\alpha)^{-\epsilon}]-1\} VaR=μ+ϵβ{[Nun(1α)ϵ]1}
E S = V a R 1 − ϵ + β − ϵ μ 1 − ϵ ES = \frac{VaR}{1-\epsilon}+\frac{\beta-\epsilon\mu}{1-\epsilon} ES=1ϵVaR+1ϵβϵμ

代码实现

from prettytable import PrettyTable
import numpy as np
import akshare as ak
from scipy.stats import genextreme as gev
from scipy.stats import genpareto as pot# 利用akshare读取股票收益序列
stock = ak.stock_zh_a_hist(symbol='000001', period="daily", start_date="20071012", end_date='20081012', adjust="")
price = stock['收盘']# GEV
c, loc, scale = gev.fit(price[price < np.percentile(price, 5)])
confidence_level = 0.95
VaR_gev = gev.ppf(confidence_level, c, loc, scale)# POT
threshold = 17
choose = price[price < threshold]
c, beta, epsilon = pot.fit(choose)
n = float(len(price))
nu = float(len(choose))
VaR_POT = choose.mean() + beta/epsilon * ((n / nu * (confidence_level ** (-float(epsilon)))) - 1)# print
VaR = PrettyTable(['Tool', 'VaR'])
VaR.add_row(['GEV', round(VaR_gev, 4)])
VaR.add_row(['POT', round(VaR_POT, 4)])
print(VaR.get_string(title="GEV VaR"))

输出结果:
在这里插入图片描述


http://www.mrgr.cn/p/78767841

相关文章

《哈利波特》1-7册全集高清PDF

《哈利波特》简介 《哈利波特》这个系列的图书自1997年在英国问世以来,迄今在全世界已发行超过四亿多册,创造了出版史上的奇迹,全套共7册,分别是:《Harry Potter and the Philosopher’s Stone 哈利波特与魔法石》、《Harry Potter and the Chamber of Secrets 哈利波特与…

【Vue3】自定义 Vue3 插件(全局实现页面加载动画)

// main.ts import { createApp } from vue import App from ./App.vue import Loading from "./components/Loading/index.ts";const app createApp(App) type Lod {show: () > void,hide: () > void } //编写ts loading 声明文件放置报错 和 智能提示 decl…

十八:Java8新特性

文章目录 01、Java8概述02、Java8新特性的好处03、并行流与串行流04、Lambda表达式4.1、Lambda表达式使用举例4.2、Lambda表达式语法的使用14.3、Lambda表达式语法的使用2 05、函数式(Functional)接口5.1、函数式接口的介绍5.2、Java内置的函数式接口介绍及使用举例 06、方法引…

C++类开发的第六篇(虚拟继承实现原理和cl命令的使用的bug修复)

Class_memory 接上一篇末尾虚拟继承的简单介绍之后,这篇来详细讲一下这个内存大小是怎么分配的。 使用cl cl 是 Microsoft Visual Studio 中的 C/C++ 编译器命令。通过在命令行中键入 cl 命令,可以调用 Visual Studio 的编译器进行编译操作。cl 命令提供了各种选项和参数,用…

Unity—MVC分层开发思想

每日一句&#xff1a;当你不努力的时候&#xff0c;天赋就会一点一点被收回 目录 MVC分层开发思想 MVC是什么 MVC的开发步骤 案例&#xff1a;点击按钮实现金币进行添加&#xff0c;并且把金币记录到JSON里 MVC模式实现 背包系统基础代码 背包项目实现步骤 MVC分层开发思…

web自动化——Selenium 之下拉

一、select下拉列表Select类处理select-option1)导入Select类 from selenium.webdriver.support.select import Select2)确保你要操作的元素是select。实例化Select类 Select()3)找到select元素对象 select_ele=driver.find_element(By.NAME,cars)4)将select对象作为参数 s…

Servlet快速入门

注:出自黑马程序员

CentOS的yum报错except OSError, e:

报错信息 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile base: mirrors.cloud.aliyuncs.comextras: mirrors.cloud.aliyuncs.comupdates: mirrors.cloud.aliyuncs.com File “/usr/libexec/urlgrabber-ext-down”, line 28 except OSError, e: ^…

unity使用Registry类将指定内容写入注册表

遇到一个新需求&#xff0c;在exe执行初期把指定内容写入注册表&#xff0c;Playerprefs固然可以写入&#xff0c;但是小白不知道怎么利用Playerprefs写入DWORD类型的数据&#xff0c;因此使用了Registry类 一. 对注册表中键的访问 注册表中共可分为五类 一般在操作时&#…

Oracle---windows下安装oracle19c

Oracle---windows下安装oracle19c</div><div class="postText"><div id="cnblogs_post_body" class="blogpost-body blogpost-body-html"> 目录: 一. 官网下载oracle19c 以及客户端 二.安装oracle19c 三.配置 1.配置服务 2.配…

oracle11安装及使用

安装oracle11 官网下载地址 Oracle Database 11g Release 2 for Microsoft Windows (x64) 官网下载慢可访问我的资源 也可以网盘获取 链接&#xff1a;https://pan.baidu.com/s/1RDrGkqDA7tfKRnpJXUBMDw 提取码&#xff1a;z3na 上传安装包到服务器 在指定目录下创建文件…

常用日期和时间标准对比:HTML, ISO 8601, RFC 3339, RFC 5322

日期和时间,对于不同系统和平台之间的数据交换和互操作至关重要。本文将对比 HTML 标准、ISO 8601、RFC 3339 和 RFC 5322,为读者提供参考。1. HTML, ISO 8601, RFC 3339, RFC 5322 对比 日期和时间,对于不同系统和平台之间的数据交换和互操作至关重要。本文将对比 HTML 标准…

3.1 IO进程线程

使用fwrite、fread将一张随意的bmp图片&#xff0c;修改成德国的国旗 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> int main(int argc, const char *argv[]) {FILE* fp fopen("./2.bmp","r&quo…

[游戏开发][虚幻5]新建项目注意事项

鼠标右键点击Client.uproject文件&#xff0c;可以看到三个比较关键的选项&#xff0c; 启动游戏&#xff0c;生成sln解决方案&#xff0c;切换引擎版本 断点调试 C代码重要步骤 如果你想断点调试C代码&#xff0c;则必须使用使用代码编译启动引擎&#xff0c;你需要做几个操作…

【李宏毅机器学习2021】(四)Self-attention

引入 Self-attention 前面学到的内容输入都是一个向量,假如输入是一排向量,又应如何处理。来看下有什么例子需要将一排向量输入模型:当输入是一排向量时,输出有三种类型:输入和输出的长度一样,每一个向量对应一个 label,如词性标注、音标识别、节点特性(如会不会买某件…

安装 Ubuntu 22.04.3 和 docker

文章目录 一、安装 Ubuntu 22.04.31. 简介2. 下载地址3. 系统安装4. 系统配置 二、安装 Docker1. 安装 docker2. 安装 docker compose3. 配置 docker 一、安装 Ubuntu 22.04.3 1. 简介 Ubuntu 22.04.3 是Linux操作系统的一个版本。LTS 版本支持周期到2032年。 系统要求双核 C…

【洛谷】闰年

题目描述 很简单,判断给定的年份是不是闰年。 但问题在于我一开始还真不知道闰年的定义..#include<iostream> using namespace std;int main(){int year;cin>>year;if((year%4 == 0 && !(year%100 == 0)) || (year%400 == 0) ){cout<<1;}else{cout&…

综合练习(二)

目录 列出薪金比 SMITH 或 ALLEN 多的所有员工的编号、姓名、部门名称、领导姓名、部门人数&#xff0c;以及所在部门的平均工资、最高和最低工资 补充 spool Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 列出薪金比 SMITH 或 AL…

Python错题集-4:NameError:(变量名错误)

1问题描述 Traceback (most recent call last): File "D:\pycharm\projects\1-可视化学习\8.3更改小提琴图的中位数、均值、颜色等.py", line 8, in <module> violin_parts plt.violinplot(data, showmediansTrue, showmeansTrue) …

【计算机网络】数据链路层——差错控制

差错控制(检错) 差错从何而来? 概括来说,传输中的差错都是由于噪声引起的。 全局性 由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。 解决办法:提高信噪比来减少或避免干扰。(对传感器下手) 局部性 外界特定的短暂原因所造成的冲击噪声,是产生差错…