How to Calculate Crossover Rate for Two Projects

.crossover-container { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; max-width: 800px; margin: 20px auto; padding: 25px; border: 1px solid #ddd; border-radius: 12px; background-color: #f9fbfd; color: #333; box-shadow: 0 4px 6px rgba(0,0,0,0.05); } .crossover-header { text-align: center; margin-bottom: 30px; } .crossover-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; } .project-box { background: #fff; padding: 15px; border-radius: 8px; border: 1px solid #e1e8ed; } .project-box h3 { margin-top: 0; color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 5px; } .input-group { margin-bottom: 12px; } .input-group label { display: block; font-size: 0.9em; font-weight: 600; margin-bottom: 5px; color: #555; } .input-group input { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; } .calc-btn { width: 100%; padding: 15px; background-color: #3498db; color: white; border: none; border-radius: 6px; font-size: 1.1em; font-weight: bold; cursor: pointer; transition: background-color 0.3s; } .calc-btn:hover { background-color: #2980b9; } #crossover-result { margin-top: 25px; padding: 20px; border-radius: 8px; text-align: center; display: none; } .success-res { background-color: #e8f8f5; border: 1px solid #2ecc71; color: #1b4f72; } .error-res { background-color: #fdedec; border: 1px solid #e74c3c; color: #7b241c; } .result-value { font-size: 2em; font-weight: 800; display: block; margin: 10px 0; } @media (max-width: 600px) { .crossover-grid { grid-template-columns: 1fr; } }

Crossover Rate Calculator

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:

  1. List Cash Flows: Identify the initial outlay and subsequent annual cash flows for Project A and Project B.
  2. Find the Difference: Subtract the cash flows of Project B from Project A for each period (Year 0, Year 1, Year 2, etc.).
  3. 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.

Leave a Comment