0/70 completed
Risk Management Interactive

Value at Risk (VaR)

Quantify maximum expected loss at a given confidence level. Critical for setting daily exposure limits and worst-case scenario planning.

๐Ÿ“‰ VaR Formula

Parametric VaR

VaR = P ร— ฯƒ ร— Z ร— โˆšt
  • P = Portfolio value
  • ฯƒ = Daily volatility
  • Z = Z-score for confidence level
  • t = Time period (days)

Interpretation

"At 95% confidence, we will not lose more than $4,113 over 1 day."

Or equivalently: There's a 5% chance we lose more than this.

Portfolio Settings

Daily Volatility (%) 2.5
0.5 10
Time Period (Days) 1
1 30

Confidence Level

Z-score: 1.645

โš ๏ธ Risk Metrics

Parametric VaR (95%)
$4,113
4.11% of portfolio
Monte Carlo VaR
$4,024
Based on 10,000 simulations
Expected Shortfall (CVaR)
$5,035

Average loss when VaR is exceeded (tail risk)

Loss Distribution

Normal losses
Tail losses (beyond VaR)

VaR by Time Horizon

VaR scales with the square root of time. A 1-day VaR ร— โˆš10 โ‰ˆ 10-day VaR.

๐Ÿ€ Sports Betting VaR

Daily Exposure Limits

Set maximum daily liability based on bankroll VaR. If bankroll is $100K and 99% VaR is $10K, limit daily exposure accordingly.

Event Concentration

Calculate VaR for single events (Super Bowl, UFC fight). Concentrated bets have higher VaR than diversified exposure.

Reserve Requirements

Use VaR to determine cash reserves needed to cover worst-case payouts. CVaR gives buffer for extreme scenarios.

๐Ÿ“Š VaR vs Expected Shortfall (CVaR)

Value at Risk (VaR)

  • โ€ข The loss threshold at X% confidence
  • โ€ข Easy to calculate and communicate
  • โ€ข Ignores severity of tail losses
  • โ€ข Not subadditive (diversification can increase VaR)

Expected Shortfall (CVaR)

  • โ€ข Average loss when VaR is exceeded
  • โ€ข Captures tail risk severity
  • โ€ข Coherent risk measure (respects diversification)
  • โ€ข Required by Basel III for market risk

R Code Equivalent

# Parametric VaR calculation
calculate_var <- function(portfolio_value, daily_vol, confidence, days) { 
  z_score <- qnorm(confidence)
  var <- portfolio_value * daily_vol * z_score * sqrt(days)
  return(var)
}

# Monte Carlo VaR
monte_carlo_var <- function(portfolio_value, daily_vol, days, n_sims = 10000, confidence = 0.95) { 
  simulate_loss <- function() { 
    returns <- rnorm(days, mean = 0, sd = daily_vol)
    final_value <- portfolio_value * prod(1 + returns)
    return(portfolio_value - final_value)
  }
  
  losses <- replicate(n_sims, simulate_loss())
  var <- quantile(losses, confidence)
  cvar <- mean(losses[losses > var])
  
  return(list(var = var, cvar = cvar))
}

# Example
result <- monte_carlo_var(100000, 0.025, 1)
cat(sprintf("95%% VaR: $%.0f\n", result$var))
cat(sprintf("CVaR: $%.0f\n", result$cvar))

โœ… Key Takeaways

  • โ€ข VaR answers: "What's my worst X% loss?"
  • โ€ข VaR scales with โˆštime (not linearly)
  • โ€ข 99% VaR โ‰ˆ 1.4ร— the 95% VaR
  • โ€ข CVaR captures tail severity (use for reserves)
  • โ€ข Monte Carlo handles non-normal distributions
  • โ€ข Set exposure limits based on VaR, not just $ amount

Pricing Models & Frameworks Tutorial

Built for mastery ยท Interactive learning