ARS Adaptive Risk Scaling
Dynamic position sizing based on confidence, volatility, and regime
Learning Objectives
- •Understand why fixed risk sizing leaves money on the table
- •Scale risk based on signal confidence and market regime
- •Implement confidence-weighted position sizing
- •Compare adaptive vs fixed sizing outcomes
Explain Like I'm 5
Instead of betting the same amount on every trade, you bet more when you're confident and less when you're not. A poker player doesn't put the same chips on every hand — they size bets based on hand strength. Same idea.
Think of It This Way
A thermostat. When it's cold (low confidence, high volatility), it turns the heat down. When conditions are right (high confidence, normal volatility), it runs at full power. Constant adjustment to conditions instead of one fixed setting.
1What You Can Scale On
2Confidence Weighting — The Data
Win Rate by Signal Confidence Band
3How Confidence Scaling Works
4Kelly Criterion — Theory vs Reality
5Fixed vs Adaptive — Monthly Comparison
Monthly Return vs Max DD: Fixed vs Adaptive Sizing
Key Formulas
Confidence-Weighted Position Size
Position size = base risk × confidence multiplier / ATR. f(p) maps model probability to a scaling factor (0.6–1.0). ATR normalizes for volatility.
Kelly Criterion
Optimal bet fraction. p = win probability, q = 1-p, b = win/loss ratio. Maximizes long-run growth. In practice, use 25–30% of Kelly for manageable drawdowns.
Hands-On Code
Confidence-Weighted Position Sizing
import numpy as np
def adaptive_size(balance, base_risk, atr, confidence,
ensemble_agreement, dd_zone_mult=1.0):
"""Position sizing that scales with signal quality."""
# Confidence scaling
if confidence > 0.65:
conf_mult = 1.0
elif confidence > 0.55:
conf_mult = 0.8
else:
conf_mult = 0.6
# Ensemble agreement scaling
ens_mult = min(1.0, ensemble_agreement / 0.8)
# Combined
risk_pct = base_risk * conf_mult * ens_mult * dd_zone_mult
size = (balance * risk_pct) / atr
print(f"Confidence: {conf_mult:.1f}x | Ensemble: {ens_mult:.1f}x")
print(f"Final risk: {risk_pct:.3%} | Size: {size:.4f}")
return sizeMultiple scaling factors multiply together. High confidence + strong ensemble agreement + normal DD zone = full position. Any one factor being weak reduces size proportionally.
Knowledge Check
Q1.Why is ATR-based sizing already adaptive to volatility?
Assignment
Implement confidence-weighted sizing and compare it to fixed sizing over your backtest. Check whether confidence weighting improves the Sharpe ratio.