MacroABM-CA: an open-source macro model for Canada’s energy transition
Published:
At the SESIT group at the University of Victoria I’m the lead economist on MacroABM-CA, the first open-source Canadian agent-based macroeconomic model built for energy-economy policy and project evaluation at the provincial level. This post explains why I think the project matters. You can find out more about the project, including the full code, on GitHub.
The models don’t agree, and that’s the problem
Start with a simple question: how much primary energy will Canada get from solar and wind by 2040? You would hope the world’s leading integrated assessment models (IAMs) roughly agree. They don’t.

Each pair of bars is one model’s projection for the same country under broadly comparable scenarios. The 2020 values (solid) cluster near the IEA benchmark. But look at 2040 (hatched): the projections fan out from roughly 0.35 EJ to over 1.2 EJ, more than a threefold spread for the same variable, same country, same horizon. The disagreement isn’t noise; it’s baked into different structural assumptions that are rarely visible to the policymaker reading the headline number.
For a federal target this is uncomfortable. For a province deciding whether to approve a transmission line or a large industrial electrification project, it’s disqualifying: you cannot anchor a billion-dollar decision on a number that swings 3x depending on which closed model produced it.
Why agent-based, why open-source, why provincial
Three design choices follow directly from that picture.
Agent-based. Most IAMs solve for an optimizing representative agent or a general-equilibrium fixed point. That’s elegant, but it assumes away the frictions that actually govern a transition: heterogeneous firms with real balance sheets, households that adopt technology at different speeds, credit that is rationed unevenly. MacroABM-CA populates the economy with many interacting agents and lets aggregate dynamics emerge, so we can study disequilibrium paths, not just endpoints.
Open-source. The spread above is partly a transparency failure. If you can’t see a model’s equations and calibration, you can’t interrogate why it lands where it does. Everything in MacroABM-CA (code, data, calibration) is public, so a provincial analyst can trace any result back to an assumption and change it.
Provincial. National models blur enormous heterogeneity. British Columbia’s hydro-heavy grid and Alberta’s gas-and-oil economy face different transitions and need different evaluations. MacroABM-CA is built to be calibrated province by province.
What it’s for
The near-term goal is concrete: give Canadian provinces a credible, inspectable tool for two jobs:
- Policy evaluation (carbon pricing, subsidies, electrification mandates) traced through firm investment, employment, and emissions over time.
- Project evaluation: the macroeconomic footprint of large energy and infrastructure projects, including the general-equilibrium and network effects a partial cost-benefit study misses.
Where it connects to my other work
This isn’t a departure from what I’ve done before, it’s a continuation. My work on firm networks and political connections is about how micro-level structure shapes macro outcomes, exactly the logic of an agent-based model. And the projection-spread question above is its own working paper, Energy-Economy Projections Spread in IAMs: A Variance Decomposition Approach, where I try to attribute how much of that 3x fan-out comes from scenarios versus model structure.
More technical posts on the model’s architecture and first provincial results will follow as the project develops. Comments and collaboration welcome at eizadi@uvic.ca.