Noon Barbari
Registrarse
Todos los artículos
guíaPublicado ·9 min de lectura

Volatility targeting: how professional desks keep risk constant

Fixed dollar size ignores the obvious: a $10,000 position in BTC has 5× the dollar volatility of a $10,000 position in gold. Vol-targeting scales the position so the dollar risk stays constant — and it's how every serious systematic shop sizes trades.

En esta página

Fixed-dollar position sizing — always trade $10,000 of whatever asset — is what every beginner does. It's also what every professional desk replaces within their first quarter. The problem: different assets have wildly different volatilities, and the same dollar size produces wildly different dollar risk per trade. Vol-targeting fixes this by scaling position size to current volatility, so dollar risk stays in a tight band.

The problem with fixed size

Suppose your strategy puts $10,000 into each trade. On BTC during a calm 4h period, ATR might be $400 — the typical bar moves 4% in dollar terms. On the same $10,000 position, your daily volatility is roughly 8% (intra-day swings). In a parabolic move, ATR can hit $1,500 — same dollar position, but the dollar risk has 3.75× as the volatility expanded.

Now consider gold. Same $10,000 size. ATR is typically 0.6%. Your dollar volatility is one-tenth of BTC's. You have effectively no exposure to gold even though the position size is identical. The fixed-dollar sizing is silently giving you ten times more risk in BTC than in gold — which is the opposite of what you probably intended.

The fix: inverse-volatility scaling

Vol-targeting sizes positions so that each one contributes the same expected dollar volatility to the portfolio. The formula:

Inverse-vol position sizing
# Inputs
account_equity       = 100_000          # USD
target_vol_per_trade = 0.005             # 0.5% of equity per trade (daily vol)
asset_vol_daily      = 0.03              # asset's realised daily volatility (3%)
asset_price          = 50_000

# Target dollar volatility per trade
target_dollar_vol = account_equity * target_vol_per_trade   # $500

# Dollar position size such that 1-sigma daily move = target
notional = target_dollar_vol / asset_vol_daily               # $16,667

# Convert to units (e.g. BTC)
units = notional / asset_price                                # 0.333 BTC

# Verification: 1-sigma move on 0.333 BTC at 3% daily vol
# = 0.333 × 50,000 × 0.03 = $500  ✓

When the asset's volatility doubles, the position size halves. When it halves, the position size doubles. The dollar volatility stays at the target — that's the whole point.

Estimating volatility

Three reasonable choices, in increasing complexity:

  • Realised volatility — standard deviation of recent log returns, scaled to the target horizon. Use a 30 to 60-bar window. Simple, fast, good enough for most strategies.
  • ATR — average true range as a proxy for realised range. Less statistically clean than std but more robust to outlier bars. Use ATR(14) or ATR(20).
  • GARCH or EWMA — exponentially-weighted variance, which captures volatility clustering. Use when realised vol jumps too erratically and you want a smoother target.

All three give roughly similar position sizes most of the time. The differences become important only in volatility regime transitions (a calm market becoming jumpy, or vice versa). For most retail strategies, realised vol on a 60-bar window is the right starting point.

Picking a target volatility budget

The target_vol_per_trade in the formula is your knob. Common ranges:

  • 0.25-0.50% of equity per trade — conservative, suitable for high win-rate strategies or new strategies in production.
  • 0.50-1.00% per trade — typical for proven strategies with documented out-of-sample performance.
  • 1.00-2.00% per trade — aggressive, only for the most robust strategies with proven walk-forward performance.
  • Above 2% per trade — outside the safe operating range; expect ruin if any input assumption is wrong.

Wiring it into the platform

rules.yaml — vol-targeted position sizing
strategy:
  name: rsi_pullback_vol_targeted
  indicators:
    - { id: rsi,  kind: RSI,         period: 14 }
    - { id: atr,  kind: ATR,         period: 20 }
  rules:
    entry:
      type: AND
      children:
        - { type: lt, left: rsi, right: 30 }
        - { type: gt, left: rsi.previous, right: rsi }
    exit:
      type: gt
      left: rsi
      right: 50
  risk:
    sizing:
      method: vol_target
      target_pct_equity: 0.75      # 0.75% per-trade vol budget
      vol_estimator: atr            # use ATR as the vol proxy
      vol_lookback: 20
    stop_loss_atr: 2.5
    max_leverage:   3.0             # cap notional / equity regardless of vol estimate
    note: in low-vol regimes the formula can over-size; the leverage cap protects against estimator failure.

Where vol-targeting fails

Three failure modes. First, the vol estimator lags. If volatility doubles in a single fast move, your size was based on the previous (lower) vol and you're suddenly over-sized for the new regime. Mitigation: cap notional with a hard leverage limit and re-estimate vol after large bars.

Second, fat-tailed returns. Realised volatility computed off Gaussian assumptions undersizes the tails. The 1-sigma move you're sizing for is reality 0.5-sigma; the 5-sigma event happens far more often than the math predicts. Mitigation: pad the target by 20-30% as a safety factor.

Third, correlation between positions. If you vol-target two correlated strategies independently, the combined portfolio dollar volatility is higher than the sum of the parts during stress events when correlations spike. Mitigation: vol-target at the portfolio level when running multiple strategies on related assets.

Next steps

Vol-targeting is most natural when paired with ATR-based stop placement, which gives a vol-scaled stop alongside a vol-scaled size. For the broader sizing context, crypto position sizing walks through fixed-fractional vs ATR-based vs Kelly approaches and where each fits.

Pruébalo con tus datos

Cada concepto de arriba está implementado en la plataforma. Backtest, walk-forward, paper trading, luego live — el mismo conjunto de reglas en cada etapa.

Lecturas relacionadas