Effort-sharing
Effort-sharing regimes can be used to enforce the redistribution of mitigation effort and damage costs among regions following pre-defined equity principles. By default, in MIMOSA, no effort-sharing regime is imposed.
Besides no regime at all, there are five effort-sharing regimes implemented in MIMOSA. The regime can be
selected using the effortsharing module parameter.
Usage:
params = load_params()
params["model structure"]["effortsharing module"] = "noregime"
model = MIMOSA(params)
By default, no effort-sharing regime is imposed.
Source code in mimosa/components/effortsharing/noregime.py
Usage:
params = load_params()
params["model structure"]["effortsharing module"] = "equal_mitigation_costs"
model = MIMOSA(params)
Equal mitigation costs implies that the attributed mitigation costs in every year (in terms of percentage of GDP) should be the same for every region:
where the variable \(\text{common level}_t\) can have arbitrary values and is purely used as a common value accross all the regions1.
-
Implementing every regional condition as an exact equality can give IPOPT too many or redundant equality equations relative to the available variables. The condition is therefore implemented as an "almost-equality" (a soft-equality constraint), allowing a difference of at most 0.5%. See Soft-equality constraints.
\[ 0.995 \cdot \text{RHS} \leq \text{LHS} \leq 1.005 \cdot \text{RHS}. \]
Source code in mimosa/components/effortsharing/equal_mitigation_costs.py
Usage:
params = load_params()
params["model structure"]["effortsharing module"] = "equal_total_costs"
model = MIMOSA(params)
In this effort-sharing regime, the damages are also taken into account when equalising the costs among regions:
where the variable \(\text{common level}_t\) can have arbitrary values and is purely used as a common value accross all the regions1. Note that the variable \(\text{damages}_{t,r}\) is already expressed as percentage of GDP (see Damages).
For feasibility reasons, this constraint is only enforced until 2100.
Compared to the equal mitigation cost regime, this regime might be infeasible, especially for regions with very high damages, unless:
-
(a) the mitigation costs can be negative (for regions with very high damages). This can be achieved with the parameter
rel_mitigation_costs_min_level. -
or (b) if financial transfers are allowed between regions, that go beyond emission trading. See Financial transfers.
-
Implementing every regional condition as an exact equality can give IPOPT too many or redundant equality equations relative to the available variables. The condition is therefore implemented as an "almost-equality" (a soft-equality constraint), allowing a difference of at most 0.5%. See Soft-equality constraints.
\[ 0.995 \cdot \text{RHS} \leq \text{LHS} \leq 1.005 \cdot \text{RHS}. \]
Source code in mimosa/components/effortsharing/equal_total_costs.py
Usage:
params = load_params()
params["model structure"]["effortsharing module"] = "per_cap_convergence"
params["effort sharing"]["percapconv_year"] = 2050
# Per-capita convergence needs emission trading to avoid infeasibility
params["model structure"]["emissiontrade module"] = "emissiontrade"
# And financial transfers higher than just emission trading need to be enabled
# (therefore allowing for negative mitigation costs)
params["economics"]["MAC"]["rel_mitigation_costs_min_level"] = -0.5
model = MIMOSA(params)
The per capita convergence regime allocates equal per capita emission rights to each region, starting
from a given year (called the convergence year). The convergence year can be set with the parameter
percapconv_year and is
set to 2050 by default. Before this convergence year, the allowances are interpolated
between grandfathering (the emission distribution in the first model year) and equal per capita
emission rights in the convergence year.
Therefore, two functions are needed. First, the allowances for equal per capita emissions (EPC):
and second the allowances for grandfathering (GF):
Finally, the allowances for each region are calculated as a linear interpolation between the two before the convergence year. After the convergence year, only the equal per capita emissions are used:
where \(x\) is the linear interpolation factor, which is 1 in the first year and 0 in the convergence year:
Immediate per capita convergence
If the convergence year is set to the first year, the per capita convergence is applied immediately:
params = load_params()
params["model structure"]["effortsharing module"] = "per_cap_convergence"
params["effort sharing"]["percapconv_year"] = params["time"]["start"]
Grandfathering
If the convergence year is set to false, the grandfathering allowance distribution is used all the time.
params = load_params()
params["model structure"]["effortsharing module"] = "per_cap_convergence"
params["effort sharing"]["percapconv_year"] = False # Grandfathering all the time
Source code in mimosa/components/effortsharing/per_cap_convergence.py
Finally, the calculated allowances are imposed on each region's regional_emission_allowances.
Since this regime needs emission trading to avoid infeasibility, allowances
are calculated from the reductions attributed to a region. These can differ from the physical
reductions within that region because reductions can be traded:
Source code in mimosa/components/effortsharing/per_cap_convergence.py
Usage:
params = load_params()
params["model structure"]["effortsharing module"] = "ability_to_pay"
model = MIMOSA(params)
In this effort-sharing regime, emission allowances are allocated based on per-capita GDP (see van den Berg et al. (2020)).
There are three steps in the calculation of the allowances: (1) the main reduction calculation based on per-capita GDP, (2) a global correction factor to make sure that the total reductions match the global target, and (3) the final allowances calculation.
Step 1: Reductions before correction factor
with
Note: The per-capita GDP can be calculated in two ways: either from the baseline GDP variable or from the net GDP variable. For numerical stability, we use the baseline GDP variable, even though it would be slightly more accurate to use the net GDP variable.
Source code in mimosa/components/effortsharing/ability_to_pay.py
Step 2: Global correction factor
The reduction factors from step 1 do not fully add up to the global emissions. There is typically a gap of a few percent. To correct this, a global correction factor is applied to the reductions:
Step 3: Final allowances calculation
Finally, the allowances are calculated by subtracting the reductions from the baseline emissions, multiplied by the correction factor:
Source code in mimosa/components/effortsharing/ability_to_pay.py
Usage:
params = load_params()
params["model structure"]["effortsharing module"] = "equal_cumulative_per_cap"
model = MIMOSA(params)
In the equal cumulative per capita (ECPC) regime, emission allowances are allocated based on an equal per capita distribution of emissions, combining both historical and future emissions per capita. The historical emission debt is then spread out over the future time steps, going linearly down to zero in the repayment end year (default: 2050).
First, a historical debt is calculated for each region: how much more, or less, emissions did a region emit compared to its fair share of cumulative emissions per capita since a start year (by default 1850).
Step 1: historical debt calculation
The historical debt is calculated as the cumulative difference between the historical fair share (based on equal per capita emissions) and the actual emissions, starting from a given start year (default: 1850) and using all historical observations available up to the first model year. The debt is discounted to that first model year, denoted by \(t_0\) (2025 by default). If \(t_{\mathrm{hist}}\) is the final available historical observation:
where you can set the following parameters:
- \(\text{start year}\) using
params["effort sharing"]["ecpc_start_year"](default: 1850), - \(\text{discount rate}\) using
params["effort sharing"]["ecpc_discount_rate"](default: 3%/yr).
The historical debt is therefore positive for regions that emitted more than their fair share of cumulative emissions per capita, and negative for regions that emitted less than their fair share:
Source code in mimosa/components/effortsharing/equal_cumulative_per_cap.py
Step 2: future fair share (excluding historical debt repayment)
The future fair share for every region (excluding the historical debt) is equal to the immediate per capita convergence regime: every year, a region gets allocated a share of the global emissions based on their population share.
Source code in mimosa/components/effortsharing/equal_cumulative_per_cap.py
Effort sharing in simulation mode
The example effort-sharing runs use optimisation. In simulation mode, the effort-sharing rules are not applied directly because they are constraints on calculated variables such as regional emission allowances and mitigation costs. A simulation can replay an optimised effort-sharing result when all underlying control values, including the relevant trading balances, are supplied, but it does not determine a new effort-sharing allocation itself.