← Back to Blog
RISK MANAGEMENT

Position Sizing for Algo Traders: From Fixed Fractional to Kelly Criterion

July 3, 2026 · 8 min read · LMEX.AI

Most traders spend all their energy on entries and almost none on how much to bet. That is backwards. Given a strategy with any real edge, position sizing does more to shape your equity curve than the entry signal does. Size too small and the edge never compounds. Size too large and one normal losing streak ends the account. This guide walks the main sizing methods from simplest to most aggressive, and where each one fits.


Fixed fractional: the honest baseline


Fixed fractional risks a constant percentage of equity on every trade. Not a constant dollar amount, a constant percentage, so your bet shrinks after losses and grows after wins automatically. This single property is why it survives where fixed-dollar sizing blows up.


def fixed_fractional_size(equity, entry, stop, risk_pct=0.01):
    risk_per_unit = abs(entry - stop)
    dollar_risk = equity * risk_pct
    qty = dollar_risk / risk_per_unit
    return qty

Risking 1% per trade means a 10-trade losing streak costs about 10% of the account, survivable. Risking 10% per trade means the same streak is close to fatal. For most retail algo strategies, somewhere between 0.5% and 2% per trade is the whole conversation. Everything fancier is a refinement of this idea.


Volatility-adjusted sizing


Fixed fractional already adjusts for the stop distance, but it does not adjust for how noisy the asset is. A 1% risk budget on placid ETH and on a whipsawing meme coin are not the same experience. Volatility targeting fixes this by scaling position size inversely to recent volatility, so each position contributes a similar amount of risk. We go deep on this in volatility targeting, and it pairs naturally with an ATR-based stop.


import numpy as np

def vol_target_size(equity, price, returns, target_daily_vol=0.01):
    realised_vol = returns.std()          # daily stdev of returns
    if realised_vol == 0:
        return 0
    # notional that makes position vol match the target
    notional = equity * target_daily_vol / realised_vol
    return notional / price

The Kelly criterion and why you halve it


Kelly gives the mathematically growth-optimal fraction to bet given your edge and odds. It is the aggressive end of the spectrum, and used raw it is genuinely dangerous, because it assumes you know your win rate and payoff exactly. You do not. Your backtested edge is an estimate, and Kelly punishes overestimated edges brutally.


def kelly_fraction(win_rate, win_loss_ratio):
    # f = W - (1 - W) / R
    f = win_rate - (1 - win_rate) / win_loss_ratio
    return max(0.0, f)

full_kelly = kelly_fraction(0.55, 1.5)   # ~0.25 of capital
half_kelly = full_kelly * 0.5            # what you actually trade

In practice nobody serious trades full Kelly. Half Kelly captures about three quarters of the growth with far less drawdown, and quarter Kelly is common for strategies whose edge you are not fully sure of. Our Kelly criterion deep dive works through the drawdown math that makes fractional Kelly the sane default.


Choosing a method


There is no single best method, there is a best method for your confidence level. If you are unsure of your edge, use fixed fractional at 1% and stop optimising. If your edge is well-measured across many trades and regimes, volatility targeting gives a smoother ride. Only reach for fractional Kelly when you have a large, stable sample and the stomach for its drawdowns. The drawdown recovery math is worth reading before you size up, because it shows why a 50% drawdown needs a 100% gain to undo.


Frequently Asked Questions


Q: Should position size change with leverage?

Leverage and sizing are separate levers that interact. Leverage lets you hold notional larger than your capital; sizing decides how much risk that notional represents. You can be 10x leveraged and still risk only 1% per trade if your stop is tight. Always size by risk, not by leverage.


Q: What risk percent is right for a new bot?

Start smaller than feels exciting. 0.5% per trade while you gather live results costs you little if the strategy is worse than the backtest suggested, which it usually is.


Q: Does Kelly work for strategies with many open positions?

Single-asset Kelly does not account for correlation between positions. If you run a portfolio, you need to shrink individual bets so combined risk stays bounded, because correlated positions size up your true exposure invisibly.


Q: How often should I recompute size inputs?

Volatility estimates should roll continuously. Win-rate and payoff estimates for Kelly should update slowly, over hundreds of trades, so a short unlucky streak does not slash your sizing right when the edge is still intact.


Related Articles


→ Kelly Criterion: Mathematically Optimal Position Sizing
→ Volatility Targeting: Sizing Positions to a Constant Risk Budget
→ The Math of Drawdown Recovery (And Why It Should Terrify You)
← All ArticlesBuild a Bot →