Position sizing basics
Position sizing answers one question: how much to risk on this trade — separate from and more important than the entry signal itself. Two strategies with identical entry logic can have wildly different outcomes purely from sizing choices.
Fixed quantity — the naive default, and why it's wrong
qty = 10 # same quantity every trade, regardless of instrument or volatility
Buying 10 shares of a ₹50 stock and 10 shares of a ₹5000 stock risk wildly different amounts of capital for the "same" position — fixed quantity ignores price entirely.
Fixed capital allocation — better, still ignores volatility
def fixed_capital_qty(capital_per_trade: float, price: float, lot_size: int = 1) -> int:
raw_qty = int(capital_per_trade / price)
return (raw_qty // lot_size) * lot_size # round down to valid lot multiple
Equalizes capital deployed per trade, but a volatile stock and a stable one now carry very different *risk* despite equal capital — a 5% adverse move on a volatile name is a much bigger loss than 5% on a stable one, in absolute risk terms if your stop is volatility-based.
Fixed fractional risk — sizes by how much you're willing to lose, not how much you deploy
def fixed_fractional_qty(account_equity: float, risk_pct: float, entry_price: float, stop_price: float, lot_size: int = 1) -> int:
risk_amount = account_equity * (risk_pct / 100)
risk_per_share = abs(entry_price - stop_price)
if risk_per_share == 0:
return 0
raw_qty = int(risk_amount / risk_per_share)
return (raw_qty // lot_size) * lot_size
qty = fixed_fractional_qty(
account_equity=100000, risk_pct=1.0, # risk 1% of equity per trade
entry_price=1470, stop_price=1450, # ₹20 risk per share
lot_size=1,
)
# risk_amount = 1000, risk_per_share = 20 -> qty = 50
This is the standard professional default: you decide how much money you're willing to lose on this trade first (a fixed % of capital), then back-solve quantity from your stop distance — not the other way around. Chapter 72 refines the stop-distance input using ATR instead of a fixed point value.
The number that should never be a constant across all trades
risk_pct — typically 0.5%-2% per trade for retail accounts — should be a deliberate, tested parameter of your strategy, re-examined in light of drawdown behavior (chapter 84), not an arbitrary round number picked once and forgotten.