stock-ai-agent/backend/app/crypto_agent/executor/LEVERAGE_CONFIGURATION.md
2026-03-28 22:41:51 +08:00

6.4 KiB
Raw Blame History

杠杆配置总结

UPDATED: 2026-03-28

配置变更

已完成的修改

配置项 修改前 修改后 文件
PaperTrading 单笔杠杆 20x 10x config.py:133
Bitget 默认杠杆 5x 10x crypto_agent.py:2580
Hyperliquid 默认杠杆 10x 10x (不变) crypto_agent.py:2884
总杠杆上限 10x 10x (不变) config.py

当前配置

杠杆配置总览

平台 单笔杠杆 总杠杆上限 说明
PaperTrading 10x 10x 模拟盘统一10x杠杆
Bitget 10x 10x 实盘默认10x可动态调整
Hyperliquid 10x 10x 实盘默认10x最大10x

配置文件位置

# config.py
class Settings(BaseSettings):
    # 模拟交易
    paper_trading_leverage: int = 10  # ✅ 从20改为10
    paper_trading_max_total_leverage: float = 10  # 总杠杆上限

    # Bitget 实盘
    bitget_max_total_leverage: float = 10  # 总杠杆上限

    # Hyperliquid 实盘
    hyperliquid_max_total_leverage: float = 10  # 总杠杆上限.

代码实现

Bitget 开仓

# crypto_agent.py:2579-2581
# 设置杠杆 (默认10x最大10x)
leverage = min(decision.get('leverage', 10), 10)
self.bitget.update_leverage(symbol, leverage)

Hyperliquid 开仓

# crypto_agent.py:2884-2885
leverage = min(decision.get('leverage', 10), 10)
self.hyperliquid.update_leverage(symbol, leverage)

PaperTrading 开仓

# paper_trading_service.py 使用配置中的杠杆
self.leverage = settings.paper_trading_leverage  # 10x

杠杆控制逻辑

单笔杠杆限制

# 确保单笔杠杆不超过10x
leverage = min(decision.get('leverage', 10), 10)

总杠杆控制

系统会实时监控总杠杆使用情况:

# 计算当前总杠杆
total_position_value = sum(all_positions_value)
current_total_leverage = total_position_value / account_balance

# 检查是否还能开仓
remaining_leverage = max_total_leverage - current_total_leverage

if remaining_leverage <= 0:
    # 已达最大杠杆,无法开仓
    return 0, f"已达最大杠杆 {current_leverage:.1f}x/{max_total_leverage}x"

# 限制新开仓的杠杆
max_new_position = account_balance * remaining_leverage

实际案例

案例 1: Bitget $1074 账户, A级信号

账户余额: $1,074
可用余额: $1,074
当前总杠杆: 0x (无持仓)

信号置信度: 92% (A级)
保证金比例: 10% (Kelly公式型)
保证金: $1,074 × 10% = $107.40

单笔杠杆: 10x
持仓价值: $107.40 × 10 = $1,074
当前总杠杆: $1,074 / $1,074 = 1.0x ✅

剩余可用杠杆: 10x - 1.0x = 9.0x
剩余可开仓金额: $1,074 × 9.0 = $9,666

案例 2: Hyperliquid $2000 账户, 已有持仓

账户余额: $2,000
当前持仓价值: $8,000 (已用杠杆 4x)
当前总杠杆: $8,000 / $2,000 = 4.0x

新信号 (B级):
保证金比例: 6% (Kelly公式型)
保证金: $2,000 × 6% = $120

单笔杠杆: 10x
新持仓价值: $120 × 10 = $1,200

开仓后总杠杆: ($8,000 + $1,200) / $2,000 = 4.6x ✅ (< 10x)

剩余可用杠杆: 10x - 4.6x = 5.4x

案例 3: 杠杆超限,拒绝开仓

账户余额: $1,000
当前持仓价值: $9,500 (已用杠杆 9.5x)
当前总杠杆: $9,500 / $1,000 = 9.5x

新信号 (A级):
保证金: $100
期望杠杆: 10x
期望持仓价值: $1,000

预计总杠杆: ($9,500 + $1,000) / $1,000 = 10.5x ❌ (> 10x)

系统拒绝: "已达最大杠杆 9.5x/10x"
建议: 先平仓部分持仓

Kelly公式型 + 10x杠杆的威力

资金利用效率对比

场景 3%仓位+5x杠杆 10%仓位+10x杠杆 倍数
$1000账户 A级信号 $150 仓位 $1000 仓位 6.7x
盈利 3% +$4.5 +$30 6.7x
亏损 3% -$4.5 -$30 6.7x

示例: 10次交易后的差异

假设:

  • A级信号胜率: 60%
  • 平均盈利: 4%
  • 平均亏损: 3%
  • $1000账户

保守配置 (3% + 5x):

盈利: 6次 × $150 × 4% = $36
亏损: 4次 × $150 × 3% = -$18
净收益: +$18 (1.8%)
总杠杆峰值: ~1.5x (非常安全)

Kelly配置 (10% + 10x):

盈利: 6次 × $1000 × 4% = $240
亏损: 4次 × $1000 × 3% = -$120
净收益: +$120 (12%)  🚀
总杠杆峰值: ~6x (风险可控)

收益差异: 12% vs 1.8% = 6.7倍


风险管理

单笔最大亏损(-3%止损)

信号等级 保证金 杠杆 持仓价值 -3%亏损 占总资金%
A级 $100 10x $1,000 -$30 -3.0%
B级 $60 10x $600 -$18 -1.8%
C级 $20 10x $200 -$6 -0.6%

最大回撤控制

  • 单笔最大亏损: -3% (A级信号止损)
  • 连续5次亏损: -15% (极端情况)
  • 建议: 设置账户级止损 -20%

监控指标

实时监控

# 每轮循环检查
current_total_leverage = total_position_value / account_balance

if current_total_leverage > 8.0:
    # 警告: 接近杠杆上限
    logger.warning(f"⚠️ 总杠杆 {current_leverage:.1f}x接近上限10x")

if current_total_leverage >= 10.0:
    # 紧急: 达到杠杆上限
    logger.error(f"🚨 已达最大杠杆 {current_leverage:.1f}x/10x")

告警通知

  • 飞书通知: 杠杆 > 8x 时发送告警
  • 日志记录: 每次开仓记录杠杆变化
  • 自动拒绝: 杠杆满时自动拒绝新信号

配置建议

保守型(推荐新手)

paper_trading_leverage: int = 5  # 或保持10x但降低仓位比例
base_margin_pct = 0.05  # A级5%

平衡型(当前配置)

paper_trading_leverage: int = 10
base_margin_pct = 0.10  # A级10%

激进型(仅限经验丰富)

paper_trading_leverage: int = 10
base_margin_pct = 0.15  # A级15%
max_total_leverage: float = 15  # ⚠️ 极高风险

检查清单

  • PaperTrading 杠杆从20x改为10x

  • Bitget 默认杠杆从5x改为10x

  • Hyperliquid 默认杠杆保持10x

  • 总杠杆上限保持10x

  • 更新配置文档

  • 创建杠杆控制文档

  • 回测验证新配置效果

  • 实盘测试并监控

  • 根据实际表现微调


相关文档