CIRCEE, a deterministic Dynamic Stochastic General Equilibrium (DSGE) model augmented with material flow analysis with mass balance and has a one-way soft-link to the IAM WITCH model (Emmerling et al., 2016), that analyzes the circular economy by integrating material, energy, and economic flows. The model simulates interactions among producers, consumers, government, and the external sector, with a particular focus on consumer-focused circular strategies (sharing, repair, recycling, sufficiency) and climate change mitigation goals. This model captures the trade-offs and synergies between different sustainability objectives. Additionally, there’s a version called « CIRCEE_LIFE » that soft-links CIRCEE in a two-way with the lifestyle model LIFE model (Pettifor et al., 2023).
Role: Main model file containing the full economic structure. The file contains the declarations of variables and parameters, as well as the main equations and FOCs of the model. For a comprehensive overview of the equations, please refer to the Appendix of Corbier et al. (2025). It’s important to note that the model’s equations have undergone slight modifications since Corbier et al. (2024 and 2025).
Contents:
- Macro definitions: Selection of region (JPN/EU27/CN), model type (B2C/C2C) and SSP scenarios, and sectors, materials, and lifestyles definition.
Users can choose between B2C and C2C sharing business models.
Users can select different regions, such as Japan, and the EU27 coming in October and mainland China in 2026.
Users can only choose the scenario SSP2 among all available scenarios. However, other SSP scenarios beyond SSP2 will be added in the next following months.
Users can only run CIRCEE without any lifestyle changes.The parameters related to lifestyle changes are referred to as « modifiers » and have a default value of 0 in the public version of the file. If users wish to run CIRCEE-LIFE (sufficiency, repair, and sharing lifestyles), they can request this feature at [email protected].
-
Endogenous variables (300+):
- Firms’ decision variables (output, capital, labor, energy and material inputs)
- Household variables by lifestyle (consumption, saving/investments, energy-using and other durable goods)
- Government variables (budget, taxes, subsidies)
- International trade variables
- Material stocks and flows
- Waste flows
- CO₂ emissions
-
Predetermined variables: Capital stocks, energy-using and other durable goods stocks, material stocks
-
Exogenous variables: Technological efficiencies, resource prices, fiscal policies
-
Parameters: Substitution elasticities, preference parameters, depreciation rates
-
Model equations:
- Household behavior (by lifestyle: low-carbon, cautious, constrained)
- Sectoral production functions (consumer and capital goods, materials, circular services: repair & sharing)
- Market-clearing conditions
- Physical constraints (material balances, emissions)
- Trade with Armington CES
Features:
- Uses the Dynare preprocessor with
@#forloops to auto-generate equations - Supports two variants: B2C (business-to-consumer sharing) and C2C (consumer-to-consumer sharing)
- Perfect-foresight solution with or without anticipation errors over 82 periods (2018–)
Role: Main execution and post-processing script
Execution steps:
-
Setup
- Select mode ('classic' only available)
- Select model (B2C/C2C)
- Choose SSP scenario (SSP2 only available, SSP1/SSP4/SSP5/NoGrowth in later versions)
-
Generate calibration files
CIRCEE_calibration.m: Structural parameters fromcalibration.csvCIRCEE_baseyear_values.m: Initial values (2018 base year) for exogeneous variablesCIRCEE_shocks.m: Paths of exogenous shocks fromshocks.csv. To introduce specific exogenous or policy variables (varexo inCIRCEE_PF.mod) with a particular growth rate, users can follow the instructions in section 3.1.2. of "CIRCEE_RunFile.m". Alternatively, they can specify specific absolute values inshock.csvor in CIRCEE_PF.mod. If they desire a fully deterministic model with no error of anticipation, they can useshock.csv. Conversely, if they want a deterministic setup with anticipation errors, they can include the line "@#include CIRCEE_shocks.m " inCIRCEE_PF.mod. Also, you need to insert a terminal value for the shock in "terminal conditions" inCIRCEE_steadystatemodel.m. For further information of the shock structure, please refer to the Dynare manual book at https://www.dynare.org/. One piece of advice : avoid using too many shocks and to be cautious about the magnitude of the shocks or you will bump into infeasibilities and corner solutions.CIRCEE_endvalues.m: Terminal values for convergence
-
Run Dynare
- Call
dynare CIRCEE_PF.mod - Compute steady state from the
CIRCEE_steadystatemodel.m - Solve the transition path
- Call
-
Post-processing of results
-
Rescaling: Multiply by population × labor productivity
-
Unit conversion:
- Energy in EJ (÷10¹²)
- Employment in millions of people (÷10⁶)
-
GDP calculation: In MER and PPP
-
CSV generation:
CIRCEE_output_levels.csv: Scaled absolute levelsCIRCEE_output_deviation.csv: Deviations relative to 2020CIRCEE_output_levels_efficientlaborunit.csv: Per effective labor unitCIRCEE_output_deviation_efficientlaborunit.csv: Relative deviations- Thematic files for CIRCEE_LIFE: Electrification, Sharing, Repairing, Lowering_Expenditures
-
-
Welfare analysis
- Compute steady state consumption equivalent by lifestyle
- Compare 2018 vs 2050
Role: Analytical steady-state computation. If you modify any equation in CIRCEE_PF.mod, you must also adjust the model’s resolution for the steady state in CIRCEE_steadystatemodel.m.
Sections:
-
Energy prices: Derived from WITCH trajectories
-
Parameter aggregation: Lifestyle-weighted averages
-
Numeraire: Fix the price of capital goods
-
Price aggregators: Composite (CES) prices for each sector
-
Investment decisions: Capital and household durables
-
Production sectors:
- Consumer goods (nondurables, semi-durables, durables)
- Capital goods
- Materials (virgin, recycled)
- Services (repair, sharing)
-
Household consumption: By lifestyle and good type
-
Market clearing: Supply–demand equalization
-
Employment: Sectoral labor allocation
-
Aggregates: GDP, emissions, material flows, waste
-
Government budget: Revenues, expenditures, primary balance
-
Trade: Imports, exports, trade balance
Method: Recursive solution starting from normalized ratios, then computing absolute levels
- Columns:
Variable,Scenario,Model,Value - Contains all structural parameters and most exogeneous variables of the model
- Filtered by SSP scenario and model type (B2C/C2C)
Example parameters:
- Substitution elasticities (σ)
- Distribution shares (α)
- Depreciation rates (δ)
- Fiscal parameters
-
Columns:
Variable,Year,Value -
Time paths for 2019–2080 for:
- Energy and material efficiencies (WITCH)
- Share of each lifestyle in total population
- Resource prices evolution (WITCH)
- R&D, energy efficiency and power generation sector investments (WITCH)
- Behavioral modifiers
- Emission factors
Y_s: Sectoral outputK_f_s,L_s: Capital and laborM_s,E_s: Materials and energyEl_s,Nel_s: Electricity and fuelsp_s: Wholesale price
C_h: Aggregate consumptionD_horD_lowuse_h: Stock of energy-using durable goodsX_h,SD_h: Nondurables and semi-durablesES_h: Energy servicesInv_d_new_h,Inv_d_repair_h: New and repaired durable investment
Revenues,Expenses,PS: Public budgetCarbon_budget,EPR_budget: Tax redistribution
IMP_s,EXPORT_s: Sectoral tradeTB: Trade balanceBonds_foreign: External debt
CO2: Total emissionsMW,IW: Municipal and industrial wasteDMC,DMI: Domestic material consumption and inputsM_stock: Total material stockGross_additions_stockandNet_additions_stock: Gross and net additions to stockMaterial_balance: Ensures mass balance is verified
CIRCEE_RunFile('classic', 'C2C')mode: 'classic' (default) or 'calibration' (for CIRCEE_LIFE)modelType: 'B2C' or 'C2C'
In its current version, the model supports SSP2 and will support other population and economic growth scenarios:
- SSP1: Sustainable development
- SSP2: Middle-of-the-road trends (default)
- SSP4: Inequality
- SSP5: Rapid growth
- NoGrowth: Demographic stationarity
- Absolute levels and relative deviations
- Variables normalized per unit of effective labor
- Thematic files for circular strategies
- MATLAB R2016b or later. A version on Julia will be made available in later months.
- Dynare 4.6 or later (https://www.dynare.org/).
- Toolbox: Statistics and Machine Learning.
- If you encounter any issues, please contact [email protected]. Also, any comments or suggestions for model development are more than welcomed.
- Time horizon: 2018–2100. We add 20 more years (82 periods in total) to avoid end of the year spikes. Users should discard results from 2081 to 2100.
- Frequency: Annual
- Solution method: Perfect foresight with anticipation errors or without anticipation errors. Refer to the Dynare manual for more information.
- Expectations handling: Support for expectation errors (
learnt_in) - Convergence: Automatic steady-state verification
If you use CIRCEE, please cite:
-
Corbier, D., Pettifor, H., Agnew, M., & Drouet, L. (2024). CIRCEE, the CIRCular Energy Economy model: Bridging the gap between economic and industrial ecology concepts. Journal of Industrial Ecology, 28(6), 1996-2011.
-
Corbier, D., Pettifor, H., Agnew, M., & Nagashima, M. (2025). Shaping sustainable consumption practices: Changing consumers’ habits through lifestyle changes and Extended Producer Responsibility schemes. Resources, Conservation and Recycling, 217, 108214.
Other references :
-
Emmerling, J., Drouet, L., Reis, L. A., Bevione, M., Berger, L., Bosetti, V., ... & Havlik, P. (2016). The WITCH 2016 model-documentation and implementation of the shared socioeconomic pathways (No. 42.2016). Nota di Lavoro.
-
Pettifor, H., Agnew, M., & Wilson, C. (2023). A framework for measuring and modelling low-carbon lifestyles. Global Environmental Change, 82, 102739.