风险度量

Python 中的定量风险管理

Jamsheed Shorish

CEO, Shorish Research

损失分布

  • 外汇示例
    • 以美元计的投资组合价值为 USD 100
    • 风险因子 = 欧元 / 美元 汇率
    • 若 1 欧元 = 1 美元,以欧元计的价值:USD 100 × EUR 1 / USD 1 = EUR 100
    • r 欧元 = 1 美元:= USD 100 × EUR r / 1 USD = EUR 100 × r
    • 损失 = EUR 100 - EUR 100 × r = EUR 100 × (1 - r)
  • 损失分布r 的随机实现 ⇒ 投组合未来损失的分布

外汇损失的直方图

Python 中的定量风险管理

最大损失

  • 投组合的最大损失是多少?
  • 无法以 100% 确定性设定上界
  • 置信水平:用上界发生的概率替代 100% 确定性
  • 可表述如:"95% 情况下的最大损失是多少?"
    • 这里置信水平为 95%
Python 中的定量风险管理

在险价值(VaR)

  • VaR:在给定置信水平下的"最大投资组合损失"统计量
  • 常用置信水平:95%99%99.5%(通常用小数表示)
  • 外汇示例:若 EUR/USD 在 95% 时间里_至少_为 0.40,则:
    • 组合价值_至少_为 USD 100 × 0.40 EUR/USD = EUR 40
    • 组合损失_至多_为 EUR 40 − EUR 100 = EUR 60
    • 因此 95% VaR 为 EUR 60

带 0.40 截断的 EUR/USD 汇率时间序列

Python 中的定量风险管理

条件在险价值(CVaR)

  • CVaR:在最小损失等于 VaR 的条件下的期望损失
  • 等于损失分布_尾部_的期望值
    • $$\textnormal{CVaR}(\alpha) := \frac{1}{1-\alpha}\mathbb{E} \int_{\textnormal{VaR}(\alpha)}^{\bar{x}} x f(x) dx,$$
    • $f(\cdot)$ = 损失分布的 pdf
    • $\bar{x}$ = 损失上界(可为无穷)
    • $\textnormal{VaR}(\alpha)$ = 置信水平 $\alpha$ 下的 VaR
  • 外汇示例
    • 95% CVaR = 当组合价值_小于_ EUR 40 的 5% 情况下的期望损失

显示 VaR 与 CVaR 尾部关系的损失分布图

Python 中的定量风险管理

推导 VaR

  1. 设定置信水平,如 95%(0.95)
  2. 创建 loss 观测的 Series
  3. 在该置信水平计算 loss.quantile()
  4. VaR = 该置信水平下的 .quantile()

  5. scipy.stats 的损失分布:也可用百分位点函数 .ppf()

loss = pd.Series(observations)

VaR_95 = loss.quantile(0.95) print("VaR_95 = ", VaR_95)
Var_95 = 1.6192834157254088
Python 中的定量风险管理

推导 CVaR

  1. 设定置信水平,如 95%(0.95)
  2. 创建或使用来自损失分布的样本
  3. 在给定置信水平计算 VaR,如 0.95
  4. 将 CVaR 计算为期望损失(正态分布:可用 scipy.stats.norm.expect()
losses = pd.Series(scipy.stats.norm.rvs(size=1000))

VaR_95 = scipy.stats.norm.ppf(0.95)
CVaR_95 = (1/(1 - 0.95))*scipy.stats.norm.expect(lambda x: x, lb = VaR_95)
print("CVaR_95 = ", CVaR_95)
CVaR_95 = 2.153595332530393
Python 中的定量风险管理

VaR 可视化

  • 来自 N(1,3) 的 1000 次抽样的损失分布直方图

正态分布损失的直方图

Python 中的定量风险管理

VaR 可视化

  • 来自 N(1,3) 的 1000 次抽样的损失分布直方图
    • VaR$_{95}$ = 5.72,即 95% 置信 VaR

含 95% VaR 的损失直方图

Python 中的定量风险管理

VaR 可视化

  • 来自 N(1,3) 的 1000 次抽样的损失分布直方图
    • VaR$_{95}$ = 5.72,即 95% 置信 VaR
    • VaR$_{99}$ = 7.81,即 99% 置信 VaR

含 95% 与 99% VaR 的损失直方图

Python 中的定量风险管理

VaR 可视化

  • 来自 N(1,3) 的 1000 次抽样的损失分布直方图
    • VaR$_{95}$ = 5.72,即 95% 置信 VaR
    • VaR$_{99}$ = 7.81,即 99% 置信 VaR
    • VaR$_{99.5}$ = 8.78,即 99.5% 置信 VaR
  • 置信水平越高,VaR 越大

含 95%、99% 与 99.5% VaR 的损失直方图

Python 中的定量风险管理

Passons à la pratique !

Python 中的定量风险管理

Preparing Video For Download...