/finances · budget vs actual
Not all variances are alike — some are one-time, some are structural
The gap between what the City budgeted and what actually happened is only meaningful once you know why. A one-time investment-income surge is not proof of structural fiscal health; a single year’s capital under-spend is normal because capital plans run multi-year. This page lays out every line of the audited consolidated statement of operations, budget vs actual, and tags each variance so the recurring patterns are told apart from the one-offs. Net municipal taxes appear here as a City-wide revenue line — how that maps to a resident’s bill is a separate question the property-taxes section answers. Every figure links to the page of the Annual Financial Report it was read from.
Consolidated statement of operations · 2024
Every line: budgeted vs actual
All figures in thousands of CAD, read from the 2024Annual Financial Report’s audited Consolidated Statement of Operations (the AFR budget-comparison column is the denominator). Sort any column; filter to revenue or expense — the totals row tracks the filtered set. The classification is editorial; hover or tap it for the rationale.
How the classification works
One-time vs structural vs mixed vs unclassified
The classification is editorial, assigned in a checked-in file reviewed as content — never computed from the figures at render time. The rule is applied strictly to the primary-verified multi-year figures; where the evidence is thin the honest answer is unclassified. Across the 2020–2024 statement: 9 structural · 0 one-time · 1 mixed · 13 unclassified.
- one-time
- A variance driven by a single, named, non-recurring event (an asset sale, a one-off grant tranche). At MVP no line is classified one-time: assigning a one-time cause requires verbatim-verifying the AFR's stated cause, and an unverified causal label must not ship — an honest unclassified is used instead.
- structural
- A line consistently over or under budget in the same direction across multiple years (≥3 of the observed years by ≥5%). A structural variance is a candidate for budget-realism review — it recurs by design, not by accident.
- mixed
- A line with both a directional lean and a genuine volatility / sign-flip component, so neither one-time nor structural alone is honest.
- unclassified
- Insufficient multi-year history (fewer than 3 observed years — e.g. the pre-2022 expense taxonomy was retired by the re-alignment), or a real but sub-threshold pattern. Rendered honestly rather than guessed; the section upgrades lines as evidence accumulates.
Capital plan variance
A single year’s capital under-spend is normal
Capital-related lines on the statement above — government transfers related to capital, developer contributions — run far under their single-year budget every year (government capital transfers were ~50% below budget in most years). That is expected, not a failure: capital plans run multi-year and grant tranches arrive on project milestones, so any one year’s figure is a slice of a multi-year plan. Reading a single year’s capital under-spend as money the City “didn’t need” is the second framing this page rejects. The planned-vs-actual capital picture is not duplicated here — it lives, in full, on the capital-program sub-page. see alsocapital plan: planned vs actual
Methodology
The denominator (which budget).For each reporting year, both the budget and the actual are read from that year’s ownAnnual Financial Report Consolidated Statement of Operations — the Note-referenced “Budget” column beside the audited “Actual” column (afr-budget-comparison-column). This is the AFR budget-comparison column, chosen for audited internal consistency. The AFR Budget column is Note-referenced (Note 16/17/18 depending on year) and reflects the budget as amended through mid-cycle adjustments, not the original 2023–2026 Service Plans & Budgets council-approved figure. MCA handling is documented in the methodology section (spec FR-020). A later report sometimes restatesa prior year’s actual; the figure shown is always that year’s own report as originally published — restatements are noted, never substituted.
Mid-cycle adjustments (MCA).The AFR Budget column already reflects the budget as amended through mid-cycle adjustments, not the original Service Plans & Budgets council-approved figure. The council-approved-vs- amended reconciliation is out of MVP scope and recorded in the artefact’s derivation rather than charted.
Classification rules. A line is structural when ≥3 of its observed years show same-direction variance ≥5% and the sign does not flip; mixed when a directional lean coexists with a genuine sign-flip/volatility; one-time only when a single dominant year has a primary-verified named cause (none qualify at MVP — an unverified causal label must not ship); unclassified when there are fewer than 3 observed years (the pre-2022 expense taxonomy was retired by the re-alignment) or the pattern is real but sub-threshold. The classification is editorial — loaded from a checked-in file, never computed at render time.
Every figure was read directly from the cited AFR page by the author and each year’s per-line figures reconcile to that statement’s own printed subtotals — verification tier primary-verified. Sources:
- City of Calgary 2020 Annual Financial Reportretrieved 2026-05-15 · sha256:09fa133d35df…
- City of Calgary 2021 Annual Financial Reportretrieved 2026-05-15 · sha256:c4547ce17f25…
- City of Calgary 2022 Annual Financial Reportretrieved 2026-05-15 · sha256:0e3b43443f9b…
- City of Calgary 2023 Annual Financial Reportretrieved 2026-05-15 · sha256:f56412891ab3…
- City of Calgary 2024 Annual Financial Reportretrieved 2026-05-15 · sha256:2eeaa9e7985e…
Download the data. The page renders from this same artefact and the checked-in editorial classification file — no editorial-only data layer. The full multi-year series for every line (including the long tail beyond the top-10 drilldowns) is in the JSON.