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

6.2 KiB
Raw Blame History

仓位配置方案

UPDATED: 2026-03-28

当前方案: Kelly公式型

配置详情

信号等级 置信度范围 保证金比例 $1000账户示例 5x杠杆仓位 10x杠杆仓位
A级 ≥90分 10% $100 $500 $1,000
B级 70-89分 6% $60 $300 $600
C级 <70分 2% $20 $100 $200

特点

  • 最大化资金利用率: A级信号用10%仓位,充分利用高质量机会
  • 分级明确: 不同信号等级差异明显10% / 6% / 2%
  • 适合小资金: $1000账户也能开有意义仓位$500-$1000
  • ⚠️ 高风险: 单笔最大亏损可能较大,需严格止损

理论基础: Kelly公式

Kelly公式用于计算最优仓位大小

f* = (p × b - q) / b

其中:
f* = 最优仓位比例
p = 胜率
q = 败率 (1 - p)
b = 盈亏比 (平均盈利/平均亏损)

假设参数:

  • A级信号胜率: 65%, 盈亏比 2.0 → Kelly建议 ~22% (我们用10%更保守)
  • B级信号胜率: 55%, 盈亏比 1.5 → Kelly建议 ~10% (我们用6%)
  • C级信号胜率: 50%, 盈亏比 1.2 → Kelly建议 ~3% (我们用2%)

实际案例

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

信号置信度: 92% (A级)
账户余额: $1,074
可用余额: $1,074

Step 1: 基础保证金 = $1,074 × 10% = $107.40
Step 2: 最小保证金限制 (BTC) = $85 → 不调整
Step 3: 最大保证金限制 = $1,074 × 10% = $107.40 → 不调整
Step 4: 杠杆限制 (5x) → 不调整

最终保证金: $107.40
杠杆: 5x
持仓价值: $537
BTC数量: 0.00631 BTC
合约张数: 0 张 ❌

问题: 0.00631 BTC / 0.01 BTC/张 = 0.631张 → 不足1张

解决: 调整保证金到 $170
→ 0.01 BTC = 1张 ✅

案例 2: Hyperliquid ETH, $1000账户, B级信号

信号置信度: 78% (B级)
账户余额: $1,000
可用余额: $1,000

Step 1: 基础保证金 = $1,000 × 6% = $60
Step 2: 最小保证金限制 = $50 → 不调整
Step 3: 最大保证金限制 = $1,000 × 10% = $100 → 不调整

最终保证金: $60
杠杆: 5x
持仓价值: $300
ETH数量: 0.0857 ETH ✅ (Hyperliquid支持任意大小)

案例 3: PaperTrading SOL, $10000账户, C级信号

信号置信度: 65% (C级)
账户余额: $10,000
可用余额: $10,000

Step 1: 基础保证金 = $10,000 × 2% = $200
Step 2: 无最小限制 (模拟盘)
Step 3: 最大保证金限制 = $10,000 × 5% = $500 → 不调整

最终保证金: $200
杠杆: 5x
持仓价值: $1,000
SOL数量: 7.14 SOL ✅

风险管理

单笔最大亏损计算

假设止损设置为-3%:

信号等级 保证金 杠杆 持仓价值 -3%亏损 占总资金%
A级 $100 5x $500 -$15 -1.5%
A级 $100 10x $1,000 -$30 -3.0%
B级 $60 5x $300 -$9 -0.9%
C级 $20 5x $100 -$3 -0.3%

最大持仓限制

除了保证金比例,还有其他限制:

  1. 平台最大保证金: 单笔不超过余额的10% (Bitget/Hyperliquid)
  2. 杠杆限制: 总杠杆不超过10x
  3. 最小保证金:
    • Bitget BTC: $85 (10x) / $170 (5x)
    • Hyperliquid: $50 (任意杠杆)
  4. 合约规格 (Bitget):
    • 必须是整数张
    • BTC: 0.01 BTC/张
    • ETH: 0.1 ETH/张
    • SOL: 1 SOL/张

与其他方案对比

方案对比表

方案 A级 B级 C级 $1000账户A级仓位(5x) 特点
保守型 3% 2% 1% $150 风险低,收益慢
平衡型 5% 3% 1% $250 风险收益平衡
激进型 8% 5% 2% $400 高收益,高风险
Kelly型 (当前) 10% 6% 2% $500 最大化资金效率

资金曲线对比

假设10次A级信号胜率60%平均盈利4%平均亏损3%:

保守型 (3%):
- 盈利: 6次 × $150 × 4% = $36
- 亏损: 4次 × $150 × 3% = -$18
- 净收益: +$18 (1.8%)

Kelly型 (10%):
- 盈利: 6次 × $500 × 4% = $120
- 亏损: 4次 × $500 × 3% = -$60
- 净收益: +$60 (6.0%)

Kelly型收益是保守型的3.3倍,但最大回撤也会更大。

调整建议

何时调整

  1. 降低仓位 (回到平衡型):

    • 连续亏损 > 5次
    • 账户回撤 > 15%
    • 市场极度波动 (VIX > 40)
  2. 提高杠杆 (保持10%保证金):

    • 使用10x杠杆替代5x
    • A级信号仓位: $500 → $1,000
    • 适合高置信度信号 (≥95%)

动态调整策略

def get_dynamic_position_size(confidence, account, recent_performance):
    """根据近期表现动态调整仓位"""

    # 基础比例 (Kelly型)
    if confidence >= 90:
        base_pct = 0.10
    elif confidence >= 70:
        base_pct = 0.06
    else:
        base_pct = 0.02

    # 根据近期表现调整
    win_rate = recent_performance.get('win_rate_7d', 0.5)

    if win_rate < 0.4:
        # 近期表现差,降低仓位
        base_pct *= 0.7
    elif win_rate > 0.7:
        # 近期表现好,提高仓位
        base_pct *= 1.2

    return account['available'] * base_pct

实施检查清单

  • 修改 crypto_agent.py 中的 _calculate_position_size() 方法

  • 更新文档说明新比例

  • 测试A级信号仓位计算

  • 测试B级信号仓位计算

  • 测试C级信号仓位计算

  • 验证Bitget合约张数计算

  • 验证Hyperliquid任意大小支持

  • 实盘测试并监控

  • 根据实盘表现微调

相关配置文件

# crypto_agent.py

# Kelly公式型配置
if confidence >= 90:
    base_margin_pct = 0.10  # A级: 10%
elif confidence >= 70:
    base_margin_pct = 0.06  # B级: 6%
else:
    base_margin_pct = 0.02  # C级: 2%

# 平台限制
PLATFORM_RULES = {
    'Bitget': {
        'max_margin_pct': 0.10,  # 单笔最大10%
        'min_margin': {
            'BTC': 85,   # 10x杠杆
            'ETH': 35,
            'SOL': 14
        }
    },
    'Hyperliquid': {
        'max_margin_pct': 0.10,
        'min_margin': 50  # 通用最小$50
    }
}

相关文档