mcpField
P
position-sizing

position-sizing

github.com/agiprolabs其他456586 次安装8 周前更新
代码仓库

关于 position-sizing

面向交易者的仓位规模管理技能,介绍固定比例、波动率调整、Kelly、流动性约束和反马丁格尔等方法。通过取多种方法中最保守的结果,帮助结合账户风险、市场波动与池深确定仓位。

主要功能

  1. 01五种仓位计算方法
  2. 02按账户风险比例计算仓位
  3. 03根据波动率调整规模
  4. 04基于池深限制交易规模
  5. 05综合约束选取保守仓位
  6. 06账户与 Meme 资产限额

适用场景

  1. 01根据止损距离和风险比例计算仓位
  2. 02在波动加剧时缩减交易规模
  3. 03为低流动性 Solana 代币设置交易上限
  4. 04按胜率和盈亏比评估 Kelly 仓位

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/agiprolabs/claude-trading-skills --skill position-sizing

安装后在 Claude Code 中输入/position-sizing确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
practical_guide.md
sizing_formulas.md
scripts/
portfolio_sizer.py
size_calculator.py

详细介绍

仓位规模

仓位规模是交易中最重要的风险管理决策。入场信号决定方向;仓位大小决定能否存活。只要时间跨度足够长,采用恰当仓位管理的普通策略,会胜过仓位管理鲁莽的优秀策略。

核心原则:仓位大小决定能否存活,而不是入场时机。两个交易者使用相同的信号,但仓位管理不同,结果会截然不同。仓位保守的交易者能挺过回撤并实现资本复利增长;仓位过大的交易者则会爆仓。

涵盖的方法

方法最适用场景关键输入
固定比例法一般交易,最推荐账户风险百分比
波动率调整法高波动市场、多资产交易ATR 或已实现波动率
凯利准则优势已量化且有实盘记录胜率 + 盈亏比
流动性约束法低流动性的 Solana 代币池子深度
反马丁格尔法趋势跟踪策略近期盈亏连胜或连败

1. 固定比例仓位法

这是最推荐大多数交易者使用的方法。每笔交易承担固定比例的账户风险。

公式
risk_amount = account_value * risk_percentage
price_risk_per_unit = entry_price - stop_loss_price
position_size_units = risk_amount / price_risk_per_unit
position_value = position_size_units * entry_price
风险等级
等级每笔交易风险适用场景
保守0.5–1%新策略、回撤恢复
标准1–2%大多数交易者、已验证的策略
激进3–5%高确信度且优势显著、经过衡量的交易机会
示例
account = 10_000  # $10,000 or 100 SOL
risk_pct = 0.02   # 2%
entry = 1.50
stop_loss = 1.30

risk_amount = account * risk_pct          # $200
price_risk = entry - stop_loss            # $0.20
position_units = risk_amount / price_risk # 1,000 tokens
position_value = position_units * entry   # $1,500

采用这种仓位管理方式,如果触发止损,无论代币价格或波动率如何,你恰好会损失账户的 2%。


2. 波动率调整仓位法

仓位大小与波动率成反比。波动率高时,仓位更小;波动率低时,仓位更大。这样可以在不同市场环境下统一美元风险。

公式
adjusted_size = base_size * (target_vol / current_vol)

其中:

  • target_vol:你期望的每日投资组合波动率(例如 2%)
  • current_vol:代币当前的每日波动率(根据 ATR 或已实现波动率计算)
使用 ATR
atr_14 = 0.12          # 14-period ATR
close_price = 1.50
daily_vol_pct = atr_14 / close_price  # 8%

target_daily_vol = account * 0.02      # $200 target daily move
position_size = target_daily_vol / atr_14  # 1,667 units

这种方法会自动降低高波动市场中的风险敞口,并提高平稳市场中的风险敞口。


3. 凯利准则

从数学上看,这是最优的资本风险比例,可使长期增长率最大化。它通过最大化预期对数效用推导得出。

公式
f* = (p * b - q) / b

其中:

  • p = 胜率(交易获胜的概率)
  • q = 1 - p(交易亏损的概率)
  • b = 平均盈利 / 平均亏损(盈亏比)
  • f* = 最优资本风险比例

等价形式:f* = (p * (b + 1) - 1) / b

关键规则:绝不要使用完整凯利比例

完整凯利假设你能完美掌握自己的优势。实际上,对优势的估算存在噪声。务必使用分数凯利:

比例适用场景说明
0.25x 凯利保守,推荐的默认值能抵御优势估算误差
0.50x 凯利中等,适用于经过准确衡量的优势仍有显著的回撤风险
1.0x 凯利实际中绝不使用理论最大值;高估优势会造成灾难性后果
示例
win_rate = 0.55       # 55% win rate
avg_win = 2.0         # Average win is 2x the average loss
avg_loss = 1.0
payoff_ratio = avg_win / avg_loss  # b = 2.0

kelly = (win_rate * payoff_ratio - (1 - win_rate)) / payoff_ratio
# kelly = (0.55 * 2.0 - 0.45) / 2.0 = 0.325 = 32.5%

quarter_kelly = kelly * 0.25  # 8.1% — use this
half_kelly = kelly * 0.50     # 16.25%

如果凯利值为负,你就没有优势。不要交易。

完整的数学推导请参阅 references/sizing_formulas.md。


4. 流动性约束仓位法

这对 Solana 代币至关重要。即使风险模型认为你可以建立大仓位,池子的流动性也可能无法支持,否则滑点会高到无法接受。

公式(恒定乘积 AMM)
slippage ≈ trade_size / pool_liquidity
max_trade = pool_liquidity * max_slippage_pct
经验法则
约束指引
单笔交易上限池子流动性的 2%
仓位上限池子流动性的 5%
最低池子深度目标仓位规模的 10 倍
示例
pool_sol = 500          # 500 SOL in pool
max_slippage = 0.02     # 2% max slippage

max_trade_sol = pool_sol * max_slippage  # 10 SOL
# For a $150 SOL price, that's $1,500 max per trade

务必检查所有池子,不要只看最大的池子。汇总 Raydium、Orca 和 Meteora 的流动性,才能全面了解情况。池子深度评估请参阅 liquidity-analysis 技能。


5. 反马丁格尔仓位调整

盈利后增加仓位,亏损后减少仓位。这与赌徒谬误(马丁格尔)正好相反。其逻辑是:连胜可能表明策略与市场步调一致;连败则可能表明市场状态发生了变化。

实现
def anti_martingale_size(
    base_size: float,
    consecutive_wins: int,
    consecutive_losses: int,
    scale_factor: float = 0.25,
    max_multiplier: float = 2.0,
    min_multiplier: float = 0.5,
) -> float:
    if consecutive_losses > 0:
        multiplier = max(min_multiplier, 1.0 - consecutive_losses * scale_factor)
    elif consecutive_wins > 0:
        multiplier = min(max_multiplier, 1.0 + consecutive_wins * scale_factor)
    else:
        multiplier = 1.0
    return base_size * multiplier

请保守使用。连续亏损 3 次或以上后,将仓位减半,可在回撤期间保护资金。


仓位调整阶梯

综合所有方法,并采用最保守的结果:

1. Calculate Kelly size          → theoretical max based on edge
2. Calculate fixed fractional    → risk-based size
3. Calculate volatility-adjusted → vol-normalized size
4. Calculate liquidity-constrained max → market-based ceiling
5. Final size = min(all four)    → binding constraint wins

起约束作用的条件会告诉你是什么限制了仓位:

  • 受凯利公式限制:你的优势很小,应相应调整仓位
  • 受风险限制:标准风险管理是限制因素
  • 受波动率限制:市场波动太大,不适合扩大仓位
  • 受流动性限制:池子无法在不产生滑点的情况下承接更多交易

账户级限制

单个仓位的仓位调整必不可少,但还不够。你还需要设置投资组合级别的限制:

限制指引原因
单个仓位上限投资组合的 10%分散投资的底线
相关资产敞口上限投资组合的 25%相关资产会同步波动
总敞口上限投资组合的 50–80%为把握机会和保证金预留现金
仓位数量上限同时持有 5–10 个受注意力和管理能力限制

PumpFun / Meme 代币仓位调整

PumpFun 和早期 Meme 代币需要特别注意仓位纪律:

  • 仓位要非常小:每笔交易 0.1–1 SOL,因为风险极高
  • 根据联合曲线完成比例调整仓位:早期风险较高(rug 风险高),仓位要更小;经过验证后(迁移至 Raydium),仓位可稍大
  • 绝不要根据预期回报确定仓位——应根据可接受的总亏损确定仓位
  • 将其视为彩票:预期大多数代币会归零
  • 仓位限制:所有 Meme 仓位合计不超过投资组合的 5–10%
# PumpFun sizing example
account_sol = 100
meme_budget = account_sol * 0.05   # 5 SOL total for memes
per_trade = meme_budget / 10       # 0.5 SOL each, 10 shots

与其他技能集成

技能集成方式
risk-management投资组合级限制、回撤规则
liquidity-analysis用于流动性约束的池深度数据
kelly-criterion更深入的凯利公式计算、优势估算
exit-strategies止损位置会影响固定比例仓位调整
volatility-modeling更准确的波动率估算,用于波动率调整仓位
slippage-modeling更精确的滑点估算,用于流动性约束

文件

参考资料
  • references/sizing_formulas.md — 所有仓位调整方法的数学推导和计算示例
  • references/practical_guide.md — 按账户规模、代币类型调整仓位,以及常见错误
脚本
  • scripts/size_calculator.py — 使用所有方法计算仓位,并显示起约束作用的条件
  • scripts/portfolio_sizer.py — 投资组合风险仪表板,显示每个仓位的风险和可用预算

快速参考

# Minimal fixed fractional sizing — copy-paste starter
def calc_position_size(
    account: float, risk_pct: float, entry: float, stop: float
) -> float:
    """Return number of units to buy."""
    risk_amount = account * risk_pct
    price_risk = abs(entry - stop)
    if price_risk == 0:
        return 0.0
    return risk_amount / price_risk

评论

支持 Markdown