hybrid-perps-spec

风控与对冲场景

文档版本: v1.0 最后更新: 2026-04-09 作者: Claude Code 状态: 规范阶段 (Specification Phase)


场景概述

本文档详细描述了平台风险控制和对冲引擎(L6)的核心业务场景。涵盖净敞口监控、自动对冲触发、资金管理、路由模式切换、风险准备金管理、熔断机制、多币种优先级分配,以及对冲缓冲问题等8个关键场景。

每个场景基于”方案二(内部对赌 + 阈值对冲)”的双账户架构:


SC-RH-001:净敞口从零逐步增长到触发对冲

场景背景: 一天内用户持续做多BTC,平台通过L3(INTERNAL对赌)承接这些小额订单,内部净敞口从$0逐步增长。当累积净敞口突破$100K阈值时,L6对冲引擎触发自动对冲,在HL对冲账户开启对冲头寸。

输入

决策规则

净敞口 = 累计INTERNAL多头 - 累计INTERNAL空头

if (净敞口 > $100K):
    hedge_ratio = 50%
    hedge_amount = 净敞口 * hedge_ratio
    execute_hedge(amount=hedge_amount, direction="long", symbol="BTC")
else:
    skip_hedge()

当前净敞口 = $95K + $8K = $103K > $100K
→ hedge_amount = $103K * 50% = $51.5K

输出

监控点

失败兜底


SC-RH-002:对冲账户资金不足

场景背景: 平台需要对冲$400K的内部敞口,但对冲账户仅有$100K可用资本。以3x杠杆只能覆盖$300K,资金缺口$100K。系统需要智能提升杠杆或触发资金补充,确保对冲能力不被资本限制。

输入

决策规则

required_hedge = net_exposure * hedge_ratio = $400K * 50% = $200K

available_capacity = account_capital * current_leverage = $100K * 3x = $300K

if (required_hedge <= available_capacity):
    execute_hedge(amount=required_hedge)
else:
    required_leverage = required_hedge / account_capital = $200K / $100K = 2x
    if (required_leverage <= max_leverage):
        increase_leverage_to(required_leverage)
        execute_hedge(amount=required_hedge)
        trigger_fund_request()
    else:
        partial_hedge = account_capital * max_leverage
        execute_hedge(amount=partial_hedge)
        alert("资金不足", severity=P1)

在本场景中:

输出

监控点

失败兜底


SC-RH-003:BTC急跌10%,对冲仓位浮亏

场景背景: 平台对冲账户持有BTC多头$500K(3x杠杆),基础资本$166.67K。突然BTC市价下跌10%,对冲仓位产生$50K浮亏,导致账户保证金率从500%跌至350%。系统需要从风险准备金紧急补充资金,维持对冲账户健康。

输入

决策规则

account_equity = account_capital + unrealized_pnl = $200K - $50K = $150K
maintenance_margin_requirement = hedge_position / max_leverage_allowed
                               = $500K / 5x = $100K(保守估计)

margin_ratio = account_equity / maintenance_margin_requirement = $150K / $100K = 150%

if (margin_ratio < 500%):
    shortage = (target_ratio * maintenance - account_equity)
                = (5 * $100K) - $150K = $350K

    # 补充最小安全量
    supplement = min(shortage, available_reserve)
    transfer_from_reserve(supplement)

if (shortage > available_reserve):
    alert("准备金不足以覆盖浮亏", severity=P0)
    reduce_hedge_position()

在本场景:

输出

监控点

失败兜底


SC-RH-004:路由模式自动切换 (NORMAL → HL_MODE)

场景背景: 平台正常运行在NORMAL_MODE($10K阈值),内部敞口稳定在$300K-$400K之间。突然一批大用户或机构订单涌入,使得INTERNAL净敞口快速飙升到$800K,远超最大安全容量。系统需自动检测并切换到HL_MODE,强制所有新订单路由到Hyperliquid,防止敞口失控。

输入

决策规则

def check_routing_mode():
    if (net_exposure > HL_MODE_threshold):
        if (current_mode != HL_MODE):
            switch_mode(NORMAL → HL_MODE)
            halt_internal_orders()
            notify_risk_manager()

check_point_A: net_exposure = $550K → OK, 保持NORMAL_MODE
check_point_B: net_exposure = $550K + $220K(前两笔订单) = $770K → 接近阈值,发告警
check_point_C: net_exposure = $770K + $150K = $920K > $800K → 触发自动切换

# 后续新订单全部转HL
Order_4($50K) → HL(而非INTERNAL)
Order_5($80K) → HL

输出

监控点

失败兜底


SC-RH-005:风险准备金跌破$200K

场景背景: 平台累积了$450K风险准备金(来自用户在INTERNAL交易中的净亏损)。由于市场行情有利,连续几天用户盈利,准备金被消耗用于补充对冲浮亏和操作开支。准备金余额逐日下降,最终跌破$200K安全下限。系统需触发风险准备金补充流程,暂停或限制对赌交易。

输入

决策规则

def monitor_reserve():
    if (reserve < $500K):
        severity = "YELLOW"  # 告警:建议补充
    if (reserve < $300K):
        severity = "ORANGE"  # 警告:开始限制对赌
    if (reserve < $200K):
        severity = "RED"     # 紧急:暂停对赌
        action = "halt_internal_trading"

当前 reserve = $180K < $200K → RED
→ halt_internal_trading()
→ switch_mode(NORMAL → HL_MODE / or FULL_HL)
→ notify_admin(urgency=P0)

输出

监控点

失败兜底


SC-RH-006:日净亏损熔断触发

场景背景: 平台INTERNAL对赌业务每日都有净损益。正常日波动在±$20K,但某些极端行情日可能出现用户集中盈利、平台净亏损。系统设立日净亏损熔断器:当日INTERNAL净亏损达$500K时自动暂停对赌,防止极端风险。

输入

决策规则

# 每笔INTERNAL成交后,累加日净亏损
daily_loss = sum(all_internal_trades_pnl_today)

if (daily_loss < -$100K):
    log_alert("日亏损告警", severity=P2)
    notify_risk_manager()

if (daily_loss < -$500K):
    log_alert("日亏损熔断", severity=P0)
    halt_internal_trading()
    switch_mode(HL_MODE)
    update_circuit_breaker_status(TRIGGERED)

# 次日00:00 UTC自动重置
if (utc_hour == 0 and utc_minute == 0):
    reset_daily_loss_counter()
    circuit_breaker_status = RESET
    if (mode == HL_MODE_due_to_loss):
        # 自动尝试恢复NORMAL_MODE(如其他指标允许)
        try_restore_normal_mode()

时间轴示例:

09:30 - 日亏损 -$20K (OK)
12:15 - 日亏损 -$80K (OK)
14:45 - 日亏损 -$120K → 发告警 P2
16:20 - 日亏损 -$350K → 告警升级 P1
18:05 - 日亏损 -$510K > -$500K → 熔断触发 P0
        → 暂停INTERNAL对赌
        → 切HL_MODE
        → circuit_breaker = TRIGGERED
        → 通知Risk Manager + CTO

次日 2026-04-10 00:00:00 UTC:
        → daily_loss_counter = 0
        → circuit_breaker = RESET
        → 尝试恢复NORMAL_MODE(如敞口许可)

输出

监控点

失败兜底


SC-RH-007:多币种同时触发对冲,资金分配

场景背景: 平台支持多币种交易(BTC、ETH、SOL等)。在某个高波动日,多个币种同时积累了较大净敞口,都需要触发对冲。但对冲账户的可用资本有限,无法同时满足所有币种的完整对冲需求。系统需实现智能资金分配:按敞口规模优先级排序,优先覆盖大敞口,小敞口可能被切HL_MODE。

输入

决策规则

def allocate_hedge_across_symbols():
    total_demand = sum(symbol.exposure * hedge_ratio for symbol in symbols)
    total_capacity = account_capital * current_leverage

    if (total_demand <= total_capacity):
        # 充足,全部满足
        for symbol in symbols:
            execute_hedge(symbol, symbol.exposure * hedge_ratio)
    else:
        # 不充足,按规模优先级分配
        symbols_by_size = sort_by_exposure(symbols, desc=True)
        remaining_capacity = total_capacity

        for symbol in symbols_by_size:
            required = symbol.exposure * hedge_ratio
            if (remaining_capacity >= required):
                execute_hedge(symbol, required)
                remaining_capacity -= required
            else:
                # 无法满足,分两种处理
                if (remaining_capacity > 0):
                    execute_hedge(symbol, remaining_capacity)
                    remaining_capacity = 0
                # 剩余敞口切HL_MODE
                alert(f"{symbol} 敞口转HL_MODE")
                switch_symbol_to_hl(symbol)

本场景执行顺序:
1. BTC($600K,最大)→ 对冲$480K(占用$160K资本 @ 3x)
   remaining = $600K - $160K = $440K

2. ETH($300K,中等)→ 对冲$150K(占用$50K资本 @ 3x)
   remaining = $440K - $50K = $390K

3. SOL($150K,最小)→ 需$75K
   实际可对冲:$390K / 3x = $130K(可覆盖$75K)
   对冲$75K(占用$25K资本 @ 3x)
   remaining = $390K - $25K = $365K

结论:全部币种可满足对冲 ✓

输出

监控点

失败兜底


SC-RH-008:用户集中平仓导致过度对冲

场景背景: 平台对一个大用户的BTC多头$800K(INTERNAL)进行了对冲,在HL对冲账户持有BTC多头$640K(50%对冲+10%缓冲)。该用户在1小时内突然决定全部平仓,INTERNAL敞口从$800K→$0。平台对冲账户需相应减仓从$640K→$0,但不能过快平仓(易产生滑点、市场冲击),需分批逐步减仓。

输入

决策规则

def adjust_hedge_on_position_change():
    new_exposure = get_current_net_exposure()
    current_hedge = get_current_hedge_position()

    # 根据对冲阈值和比例计算目标对冲
    if (new_exposure < HEDGE_THRESHOLD):
        target_hedge = 0
    else:
        target_hedge = new_exposure * hedge_ratio

    hedge_adjustment = current_hedge - target_hedge

    if (hedge_adjustment > 0):
        # 需要减仓
        reduce_hedge(hedge_adjustment)
    elif (hedge_adjustment < 0):
        # 需要加仓
        increase_hedge(-hedge_adjustment)

# 本场景:
trigger_point_1: exposure = $800K - $150K = $650K
                target_hedge = $650K * 80% = $520K
                adjust = $640K - $520K = $120K (需减仓$120K)
                execute_reduce($120K, max_rate=$200K/min)

trigger_point_2: exposure = $450K
                target_hedge = $450K * 80% = $360K
                adjust = $520K - $360K = $160K (需减仓$160K)
                execute_reduce($160K, max_rate=$200K/min)

...最终...

trigger_point_N: exposure = $0 < $100K_threshold
                target_hedge = 0
                adjust = remaining_hedge (需完全减仓)
                execute_reduce_all(remaining_hedge, max_rate=$200K/min)

每次缩减限制速率:最多$200K/分钟(避免市场冲击)

输出

监控点

失败兜底


SC-RH-009:(预留)对赌执行与对冲指令竞态

此场景在”边缘与异常场景”(06-edge-cases.md) 的SC-EC-009详细描述。


SC-RH-010:(预留)HL API限流导致对冲延迟

此场景在”边缘与异常场景”(06-edge-cases.md) 的SC-EC-010详细描述。


附录:关键指标与告警阈值汇总

指标 告警阈值(黄) 触发阈值(红) 动作
净敞口 $500K $800K 切HL_MODE
对冲账户保证金率 300% 150% 补充资金
风险准备金 $300K $200K 暂停对赌
日净亏损 -$100K -$500K 熔断触发
HL API延迟 200ms 500ms 降级处理/转HL
数据同步延迟 1s 5s 告警+人工

文档完毕