Problem statement and knowns/unknowns

Use a two-return business cycle to show why MBA-style “average” return assumptions overstate realized wealth. The template computes both the exact geometric mean and the volatility-drag approximation.

  • Compute arithmetic mean, geometric mean, and volatility-drag approximation.
  • Quantify drag in basis points.
  • Plot theoretical vs realized growth paths.

Assumptions and unit discipline

  • Returns are entered as decimal fractions per period.
  • CAGR rows assume reinvestment without intermediate external cash flows.
  • Approximation rows provide intuition; exact geometric compounding drives final decisions.
  • Report outputs coherently in percent and basis points.

Derivation and governing equations

$$ \text{CAGR} = \left( \prod_{i=1}^{n} (1 + r_i) \right)^{\frac{1}{n}} - 1 $$
$$ \text{Real Return} \approx \text{Average Return} - \frac{\text{Variance}}{2} $$

The first line is exact. The second line is an approximation that is best used for intuition or small-period returns.

Template script

# --- VOLATILITY DRAG SIMULATION ---

initial_wealth = 2000000
bull_return = 0.35
bear_return = -0.20
years = 10

avg_return = (bull_return + bear_return) / 2
avg_return_pct = avg_return * 100

two_year_factor = (1 + bull_return) * (1 + bear_return)
cagr = sqrt(two_year_factor) - 1
cagr_pct = cagr * 100

variance = ((bull_return - avg_return)^2 + (bear_return - avg_return)^2) / 2
approx_cagr = avg_return - variance / 2
approx_cagr_pct = approx_cagr * 100

volatility_cost = avg_return - cagr
drag_basis_points = volatility_cost * 10000

wealth_avg = initial_wealth * pow(1 + avg_return, t)
wealth_real = initial_wealth * pow(1 + cagr, t)

plot(wealth_avg, t, 0, years)
plot(wealth_real, t, 0, years)

Accuracy notes

With large discrete swings, the approximation can understate the drag. Use the geometric mean for final projections and the approximation for quick intuition.

Worked example (interpreted)

Step 1: With returns +35% and -20%, arithmetic average is 7.50%.

Step 2: Exact CAGR is 3.923%; volatility drag is 357.7 bps (avg_return-cagr).

Step 3: Over 10 years from USD 2,000,000, arithmetic projection reaches about 4.12M while realized CAGR path is about 2.94M.

Interpretation: compounding penalizes variance more than headline averages suggest, so planning should be based on geometric growth and fee-adjusted variants.

When this model is invalid

ConditionWhy invalidUse instead
Non-stationary return regimeSingle-cycle assumptions understate structural breaks.Scenario-specific branches and stress testing.
Path-dependent cash flowsCAGR assumes pure reinvested growth without contributions/withdrawals.Money-weighted IRR / cash-flow models.
Large tail-risk or skewed returnsVariance approximation mu - sigma^2/2 can be inaccurate.Exact geometric compounding or Monte Carlo simulation.

How to validate your worksheet

  • cagr_identity_error should remain near zero.
  • approx_error quantifies approximation bias directly.
  • regime_shift_proxy compares baseline and alternate-cycle geometric growth.

Domain-specific variants in this template

Fee-adjusted CAGR (net_cagr) and alternate-volatility branch rows show how small changes in dispersion and fees alter long-horizon wealth.

Practice problems (with answer outlines)

Practice 1

Modify the bull/bear pair to +25%/-15% and recompute drag.

Outline: Recalculate average, exact CAGR, and drag in bps from updated two-period factor.

Practice 2

Add a 0.75% fee and compare terminal wealth after 15 years.

Outline: Use net_cagr=(1+cagr)(1-fee)-1 and evaluate growth path divergence.

References and standards

  • Bodie, Kane, Marcus, Investments (geometric vs arithmetic return treatment). Book page.
  • CFA Institute GIPS Standards (performance reporting context). GIPS standards.
  • Bernstein, The Intelligent Asset Allocator (practical compounding/risk interpretation). Reference page.