金融分析与风险管理——风险价值(VaR)
金融分析与风险管理——风险价值(VaR)
风险价值(VaR)是金融风险管理中的一个重要概念,用于衡量投资组合在特定时间区间内可能遭受的最大损失。本文将详细介绍VaR的基本原理、计算方法,并通过Python代码展示其可视化过程。
1. 风险价值(VaR)简述
风险价值(value at risk,VaR)是指在一定的持有期和给定的置信水平下,利率、汇率、股价等风险因子发生变化时可能对投资组合造成的潜在最大损失。例如:持有期 1 天、置信水平 95% 的情况下,计算得到的 VaR 值为 1000 万元,则表明该投资组合在1天中有 95%的可能性损失不会超过1000万,换句话说,1 天中,有5%的可能性损失会超过 1000 万元。
VaR的大小取决于两个参数:持有期(N)、置信水平(X)。由于 VaR 度量的是投资组合的亏损,其对应于投资组合盈亏分布的左端尾部,为了表述方便,通常 VaR 值用绝对值表示。
VaR 的数学表达式如下:
$$
Prob(\Delta P < - VaR) = 1 - X \
Prob:概率函数 \
\Delta P:投资组合亏损金额 \
X:置信水平
$$
根据巴塞尔协议的明确规定:银行需要计算持有期10天、置信水平99%的VaR。在实际计算中,通常先计算 N=1 时的VaR,在计算相同置信水平下 N>1 时的 VaR,其表达式如下:
$$
N 天 VaR = 1 天 VaR*\sqrt{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 方差-协方差法
数学假定:
- 投资组合的各风险因子服从联合正态分布
- 线性假定,持有期内,投资组合的风险暴露与风险因子之间是线性相关的
其表达式如下:
$$
VaR = V_p[z_c\sigma_p - E(R_p)] \
E(R_p) = \sum w_iE(R_i) \
\sigma^2 = Wcov(R_i,R_j)W^{T} \
V_p:投资组合的最新价值 \
z_c:显著性水平 c 对应的分位数绝对值 \
E(R_p):投资组合的期望收益
$$