3. 收益率与损失计算

在VaR建模中,收益率与损失计算是连接市场数据与风险度量的桥梁。无论采用历史模拟、参数法还是蒙特卡洛,第一步都必须把原始价格序列转换为可建模的收益率,再把收益率映射到组合损益。这一步若处理不当,后续所有风险数字都会失真。本节围绕简单收益率、对数收益率、组合损益映射与头寸映射方法四个核心问题展开。

一、核心原理:两种收益率的定义与差异

简单收益率(Simple Return)定义为相邻价格的变化率:Rt = (Pt − Pt−1) / Pt−1。它直观、易解释,且具有可加性——组合收益率等于各资产收益率的加权和,权重为各资产期初市值占比。这一性质使简单收益率在组合层面非常方便。

对数收益率(Log Return)定义为价格比值的自然对数:rt = ln(Pt / Pt−1)。它具备时间可加性——多期对数收益率等于各期之和,因此在统计建模、波动率估计和蒙特卡洛路径模拟中被广泛使用。但它在组合层面不可直接加权,需要先转换回简单收益率再聚合。

关键结论:单资产建模优先用对数收益率,组合聚合优先用简单收益率。两者之间的转换关系为 R = er − 1,r = ln(1 + R)。

二、方法流程:从价格到损益的四步映射

  1. 数据清洗与对齐:处理缺失值、停牌、分红拆股,确保各资产时间戳一致。
  2. 收益率计算:按资产类型选择简单或对数收益率,注意频率(日、周、月)与年化口径。
  3. 头寸映射:将组合中的金融工具映射为风险因子暴露,例如期权映射为Delta、Gamma、Vega暴露。
  4. 损益映射:用风险因子变动乘以暴露,得到组合损益序列,作为VaR的输入。

下面是一段Python示例,展示两种收益率的计算与转换:

import numpy as np
prices = np.array([100.0, 102.0, 101.0, 105.0])
simple_ret = prices[1:] / prices[:-1] - 1.0
log_ret = np.log(prices[1:] / prices[:-1])
# 对数转简单
simple_from_log = np.exp(log_ret) - 1.0
print(simple_ret, log_ret, simple_from_log)

三、头寸映射方法:线性与非线性工具的处理

头寸映射的核心是把组合中的每一个头寸,转换为对一组标准风险因子的敞口。对于股票、债券、外汇等线性工具,映射相对直接:股票映射为价格因子,债券映射为利率曲线关键期限点,外汇映射为汇率因子。对于期权等非线性工具,常用方法包括Delta映射、Delta-Gamma映射和Delta-Gamma-Vega映射。

工具类型映射方法风险因子适用场景
股票现货市值映射股票价格线性组合
债券久期映射利率曲线关键点利率风险
外汇远期本币/外币映射汇率、利率跨币种组合
期权Delta-Gamma标的、波动率非线性风险
期权Delta-Gamma-Vega标的、波动率、时间高精度VaR

以Delta-Gamma映射为例,期权损益近似为:ΔP ≈ Δ·ΔS + ½·Γ·(ΔS)²。这一近似在标的变动较小时精度较高,但在极端行情下会低估损失,因此历史模拟中常直接重估期权价值。

四、案例与场景:一个多资产组合的损益映射

假设组合包含:100万元沪深300ETF、50万元10年期国债、20万元美元兑人民币远期。映射步骤如下:ETF映射为沪深300指数因子,国债映射为10年期国债收益率因子,远期映射为USD/CNY汇率因子。每个因子的历史收益率序列乘以对应敞口,得到三个损益序列,再相加得到组合总损益序列。

# 组合损益映射示例
exposure = {'CSI300': 1_000_000, 'CGB10Y': 500_000, 'USDCNY': 200_000}
factor_returns = {'CSI300': -0.02, 'CGB10Y': 0.005, 'USDCNY': 0.01}
pnl = sum(exposure[k] * factor_returns[k] for k in exposure)
print('组合损益:', pnl)
在历史模拟中,直接使用历史因子收益率乘以当前敞口,即可生成历史损益分布,无需假设分布形态。

五、误区与复盘

  • 混用收益率类型:在组合层面直接加权对数收益率,导致损益低估或高估。正确做法是先转简单收益率再聚合。
  • 忽略分红与拆股:未调整价格会导致虚假的极端收益率,污染VaR估计。
  • 头寸映射过粗:把期权简单映射为线性敞口,忽略Gamma和Vega,在波动率剧烈变化时严重低估风险。
  • 频率不一致:资产A用日频、资产B用周频,直接相加损益会造成时间尺度错配。
  • 货币单位未统一:跨币种组合未换算为本币,导致敞口权重错误。
复盘建议:每次VaR计算前,检查收益率类型、频率、货币单位和映射方法是否一致。建议建立标准化的数据字典和映射规则表,避免人为错误。
收益率与损失计算:从价格到组合损益的映射链路 原始价格序列 P_t, P_{t-1}, ... 收益率计算 简单: R=(P_t-P_{t-1})/P_{t-1} 对数: r=ln(P_t/P_{t-1}) 头寸映射 线性: 市值/久期 非线性: Delta-Gamma 组合损益 ΔP 风险因子层 股票价格因子 利率曲线因子 汇率因子 波动率因子 关键转换关系: 简单收益率 → 组合加权可加;对数收益率 → 时间可加;R = e^r − 1,r = ln(1+R) 组合损益 = Σ (敞口_i × 因子收益率_i),非线性工具需加入Gamma/Vega修正项

掌握收益率与损失计算的正确方法,是VaR建模可靠性的基石。无论后续采用历史模拟、参数法还是蒙特卡洛,这一步的精度和一致性都直接决定风险度量的可信度。建议在实际项目中建立标准化的计算流程和校验机制,确保从价格到损益的每一步都可追溯、可复现。