Use the Capital Asset Pricing Model (CAPM) to determine the appropriate discount rate for your NPV analysis.
Typically the 10-year Treasury bond yield.
Measure of volatility (1.0 is market average).
Average expected return of the market index (e.g., S&P 500).
Please enter valid numeric values for all fields.
Calculated Discount Rate (Cost of Equity)
0.00%
Step 2: Calculate Net Present Value (NPV)
Total startup cost (enter as positive number).
Rate from Step 1 or your target hurdle rate.
Please check your inputs. Investment and Rate are required.
Net Present Value (NPV)
$0.00
How to Calculate Discount Rate for NPV Analysis
When performing a Net Present Value (NPV) analysis, the most critical and often most difficult variable to pin down is the discount rate. The discount rate represents the opportunity cost of capital—essentially, the return you could earn on an alternative investment of similar risk.
Using the correct discount rate is vital because a rate that is too high will undervalue a potentially profitable project (resulting in a negative NPV), while a rate that is too low may lead to accepting a project that destroys value. This guide explains how to calculate the discount rate using the Capital Asset Pricing Model (CAPM) and how to apply it.
1. The Formula for Discount Rate (CAPM)
For equity investments or projects funded by equity, the standard method to calculate the discount rate is the Capital Asset Pricing Model (CAPM). This model estimates the required rate of return based on the risk associated with the asset.
Discount Rate (r) = Rf + β × (Rm – Rf)
Where:
Rf (Risk-Free Rate): The theoretical return of an investment with zero risk. In practice, analysts use the yield on long-term government bonds (e.g., 10-year US Treasury Note).
β (Beta): A measure of how much the investment's price moves relative to the overall market. A Beta of 1.0 means it moves with the market. A Beta > 1.0 implies higher volatility (risk), while < 1.0 implies stability.
Rm (Expected Market Return): The average return expected from the market index (e.g., S&P 500). Historically, this is often estimated between 7% and 10%.
(Rm – Rf): This is known as the Market Risk Premium—the extra return investors demand for taking on the risk of the stock market over risk-free bonds.
2. How to Use the Calculator
Our tool above is split into two sections to help you navigate this process seamlessly:
Determine the Rate: Enter the current Risk-Free Rate, the Beta for the specific asset or industry, and your expected Market Return. The calculator applies the CAPM formula to derive the appropriate Discount Rate.
Calculate NPV: Once you have the rate, transfer it to the NPV section. Enter your Initial Investment (start-up costs) and the projected Annual Cash Flows for the next 5 years.
3. Interpreting the Result
The Net Present Value formula discounts future cash flows back to their value in today's dollars using the rate you calculated.
NPV Formula:
NPV > 0: The project is expected to generate value. It earns more than the discount rate.
NPV < 0: The project is expected to destroy value. It earns less than the discount rate.
NPV = 0: The project is expected to break even exactly at the discount rate.
Weighted Average Cost of Capital (WACC)
Note that if your project is funded by both debt (loans) and equity (investors), you should use the WACC formula instead of pure CAPM. WACC averages the cost of equity (calculated via CAPM) and the after-tax cost of debt based on the proportion of funding from each source.
var calculatedRate = 0;
function calculateCAPM() {
var rf = document.getElementById('riskFreeRate').value;
var beta = document.getElementById('betaValue').value;
var rm = document.getElementById('marketReturn').value;
var errorBox = document.getElementById('capm-error');
var resultBox = document.getElementById('capm-result');
var transferBtn = document.getElementById('transfer-btn');
// Validation
if (rf === "" || beta === "" || rm === "") {
errorBox.style.display = "block";
resultBox.style.display = "none";
return;
}
var rfVal = parseFloat(rf);
var betaVal = parseFloat(beta);
var rmVal = parseFloat(rm);
if (isNaN(rfVal) || isNaN(betaVal) || isNaN(rmVal)) {
errorBox.style.display = "block";
resultBox.style.display = "none";
return;
}
errorBox.style.display = "none";
// CAPM Formula: Ra = Rrf + Ba * (Rm – Rrf)
// Note: Rm – Rrf is the Risk Premium
var riskPremium = rmVal – rfVal;
var result = rfVal + (betaVal * riskPremium);
calculatedRate = result;
document.getElementById('result-rate').innerHTML = result.toFixed(2) + "%";
resultBox.style.display = "block";
transferBtn.style.display = "inline-block";
}
function transferRate() {
if(calculatedRate > 0) {
document.getElementById('npvDiscountRate').value = calculatedRate.toFixed(2);
document.getElementById('npv-section').scrollIntoView({behavior: 'smooth'});
}
}
function calculateNPV() {
var initialInv = document.getElementById('initialInvestment').value;
var rateStr = document.getElementById('npvDiscountRate').value;
var errorBox = document.getElementById('npv-error');
var resultBox = document.getElementById('npv-result');
var verdict = document.getElementById('npv-verdict');
// Gather Cash Flows
var cfs = [];
for (var i = 1; i <= 5; i++) {
var val = document.getElementById('cf' + i).value;
cfs.push(val === "" ? 0 : parseFloat(val));
}
if (initialInv === "" || rateStr === "") {
errorBox.style.display = "block";
resultBox.style.display = "none";
return;
}
var investment = parseFloat(initialInv);
var ratePercent = parseFloat(rateStr);
if (isNaN(investment) || isNaN(ratePercent)) {
errorBox.style.display = "block";
resultBox.style.display = "none";
return;
}
errorBox.style.display = "none";
// NPV Calculation
var rateDecimal = ratePercent / 100;
var presentValueSum = 0;
for (var j = 0; j 0) {
document.getElementById('result-npv').style.color = "#27ae60";
verdict.innerHTML = "Result: Positive NPV. The project is expected to generate value above the discount rate.";
} else if (npv < 0) {
document.getElementById('result-npv').style.color = "#c0392b";
verdict.innerHTML = "Result: Negative NPV. The project return is lower than the discount rate.";
} else {
document.getElementById('result-npv').style.color = "#2c3e50";
verdict.innerHTML = "Result: Break-even.";
}
resultBox.style.display = "block";
}