金融分析与风险管理——风险价值(VaR)
1. 风险价值(VaR)简述
风险价值(value at risk,VaR)是指在一定的持有期和给定的置信水平下,利率、汇率、股价等风险因子发生变化时可能对投资组合造成的潜在最大损失。例如:持有期 1 天、置信水平 95% 的情况下,计算得到的 VaR 值为 1000 万元,则表明该投资组合在1天中有 95%的可能性损失不会超过1000万,换句话说,1 天中,有5%的可能性损失会超过 1000 万元。
VaR的大小取决于两个参数:持有期(N)、置信水平(X)。由于 VaR 度量的是投资组合的亏损,其对应于投资组合盈亏分布的左端尾部,为了表述方便,通常 VaR 值用绝对值表示。
VaR 的数学表达式如下:
P r o b ( Δ P < − V a R ) = 1 − X P r o b : 概 率 函 数 Δ P : 投 资 组 合 亏 损 金 额 X : 置 信 水 平 Prob(\Delta P < - VaR) = 1 - X \\[10pt] Prob:概率函数 \\[10pt] \Delta P:投资组合亏损金额 \\[10pt] X:置信水平 Prob(ΔP<−VaR)=1−XProb:概率函数ΔP:投资组合亏损金额X:置信水平
根据巴塞尔协议的明确规定:银行需要计算持有期10天、置信水平99%的VaR。在实际计算中,通常先计算 N=1 时的VaR,在计算相同置信水平下 N>1 时的 VaR,其表达式如下:
N 天 V a R = 1 天 V a R ∗ N N天VaR = 1天VaR*\sqrt{N} N天VaR=1天VaR∗N
上式成立的条件是:投资组合价值在不同交易日之间的变化是相互独立并服从期望值为0的相同正态分布,其他情况下,该等式只是一个近似值。
1.1 Python可视化风险价值
利用Python对VaR进行可视化,图中阴影部分右侧的临界值就是对应置信水平的VaR,其程序如下:
import numpy as np
import pandas as pd
import scipy.stats as st
'''
st.norm中的子模块
pdf:概率密度函数
cdf:累计概率分布函数
ppf:分位点函数,cdf的反函数
'''
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #中文显示问题
plt.rcParams['axes.unicode_minus'] = False #负数显示问题
a = 0.95 #置信水平
z = st.norm.ppf(q=1-a) #返回q对应的分位点
x = np.linspace(-4,4,200) #组合的盈亏数组
y = st.norm.pdf(x) #组合盈亏对应的概率密度数组
x1 = np.linspace(-4,z,100) #组合最小亏损值与返回的分位点构成的盈亏数组
y1 = st.norm.pdf(x1)
plt.figure(figsize=(8,6))
plt.plot(x,y)
plt.fill_between(x1, y1)
plt.grid('True')
2. VaR值的测度方法
2.1 方差-协方差法
数学假定:
- 1 投资组合的各风险因子服从联合正态分布
- 2 线性假定,持有期内,投资组合的风险暴露与风险因子之间是线性相关的
其表达式如下:
V a R = V p [ z c σ p − E ( R p ) ] E ( R p ) = ∑ w i E ( R i ) σ 2 = W c o v ( R i , R j ) W T V p : 投 资 组 合 的 最 新 价 值 z c : 显 著 性 水 平 c 对 应 的 分 位 数 绝 对 值 E ( R p ) : 投 资 组 合 的 期 望 收 益 VaR = V_p[z_c\sigma_p - E(R_p)] \\[10pt] E(R_p) = \sum w_iE(R_i) \\[10pt] \sigma^2 = Wcov(R_i,R_j)W^{T} \\[10pt] V_p:投资组合的最新价值 \\[10pt] z_c:显著性水平 c 对应的分位数绝对值 \\[10pt] E(R_p):投资组合的期望收益 \\[10pt] VaR=Vp[zcσp−E(Rp)]E(Rp)=∑wiE(Ri)