核密度估计

Python 中的定量风险管理

Jamsheed Shorish

Computational Economist

重温直方图

  • 关键风险因子分布
    • 假定(如 Normal、T 等)
    • 拟合(参数估计、蒙特卡罗模拟)
    • 忽略(历史模拟)
  • 实际数据:直方图
  • 如何用概率分布表示直方图?
    • 用滤波平滑数据
    • 非参数估计

损失直方图

Python 中的定量风险管理

数据平滑

  • 滤波:平滑直方图的"凸起"

直方图坐标轴

Python 中的定量风险管理

数据平滑

  • 滤波:平滑直方图的"凸起"
  • 观测值随时间累积

观测值逐步累积的图像

Python 中的定量风险管理

数据平滑

  • 滤波:平滑直方图的"凸起"
  • 观测值随时间累积

观测值逐步累积的图像

Python 中的定量风险管理

数据平滑

  • 滤波:平滑直方图的"凸起"
  • 观测值随时间累积

观测值逐步累积的图像

Python 中的定量风险管理

数据平滑

  • 滤波:平滑直方图的"凸起"
  • 观测值随时间累积
  • 选取某一组合损失

带箭头标出的损失与所选损失

Python 中的定量风险管理

数据平滑

  • 滤波:平滑直方图的"凸起"
  • 观测值随时间累积
  • 选取某一组合损失
    • 检查附近损失

叠加在观测值上的核窗口

Python 中的定量风险管理

数据平滑

  • 滤波:平滑直方图的"凸起"
  • 观测值随时间累积
  • 选取某一组合损失
    • 检查附近损失
    • 形成损失的"加权平均"
  • 核:滤波的选择;决定"窗口"

图中显示核产生的加权平均

Python 中的定量风险管理

数据平滑

  • 滤波:平滑直方图的"凸起"
  • 观测值随时间累积
  • 选取某一组合损失
    • 检查附近损失
    • 形成损失的"加权平均"
  • 核:滤波的选择;决定"窗口"
    • 将窗口移到另一损失处

第二个核位置的图像

Python 中的定量风险管理

数据平滑

  • 滤波:平滑直方图的"凸起"
  • 观测值随时间累积
  • 选取某一组合损失
    • 检查附近损失
    • 形成损失的"加权平均"
  • 核:滤波的选择;决定"窗口"
    • 将窗口移到另一损失处
  • 核密度估计:概率密度

核密度估计的图像

Python 中的定量风险管理

高斯核

  • 连续核
  • 按距中心远近为所有观测赋权
  • 一般而言:可用多种核
    • 用于时间序列分析
    • 用于信号处理

高斯核图像

Python 中的定量风险管理

Python 中的 KDE

from scipy.stats import gaussian_kde

kde = guassian_kde(losses)
loss_range = np.linspace(np.min(losses), np.max(losses), 1000)
plt.plot(loss_range, kde.pdf(loss_range))
  • 可视化:KDE 拟合得到的概率密度函数

高斯 KDE 估计图

Python 中的定量风险管理

用 KDE 求 VaR

  • VaR:使用 gaussian_kde.resample() 方法
  • 在生成的样本上取分位数
  • CVaR:与前述期望类似,但
    • gaussian_kde.expect() 方法 => 需手动积分
    • 练习提供了专用 .expect() 方法
sample = kde.resample(size = 1000)

VaR_99 = np.quantile(sample, 0.99)
print("VaR_99 from KDE: ", VaR_99)
VaR_99 from KDE: 0.08796423698448601
Python 中的定量风险管理

Passons à la pratique !

Python 中的定量风险管理

Preparing Video For Download...