The Porter Position Sizing System: A Practical Framework for Any Trader
"How much should I buy?" is the most important question in trading — more important than "what should I buy?" — and the one most traders answer with a shrug. Here's a complete, step-by-step system that gives you a defensible number every time.
The Four-Step Framework
Every position size passes through four filters, in order. Each one can reduce the size. None of them can increase it beyond the previous step's output.
Step 1: Edge-Based Size (Kelly)
Start with your edge. If you have a probability estimate (p) and a reward:risk ratio (b), Kelly gives you the theoretical optimal fraction:
Practical version — use ½ Kelly:
f_practical = f* × 0.5
Example: p = 0.60, b = 2.0
f* = (2×0.6 − 0.4) / 2 = 0.4
f_practical = 0.4 × 0.5 = 20% of bankroll
20% sounds large. That's because Kelly assumes you can rebalance continuously and the edge is certain. In reality, both assumptions are false, which is why we halve it. And even then, we cap it:
This is your circuit breaker. Even if Kelly says 20%, you take 5%. The cap exists because Kelly assumes your probability estimate is correct. It rarely is.
Step 2: Volatility Scaling
Now adjust for the asset's volatility. A 5% position in a stock with 15% annualized vol carries very different risk than a 5% position in a stock with 45% annualized vol.
Where Target Vol = your portfolio's volatility budget per position (e.g., 10% annualized)
Example: Base = 5%, Asset vol = 30%, Target = 10%
Vol-Adjusted = 5% × (10/30) = 1.43%. → 1.43% of portfolio
Cap at 2× base, floor at 0.25× base.
This ensures that a high-vol name gets a smaller allocation than a low-vol name for the same signal quality. You're equalizing risk contribution, not dollar amount.
Step 3: Correlation Discount
Check your existing portfolio. If you already hold 3 positions highly correlated (ρ > 0.7) with this new signal, the "diversification benefit" of adding a 4th is minimal.
• 0 existing correlated positions: × 1.0 (no discount)
• 1 existing correlated position: × 0.75
• 2 existing correlated positions: × 0.5
• 3+ existing correlated positions: × 0.25 (or skip the trade)
"Correlated" = 90-day rolling ρ > 0.7 with any existing holding.
This prevents the "I have 10 stocks but really have 2 bets" problem. Each additional correlated position gets progressively smaller until it's not worth taking.
Step 4: Liquidity Check
The final filter: can you actually execute this size without moving the market?
• < 1%: No impact cost. Take the full calculated size.
• 1–5%: Acceptable. Take the full size.
• 5–10%: Reduce size to maintain 5% participation.
• > 10%: Reduce to 5% participation, or skip.
Impact cost at 5% participation ≈ 20–50bp. Factor this into your expected R.
Putting It All Together: A Worked Example
You have a $200,000 portfolio. GemStox fires a signal on a mid-cap with:
- Confidence: 72%
- Reward:Risk = 2.5:1
- Asset volatility: 35% annualized
- Your portfolio already holds 2 stocks with ρ=0.75 to this one
- Stock ADV: $8M. Your account's 5% = $10,000.
Step 1 (Kelly): f* = (2.5×0.72 − 0.28)/2.5 = (1.8−0.28)/2.5 = 0.608. Half-Kelly = 30%. Cap at 5%. → 5%
Step 2 (Vol): 5% × (10/35) = 1.43%. → 1.43% ($2,860)
Step 3 (Correlation): 2 correlated holdings → × 0.5. → 0.71% ($1,430)
Step 4 (Liquidity): $1,430 / $8M = 0.018% participation. No impact. → Final: $1,430 (0.71% of portfolio)
Small? Yes. Correct? Absolutely. You're taking a 72%-confidence trade in a volatile, correlated, mid-cap name. 0.71% is the mathematically honest size. Over 100 trades, this discipline compounds into a dramatically smoother equity curve than the "I'll just put 5% in everything" approach.
The One-Page Cheat Sheet
- Kelly (½) → cap at 5%
- × (Target Vol / Asset Vol)
- × Correlation discount (1.0 / 0.75 / 0.5 / 0.25)
- Check participation < 5% of ADV
- Done. That's your position size.
Position sizes calculated for you, every signal.
GemStox outputs a suggested position size with every signal — Kelly-optimized, vol-scaled, correlation-aware. You just execute. $3 Day Pass.
Get Sized Positions →