Inspect the Arithmetic — Required Return to Offset Investment and Management Fees
Version 1.0
Last updated: March 2026
Transparent arithmetic is the operating system of this calculator.
This document publishes the formulae, computational structure, and assumptions used to generate the outputs displayed on the calculator page.
No opinions. No hidden assumptions. Just arithmetic.
Purpose
This calculator answers two related questions under a simple “net = gross − fee” return model:
- What additional annual return (alpha) is required to fully offset an annual fee?
-
If that excess return is not earned, how much extra cash must be contributed each year to end up at the same value you would have had
with no fee?
Definitions
Let:
- P = starting balance (initial principal, CAD)
- c = baseline annual contribution (CAD), applied at the end of each year
- cextra = additional annual contribution required to offset the fee
- t = investment horizon in years
- r = gross annual return baseline (decimal)
- f = annual fee rate (decimal)
- α = additional annual return (alpha) required to offset the fee
- rnet = net annual return after fee = r − f
- FV(P, r, t, c) = future value with annual compounding and end-of-year contributions
Core Equations
1. Future Value with Annual Compounding
The calculator uses the same closed-form future value function as the fee-cost pages:
FV(P, r, t, c) = P(1 + r)t + c · \frac{(1 + r)t − 1}{r}, if r ≠ 0
FV(P, 0, t, c) = P + c · t, if r = 0
2. Reference Paths
Two reference paths are defined:
-
No-fee path:
FVno_fee = FV(P, r, t, c)
-
With-fee path (no extra return, same contributions):
rnet = r − f
FVwith_fee = FV(P, rnet, t, c)
The “ending value lost to fees” shown on the calculator page is simply FVno_fee − FVwith_fee.
3. Required Excess Return (Alpha)
Under the “net = gross − fee” model, offsetting the fee on a percentage basis requires that the net-with-fee return match the no-fee return:
r = (r + α − f) ⇒ α = f
The calculator therefore reports:
α = f
Required gross return = r + α = r + f
If excess return α is not achieved, the calculator solves for cextra such that a higher contribution level exactly compensates for
the fee drag:
FV(P, r, t, c) = FV(P, r − f, t, c + cextra)
For r − f ≠ 0, define:
g = (1 + (r − f))t
A = \frac{g − 1}{r − f}
Then, expanding both sides and solving algebraically for cextra gives:
cextra = \frac{FV(P, r, t, c) − P·g}{A} − c
When r − f = 0, the net-with-fee path is a flat-growth path and the formula reduces to:
cextra = \frac{FV(P, r, t, c) − P}{t} − c
Implementation Notes
-
The functions
TLM_FeeMath.fvAnnual, TLM_FeeMath.endingValueWithFee(), and
TLM_FeeMath.extraAnnualContributionToOffsetFee() in /assets/js/fee-math.js implement the equations above.
-
The page-specific logic in
initRequiredReturnPage() inside /assets/js/fee-ui.js computes:
- α (as a percentage) and the required gross return r + α,
- FVno_fee, FVwith_fee, and their difference,
- cextra and the associated SEO/callout sentence.
-
All values are computed in continuous decimal form and then formatted as percentages or whole-dollar CAD amounts at the display layer.
If any discrepancy is identified between this documentation and the live calculator engine, the engine’s arithmetic
(TLM_FeeMath + initRequiredReturnPage()) is the source of truth. This page will be updated to match the engine.