1. 金融风控中的风险度量基础
在金融投资领域,风险度量是投资决策的核心环节。VaR(Value at Risk,在险价值)和CVaR(Conditional Value at Risk,条件在险价值)是两种广泛使用的风险度量指标。它们像金融市场的"地震仪",帮助投资者量化潜在损失。
VaR回答的问题是:在给定置信水平下(如95%),特定时间段内投资组合可能遭受的最大损失是多少?举个例子,如果某投资组合的日VaR为100万元(95%置信度),意味着在正常市场条件下,有95%的概率日损失不会超过100万元。但VaR有个致命缺陷——它不告诉我们那剩下的5%最坏情况下损失会有多严重。
CVaR正是为解决这个问题而生。它计算的是当损失超过VaR阈值时的平均损失水平。继续前面的例子,如果CVaR是150万元,意味着在最坏的5%情况下,平均损失将达到150万元。这就像不仅知道台风可能登陆,还知道登陆后的平均风速。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Python环境准备与数据获取
2.1 工具包安装与配置
在开始计算前,我们需要准备Python环境。推荐使用Anaconda创建独立环境:
bash复制conda create -n risk_measure python=3.8
conda activate risk_measure
pip install numpy pandas scipy matplotlib yfinance cvxpy
核心工具包功能说明:
numpy:数值计算基础库pandas:数据处理与分析scipy:科学计算与统计函数matplotlib:数据可视化yfinance:雅虎财经数据接口cvxpy:凸优化工具包(用于投资组合优化)
2.2 金融数据获取实战
获取高质量的历史价格数据是风险计算的前提。我们使用yfinance从雅虎财经获取数据:
python复制import yfinance as yf
import pandas as pd
# 获取苹果公司股票数据
ticker = 'AAPL'
data = yf.download(ticker, start='2020-01-01', end='2023-12-31')
returns = data['Adj Close'].pct_change().dropna()
# 查看数据基本情况
print(f"数据时间范围:{data.index[0].date()} 至 {data.index[-1].date()}")
print(f"收益率均值:{returns.mean():.4f}")
print(f"收益率标准差:{returns.std():.4f}")
注意:yfinance有时会出现连接不稳定的情况。如果下载失败,可以尝试:
- 使用代理(需确保合规)
- 设置重试机制
- 使用备用数据源如Alpha Vantage
3. VaR计算的三大方法实现
3.1 历史模拟法
历史模拟法是最直观的VaR计算方法,它基于历史
