Tools

Opportunity Cost Calculator

What projected financial value do you give up by choosing one use of the same money over another?

The cost of a choice is usually invisible. You can see what you picked; you cannot see what the other option would have become. This calculator makes the second one visible by modelling both: the same money available today, the same recurring allocation at the same times, the same horizon — and, for each option, its own one-time upfront cost and its own annual value-change assumption. It reports how far apart the two end, whether one overtakes the other along the way, and what the lower one would have to earn to close the gap.

What this tool does not decide

  • Which option you should choose. It compares two modelled paths. One ending higher is an arithmetic fact about two assumptions you entered, not a recommendation, a verdict or a ranking.
  • Whether either annual value change is realistic. Both are yours. UBWHY publishes no market rate, fetches none and prefills neither field.
  • Whether the two options carry comparable risk. Nothing here models volatility, the sequence in which returns arrive, or the chance of either assumption being wrong.
  • Whether the two are equally liquid. Two paths ending at the same value can differ completely in how quickly, and at what cost, the money could be reached.
  • Anything about tax. There is no tax field, and no figure here is an after-tax outcome.
  • Anything about purchasing power. Every figure is nominal. Real Return after Fees and Inflation is the tool for that question.
  • What either option is worth to you for reasons that are not money: use, enjoyment, certainty, time saved, less worry. A financially lower path can be the right one because of any of them, and this model cannot see any of them.
  • A mortgage overpayment, a refinancing, or rent versus buy. Those turn on amortisation schedules, interest timing and penalties that this model does not contain.

Your figures

The money, the horizon and the two options

Currency changes formatting only. No exchange-rate conversion occurs.

One amount, reaching whichever option you choose. Both paths begin from it, before their own upfront cost. Leave blank if there is none and you are comparing recurring allocations only.

Whole years, 0 to 100, and the same for both options. One hundred years is a technical ceiling, not a planning recommendation.

Optional whole months beyond the years above, 0 to 11. The comparison steps monthly and must cover at least one month in total.

An effective annual figure, already net of the recurring product costs you want the scenario to include. It is your assumption, not a forecast, and UBWHY prefills none.

An effective annual figure, already net of the recurring product costs you want the scenario to include. It is your assumption, not a forecast, and UBWHY prefills none.

Advanced: recurring allocations and upfront costs
Shared allocations, and each option’s own upfront cost

The recurring allocation, its frequency and its timing are entered once and applied to both paths at the same moments. That is deliberate rather than a simplification: a larger budget directed at one option would make it end higher without the option producing more value, so this version supports no per-option allocation and no delayed start.

A fixed amount you would direct to whichever option you chose. The same amount reaches either path at the same times.

Monthly is an interface convention, not a recommendation. The amount is allocated once per selected period, in both paths.

End of period is a visible modelling convention. Timing changes both ending values, and it changes them the same way, because both paths use it.

A one-time, non-recoverable amount paid from the money available today, before this option begins. It does not enter the option and never compounds. Leave blank if there is none.

A one-time, non-recoverable amount paid from the money available today, before this option begins. It does not enter the option and never compounds. Leave blank if there is none.

Your projected comparison

One figure appears here after you choose Calculate.

  • Projected end-value difference: how far apart the two paths end under the assumptions you entered, stated as a direction — which option ends higher, and by how much. It is a comparison, not a ranking, and the tool does not tell you which option to choose.

This comparison controls the money contributed and the time horizon. It does not control risk, liquidity, tax, volatility, effort or non-financial value.

The calculation runs in your browser: UBWHY does not receive the values you enter, nothing is sent anywhere, and no market rate is fetched from any source.

The horizon, either upfront cost and either annual value change each move the result on their own. Change one at a time and press Calculate again to see which assumption your conclusion actually rests on.

How this is calculated

The comparison steps one month at a time, twice — once for each option, on one timeline. In each month a scheduled allocation is added at whichever end of the period you selected, and the balance changes at the monthly equivalent of that option’s annual value change. That is the whole of it. It is the same monthly step the Investment Fee Drag and Real Return calculators use, with no recurring fee to deduct, because the rates you enter here are already net.

The funding rule everything rests on

Both paths start from the same amount available today, receive the same recurring allocation at the same times, and run for the same horizon. Only the upfront cost and the annual value change differ.

That rule is what makes the difference attributable to the options rather than to the budget. A path given more money would end higher without the option producing more value, so this version supports no per-option allocation, no per-option horizon and no delayed start. The rule controls the money and the time, and it controls nothing else.

This comparison controls the money contributed and the time horizon. It does not control risk, liquidity, tax, volatility, effort or non-financial value.

Capital deployed at time zero

Each option’s upfront cost is non-recoverable and is paid out of the common amount at the moment the comparison starts. It never enters the option and never compounds, so what begins compounding is what is left after it:

Option A capital deployed = S - U_A
Option B capital deployed = S - U_B

S is the amount available today and U each option’s own upfront cost. An upfront cost may be zero, and it may be the whole of S — which deploys nothing and models a use of the money with no financial residual value at all. It may not exceedS, and a value that does is refused rather than quietly reduced to fit.

Converting annual rates to monthly ones

A rate quoted for a year is converted by the twelfth root, so twelve monthly steps reproduce the annual figure exactly. Dividing by twelve is a different quantity and is not used here:

monthly factor for Option A = (1 + r_A) ^ (1/12)
monthly factor for Option B = (1 + r_B) ^ (1/12)

Each annual value change is an effective annual figure after the recurring product costs you intend the scenario to include. UBWHY supplies no market assumption and prefills neither field.

The difference, and what it is called

D  = Option A ending value - Option B ending value
OC = the size of D, without its sign

Choosing the lower-ending path gives up OC of projected financial value relative to the other, under this model. Choosing the higher-ending path does not have zero opportunity cost in real life: whatever the other option offered that this model never measured is still given up, and that is exactly what the arithmetic cannot see.

Where the two ending values fall within a hundredth of a currency unit of each other the page reports them as equal rather than as one being ahead. A one-cent difference over twenty years is not a distinction anybody can act on, and printing it as one would be false precision.

Accounting view — not a causal attribution

Each option’s ending value is reached the same way, and each column adds up on its own:

  common amount available today
- this option's upfront cost
= initial capital deployed
+ recurring allocations
+ growth or decline
= ending value

Each column adds up on its own. The growth or decline line depends on how much capital was deployed and on when every allocation arrived, so it cannot be separated into an amount caused by the upfront cost and an amount caused by the value change. This version builds no counterfactual that would make such a split meaningful, and none is shown.

This is worth stating twice, because the split a reader most wants is the one that cannot honestly be made. It is tempting to read the table as “the upfront cost cost me this much and the lower rate cost me that much”, and those two numbers do not exist: the growth line already depends on how much capital the upfront cost left to deploy, so any split between them would depend entirely on which one you decided to charge first. A version that produced such a figure would have to build a third and fourth counterfactual path and say plainly which ordering it chose. This one builds neither, and shows neither.

Crossover

A crossover exists only where one path is strictly ahead before it and the other strictly ahead after it. The page reports the first whole month carrying the reversed direction, and claims no finer precision than that, because the model holds no state between months.

Two paths that begin at the same value and then separate have not crossed. Nobody was ahead, so nobody was overtaken, and calling it a crossover would tell you a path recovered from behind when it never was behind. The page says so explicitly whenever it happens. Where the paths meet and stay together, that is convergence and is reported as convergence.

The reversal rate

Where one path ends lower, the tool solves for the annual value change that path would need to reach the other path’s ending value, holding its upfront cost, the shared allocation schedule and the horizon exactly as they are:

find r such that  project(S, U_lower, r, C, frequency, timing, T) = higher ending value
additional rate = r - the rate entered for the lower-ending path

The answer is published in percentage points, which is the gap between two rates rather than a proportion of anything. There is no closed form once allocations are involved, so it is solved numerically, and where no reliable answer exists the page says so in words rather than printing a number that looks solved. This is a mathematical hurdle, not a forecast and not a claim that the rate is achievable. Nothing here establishes that the rate is available, that the option could produce it, or that an option which needs a larger one is therefore the weaker choice.

Assumptions

  • Each annual value change is the figure you entered, constant across the whole horizon, and already net of recurring product costs.
  • Both paths receive the same amount available today, the same recurring allocation, at the same frequency, with the same timing, over the same horizon.
  • Each upfront cost is paid once, at the start, and is not recovered.
  • Nothing is withdrawn from either path at any point.
  • No intermediate value is rounded. Rounding happens only where a figure is displayed.

What the model does not do

  • It does not adjust for inflation or measure purchasing power. Every figure on this page is nominal.
  • It does not model tax, of any kind, at any point.
  • It does not model risk, volatility, the sequence in which returns arrive, drawdowns or probability. One constant annual assumption per path cannot represent any of them.
  • It does not model liquidity. Two paths ending at the same value can differ completely in how quickly, and at what cost, the money could be reached.
  • It does not model dividends, coupons, rent or debt interest separately. Any reinvested financial effect has to be inside the annual value change you entered.
  • It does not model a delayed start, unequal recurring allocations, changing rates or changing allocations, and it does not resolve a mortgage-overpayment, refinancing or rent-versus-buy question, where amortisation schedules and penalties decide the answer.
  • It does not measure non-financial value: use, enjoyment, certainty, time saved, reduced worry or strategic flexibility. A financially lower path can be the right one because of any of them.
  • It does not decide anything. It compares two modelled paths and reports the difference; the choice, and everything the model did not look at, stays with you.

Why a comparison needs a real alternative, why a higher annual rate can start behind, and what a break-even rate does and does not tell you: How to Compare Two Uses of Money Without Fake Certainty.

A worked example

Illustrative only. One of the verified test cases behind this calculator, rendered from the same model the tool runs. The figures were chosen to be checkable, not to be representative: both annual value changes are assumptions entered into the model rather than expectations, and the upfront cost is a number to calculate with rather than a comment on any real charge. Nothing here changes the fields above.

Assumptions entered
Amount available today, shared€50,000.00
Recurring allocation, shared€0.00
Allocation timing, sharedEnd of period
Comparison horizon, shared10 years
Option A upfront cost€5,000.00
Option A annual value change7.00%
Option B upfront cost€0.00
Option B annual value change5.00%
Accounting view — not a causal attribution
ComponentOption AOption B
Common amount available today€50,000.00€50,000.00
Less upfront cost€5,000.00€0.00
Initial capital deployed€45,000.00€50,000.00
Recurring allocations€0.00€0.00
Growth or decline€43,521.81€31,444.73
Ending value€88,521.81€81,444.73

Option A pays €5,000.00 before it begins, so it starts €5,000.00 behind: it deploys €45,000.00 where Option B deploys €50,000.00. Over 10 years the two end at €88,521.81 and €81,444.73, a difference of €7,077.08.

The horizon decides this one. The two paths do not swap places until 5 years 8 months. Run the same comparison over a shorter period and the answer reverses, with no assumption changed at all — which is why a difference at one horizon is not a ranking of the two options.

For Option B to end level instead, its annual value change would have to be about 5.88% rather than the 5.00% entered — with its upfront cost, the shared allocation schedule and the horizon all unchanged. That is a mathematical hurdle. It is not a forecast, and nothing here says the rate is available or that the option could produce it.

The split that would be wrong. It is tempting to read the table above as “the upfront cost cost €5,000.00 and the rate difference earned the rest”. Those two numbers do not exist. The growth line for Option A already reflects the smaller capital its upfront cost left to deploy, so any split between the two would depend entirely on which one you decided to charge first — and a different order gives a different answer with the same arithmetic. The table is an accounting identity that closes in each column. It is not a statement about causes.

And the figure the model cannot produce at all: whether €7,077.08 is worth the difference in risk, in liquidity, in tax treatment, in effort, or in whatever either option is worth to somebody for reasons that are not denominated in money. The companion explainer works through why that gap matters most.

Go deeper

Where this cost question matters in real products

These analyses cover recurring costs in a real product. Appearing here is an editorial judgement about relevance. It is not an endorsement by this calculator, and the calculator has reached no view about any product.

Numbers are only the start

Explore UBWHY analyses to see how costs, risks, liquidity and alternatives change a decision, and how UBWHY evaluates a product.

Calculation model and corrections

Calculation model
Opportunity Cost v1.0
Last reviewed
Funding convention
Same starting amount and recurring allocation for both paths
Annual-rate convention
Effective annual net value change
Upfront-cost convention
Paid from the common amount at time zero
Calculation interval
Monthly
Allocation timing
User-selected and identical across both paths
Rounding
Display only; intermediate values remain unrounded
Inflation and tax treatment
Excluded

Correction history

  • Version 1.0 hardening review, 5 August 2026: an undefined equality tolerance was replaced by three explicit and distinct tolerances — one for classifying the public result, one for crossover sign detection and one for identities and solver verification — the break-even solver was bound to the shared deterministic contract rather than restated, and the single primary outcome was locked to the projected end-value difference. The same-money funding rule, the shared recurring allocation, the genuine sign-reversal definition of a crossover and the prohibition on causal decomposition are unchanged. Every correction was made to the specification, before publication, so no published result was affected.