Find the discount rate where the NPV of two competing projects is equal.
Project A
Project B
function calculateCrossover() {
var resultDiv = document.getElementById('crossover-result');
// Get Project A Values
var a0 = parseFloat(document.getElementById('initA').value) || 0;
var a1 = parseFloat(document.getElementById('y1A').value) || 0;
var a2 = parseFloat(document.getElementById('y2A').value) || 0;
var a3 = parseFloat(document.getElementById('y3A').value) || 0;
var a4 = parseFloat(document.getElementById('y4A').value) || 0;
// Get Project B Values
var b0 = parseFloat(document.getElementById('initB').value) || 0;
var b1 = parseFloat(document.getElementById('y1B').value) || 0;
var b2 = parseFloat(document.getElementById('y2B').value) || 0;
var b3 = parseFloat(document.getElementById('y3B').value) || 0;
var b4 = parseFloat(document.getElementById('y4B').value) || 0;
// Incremental Cash Flows (A – B)
// Note: Outlays are costs, so they are treated as negative in NPV terms
// Diff = (-a0 – (-b0)), (a1-b1), etc.
var diff = [
(b0 – a0), // This is -a0 – (-b0)
(a1 – b1),
(a2 – b2),
(a3 – b3),
(a4 – b4)
];
// Find IRR of the difference
var rate = solveIRR(diff);
resultDiv.style.display = "block";
if (rate === null) {
resultDiv.className = "error-res";
resultDiv.innerHTML = "Error: No crossover rate found. Ensure the projects have different investment scales and cash flow patterns.";
} else if (isNaN(rate)) {
resultDiv.className = "error-res";
resultDiv.innerHTML = "Error: Please enter valid numerical values.";
} else {
resultDiv.className = "success-res";
resultDiv.innerHTML = "The Crossover Rate is: " + (rate * 100).toFixed(2) + "%At this discount rate, both projects yield the same Net Present Value (NPV).";
}
}
function solveIRR(cashFlows) {
var precision = 0.000001;
var low = -0.9999;
var high = 5.0; // Assume max 500% for calculation bounds
var iteration = 0;
// Use bisection method for stability
while (iteration < 100) {
var mid = (low + high) / 2;
var npv = 0;
for (var t = 0; t < cashFlows.length; t++) {
npv += cashFlows[t] / Math.pow(1 + mid, t);
}
if (Math.abs(npv) < precision) return mid;
// Determine which side to pivot
var npvHigh = 0;
for (var t = 0; t < cashFlows.length; t++) {
npvHigh += cashFlows[t] / Math.pow(1 + high, t);
}
if (npv * npvHigh < 0) {
low = mid;
} else {
high = mid;
}
iteration++;
}
// Try Newton-Raphson if Bisection struggles
var guess = 0.1;
for (var i = 0; i < 100; i++) {
var f = 0;
var df = 0;
for (var t = 0; t < cashFlows.length; t++) {
f += cashFlows[t] / Math.pow(1 + guess, t);
df -= t * cashFlows[t] / Math.pow(1 + guess, t + 1);
}
var nextGuess = guess – f / df;
if (Math.abs(nextGuess – guess) < precision) return nextGuess;
guess = nextGuess;
}
return null;
}
Understanding the Crossover Rate
In capital budgeting, the crossover rate is the specific cost of capital (discount rate) at which two different projects have the exact same Net Present Value (NPV). It is a vital metric for decision-makers when two projects are mutually exclusive, meaning you can only choose one.
How to Calculate the Crossover Rate
Calculating the crossover rate is essentially finding the Internal Rate of Return (IRR) of the incremental cash flows between two projects. Here is the step-by-step logic:
List Cash Flows: Identify the initial outlay and subsequent annual cash flows for Project A and Project B.
Find the Difference: Subtract the cash flows of Project B from Project A for each period (Year 0, Year 1, Year 2, etc.).
Calculate IRR: Find the discount rate that makes the NPV of these "difference" cash flows equal to zero. This rate is the crossover rate.
Why Is the Crossover Rate Important?
The crossover rate helps identify the sensitivity of your project choice to the discount rate. When you plot the NPV of two projects on a graph against various discount rates (NPV Profiles):
The point where the two lines intersect is the crossover rate.
If your company's actual Cost of Capital is lower than the crossover rate, one project will be superior.
If your Cost of Capital is higher than the crossover rate, the other project becomes the better choice.
Example Scenario
Imagine two projects with the following data:
Project A: Initial Cost: 10,000 | Year 1: 6,000 | Year 2: 7,000
Project B: Initial Cost: 12,000 | Year 1: 8,000 | Year 2: 9,000
The incremental cash flows (B – A) would be: Year 0: -2,000 | Year 1: +2,000 | Year 2: +2,000. Finding the IRR of [-2000, 2000, 2000] gives you a crossover rate of approximately 61.8%. If your required return is less than 61.8%, Project B (the larger project) is likely better due to higher absolute NPV.
Decision Rules
Scenario
Interpretation
Cost of Capital < Crossover Rate
The project with the steeper NPV curve (usually the larger or longer-term project) is preferred.
Cost of Capital > Crossover Rate
The project with the flatter NPV curve (usually the smaller or quicker-return project) is preferred.
Cost of Capital = Crossover Rate
Both projects are financially equivalent in terms of NPV.