第三章:市场风险度量与限额管理

各位做套利的朋友,咱们今天聊点硬核的——风险度量与限额管理。

说实话,我见过太多套利团队,策略回测漂亮得不行,一上实盘就崩。为什么?说白了,就是没把风险当回事。你想想看,套利赚的是微薄价差,一次黑天鹅就能让你把半年的利润全吐回去。

我个人习惯,做任何策略之前,先问自己三个问题:亏多少?怎么亏?扛不扛得住? 今天我们就围绕这三个问题,把VaR、CVaR、最大回撤这些工具讲透。

3.1 VaR:最常用的风险度量,但别迷信它

VaR,全称Value at Risk,风险价值。简单说就是:在给定的置信水平和持有期内,最大可能损失是多少。

举个例子:某套利组合的日VaR(95%) = 10万元。意思是,有95%的把握,明天亏损不超过10万。听起来不错吧?但问题来了——剩下那5%呢?

⚠️ 避坑指南: 我曾经吃过VaR的亏。2018年某次闪崩,VaR显示风险可控,结果实际亏损是VaR的3倍。为什么?因为VaR不告诉你尾部风险有多大。它只告诉你「大概率亏多少」,但没告诉你「小概率会亏多少」。

计算VaR有三种常用方法:

方法 原理 适用场景 我的评价
历史模拟法 用历史收益率排序,取分位数 数据充足、市场稳定 简单粗暴,但历史会重演吗?
参数法(方差-协方差) 假设收益率服从正态分布 快速计算、组合VaR 金融数据哪有那么乖?
蒙特卡洛模拟 随机模拟大量路径 复杂衍生品、非线性风险 准,但慢。适合离线分析

我个人偏好历史模拟法,简单直接。但注意,样本窗口别太长也别太短。太长会把老黄历算进去,太短又捕捉不到极端事件。我一般用250个交易日(约一年)。

# Python示例:历史模拟法计算VaR
import numpy as np

def calculate_var(returns, confidence_level=0.95):
    """
    计算历史模拟VaR
    returns: 日收益率序列
    confidence_level: 置信水平,默认95%
    """
    sorted_returns = np.sort(returns)
    index = int((1 - confidence_level) * len(sorted_returns))
    var = -sorted_returns[index]  # 取正值表示损失
    return var

# 假设某套利组合的日收益率
daily_returns = np.random.normal(0.001, 0.02, 1000)
var_95 = calculate_var(daily_returns, 0.95)
print(f"95% VaR: {var_95:.4f}")

3.2 CVaR:补上VaR的短板

CVaR,也叫条件VaR或期望损失。它回答的是:当损失超过VaR时,平均会亏多少?

还是刚才那个例子。VaR告诉你95%的情况下亏不超过10万。CVaR告诉你:剩下那5%的情况,平均亏25万。这才是真正要命的数字。

💡 我的经验: 做套利风控,我建议同时看VaR和CVaR。VaR管日常,CVaR管极端。如果CVaR是VaR的2倍以上,说明尾部风险很大,得小心。
def calculate_cvar(returns, confidence_level=0.95):
    """
    计算CVaR(条件VaR)
    """
    sorted_returns = np.sort(returns)
    index = int((1 - confidence_level) * len(sorted_returns))
    tail_returns = sorted_returns[:index]
    cvar = -np.mean(tail_returns)
    return cvar

cvar_95 = calculate_cvar(daily_returns, 0.95)
print(f"95% CVaR: {cvar_95:.4f}")

3.3 最大回撤:最直观的风险指标

最大回撤,就是从最高点到最低点的最大跌幅。为什么重要?因为回撤50%,需要涨100%才能回本。

我记得有个团队,策略年化收益30%,最大回撤40%。看起来收益不错吧?但客户受不了啊,回撤到30%的时候就赎回了,后面反弹全没吃到。所以,最大回撤不仅是数学问题,更是心理问题。

我个人习惯,套利策略的最大回撤控制在5%以内。超过这个数,说明策略可能出了问题,或者市场环境变了。

def calculate_max_drawdown(equity_curve):
    """
    计算最大回撤
    equity_curve: 净值曲线
    """
    peak = np.maximum.accumulate(equity_curve)
    drawdown = (equity_curve - peak) / peak
    max_dd = np.min(drawdown)
    return max_dd

# 模拟净值曲线
np.random.seed(42)
equity = 100 * np.exp(np.cumsum(np.random.normal(0.001, 0.02, 500)))
max_dd = calculate_max_drawdown(equity)
print(f"最大回撤: {max_dd:.2%}")

3.4 限额管理:三道防线

光度量风险不够,还得设限额。我把它分成三道防线:

第一道:敞口限额

说白了就是最多能押多少钱。套利交易中,我一般按净敞口和总敞口分别设限。比如:

  • 单品种净敞口不超过总资金的5%
  • 总敞口不超过总资金的200%(考虑杠杆)
  • 同板块敞口不超过总资金的30%

第二道:杠杆限额

杠杆是把双刃剑。套利用杠杆放大收益,但也放大风险。我建议:

  • 统计套利:杠杆不超过3倍
  • 期现套利:杠杆不超过5倍(因为有对冲)
  • 跨期套利:杠杆不超过4倍

为什么这么设?因为我见过有人用10倍杠杆做统计套利,一次模型失效直接爆仓。嗯,这里要注意,杠杆限额要动态调整,波动率高了就降杠杆。

第三道:集中度限额

鸡蛋别放一个篮子里。集中度限额包括:

  • 单策略资金占比不超过20%
  • 单交易所资金占比不超过40%
  • 单品种价差组合不超过15%
💡 小技巧: 我习惯用「风险预算」的方法分配限额。先定总风险预算(比如总VaR不超过100万),然后按策略的夏普比率、相关性来分配。相关性低的策略,可以多给点预算。

3.5 压力测试与情景分析

VaR和限额管的是「正常市场」,但黑天鹅来了怎么办?这就需要压力测试。

我常用的几种情景:

  1. 历史重演: 比如2015年股灾、2020年原油暴跌。把当时的市场数据拿来,看策略会亏多少。
  2. 极端波动: 假设波动率突然放大3倍,流动性枯竭。套利价差可能瞬间拉大。
  3. 相关性突变: 平时不相关的品种突然同涨同跌。这是套利最怕的。
  4. 流动性危机: 假设某个合约突然没有对手盘,平不了仓。

我记得2020年3月,美股熔断那会儿,很多套利策略都崩了。为什么?因为平时稳定的相关性全乱了。黄金和原油一起跌,美债和美股一起跌。你想想看,套利赚的就是相关性稳定的钱,相关性一乱,全完。

# 压力测试示例:模拟波动率飙升
def stress_test(returns, vol_multiplier=3):
    """
    压力测试:波动率放大
    """
    stressed_returns = returns * vol_multiplier
    var_stressed = calculate_var(stressed_returns, 0.95)
    cvar_stressed = calculate_cvar(stressed_returns, 0.95)
    return var_stressed, cvar_stressed

# 正常情况
normal_var = calculate_var(daily_returns, 0.95)
normal_cvar = calculate_cvar(daily_returns, 0.95)

# 压力情况(波动率放大3倍)
stressed_var, stressed_cvar = stress_test(daily_returns, 3)

print(f"正常: VaR={normal_var:.4f}, CVaR={normal_cvar:.4f}")
print(f"压力: VaR={stressed_var:.4f}, CVaR={stressed_cvar:.4f}")

3.6 实战框架:把风控落地

说了这么多,怎么落地?我给大家画个框架图:

套利交易风控实战框架 风险度量层 VaR(日常风险) CVaR(尾部风险) 最大回撤(极端风险) 置信水平95%/99% 期望损失计算 历史回撤/回撤时间 限额管理层 敞口限额 杠杆限额 集中度限额 净敞口/总敞口 动态杠杆调整 策略/品种/交易所 压力测试与情景分析层 历史重演 极端波动 相关性突变 流动性危机 输出:最大可能损失 & 应对预案 输出:动态风控阈值 & 预警信号

这个框架的核心逻辑是:先度量,再设限,最后做压力测试。 三者缺一不可。

🎯 实战要点:
  • 每日开盘前检查VaR和敞口是否超限
  • 每周做一次压力测试,更新情景参数
  • 每月复盘最大回撤,分析原因
  • 每季度调整限额,适应市场变化

最后说一句:风控不是束缚,是保护。没有风控的套利,就像没有刹车的赛车——跑得快,死得也快。

📌 我的习惯: 每天收盘后花10分钟看风控报表。如果VaR连续3天上升,我会主动减仓。别等风控系统报警,那时候可能已经晚了。

公众号:蓝海资料掘金营,微信deep3321