关于 position-sizing
面向交易者的仓位规模管理技能,介绍固定比例、波动率调整、Kelly、流动性约束和反马丁格尔等方法。通过取多种方法中最保守的结果,帮助结合账户风险、市场波动与池深确定仓位。
主要功能
- 01五种仓位计算方法
- 02按账户风险比例计算仓位
- 03根据波动率调整规模
- 04基于池深限制交易规模
- 05综合约束选取保守仓位
- 06账户与 Meme 资产限额
适用场景
- 01根据止损距离和风险比例计算仓位
- 02在波动加剧时缩减交易规模
- 03为低流动性 Solana 代币设置交易上限
- 04按胜率和盈亏比评估 Kelly 仓位
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agiprolabs/ claude-trading-skills --skill position-sizing安装后在 Claude Code 中输入/position-sizing确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/practical_guide.mdsizing_formulas.mdscripts/portfolio_sizer.pysize_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