在计算条件在险价值(Cvar)的过程中发现了一些有趣的东西
1.基础知识
cdf
累积分布函数,在给定某个具体临界值z
的条件下,计算概率p
ppf
累积分布函数的反函数scipy.norm.ppf
, 在给定概率p
的条件下求z
pdf/pmf
,连续型/离散型的概率密度函数,给定z
的条件下求概率密度函数对应的值
2 Var值计算:
假设投资组合服从均值为\(\mu\),标准差为\(\sigma\),的正态分布,使用scipy计算var,1-prob=0.95
z = norm.ppf(prob)
-VaR = mean+z*std
3 计算CVaR,一共有两种方式,
方法一:
z = norm.pdf(norm.ppf(prob)) / prob
CVaR = mean-z * std
方法二:
from scipy.integrate import quad
CVaR = quad(lambda x:norm.ppf(x,mean,std), 1-prob, 1)/prob
结果是一样的,由此得出结论:累计分布函数的反函数关于概率的积分(注意区间)结果和概率密度函数值一样
验证代码
import numpy as np
from scipy.stats import norm
from scipy.integrate import quad
x = np.linspace(-2.5,2.5,100)
for i in x:
y1 = norm.pdf(i)
prob = norm.cdf(i)
y2 = quad(lambda x:norm.ppf(x), 1-prob, 1)
print(abs(y1-y2[0])<=0.0001)
标签:CVaR,ppf,scipy,参数,计算,quad,prob,norm
From: https://www.cnblogs.com/Franciszw/p/17076017.html