第十六章:基差交易风控体系

风险识别、风险评估、风险限额、压力测试、回撤控制——这五个词,说白了就是交易员的命根子。

我见过太多人,策略做得漂亮,收益曲线好看,结果一次黑天鹅就爆仓。为什么?风控没跟上。基差交易看着稳,其实暗流涌动。今天我把这套体系掰开揉碎了讲给你听。

一、风险识别:你得知道雷在哪儿

做基差交易,风险不是单一的。我习惯把风险分成四类,每类都得盯死。

风险类型 具体表现 我踩过的坑
基差风险 价差走势与预期背离 曾经做豆粕正套,基差突然走扩,亏了3%
流动性风险 平仓时滑点大、对手盘少 某次做锌的跨期,临近交割日根本平不掉
交割风险 仓单注册、质检、运输出问题 有一批PTA仓单,质检拖了三天,差点违约
资金风险 保证金不足、杠杆过高 2015年股灾时,很多套利盘被强平

识别风险,不是列个清单就完事。你得每天盘前扫一遍。我个人习惯是:开盘前10分钟,把持仓品种的基差、持仓量、近月合约流动性过一遍。发现有异常,立刻标记。

我的小技巧: 用Excel做个风险仪表盘,把四个维度的指标用红黄绿灯显示。绿灯正常,黄灯预警,红灯直接触发风控流程。

二、风险评估:量化你的恐惧

光知道有风险不够,你得知道风险有多大。我常用的评估方法就三个:

  • VaR(在险价值):95%置信度下,一天最大亏损多少。比如你算出来VaR是50万,意思是100天里只有5天会亏超过50万。
  • CVaR(条件在险价值):比VaR更狠,它算的是「如果真亏了,平均亏多少」。我更喜欢用这个,因为它考虑了尾部风险。
  • 压力损失:直接模拟极端行情,比如基差突然走扩5%,你的账户会怎样。

举个例子。你做了螺纹钢的正套,买近卖远。当前价差是50元,你算一下:

# 简单VaR计算示例
import numpy as np

# 假设历史价差波动率是20元/天
vol = 20
confidence = 0.95
z_score = 1.645  # 对应95%置信度

VaR = z_score * vol  # 32.9元
print(f"一天内95%概率亏损不超过:{VaR:.1f}元/手")

嗯,这里要注意。历史波动率不代表未来。我见过太多人死在这个假设上。所以我的做法是:用历史数据算一个,再用压力场景算一个,取大的那个作为风控依据。

三、风险限额:给自己画条红线

限额不是摆设,是保命符。我建议按三个层级来设:

  1. 单笔限额:每笔交易最大亏损不超过总资金的1%。比如你1000万资金,单笔最多亏10万。
  2. 品种限额:单个品种的总敞口不超过总资金的20%。防止一个品种出问题,整个账户跟着崩。
  3. 总敞口限额:所有持仓的总风险暴露不超过总资金的3倍。杠杆得控制住。
血的教训: 我曾经有一笔铜的跨市套利,觉得稳赚不赔,单笔限额设了3%。结果汇率波动加上基差走扩,一天亏了2.5%。从那以后,单笔限额再没超过1%。

限额设好了,还得有执行机制。我习惯用程序自动监控,一旦触发限额,系统直接发警报,甚至自动平仓。别指望人脑在恐慌时还能理性决策。

四、压力测试:模拟最坏的情况

压力测试,说白了就是问自己一个问题:「如果明天发生极端行情,我扛得住吗?」

我常用的压力场景有这几个:

  • 历史重演:比如2020年原油暴跌、2022年镍的逼仓行情
  • 流动性枯竭:假设所有品种的买卖价差扩大5倍
  • 基差极端:假设价差回到历史极值

下面这张图是我做压力测试时的核心逻辑框架:

基差交易压力测试框架 输入:当前持仓 场景1:基差走扩 场景2:流动性枯竭 场景3:交割违约 计算:盈亏 + 保证金占用 + 流动性成本 输出:最大亏损 & 是否触发限额

压力测试的频率,我建议每周至少做一次。遇到重大事件(比如美联储议息、国内政策发布),当天就得跑一遍。

核心原则: 压力测试不是为了预测未来,而是为了让你知道自己的底线在哪里。知道底线,你才能活着等到赚钱的那一天。

五、回撤控制:保住本金是第一要务

回撤控制,是所有风控措施的最终落脚点。我给自己定了三条铁律:

  • 最大回撤不超过15%:一旦达到,强制清仓,休息一周再回来。
  • 连续亏损3天,减半仓位:别想着「明天就反弹了」,市场不会惯着你。
  • 单月亏损超过10%,当月停止交易:复盘、反思、调整策略。

为什么会这样?因为回撤越大,回本越难。亏10%需要赚11%才能回本,亏30%需要赚43%,亏50%需要赚100%。你想想看,这个账算得明白吧?

我个人的回撤控制流程是这样的:

# 回撤监控伪代码
def drawdown_control(current_pnl, max_drawdown_limit=0.15):
    peak = max(historical_equity)
    current_drawdown = (peak - current_pnl) / peak
    
    if current_drawdown > max_drawdown_limit:
        force_close_all_positions()
        send_alert("触发最大回撤,已强制平仓")
        return "STOP"
    elif current_drawdown > 0.10:
        reduce_position_by_half()
        send_alert("回撤超过10%,减半仓位")
        return "CAUTION"
    else:
        return "NORMAL"

嗯,这里要特别提醒一点。回撤控制不是事后诸葛亮,得提前设好。我见过太多人,亏了10%想着「再扛一扛」,结果扛到30%才割肉。何必呢?

避坑指南: 我曾经因为觉得「这次不一样」,在回撤8%时没有减仓,结果三天后回撤到了22%。那次教训让我明白:风控规则就是规则,没有例外。一旦破例,你就离爆仓不远了。

最后说一句。基差交易的风控,不是束缚你的枷锁,而是保护你的铠甲。没有铠甲上战场,你连活下来的机会都没有。把这套体系刻进你的交易系统里,让它成为你的肌肉记忆。


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