1. 金融风险管理中的VaR与CVaR基础概念
在险价值(Value at Risk, VaR)是金融风险管理中最核心的指标之一,它回答了"在特定时间范围内,给定置信水平下,投资组合可能遭受的最大损失是多少"这个关键问题。举个实际例子:某基金公司报告其95%置信度下的日VaR为500万元,意味着在正常市场条件下,有95%的概率该基金单日亏损不会超过500万。
VaR的计算方法主要分为三类:
- 方差-协方差法(参数法):基于资产收益的正态分布假设
- 历史模拟法:直接利用历史数据的分位数
- 蒙特卡洛模拟法:通过随机数模拟可能的市场情景
而条件在险价值(Conditional VaR, CVaR)则是VaR的补充指标,它计算的是当损失超过VaR阈值时的平均损失水平。在数学上可以表示为:
CVaR = E[L | L > VaR]
其中L代表投资组合的损失。CVaR比VaR更能反映极端风险情况下的损失预期。
重要提示:VaR计算中95%和99%是两种最常用的置信水平,但选择时需要考虑回测的可行性——99%VaR虽然更保守,但由于极端事件样本少,验证起来更困难。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 方差-协方差法的Python实现
方差-协方差法是VaR计算中最经典的方法,其核心假设是资产收益率服从多元正态分布。这种方法计算效率高,但对分布假设敏感。
2.1 数据准备与基本计算
首先我们需要获取资产的历史收益率数据。以Python为例:
python复制import numpy as np
import pandas as pd
import yfinance as yf
# 获取苹果公司股票数据
ticker = 'AAPL'
data = yf.download(ticker, start='2020-01-01', end='2023-12-31')
returns = data['Adj Close'].pct_change().dropna()
计算VaR的核心公式为:
VaR = -(μ + z * σ) * portfolio_value
其中:
- μ是收益率均值
- σ是收益率标准差
- z是对应置信水平的标准正态分位数
Python实现代码:
python复制def var_param(returns, confidence=0.95, portfolio_value=1e6):
mu = np.mean(returns)
sigma = np.std(returns)
z = norm.ppf(1 - confidence)
return -(mu + z * sigma) * portfolio_value
# 计算95%置信度的VaR
var_95 = var_param(returns, 0.95)
print(f"日VaR(95%): ${var_95:,.2f}")
2.2 投资组合VaR计算
对于多资产组合,我们需要考虑资产间的协方差:
python复制# 获取多资产数据
tickers = ['AAPL', 'MSFT', 'GOOG']
data = yf.down
