Position Sizing: A Planned Loss Budget Is Not a Guaranteed Maximum

한국어로 읽기

TECH INSIGHT / EXPLAINED

Position sizing turns a loss scenario into a quantity. The scenario is a planning assumption: a stop order cannot make the realized loss equal to that budget in every market.

Three colleagues compare planned stop distance, a risk budget and a larger gap loss.
AI-generated educational illustration. Three colleagues compare planned stop distance, a risk budget and a larger gap loss.

Local execution of the actual project

These captures show the existing project UI or functions executed locally with non-private sample inputs. Each caption states the scope of the execution.

Actual suggest_size() output from LLMStockTrading using synthetic amounts. The source’s per-symbol notional cap yields 100 shares; this differs from the article’s 149-share cost-and-cash example because the assumptions differ. This function does not fully check costs, slippage or available cash, and the report contains no actual account or order data.
Actual suggest_size() output from LLMStockTrading using synthetic amounts. The source’s per-symbol notional cap yields 100 shares; this differs from the article’s 149-share cost-and-cash example because the assumptions differ. This function does not fully check costs, slippage or available cash, and the report contains no actual account or order data.

Start with the loss you are modelling

A hypothetical 10 million account and 1% planned risk gives a 100,000 budget. At entry 10,000 and a 9,500 stop, the simple result is 200 shares before costs. The percentage is an example, not a recommended allocation. A gap through the stop, costs or failed execution can produce a larger loss.

Recovery is asymmetric: after a 25% loss, 1/0.75 − 1 = 33.33% is needed to recover; after 50%, it is 100%. Sizing limits exposure to a scenario, not every possible outcome.

Add costs and a cash constraint

Suppose we reserve 50 per share for estimated costs and adverse execution, and only 1.5 million cash is available. The risk calculation permits 181 shares, but the conservative cash calculation permits 149. Use the lower result, then apply the instrument’s lot size and minimum order rules.

from decimal import Decimal as D, ROUND_FLOOR
equity, risk_fraction = D('10000000'), D('0.01')
entry, stop = D('10000'), D('9500')
cost_buffer, cash_available = D('50'), D('1500000')
planned_per_share_loss = entry - stop + cost_buffer
by_risk = (equity*risk_fraction/planned_per_share_loss).to_integral_value(rounding=ROUND_FLOOR)
by_cash = (cash_available/(entry+cost_buffer)).to_integral_value(rounding=ROUND_FLOOR)
quantity = min(by_risk, by_cash)
assert by_risk == 181 and quantity == 149

ATR and account-level limits

Using ATR × a chosen multiplier for stop distance can adapt the model to recent volatility. It does not equalize portfolio risk: correlation, liquidity and gap behavior remain different. Cap total exposure across correlated positions as well as each new order.

A daily halt needs an explicit reference equity, treatment of unrealized P&L, timezone and reset rule. Blocking new entries should not accidentally disable position monitoring or risk-reducing exits. A losing streak can trigger investigation without proving that a strategy has stopped working.

Kelly is a model, not a safety ceiling

For a repeated binary payoff model with win probability p and profit/loss ratio b, f = p − (1−p)/b gives 0.25 when p=0.55 and b=1.5. Here f is the fraction at risk in that model, not automatically the fraction of account notional to purchase. Estimated probabilities, variable losses and correlated outcomes weaken the model. Half Kelly is not a guarantee or a universally safe upper bound.

Sources and further reading

Order types and stop orders · Kelly original paper

Content and examples reviewed: 2026-09-29

댓글