flowchart TD
%% Core Carbon Economy nodes
CL["Carbon Levies<br/>$2.2B"]:::carbon
CM["Carbon Markets<br/>Tradeable Credits"]:::carbon
ERA["ERA+<br/>Programs/Green"]:::carbon
CEF["Clean Energy<br/>Finance"]:::carbon
DC["Decarbonization<br/>CAPEX $2.2B"]:::carbon
OCE["Other Carbon<br/>Emitters"]:::carbon
%% Government/Fiscal nodes
TF["TIER Fund<br/>+$2.2B Revenue"]:::fiscal
GI["Government<br/>Incentives"]:::fiscal
GRO["General Revenue<br/>& Other"]:::fiscal
%% Industry nodes
P["Producers<br/>(OBPS Regime)"]:::industry
AB["Alberta<br/>Industry"]:::industry
OIL["Oil & Gas<br/>Firms"]:::industry
FC["Fuel<br/>Consumers"]:::industry
OGS["O&G<br/>Suppliers"]:::industry
TSC["TIER Sustainability<br/>Compliance"]:::industry
%% Flow definitions
CL -->|"Levy Proceeds"| TF
CM -->|"Allowance Auctions"| TF
TF -->|"Incentives"| GI
P -->|"Compliance Payments"| CL
AB -->|"Allowances"| CM
OIL -->|"Offset Credits"| CM
OCE -->|"Trade Interaction"| CM
GI -->|"Incentives Distributed"| OIL
GRO -->|"Budget Allocation"| ERA
ERA -->|"Project Funding"| DC
DC -->|"Emissions Reduction"| P
TF -->|"Program Funding"| CEF
CEF -->|"Financing"| DC
OIL -->|"Invest Capital"| DC
%% Arrow crossing to show circular funding
P -.->|"Emissions Create Obligation"| CL
AB -.->|"Trading Revenue ($)"| FC
CM -.->|"Ledger Balancing"| TF
%% Class definitions for styling
classDef carbon fill:#4E79A7,stroke:#19406B,stroke-width:2px,color:#fff
classDef fiscal fill:#F28E2B,stroke:#B85E14,stroke-width:2px,color:#fff
classDef industry fill:#76B7B2,stroke:#3F7F7A,stroke-width:2px,color:#fff
mapping the flows: understanding alberta’s carbon economy as a system
visualizing how money, incentives, and decisions connect in carbon pricing systems
10-Jul-25
mapping the flows: understanding alberta’s carbon economy as a system
visualizing how money, incentives, and decisions connect in carbon pricing systems
How does money actually flow through a carbon pricing system?
Most discussions of carbon policy focus on the headline price per tonne. But that misses something important: carbon pricing creates an entire economy of interconnected flows. Levy payments, government funds, trading markets, corporate investments, and incentive programs all move money and signals through a complex network.
I’ve been thinking through how Alberta’s carbon economy actually works as a system. Not to argue for any particular policy position, but to understand the machinery that most people never see.
Here’s how I see that machinery working.
Layer 1: The Structural Web
The first layer shows how carbon levies, markets, government programs, and corporate investments connect to each other. Each arrow represents a flow of money, credits, or obligations:
What I notice are the circular pathways: money enters as compliance payments, flows through government funds, and returns as incentives and program funding. Meanwhile, parallel flows move through carbon credit markets where companies trade allowances and offsets.
The same players appear in multiple roles: companies that pay levies can also receive incentives, sell credits, and access financing programs. The flows form loops rather than straight lines.
Layer 2: The Cash Flow Network
The second layer tracks how money moves through corporate and government accounts annually. This reveals the scale relationships between different cash flows:
flowchart LR
%% Asset Level
AA["AssetAgent<br/>production BOE/day<br/>emission_intensity<br/>carbon_allowances<br/>decarb_investment"]
EMIT["Emissions<br/>tCO2e/yr"]
%% Division Level
DA["DivisionAgent<br/>carbon_budget<br/>cash_balance"]
CARBON_POS["carbon position"]
%% Market Level
CMK["CarbonMarketAgent<br/>price $50/tCO2e<br/>tier_fund<br/>price_history"]
PAY["Compliance Payment"]
%% Country Level
CAN["CanadaCountryAgent<br/>divisions list<br/>carbon_market ref<br/>run_timestep"]
COMPLIANCE["process_compliance"]
INCENTIVES["distribute_incentives"]
%% Other nodes
BEHAVIOR["behavioral_model"]
SYNTH["synthetic_data"]
PROV["provincial_params"]
VALID["validate_economy"]
%% Connections
AA -->|"production x intensity"| EMIT
EMIT --> DA
AA -->|"roll up"| DA
DA -->|"aggregate"| CARBON_POS
CARBON_POS -->|"shortfall x price"| PAY
DA -->|"reduce cash"| PAY
PAY --> CMK
CAN -->|"timestep mod 12"| COMPLIANCE
COMPLIANCE --> CMK
CMK -->|"if fund > 100M"| INCENTIVES
INCENTIVES --> DA
CAN -->|"each timestep"| BEHAVIOR
BEHAVIOR --> AA
SYNTH -->|"init"| AA
PROV -->|"modify"| AA
PROV -.->|"adjust price"| CMK
CAN -.->|"check"| VALID
classDef impl fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
classDef future fill:#fff3e0,stroke:#f57c00,stroke-width:1px,stroke-dasharray:5 5
classDef data fill:#e1f5fe,stroke:#0277bd,stroke-width:1px
class AA,DA,CMK,CAN,EMIT,CARBON_POS,PAY,COMPLIANCE impl
class INCENTIVES future
class SYNTH,PROV,VALID data
This reveals something important about scale. Corporate revenue flows dwarf carbon compliance costs, which in turn are smaller than sustaining capital expenditures. Government accounts show money entering from levies and exiting through programs, while trading markets create bidirectional flows between firms and other emitters.
What becomes visible is how carbon costs fit within a much larger ecosystem of corporate cash flows. The same companies managing compliance payments are simultaneously handling revenues, capital investments, trading positions, and incentive receipts. All of these flow through their financial systems concurrently.
Layer 3: How Decisions Cascade Through Organizations
How do carbon price signals actually influence corporate behavior? I think it happens through multiple organizational levels, each with different information, constraints, and objectives:
flowchart LR
Asset[Asset Level<br/>900 units<br/>Daily operations<br/>Track emissions]
Division[Division Level<br/>Oil Sands<br/>Conventional<br/>Manage portfolio]
Company[Company Level<br/>Total position<br/>Trading<br/>Capital]
Market[Carbon Market<br/>50 to 170 CAD<br/>Quarterly<br/>Banking]
Govt[Government<br/>2.2B CAD fund<br/>Compliance<br/>Incentives]
Incentive[Incentives<br/>Over 100M<br/>Quarterly<br/>Performance]
Behavior[Decisions<br/>Price over 60<br/>Cash over 120 pct<br/>5 pct reduction]
Asset -->|data| Division
Division -->|rollup| Company
Company -->|trade| Market
Company -->|pay| Govt
Govt -->|fund| Incentive
Incentive -->|flow| Division
Market -->|signal| Behavior
Behavior -->|change| Asset
This reveals the multi-layered nature of how carbon pricing signals propagate through organizations. Asset-level operations track production, emissions, and allowances. Division-level management handles portfolios and budgets. Company-level executives handle compliance and trading. Country-level systems distribute incentives and maintain market operations.
Each level operates with different time horizons, information sets, and constraints. An individual asset’s emission intensity affects division-level carbon budgets, which influence company-level trading decisions, which feed into country-level market dynamics, which generate incentives that flow back down to individual assets.
The Variables Worth Tracking
If we wanted to model this system, these are the key variables that change over time and interact with each other:
| Variable | Meaning | Typical Range |
|---|---|---|
carbon_price(t) |
Effective levy per tonne | 65 to 170 CAD |
firm_balance(t) |
Cash on corporate balance sheet | 100M to 200B |
decarb_investment |
Annual CAPEX for intensity reduction | 0 to 5B |
incentive_rate(t) |
Share of TIER fund returned to firms | 0 to 0.5 |
Notice the range spans across these variables. Carbon prices vary by more than 2x, firm balances span three orders of magnitude, and incentive rates can swing from zero to half of all collected funds. Understanding how changes in one variable ripple through the network to affect others would be the key modeling challenge.
What This Reveals
Looking at the system this way reveals that “carbon pricing” refers to a complex adaptive system rather than a simple price signal. The flows create multiple pathways for the same initial carbon levy to influence different decisions at different times.
A company might pay a carbon levy, receive it back as an incentive for a decarbonization project, trade the resulting carbon credits to another company, which uses the savings to fund their own emission reductions, generating more credits that get sold to a third company. The original levy payment ripples through multiple transactions and decisions.
The system exhibits properties that aren’t visible when looking at any single component: circular money flows, multi-level decision cascades, cross-jurisdictional arbitrage, and dynamic feedback loops between prices, costs, and investments.
Building the Model
This systems view suggests how we could build an agent-based model to understand these dynamics. Rather than assuming simple price responses, we could model:
- Individual assets making investment decisions based on cash flow, carbon costs, and technology options
- Division-level portfolio management and carbon budget allocation
- Company-level compliance strategy and trading behavior
- System-level incentive distribution and market clearing
The model would generate synthetic data to explore questions like: How do different incentive designs affect investment patterns? What happens when carbon prices rise faster than technology costs fall? How do cross-provincial differences create portfolio optimization opportunities?
Beyond Simple Price Signals
What I find interesting is that this systems perspective suggests carbon pricing works through mechanisms that are largely invisible in typical policy discussions. The effectiveness might depend less on the headline price per tonne than on how money circulates through incentive programs, how trading markets develop to reduce compliance costs, and how organizational decision-making processes translate price signals into investment choices.
The machinery is more intricate than most people realize. Understanding how these systems work (or don’t work) requires mapping these flows and observing their interactions over time.
modeling
flowchart LR
Init[Setup<br/>900 agents<br/>Parameters<br/>Random seed]
Agent[AssetAgent<br/>Production<br/>Intensity<br/>Allowances]
Div[DivisionAgent<br/>Portfolio<br/>Budget<br/>Strategy]
Mkt[Market<br/>Price 50<br/>Fund<br/>History]
Control[Controller<br/>Timesteps<br/>Compliance<br/>Rules]
Rules[Behavior<br/>Thresholds<br/>Triggers<br/>Updates]
Valid[Validate<br/>Balance<br/>Conservation<br/>Bounds]
Init -->|create| Agent
Agent -->|belong| Div
Div -->|trade| Mkt
Mkt -->|managed| Control
Control -->|apply| Rules
Rules -->|modify| Agent
Mkt -->|distribute| Div
Control -->|check| Valid