position-sizing
固定比率、ボラティリティ調整、ケリー基準、流動性制約など、様々な取引サイズ決定手法を用いて、リスク管理を考慮しながら最適な投資額を算出するSkill。
📜 元の英語説明(参考)
Trade sizing methods including fixed fractional, volatility-adjusted, Kelly criterion, and liquidity-constrained sizing
🇯🇵 日本人クリエイター向け解説
固定比率、ボラティリティ調整、ケリー基準、流動性制約など、様々な取引サイズ決定手法を用いて、リスク管理を考慮しながら最適な投資額を算出するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o position-sizing.zip https://jpskill.com/download/10426.zip && unzip -o position-sizing.zip && rm position-sizing.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10426.zip -OutFile "$d\position-sizing.zip"; Expand-Archive "$d\position-sizing.zip" -DestinationPath $d -Force; ri "$d\position-sizing.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
position-sizing.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
position-sizingフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
ポジションサイジング
ポジションサイジングは、トレーディングにおける最も重要なリスク管理の決定事項です。エントリーシグナルは方向を決定し、ポジションサイズは生存を決定します。適切なサイジングを持つ平凡な戦略は、どんなに優れた戦略であっても、無謀なサイジングであれば、意味のある期間にわたってそれを上回るでしょう。
コア原則: サイズが生存を決定し、エントリーではありません。同じシグナルを持つ2人のトレーダーでも、サイジングが異なれば、結果は大きく異なります。保守的にサイズを決めるトレーダーは、ドローダウンを乗り越え、資本を複利で増やします。過剰にサイズを決めるトレーダーは破綻します。
対象となる手法
| 手法 | 最適な用途 | 主要な入力 |
|---|---|---|
| 固定割合 | 一般的なトレーディング、最も推奨 | アカウントリスク % |
| ボラティリティ調整 | 変動の激しい市場、マルチアセット | 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
リスク階層
| 階層 | 1トレードあたりのリスク | ユースケース |
|---|---|---|
| 保守的 | 0.5–1% | 新しい戦略、ドローダウンからの回復 |
| 標準 | 1–2% | ほとんどのトレーダー、実績のある戦略 |
| 積極的 | 3–5% | 強力で測定可能なエッジを持つ、確信度の高いセットアップ |
例
account = 10_000 # $10,000 または 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: 目標とする1日のポートフォリオボラティリティ (例: 2%)current_vol: トークンの現在の1日のボラティリティ (ATR または実現ボラティリティから)
ATR の使用
atr_14 = 0.12 # 14期間 ATR
close_price = 1.50
daily_vol_pct = atr_14 / close_price # 8%
target_daily_vol = account * 0.02 # $200 目標1日の変動
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% 勝率
avg_win = 2.0 # 平均勝利は平均損失の2倍
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% — これを使用
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
max_slippage = 0.02 # 最大 2% スリッページ
max_trade_sol = pool_sol * max_slippage # 10 SOL
# $150 SOL の価格の場合、これは 1 トレードあたり最大 $1,500 です
常に最大のプールだけでなく、すべてのプールを確認してください。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 consecutiv
(原文がここで切り詰められています) 📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Position Sizing
Position sizing is the single most important risk management decision in trading. Your entry signal determines direction; your position size determines survival. A mediocre strategy with proper sizing will outperform a great strategy with reckless sizing over any meaningful time horizon.
Core principle: Size determines survival, not entries. Two traders with the same signals but different sizing will have wildly different outcomes. The one who sizes conservatively survives drawdowns and compounds capital; the one who oversizes blows up.
Methods Covered
| Method | Best For | Key Input |
|---|---|---|
| Fixed Fractional | General trading, most recommended | Account risk % |
| Volatility-Adjusted | Volatile markets, multi-asset | ATR or realized vol |
| Kelly Criterion | Quantified edge with track record | Win rate + payoff ratio |
| Liquidity-Constrained | Low-liquidity Solana tokens | Pool depth |
| Anti-Martingale | Trend-following strategies | Recent P&L streak |
1. Fixed Fractional Sizing
The most recommended method for most traders. Risk a fixed percentage of your account on each trade.
Formula
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
Risk Tiers
| Tier | Risk Per Trade | Use Case |
|---|---|---|
| Conservative | 0.5–1% | New strategies, drawdown recovery |
| Standard | 1–2% | Most traders, proven strategies |
| Aggressive | 3–5% | High-conviction setups with strong, measured edge |
Example
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
With this sizing, if the stop loss is hit, you lose exactly 2% of your account regardless of the token's price or volatility.
2. Volatility-Adjusted Sizing
Scale position size inversely with volatility. When volatility is high, take smaller positions; when low, take larger positions. This normalizes the dollar risk across different market conditions.
Formula
adjusted_size = base_size * (target_vol / current_vol)
Where:
target_vol: your desired daily portfolio volatility (e.g., 2%)current_vol: the token's current daily volatility (from ATR or realized vol)
Using 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
This automatically reduces exposure in volatile markets and increases it in calm ones.
3. Kelly Criterion
The mathematically optimal fraction of capital to risk, maximizing long-term growth rate. Derived from maximizing expected logarithmic utility.
Formula
f* = (p * b - q) / b
Where:
p= win rate (probability of winning trade)q= 1 - p (probability of losing trade)b= average win / average loss (payoff ratio)f*= optimal fraction of capital to risk
Equivalent form: f* = (p * (b + 1) - 1) / b
Critical Rule: NEVER Use Full Kelly
Full Kelly assumes perfect knowledge of your edge. In practice, edge estimates are noisy. Always use fractional Kelly:
| Fraction | Use Case | Notes |
|---|---|---|
| 0.25x Kelly | Conservative, recommended default | Robust to edge estimation error |
| 0.50x Kelly | Moderate, for well-measured edges | Still significant drawdown risk |
| 1.0x Kelly | Never in practice | Theoretical maximum, catastrophic if edge is overestimated |
Example
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%
If Kelly is negative, you have no edge. Do not trade.
See references/sizing_formulas.md for the full mathematical derivation.
4. Liquidity-Constrained Sizing
Critical for Solana tokens. Even if your risk model says you can take a large position, the pool may not support it without unacceptable slippage.
Formula (Constant-Product AMM)
slippage ≈ trade_size / pool_liquidity
max_trade = pool_liquidity * max_slippage_pct
Rules of Thumb
| Constraint | Guideline |
|---|---|
| Max single trade | 2% of pool liquidity |
| Max position | 5% of pool liquidity |
| Minimum pool depth | 10x your desired position size |
Example
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
Always check all pools, not just the largest. Aggregate liquidity across Raydium, Orca, and Meteora for the full picture. See the liquidity-analysis skill for pool depth assessment.
5. Anti-Martingale Sizing
Increase size after wins, decrease after losses. This is the opposite of the gambler's fallacy (Martingale). The logic: winning streaks may indicate your strategy is in sync with the market; losing streaks may indicate regime change.
Implementation
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
Use conservatively. After 3+ consecutive losses, reducing size by 50% protects capital during drawdowns.
Position Sizing Ladder
Combine all methods and take the most conservative result:
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
The binding constraint tells you what is limiting your size:
- Kelly-bound: your edge is small, size accordingly
- Risk-bound: standard risk management is the limit
- Volatility-bound: market is too volatile for larger size
- Liquidity-bound: pool cannot absorb more without slippage
Account-Level Limits
Individual position sizing is necessary but not sufficient. You also need portfolio-level constraints:
| Limit | Guideline | Rationale |
|---|---|---|
| Max single position | 10% of portfolio | Diversification floor |
| Max correlated exposure | 25% of portfolio | Correlated assets move together |
| Max total exposure | 50–80% of portfolio | Cash reserve for opportunities/margin |
| Max positions | 5–10 concurrent | Attention and management bandwidth |
PumpFun / Meme Token Sizing
PumpFun and early-stage meme tokens require special sizing discipline:
- Very small positions: 0.1–1 SOL per trade due to extreme risk
- Scale with bonding curve fill %: smaller when early (high rug risk), slightly larger when proven (graduated to Raydium)
- Never size based on expected return — size based on acceptable total loss
- Treat as lottery tickets: expect most to go to zero
- Position limit: no more than 5–10% of portfolio across all meme positions combined
# 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
Integration with Other Skills
| Skill | Integration |
|---|---|
risk-management |
Portfolio-level limits, drawdown rules |
liquidity-analysis |
Pool depth data for liquidity constraints |
kelly-criterion |
Deeper Kelly math, edge estimation |
exit-strategies |
Stop loss placement affects fixed fractional sizing |
volatility-modeling |
Better vol estimates for volatility-adjusted sizing |
slippage-modeling |
Precise slippage estimates for liquidity constraints |
Files
References
references/sizing_formulas.md— Mathematical derivations for all sizing methods with worked examplesreferences/practical_guide.md— Sizing by account size, token type, and common mistakes
Scripts
scripts/size_calculator.py— Calculates position size using all methods, shows binding constraintscripts/portfolio_sizer.py— Portfolio risk dashboard with per-position risk and available budget
Quick Reference
# 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