WACC = (E/V) × Re + (D/V) × Rd × (1 - T)
Cost of equity from CAPM: Re = Rf + β × ERP. As of May 2026, the 10-year US Treasury sits at roughly 4.4%. Per Damodaran's January 2026 implied ERP estimate for US equities (Stern NYU, damodaran.com), the equity risk premium is 4.8%. For a mid-cap industrial with a levered beta of 1.15, cost of equity comes to 9.9%.
Pair that with a 6.2% pre-tax cost of debt (BB-rated, 5-year average maturity) and a 26% effective tax rate. After-tax cost of debt: 4.6%. At a 65/35 equity/debt capital structure, WACC lands at 8.0%.
WACC Component Inputs
| Component | Value | Source |
|---|---|---|
| Risk-Free Rate (Rf) | 4.4% | 10-yr US Treasury, May 2026 |
| Equity Risk Premium (ERP) | 4.8% | Damodaran Jan 2026 |
| Levered Beta | 1.15 | Observed or re-levered |
| Cost of Equity (Re) | 9.9% | Rf + β × ERP |
| Pre-Tax Cost of Debt (Rd) | 6.2% | Weighted avg yield on debt |
| Effective Tax Rate (T) | 26.0% | Current-year blended rate |
| After-Tax Cost of Debt | 4.6% | Rd × (1 - T) |
| Equity Weight (E/V) | 65.0% | Hard-coded in Assumptions |
| Debt Weight (D/V) | 35.0% | Hard-coded in Assumptions |
| WACC | 8.0% | Weighted sum |
All of these live in exactly one place: your Assumptions tab.
Structuring the Assumptions Tab
Every WACC input gets a dedicated labeled row with a hard-coded value. No pulling rates from other tabs. No intermediate formulas for inputs. If the 10-year Treasury moves 50 bps, you update one cell and the entire model recalculates.
Standard layout (column A = label, column B = value):
B3: 4.4% (Risk-Free Rate)
B4: 4.8% (Equity Risk Premium)
B5: 1.15 (Levered Beta)
B6: 6.2% (Pre-Tax Cost of Debt)
B7: 26.0% (Effective Tax Rate)
B8: 65.0% (Equity Weight)
B9: 35.0% (Debt Weight)
Add a validation check somewhere visible: =Assumptions!B8+Assumptions!B9. Should return exactly 1. If you've ever sent a model to a bank syndicate where the capital structure weights summed to 99%, you know why this check exists.
Building the WACC Calc Tab
The WACC Calc tab pulls from Assumptions and assembles the full formula in one isolated place. Auditors and deal counterparties can trace every number back to a single input without clicking through 4 sheets.
C3 (Cost of Equity):
=Assumptions!B3 + Assumptions!B5 * Assumptions!B4
C4 (After-Tax Cost of Debt):
=Assumptions!B6 * (1 - Assumptions!B7)
C5 (WACC):
=Assumptions!B8 * 'WACC Calc'!C3 + Assumptions!B9 * 'WACC Calc'!C4
'WACC Calc'!$C$5 is the only cell other tabs should ever reference for WACC. Every downstream formula points there, absolutely locked. For a broader look at how to structure the tab hierarchy before the DCF layer goes on top, the linked three-statement model guide covers the decisions that determine how cleanly a WACC flows through.
Wiring WACC Into the DCF Tab
The DCF tab builds discount factors period by period. For a 5-year explicit forecast, with period numbers in row 7:
F8 (Year 1 discount factor, period numbers in row 7, cols F:J):
=1/(1+'WACC Calc'!$C$5)^F$7
The mixed reference is intentional. $C$5 locks WACC absolutely. F$7 locks the period row but lets the column walk right as you drag the formula across years. Copy this wrong and every year discounts at the same period number.
Discounted FCF for each year:
='Cash Flow'!F12 / (1+'WACC Calc'!$C$5)^F$7
Terminal value using the Gordon Growth Model, discounted back to today:
='Cash Flow'!$F$12 * (1 + Assumptions!$B$15)
/ ('WACC Calc'!$C$5 - Assumptions!$B$15)
/ (1 + 'WACC Calc'!$C$5)^5
Where $B$15 is your terminal growth rate (typically 2.0-2.5% for a mature business). At $10.1M EBITDA in Year 5 off a $42M revenue base with WACC at 8.0%, the terminal value typically accounts for 60-75% of total enterprise value. If it's running above 80%, your explicit period cash flow assumptions aren't doing enough work.
Sensitivity Table: WACC vs. Terminal Growth Rate
No DCF leaves the building without a two-variable sensitivity. Standard grid: WACC along the row headers at 7.0%, 7.5%, 8.0%, 8.5%, 9.0%; terminal growth rate down the column headers at 1.5%, 2.0%, 2.5%, 3.0%.
Google Sheets doesn't have Excel's native data table feature, so you build it manually with mixed references. WACC values in row 11, growth rates in column B, NPV formula in the body:
C12:
=NPV(C$11, 'Cash Flow'!F4:J4)
+ 'Cash Flow'!$K$4 * (1 + $B12) / (C$11 - $B12) / (1+C$11)^5
C$11 walks across WACC values as you fill right. $B12 walks down growth rates as you fill down. Get both locks right or the table returns the same number in every cell. At 8.0% WACC and 2.0% terminal growth, a 100 bps move in WACC shifts enterprise value by roughly 12-15% in a standard 5-year DCF. That's the range that matters for board scenarios and fairness opinions.
The Capital Structure Weights Mistake That Breaks Your WACC
Most DCF templates use static target weights, which is fine for a steady-state public company. Two situations where it quietly invalidates your model.
The first is an LBO context. Debt amortizes every year, so D/V shrinks from entry to exit. Using entry-level leverage weights throughout the hold period understates WACC in the high-debt early years and overstates it near exit. The correct approach is either APV (value the unlevered firm separately, then add the PV of interest tax shields) or period-specific WACC that updates annually from your debt schedule. Most practitioners use APV for LBO analysis precisely because WACC becomes unreliable above 60% leverage.
The second is market value vs. book value. The formula explicitly calls for market value weights. For debt, book value is usually close enough (par is near market for investment-grade issuers). For equity, a profitable company with years of retained earnings may have a book value that's 3-5x below its market cap. Pull shares outstanding × current price, not the equity figure from your balance sheet. Using book equity inflates your debt weight and systematically understates WACC. For most board packs this won't move the needle more than 50-100 bps. For a bank syndicate model where a $0.50/share spread in intrinsic value matters, get the weights right.
Building the Sensitivity Grid Faster
The sensitivity table is where most of the manual debugging time goes in this build. You write the formula, realize every cell is showing the same number, spend 10 minutes finding the wrong lock. ModelMonkey can generate the full mixed-reference grid structure from a plain-language description, including a correctly locked 5x4 or 5x5 WACC/growth matrix, so the debugging loop disappears. Try ModelMonkey free for 14 days - it works in both Google Sheets and Excel.