Appearance

Personalize your experience

Mode
Accent Color
Layout
Direction
All articles
Risk & OperationsIntermediate

Position Sizing for Algo Portfolios

Fixed fractional, volatility targeting and risk parity, why the same edge produces very different equity curves under each, and how lot sizes break all three.

QuaTick Risk Desk12 min read2,298 words
PostLinkedIn
On this page

Two traders can run the same signals on the same instruments over the same period and end with completely different results. Nothing about the edge differs; only the size of each position does. Sizing is the part of a system that converts a statistical edge into an equity curve, and it is the part most retail systems leave as a constant somewhere near the top of the file.

The three sizing rules worth knowing

Process flow

From account equity to a quantity that can be sent

Every sizing rule is a different way of computing step three. The steps around it are identical and are where most implementation errors live.

Live equity is read each cycle rather than hard-coded. A fixed fraction of it becomes the risk budget. That budget is divided by stop distance or instrument volatility to give a raw size. The raw size is rounded down to whole lots, where zero is a valid and common answer. Portfolio caps then clip the result. The final quantity is logged together with whichever constraint was binding.
The rounding step is where small accounts get into trouble. Rounding a fractional answer up to one lot converts a rejected trade into an oversized one.

There are many sizing schemes in the literature. Three of them cover almost every situation a retail systematic trader will encounter, and they form a natural progression in sophistication.

RulePosition size is set byYou must estimateFails when
Fixed quantityA constantNothingVolatility changes, which it always does
Fixed fractionalEquity × risk % ÷ stop distanceYour stop distanceThe stop is not respected — gaps, illiquidity
Volatility targetingTarget risk ÷ instrument volatilityForward volatilityVolatility regime shifts faster than your estimate
Risk parityEqual risk contribution per positionVolatility and correlationCorrelations converge in a stress event
The practical sizing rules and what each requires you to estimate

Notice the pattern down that table: each rule buys better risk normalisation at the cost of one more parameter you have to estimate from noisy data. That trade is not automatically worth taking. A well-implemented fixed fractional rule beats a badly estimated risk-parity model comfortably.

What happens to drawdown as size grows

Comparison chart

Return saturates while drawdown does not

Illustrative outcome for one unchanged edge sized at increasing risk per trade. The shapes matter; the specific numbers are not measurements.

Illustrative percentages for the same edge at rising risk per trade. Return grows from 6 percent at a quarter-percent risk to 12, 23 and 38 percent, then only 44 percent at four percent risk, so gains flatten at the top. Maximum drawdown grows from 8 percent to 15, 29, 54 and 82 percent with no such flattening. Past roughly one percent risk per trade, additional size buys far more drawdown than return.
A 50% drawdown needs a 100% gain to recover, and fractional sizing shrinks the positions that must earn it back. Choose the fraction from the drawdown you can survive, not from the backtest peak.

The relationship between size and return is linear. The relationship between size and drawdown is not, and the relationship between size and risk of ruin is violently non-linear. Doubling your risk per trade does not double your worst drawdown; past a point it converts a survivable drawdown into a terminal one.

This is why the theoretically optimal bet size is a bad practical target. The optimum assumes you know your edge exactly. You do not — you have an estimate from a finite backtest, and that estimate is biased upward by every selection decision you made while building the strategy. Sizing at a fraction of the theoretical optimum costs a little expected growth and buys a large reduction in the chance of a fatal drawdown.

Volatility targeting in practice

Volatility targeting inverts the usual question. Instead of asking how many lots to buy, you ask what annualised volatility you want the position to contribute, then solve for quantity. A position in a quiet instrument gets larger; the same risk budget in a turbulent one gets smaller.

sizing/volatility_target.pypython
import math  def target_lots(    equity: float,    target_risk_pct: float,   # e.g. 0.10 for 10% annualised    annual_vol: float,        # instrument annualised vol, e.g. 0.18    point_value: float,       # rupees per point, e.g. 75 for Nifty    price: float,    lot_size: int,    max_lots: int,) -> tuple[int, str]:    """Lots such that the position contributes roughly target_risk_pct of vol."""    if annual_vol <= 0:        return 0, "no volatility estimate"     # Rupee volatility of one lot over a year.    lot_notional = price * point_value    lot_risk = lot_notional * annual_vol     budget = equity * target_risk_pct    raw = budget / lot_risk     lots = math.floor(raw)    if lots < 1:        # The smallest tradeable position already exceeds the budget.        return 0, f"minimum 1 lot is {raw:.2f}x the risk budget"    if lots > max_lots:        return max_lots, f"capped at {max_lots} (uncapped {lots})"    return lots, "within budget"
Convert a risk budget into a whole number of lots. The floor, the cap and the minimum-viable check are the parts that matter in production.

The branch that returns zero is the one worth dwelling on. It encodes an uncomfortable fact: for many Indian F&O contracts, one lot is already a larger risk than a small account should take on a single position. The correct response is to not take the trade, and a sizing function that silently rounds up to one lot instead is the mechanism by which small accounts end up over-leveraged.

Sizing a portfolio rather than a trade

System architecture

Where portfolio caps sit relative to per-trade sizing

Per-trade sizing cannot bound portfolio risk. The caps are a separate layer between the sized order and the broker.

Signals from several strategies feed one per-trade sizing function. Its output passes through three independent portfolio caps: a per-underlying limit that stops several strategies stacking the same index, a per-direction limit that catches the case where every strategy is long at once, and a total risk budget summed across open positions. A margin headroom gate is the final check before an order is sent.
Five positions each risking one percent are not risking five percent when they are correlated. The per-direction cap is the one that catches a book that is accidentally a single trade.

Sizing each position correctly in isolation does not size the portfolio correctly. Five positions each risking 1% are not risking 5% if they are correlated — and in Indian markets, correlation across index and large-cap positions rises sharply exactly when it matters.

Portfolio-level constraints worth enforcing

  • A total risk budget across all open positions, not just a per-trade one.
  • A cap on aggregate exposure per underlying, so three strategies do not independently load up on the same index.
  • A cap on aggregate exposure per direction, which is what catches the case where every strategy is long because every strategy is trend-following.
  • A margin headroom floor, so a volatility spike does not turn into a margin call at the worst moment.
  • A rule for what happens when a new signal would breach a cap: reject it, or reduce something else. Decide in advance.

The correlation assumption is the fragile one. Estimating it from a calm period and applying it during a stressed one is how diversified books turn out to have been one position all along. Treating correlations as higher than measured, particularly for same-direction index exposure, is the conservative error and the right one to make.


Choosing a rule for your strategy

Decision tree

Whether you have a stop decides the rule

A defined stop makes risk per unit computable, which is what fixed fractional sizing needs. Without one, volatility has to stand in for it.

Ask whether the strategy has a defined stop, meaning a price level that invalidates the trade. If it does, risk per unit is known and fixed fractional sizing applies, dividing the risk budget by the stop distance. If it does not, exits are time or signal based and volatility targeting is the appropriate substitute. Either path still requires portfolio-level caps on top.
Neither rule bounds portfolio risk on its own. The caps are not an optional refinement for later; they are the second half of the same mechanism.

The right rule depends on how many instruments you trade and whether your strategy has a well-defined stop. Those two questions resolve most of the decision.

0.25–1%
Typical risk per trade
Per position, on account equity
Round down
Always, on lots
Never up — that is how overshoot happens
Total cap
Enforce separately
Per-trade caps do not bound the portfolio

Getting it into the system

From a signal to a quantity

  1. Read live equity, not a hard-coded starting figure

    Sizing on a stale equity number defeats the purpose of fractional sizing. Pull it from the broker or your own reconciled ledger each cycle.

  2. Compute the raw size from the rule

    Fixed fractional needs a stop distance; volatility targeting needs a volatility estimate with a defined lookback and a floor.

  3. Round down to whole lots and check the result is at least one

    If it is zero, skip the trade and log why. This is the branch that protects small accounts.

  4. Apply the portfolio caps

    Per underlying, per direction, total risk, margin headroom. A signal that breaches a cap is rejected with a reason, not silently truncated.

  5. Confirm margin availability before sending

    Requirements move intraday. A size that was fine at 09:20 may not be fundable at 14:30.

  6. Log the inputs alongside the output

    Equity, volatility estimate, stop distance, raw size, final size and the binding constraint. Without this you cannot audit a surprising position later.

Sizing rules are simple to write and easy to get subtly wrong, and the errors do not announce themselves — an over-sized book looks like a good one right up until it does not. Testing the sizing function against hand-computed cases is unglamorous work that pays for itself the first time a volatility estimate returns something unexpected.

Frequently asked questions

What is fixed fractional position sizing?

Risking a constant percentage of account equity on each trade and letting the stop distance determine the quantity. With ten lakh of equity, a 0.5% risk budget and a stop forty points away on a contract worth seventy-five rupees per point, the position works out near sixteen lots before rounding down. What stays constant is the rupee risk, not the quantity, which is how the rule adapts to volatility without modelling it directly.

Why should I not size positions using the Kelly criterion optimum?

The optimum assumes you know your edge exactly. In practice you have an estimate from a finite backtest, biased upward by every selection decision made while building the strategy. Because risk of ruin rises non-linearly with size, betting the theoretical optimum on an overestimated edge is close to the worst practical choice. Sizing at a fraction of it costs a little expected growth and substantially reduces the chance of a fatal drawdown.

How do F&O lot sizes affect position sizing?

They make size discrete rather than continuous. You trade whole lots, so rounding a 2.4-lot answer to 2 lots deviates 17% from intended risk, and rounding 0.6 up to 1 overshoots by 67%. Always round down, and treat an answer that rounds to zero as a valid outcome meaning the trade should be skipped, not an error to be corrected by taking one lot anyway.

What is volatility targeting?

Setting position size so that each position contributes a target amount of volatility rather than a target quantity. You specify the risk you want, divide by the instrument volatility, and solve for lots. Positions in quiet instruments become larger and positions in turbulent ones smaller, which makes risk comparable across a multi-instrument book.

Do per-trade risk limits control portfolio risk?

No. Five positions each risking one percent are not risking five percent if they are correlated, and correlation across index and large-cap positions rises precisely during stress. Portfolio risk needs its own caps: a total risk budget, limits per underlying and per direction, and a margin headroom floor.

Should position sizing use starting capital or current equity?

Current equity, read live from the broker or a reconciled internal ledger each cycle. Sizing against a hard-coded starting figure defeats the purpose of fractional sizing, because position size then fails to shrink during a drawdown or grow as the account compounds.

Primary sources

QuaTick Risk Desk

Risk & compliance

Position sizing, margin mechanics, kill switches and the operational controls that decide whether an automated book survives a bad week.

Risk Controls for an Automated Book

The risk architecture an automated trading system needs: position limits, loss limits, rate limits, a kill switch outside the strategy process, and daily reconciliation.

QuaTick Risk Desk9 min read

Margin Mechanics for Indian F&O

How margin is computed on Indian futures and options — SPAN, exposure, upfront collection and peak margin — and how much headroom an automated strategy needs to leave.

QuaTick Risk Desk7 min read

Walk-Forward Validation, Properly

A single backtest measures how well you fitted the past. Walk-forward validation measures whether the fit survives into data you did not use. Here is how to run one and how to read the result.

QuaTick Research12 min read

Discussion

Sign in to join the discussion. Your posts and replies show up on your profile.