Position sizing is where strategy quality becomes account survival. Kelly is useful because it ties size to edge, but full Kelly is usually too aggressive for real-world strategy uncertainty.

Start With the Formula, Then Shrink It
Classic Kelly uses win probability and payoff ratio. In practice, your estimates are noisy, so fractional Kelly (for example 0.25x to 0.5x) is safer and often more stable.
def fractional_kelly(win_rate: float, payoff: float, fraction: float = 0.25) -> float:
edge = win_rate - ((1 - win_rate) / payoff)
kelly_full = max(0.0, edge)
return kelly_full * fraction
# Example: 54% win rate, 1.4R payoff, quarter Kelly
size = fractional_kelly(0.54, 1.4, 0.25)QuantumEdge
Explore these ideas in live bot templates
See how this setup translates into production-ready workflows.
Browse QuantumEdge bot templatesCommon Kelly Mistakes
- Using backtest win rate without regime segmentation.
- Ignoring fat-tail losses and exchange outages.
- Sizing independently across highly correlated strategies.
- Changing Kelly fraction every week based on short-term results.
Production Guardrails
- Hard cap single-position risk (for example 0.5% to 1.0% of equity).
- Add portfolio-level risk cap across all active bots.
- Reduce size after volatility spikes or liquidity deterioration.
- Require minimum sample size before increasing fraction.
Think of Kelly as a sizing ceiling, not a target. Sustainable systems optimize for survival first and compounding second.