风险暴露与损失

Python 中的定量风险管理

Jamsheed Shorish

Computational Economist

度假类比

  • 度假酒店预订

  • 到店前预付

    • 价格低
    • 不退款:取消费 = 房费的100%
  • 到店后支付

    • 价格高
    • 部分可退:取消费为房费的20%

加勒比海滩边的船

Python 中的定量风险管理

在选项间做决定

  • 什么决定你的选择?
    1. 负面冲击的概率:生病、出行受阻、天气
      • 亏损概率
    2. 冲击带来的损失:金额或条件金额
      • VaR、CVaR
    3. 回避冲击的意愿:主观偏好
      • 风险承受力

三个孩子卧病在床,口含体温计的卡通图

 

风险刻度与金钱的风险管理图

Python 中的定量风险管理

风险暴露与 VaR

  • 风险暴露:亏损概率 × 损失度量
    • 损失度量:如 VaR
  • 度假取消概率 10%:P(生病) = 0.10
  • 不退款
    • 不可退款酒店总价:€500
    • 90% 置信 VaR:€500
  • 部分可退
    • 可退酒店总价:€550
    • 90% 置信 VaR:20% 取消费 × €550 = €110
Python 中的定量风险管理

计算风险暴露

  • 不退款暴露("$\text{nr}$"):
    • P(生病) × $\text{VaR}_{0.90}^{\text{nr}}$ = 0.10 × €500 = €50。
  • 部分可退暴露("$\text{pr}$"):
    • P(生病) × $\text{VaR}_{0.90}^{\text{pr}}$ = 0.10 × €110 = €11。
  • 风险暴露差额:€50 - €11 = €39。
  • 两种报价的总价差:€550 - €500 = €50。
  • 风险承受力:多付 €50 是否值得以规避额外 €39 的暴露?
Python 中的定量风险管理

风险承受力与风险偏好

  • 风险中性:只关注期望值
    • €39 < €50 $\Rightarrow$ 更偏好不退款选项
  • 风险厌恶:不确定性本身有成本
    • €39 < €50 $\Rightarrow$ 更偏好部分可退选项
  • 企业/机构风险管理:偏好称为风险偏好(risk appetite)
  • 个人投资者:偏好称为风险承受力(risk tolerance)
Python 中的定量风险管理

损失分布:离散型

  • 风险暴露取决于损失分布(亏损概率)
  • 度假示例:随机风险因子带来2种结果

度假示例中的二元损失柱状图

Python 中的定量风险管理

损失分布:连续型

  • 风险暴露取决于损失分布(亏损概率)
  • 度假示例:随机风险因子带来2种结果
  • 更一般地:连续型损失分布
    • 正态分布:适用于大样本

连续正态分布图像

Python 中的定量风险管理

损失分布:连续型

  • 风险暴露取决于损失分布(亏损概率)
  • 度假示例:随机风险因子带来2种结果
  • 更一般地:连续型损失分布
    • 正态分布:适用于大样本
    • Student t 分布:适用于小样本

连续损失的 t 分布图像

Python 中的定量风险管理

基础:Student t 分布

  • 亦称为 T 分布
  • 小样本时相比正态有更"肥"的尾部
    • 类似投资组合的收益/损失
  • 随样本增大,T 收敛于正态分布

连续损失分布图像

Python 中的定量风险管理

Python 中的 T 分布

  • 示例:从 T 分布计算 95% VaR
    • scipy.stats 导入 t 分布
    • t.fit() 拟合 portfolio_loss 数据

 

from scipy.stats import t

params = t.fit(portfolio_losses)

连续损失分布图像

Python 中的定量风险管理

Python 中的 T 分布

  • 示例:从 T 分布计算 95% VaR
    • scipy.stats 导入 t 分布
    • t.fit() 拟合 portfolio_loss 数据
    • .ppf() 计算分位点以得到 VaR
from scipy.stats import t

params = t.fit(portfolio_losses)
VaR_95 = t.ppf(0.95, *params)

带 VaR 的连续 t 损失分布

Python 中的定量风险管理

自由度

  • 自由度(df):独立观测数
  • df 小:T 分布"肥尾"
  • df 大:趋近正态分布
x = np.linspace(-3, 3, 100)

plt.plot(x, t.pdf(x, df = 2))
plt.plot(x, t.pdf(x, df = 5))
plt.plot(x, t.pdf(x, df = 30))

30 个自由度的 T 分布图像

Python 中的定量风险管理

Passons à la pratique !

Python 中的定量风险管理

Preparing Video For Download...