第三章 持仓限额管理:单合约持仓限额、净敞口限额、集中度限额、限额动态调整机制

做期权做市,说白了就是跟风险打交道。

我见过不少团队,策略模型跑得漂亮,希腊字母算得精准,结果栽在持仓限额上。为什么?因为限额管理看起来简单,做起来全是细节。今天咱们就聊聊这块。

3.1 单合约持仓限额

单合约持仓限额,是最基础的一道防线。它限制你在某个具体合约上最多能持有多少头寸。

为什么要设这个?

你想啊,万一某个合约流动性突然枯竭,或者出现极端行情,你手里攥着大把仓位,想跑都跑不掉。我在2015年股灾时就遇到过这种情况——某只ETF期权深度虚值合约,平时一天成交几百张,结果那天波动率飙升,我手里2000张单子挂了半小时都没平掉。

怎么设?

我个人习惯,单合约持仓限额主要看两个维度:

  • 合约流动性:日均成交量、买卖价差、盘口深度
  • 账户资本金:单合约最大亏损不能超过账户净资本的某个比例

举个例子:

# 单合约持仓限额计算示例
def calc_single_contract_limit(avg_volume, spread, account_capital):
    # 流动性因子:日均成交量 * 0.1
    volume_limit = avg_volume * 0.1
    
    # 资本金因子:账户净资本 * 0.5% / 合约面值
    capital_limit = account_capital * 0.005 / contract_notional
    
    # 取较小值
    final_limit = min(volume_limit, capital_limit)
    
    return final_limit
经验之谈:我建议把单合约限额设成动态的。流动性好的合约,限额可以放宽;流动性差的,收窄。别搞一刀切。

3.2 净敞口限额

净敞口限额,管的是方向性风险。说白了,就是你的Delta、Gamma这些希腊字母不能太大。

为什么重要?

你想想看,如果市场突然大涨,你手里净Delta敞口是负的,那亏起来可没底。我记得2018年2月那次波动率事件,很多做市商就是因为净敞口没控制好,一天亏掉几个月的利润。

怎么管?

净敞口限额通常分两层:

  1. Delta限额:按标的资产市值的一定比例设定。比如,沪深300ETF期权,净Delta敞口不超过500万市值。
  2. Gamma限额:Gamma代表Delta的变化速度。Gamma太大,意味着行情稍微一动,你的Delta就剧烈变化。我一般把Gamma限额设成Delta限额的1/10。
希腊字母 限额设定逻辑 示例(沪深300ETF期权)
Delta 账户净资本的10%-20% 净资本1亿 → Delta限额1000万-2000万
Gamma Delta限额的1/10 Delta限额1000万 → Gamma限额100万
Vega 按波动率变动1%的盈亏设定 波动率变动1%亏损不超过50万
注意:净敞口限额不是死的。临近到期日,Gamma会急剧放大。我曾经在到期前三天,因为Gamma太大,被迫提前平仓——虽然少赚了点,但避免了尾盘爆仓的风险。

3.3 集中度限额

集中度限额,防止你把鸡蛋放在一个篮子里。

核心逻辑

  • 标的集中度:同一标的的所有期权合约,总风险敞口不能超过某个比例
  • 行业集中度:同一行业的标的,合计敞口也要控制
  • 策略集中度:不能全是做多波动率,也不能全是做空波动率

我见过最惨的案例:有个团队专门做某个冷门ETF的期权,持仓占市场总持仓的30%。结果那个ETF突然停牌,复牌后直接跌停,他们想对冲都找不到对手盘。嗯,这就是集中度风险。

实操建议

# 集中度检查函数
def check_concentration(positions, limits):
    # 按标的汇总
    by_underlying = positions.groupby('underlying')['delta'].sum()
    
    # 检查是否超限
    for underlying, delta in by_underlying.items():
        if abs(delta) > limits['underlying_max_delta']:
            print(f"警告:{underlying} 集中度超限!")
            # 触发减仓或对冲
            reduce_position(underlying)
    
    # 按行业汇总
    by_sector = positions.groupby('sector')['delta'].sum()
    for sector, delta in by_sector.items():
        if abs(delta) > limits['sector_max_delta']:
            print(f"警告:{sector} 行业集中度超限!")

3.4 限额动态调整机制

限额不是设好就不管了。市场在变,你的限额也得跟着变。

什么时候调?

  • 市场波动率变化:波动率飙升时,所有限额应该收窄。因为同样的头寸,风险变大了。
  • 账户盈亏变化:亏钱了,限额自动缩小;赚钱了,可以适当放宽。
  • 流动性变化:某个合约突然缩量,限额要立刻下调。

怎么调?

我习惯用一套打分卡来做动态调整:

因子 权重 打分规则
隐含波动率百分位 30% 高于90%分位 → 限额打8折;低于10%分位 → 限额打9折
账户回撤 30% 回撤超过5% → 限额打7折;超过10% → 限额打5折
市场成交量 20% 成交量低于5日均值50% → 限额打6折
到期日临近 20% 距到期日小于3天 → 限额打5折

核心原则:限额调整要自动化,不能靠人工拍脑袋。我见过太多人,赚钱时觉得限额不够用,亏钱时又后悔没设限额。让系统替你管,别让情绪替你管。

3.5 知识体系总览

下面这张图,把持仓限额管理的核心逻辑串起来了:

持仓限额管理知识体系 持仓限额管理 单合约持仓限额 净敞口限额 集中度限额 动态调整机制 流动性因子 资本金因子 Delta限额 Gamma限额 Vega限额 标的集中度 行业集中度 策略集中度 波动率因子 盈亏因子 流动性因子 到期日因子 四道防线层层递进,动态调整贯穿始终

这张图你看懂了吗?四个维度不是孤立的。单合约限额管的是微观,净敞口限额管的是方向,集中度限额管的是分散,动态调整让所有限额都活起来。缺一个,你的风控体系就有漏洞。

最后说一句:限额管理不是为了限制你赚钱,而是为了让你活得更久。我见过太多人,策略很牛,但因为一次超限爆仓,直接出局。别做那种人。

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