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.

Next: 072 — ATR-based position sizing