Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions main.gms
Original file line number Diff line number Diff line change
Expand Up @@ -812,12 +812,23 @@ parameter
*' * (3): all GHG excl CO2 emissions from LULUCF
*'
parameter
cm_permittradescen "scenario on permit trade"
cm_permittradescen "Scenario on permit trade, not used in the TradingOnRef realisation"
;
cm_permittradescen = 1; !! def = 1 !! regexp = [1-3]
*' * (1): full permit trade (no restrictions)
*' * (2): no permit trade (only domestic mitigation)
*' * (3): limited trade (certain percentage of GDP)
*' * (3): limited trade (certain percentage of permits)
*'

parameter
cm_permitTradeFinalYr "[TradingOnRef] Year until permit trading is allowed"
;
cm_permitTradeFinalYr = 2100; !! def = 2100
*'
parameter
cm_permitTradeRatio "[TradingOnRef] Share of emissions allowed for permit trading between 0 and 1"
;
cm_permitTradeRatio = 0.2; !! def = 0.2
*'
parameter
cm_rentdiscoil "[grades2poly] discount factor for the oil rent"
Expand Down
2 changes: 2 additions & 0 deletions modules/41_emicapregi/AbilityToPay/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@ pm_gdp_gdx, parameter, ???
pm_budgetCO2eq, parameter, ???
vm_co2eqGlob,input,questionnaire
cm_emiscen,input,questionnaire
cm_permitTradeFinalYr, input, ???
cm_permitTradeRatio, input, ???
2 changes: 2 additions & 0 deletions modules/41_emicapregi/CandC/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ pm_budgetCO2eq, parameter, ???
pm_shPPPMER,input,questionnaire
pm_gdp,input,questionnaire
cm_permittradescen,input,questionnaire
cm_permitTradeFinalYr, input, ???
cm_permitTradeRatio, input, ???
2 changes: 2 additions & 0 deletions modules/41_emicapregi/GDPint/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ pm_budgetCO2eq, parameter, ???
pm_shPPPMER,input,questionnaire
pm_gdp,input,questionnaire
cm_permittradescen,input,questionnaire
cm_permitTradeFinalYr, input, ???
cm_permitTradeRatio, input, ???
2 changes: 2 additions & 0 deletions modules/41_emicapregi/POPint/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ vm_Mport,input,questionnaire
pm_shPPPMER,input,questionnaire
pm_gdp,input,questionnaire
cm_permittradescen,input,questionnaire
cm_permitTradeFinalYr, input, ???
cm_permitTradeRatio, input, ???
2 changes: 2 additions & 0 deletions modules/41_emicapregi/PerCapitaConvergence/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,5 @@ vm_co2eqGlob,input,questionnaire
pm_shPPPMER,input,questionnaire
pm_gdp,input,questionnaire
cm_emiscen,input,questionnaire
cm_permitTradeFinalYr, input, ???
cm_permitTradeRatio, input, ???
23 changes: 23 additions & 0 deletions modules/41_emicapregi/TradingOnRef/bounds.gms
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK)
*** | authors, and contributors see CITATION.cff file. This file is part
*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of
*** | AGPL-3.0, you are granted additional permissions described in the
*** | REMIND License Exception, version 1.0 (see LICENSE file).
*** | Contact: remind@pik-potsdam.de
*** SOF ./modules/41_emicapregi/TradingOnRef/bounds.gms

*** calculate emission cap in absolute terms
vm_perm.fx(t,regi) = p41_co2eq(t,regi);

display vm_perm.up;

vm_Xport.fx(t,regi,"perm") = 0;
vm_Mport.fx(t,regi,"perm") = 0;

*** Only activate permit trade between 2030 and cm_permitTradeFinalYr
*** cm_permitTradeRatio determines the proportion of emissions that can be traded,
*** between 0 (no permit trade allowed) and 1 (all emissions can be traded)
vm_Xport.up(t,regi,"perm") $ (t.val > 2025 and t.val <= cm_permitTradeFinalYr) = cm_permitTradeRatio * abs(p41_co2eq(t,regi));
vm_Mport.up(t,regi,"perm") $ (t.val > 2025 and t.val <= cm_permitTradeFinalYr) = cm_permitTradeRatio * abs(p41_co2eq(t,regi));

*** EOF ./modules/41_emicapregi/TradingOnRef/bounds.gms
22 changes: 22 additions & 0 deletions modules/41_emicapregi/TradingOnRef/datainput.gms
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK)
*** | authors, and contributors see CITATION.cff file. This file is part
*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of
*** | AGPL-3.0, you are granted additional permissions described in the
*** | REMIND License Exception, version 1.0 (see LICENSE file).
*** | Contact: remind@pik-potsdam.de
*** SOF ./modules/41_emicapregi/TradingOnRef/datainput.gms


*** read in data of cost-optimal reference climate policy run
*' load CO2 emissions from reference run to assing the allocates permits

Execute_Loadpoint "input_ref" p41_co2eq_in = vm_emiAll.l;
p41_co2eq(t, regi) = p41_co2eq_in(t,regi,"co2");


*** initialization of pm_shPermit
pm_emicapglob(t) = sum(regi, p41_co2eq(t,regi));
pm_shPerm(t,regi) = p41_co2eq(t,regi) / pm_emicapglob(t);


*** EOF ./modules/41_emicapregi/TradingOnRef/datainput.gms
20 changes: 20 additions & 0 deletions modules/41_emicapregi/TradingOnRef/declarations.gms
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK)
*** | authors, and contributors see CITATION.cff file. This file is part
*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of
*** | AGPL-3.0, you are granted additional permissions described in the
*** | REMIND License Exception, version 1.0 (see LICENSE file).
*** | Contact: remind@pik-potsdam.de
*** SOF ./modules/41_emicapregi/TradingOnRef/declarations.gms

variables
vm_perm(ttot,all_regi) "emission allowances [GtCeq]"
;

parameter
pm_shPerm(tall, all_regi) "emission permit shares [share]"
pm_emicapglob(tall) "global emission cap [GtC]"
p41_co2eq_in(ttot,all_regi,all_enty) "emissions from cost-optimal reference run"
p41_co2eq(ttot,all_regi) "emissions from cost-optimal reference run"
;

*** EOF ./modules/41_emicapregi/TradingOnRef/declarations.gms
19 changes: 19 additions & 0 deletions modules/41_emicapregi/TradingOnRef/not_used.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK)
# | authors, and contributors see CITATION.cff file. This file is part
# | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of
# | AGPL-3.0, you are granted additional permissions described in the
# | REMIND License Exception, version 1.0 (see LICENSE file).
# | Contact: remind@pik-potsdam.de
name, type, reason
sm_budgetCO2eqGlob, parameter, ???
pm_gdp_gdx, parameter, ???
pm_budgetCO2eq, parameter, ???
vm_co2eqGlob,input,questionnaire
cm_emiscen,input,questionnaire
p41_precorrection_reduction, parameter, ???
p41_correct_factor, parameter, ???
pm_shPPPMER,input,questionnaire
pm_pop, parameter, ???
pm_gdp,input,questionnaire
p41_co2eq_bau, parameter, ???
cm_permittradescen,input,replaced by cm_permitTradeRatio
24 changes: 24 additions & 0 deletions modules/41_emicapregi/TradingOnRef/realization.gms
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK)
*** | authors, and contributors see CITATION.cff file. This file is part
*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of
*** | AGPL-3.0, you are granted additional permissions described in the
*** | REMIND License Exception, version 1.0 (see LICENSE file).
*** | Contact: remind@pik-potsdam.de
*** SOF ./modules/41_emicapregi/TradingOnRef/realization.gms

*' @description: Emission caps/permits are allocated according to a reference run
*' There are three different trade patterns currently available.
*' cm_permittradescen = 1; !! def = 1 !! regexp = [1-3]
*' * (1): full permit trade (no restrictions)
*' * (2): no permit trade (only domestic mitigation)
*' * (3): limited trade (certain percentage of regional allowances)
*' for limited trade use cm_permitTradeFinalYr to set the final year until permit trading is allowed
*' with cm_permitTradeRatio set the percentage of allowed trade


*####################### R SECTION START (PHASES) ##############################
$Ifi "%phase%" == "declarations" $include "./modules/41_emicapregi/TradingOnRef/declarations.gms"
$Ifi "%phase%" == "datainput" $include "./modules/41_emicapregi/TradingOnRef/datainput.gms"
$Ifi "%phase%" == "bounds" $include "./modules/41_emicapregi/TradingOnRef/bounds.gms"
*######################## R SECTION END (PHASES) ###############################
*** EOF ./modules/41_emicapregi/TradingOnRef/realization.gms
2 changes: 2 additions & 0 deletions modules/41_emicapregi/exog/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ cm_emiscen, switch, ???
pm_shPPPMER,input,questionnair
pm_gdp,input,questionnaire
cm_permittradescen,input,questionnaire
cm_permitTradeFinalYr, input, ???
cm_permitTradeRatio, input, ???
1 change: 1 addition & 0 deletions modules/41_emicapregi/module.gms
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ $Ifi "%emicapregi%" == "CandC" $include "./modules/41_emicapregi/CandC/realizati
$Ifi "%emicapregi%" == "GDPint" $include "./modules/41_emicapregi/GDPint/realization.gms"
$Ifi "%emicapregi%" == "POPint" $include "./modules/41_emicapregi/POPint/realization.gms"
$Ifi "%emicapregi%" == "PerCapitaConvergence" $include "./modules/41_emicapregi/PerCapitaConvergence/realization.gms"
$Ifi "%emicapregi%" == "TradingOnRef" $include "./modules/41_emicapregi/TradingOnRef/realization.gms"
$Ifi "%emicapregi%" == "exog" $include "./modules/41_emicapregi/exog/realization.gms"
$Ifi "%emicapregi%" == "none" $include "./modules/41_emicapregi/none/realization.gms"
*###################### R SECTION END (MODULETYPES) ############################
Expand Down
2 changes: 2 additions & 0 deletions modules/41_emicapregi/none/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ cm_emiscen, switch, ???
pm_shPPPMER,input,questionnaire
pm_gdp,input,questionnaire
cm_permittradescen,input,questionnaire
cm_permitTradeFinalYr, input, ???
cm_permitTradeRatio, input, ???
6 changes: 3 additions & 3 deletions modules/80_optimization/nash/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ cm_iteration_max = 100;
***convergences thresholds - very coarse
p80_surplusMaxTolerance(tradePe) = 2* 1.5 * sm_EJ_2_TWa; !! convert EJ/yr into internal unit TWa
p80_surplusMaxTolerance("good") = 2* 100/1000; !! in internal unit, trillion Dollar
p80_surplusMaxTolerance("perm") = 2* 300 * 12/44 / 1000; !! convert MtCO2eq into internal unit GtC
p80_surplusMaxTolerance("perm") = 3* 300 * 12/44 / 1000; !! convert MtCO2eq into internal unit GtC
);
);

Expand All @@ -54,12 +54,12 @@ p80_etaXp("perm") = 0.2;

*LB* parameter for Nash price algorithm between different iterations
p80_etaLT(trade) = 0;
p80_etaLT("perm") = 0.03;
p80_etaLT("perm") = 0.04;

***These parameters are pretty sensitive. If market surpluses diverge, try higher values (up to 1). If surpluses oscillate, try lower values.
p80_etaST(tradePe) = 0.3;
p80_etaST("good") = 0.25;
p80_etaST("perm") = 0.3;
p80_etaST("perm") = 0.8;

$ifi %banking% == "banking" p80_etaST("perm") = 0.2; !! in banking mode, the permit market reacts more sensitively.
$ifi %emicapregi% == "budget" p80_etaST("perm") = 0.25; !! in budget mode, the permit market reacts more sensitively.
Expand Down
2 changes: 1 addition & 1 deletion modules/80_optimization/nash/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ q80_costAdjNash(ttot,regi)$( ttot.val ge cm_startyear ) ..
;

*' link between permit budget and emission budget
q80_budgetPermRestr(regi)$(cm_emiscen=6) ..
q80_budgetPermRestr(regi)$(cm_emiscen=6 OR cm_emiscen = 4) ..
sum(ttot$(ttot.val lt sm_endBudgetCO2eq and ttot.val ge cm_startyear), pm_ts(ttot)* vm_perm(ttot,regi))
+ sum(ttot$(ttot.val eq sm_endBudgetCO2eq),pm_ts(ttot)/2 * (vm_perm(ttot,regi))) =l=
pm_budgetCO2eq(regi) - sum(ttot $((ttot.val ge 2005) and (ttot.val lt cm_startyear)), pm_ts(ttot)* vm_co2eq(ttot,regi));
Expand Down
6 changes: 3 additions & 3 deletions modules/80_optimization/nash/preloop.gms
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,11 @@ loop(regi,
if(p80_Mport0("2005",regi,tradePe) eq NA, p80_Mport0("2005",regi,tradePe) = 0);
););

*AJS* starting policy runs from permit prices that are all zero doesnot work. start from 30$ price path instead
*AJS* starting policy runs from permit prices that are all zero doesnot work. start from 49$ price path instead
if((cm_emiscen ne 1) and (cm_emiscen ne 9) and (smax(t,pm_pvp(t,"perm"))) eq 0,
loop(ttot$(ttot.val ge 2005),
***this is a 30$/tCo2eq in 2020 trajectory:
pm_pvp(ttot,"perm") = 0.11*1.05**(ttot.val-2020) * pm_pvp(ttot,"good");
***this is a 49$/tCo2eq in 2020 trajectory ([T$/GtC]. To get $/tCO2, multiply with 272: 0.18 T$/GtC = 48.96 $/tCO2):
pm_pvp(ttot,"perm") = 0.18*1.05**(ttot.val-2020) * pm_pvp(ttot,"good");
);
pm_pvp("2005","perm")=0;
);
Expand Down