Allowing the emission tax as shock in the CGE Energy Model
Allowing the emission tax as shock in the CGE Energy Model
Hi guys,
I have a problem here. I am building a CGE energy model that incorporates with C02 emission (and its tax). However, I have an issue since this emission tax, at initial level, is 0. Thus, I am confused of how to shock this tax, i.e. a 0.5 $/ton CO2.
My equation design to incorporate the emission tax is briefly showed below:
EQUATIONS
eq19(NE)
eq19(NE).. P_ENCOM(NE) * ENCOM(NE)  sum( energyc, (1 + TAXFUEL(energyc, NE) )*
P_Z(energyc) * X(energyc, NE) ) =e= 0;
Note: There a lot of equations that incorporate with the exogenous variable of TAXFUEL; the above is an example case.
TAXFUEL is calibrated from relationship below:
PARAMETER
TAXCO20 = 0;
TAXFUEL0(energyc, A) $ ( X0(energyc, A) > 0 )
= TAXCO20 * CO2FIRM0(energyc, A) / ( P_Z0(energyc) * X0(energyc, A) );
If you see from above, the value of TAXFUEL0 is linked to the TAXCO20. In my model, this TAXCO20 (tax of C02) will be used as the policy instrument. At the initial level, TAXCO20 = 0 since it is not yet being introduced to the economy. So, I want to shock this TAXCO20 let say 0.5 $/ton. How should I implement this shock?
In my model, I created a loop mechanism as follows:
SETS
* CASES FOR WHICH A SOLUTION IS TO BE OBTAINED IN THE LOOP
REP "SET OF VARIABLES TO BE REPORTED: BASE, SIMULATION, %CHANGE"
/
BASE "base simulation = initially calibrated values"
SHOCKED "shocked solution"
PCHANGE "% change in the value of the variable = 100*(shockedbase)/base"
DIFF "change in the value of the variable = shockedbase, if base<=0"
/
* CASES FOR WHICH A SOLUTION IS TO BE OBTAINED IN THE LOOP
SOLU(REP) "SET OF SOLUTIONS: BASE, SIMULATION"
/
BASE "base simulation = calibrated values"
SHOCKED "SHOCKED SOLUTION"
/
* 7.2: PARAMETERS STORING THE SOLUTION VALUES OF THE VARIABLES
PARAMETERS
* VARIABLE VALUES TO BE USED IN SOLUTION FOR BASE & SHOCKED CASES
* SPECIFY THE VARIABLE AT THE OUTSET HERE,
* E.G. A PARAMETER
CGADJ_SHOCK(REP)
* OR AN EXOGENOUS VARIABLE
P_MW_SHOCK(C, REP)
HAtaxrate_SHOCK(REP)
TAXCO2_SHOCK(REP)
* 8: PRPARING TO SOLVE:
*
* 8.1: SETTING THE BENCH & SHOCKED CASES ++++++++++++++++
*
* E.G. 10% SHOCK TO GOV EXP CGADJ
CGADJ_SHOCK('BASE') = CGADJ0;
CGADJ_SHOCK('SHOCKED') = 1.0 * CGADJ0;
CGADJ_SHOCK('PCHANGE') = 0;
* OR:
* A CHANGE IN IMPORT PRICES, P_MW(C)
P_MW_SHOCK(C, 'BASE') = P_MW0(C);
P_MW_SHOCK(C, 'SHOCKED') = 1.0 * P_MW0(C);
P_MW_SHOCK(C, 'PCHANGE') = 0;
* A CHANGE IN TAX RATE FOR HOUSEHOLDS
HAtaxrate_SHOCK('BASE') = HAtaxrate0;
HAtaxrate_SHOCK('SHOCKED') = 1.0 * HAtaxrate0;
HAtaxrate_SHOCK('PCHANGE') = 0;
* A CHANGE IN ENERGY TAX
TAXCO2_SHOCK('BASE') = TAXCO20;
TAXCO2_SHOCK('SHOCKED') = 0.5 + TAXCO20;
TAXCO2_SHOCK('PCHANGE') = 50;
When I execute this the above shock (red font), it did not generate the shock results (no percentage changes to the endogenous variables); everything is still at the initial values (preshock level).
I then tried another way where I don't implement the above code, but I directly change the parameter of TAXCO20:
TAXCO20 = 0.5;
The model iterates, but it still does not generate any shock results. Does anybody knows how to implement a shock to a tax which is not existed at initial level like the above case?
Thank you for your helps.
Cheers,
Herbert

To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.
RE: Allowing the emission tax as shock in the CGE Energy Model
Hi Herbert
You write that you directly shocked the model, and it iterates but gives no changes in the endogenous variables. I would check the following:
 First, run the benchmark (iteration limit set to zero which should give you a solution anyway) and display the value of the tax rates.
 Run the shock:
o First with iteration limit set to zero: Display the exogenous tax rates (did they change?) and look at your equations: now your equation listing should give you infeasibilities in the equations with the exogenous tax change.
o If you have infeasibilities with iteration limit set to zero, solve the model with a normal iteration limit.
Hope this helps
Cheers
Renger

From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] On Behalf Of Herbert Loxa
Sent: Freitag, 25. MÃ¤rz 2016 15:18
To: gamsworld
Subject: Allowing the emission tax as shock in the CGE Energy Model
Hi guys,
I have a problem here. I am building a CGE energy model that incorporates with C02 emission (and its tax). However, I have an issue since this emission tax, at initial level, is 0. Thus, I am confused of how to shock this tax, i.e. a 0.5 $/ton CO2.
My equation design to incorporate the emission tax is briefly showed below:
EQUATIONS
eq19(NE)
eq19(NE).. P_ENCOM(NE) * ENCOM(NE)  sum( energyc, (1 + TAXFUEL(energyc, NE) )*
P_Z(energyc) * X(energyc, NE) ) =e= 0;
Note: There a lot of equations that incorporate with the exogenous variable of TAXFUEL; the above is an example case.
TAXFUEL is calibrated from relationship below:
PARAMETER
TAXCO20 = 0;
TAXFUEL0(energyc, A) $ ( X0(energyc, A) > 0 )
= TAXCO20 * CO2FIRM0(energyc, A) / ( P_Z0(energyc) * X0(energyc, A) );
If you see from above, the value of TAXFUEL0 is linked to the TAXCO20. In my model, this TAXCO20 (tax of C02) will be used as the policy instrument. At the initial level, TAXCO20 = 0 since it is not yet being introduced to the economy. So, I want to shock this TAXCO20 let say 0.5 $/ton. How should I implement this shock?
In my model, I created a loop mechanism as follows:
SETS
* CASES FOR WHICH A SOLUTION IS TO BE OBTAINED IN THE LOOP
REP "SET OF VARIABLES TO BE REPORTED: BASE, SIMULATION, %CHANGE"
/
BASE "base simulation = initially calibrated values"
SHOCKED "shocked solution"
PCHANGE "% change in the value of the variable = 100*(shockedbase)/base"
DIFF "change in the value of the variable = shockedbase, if base<=0"
/
* CASES FOR WHICH A SOLUTION IS TO BE OBTAINED IN THE LOOP
SOLU(REP) "SET OF SOLUTIONS: BASE, SIMULATION"
/
BASE "base simulation = calibrated values"
SHOCKED "SHOCKED SOLUTION"
/
* 7.2: PARAMETERS STORING THE SOLUTION VALUES OF THE VARIABLES
PARAMETERS
* VARIABLE VALUES TO BE USED IN SOLUTION FOR BASE & SHOCKED CASES
* SPECIFY THE VARIABLE AT THE OUTSET HERE,
* E.G. A PARAMETER
CGADJ_SHOCK(REP)
* OR AN EXOGENOUS VARIABLE
P_MW_SHOCK(C, REP)
HAtaxrate_SHOCK(REP)
TAXCO2_SHOCK(REP)
* 8: PRPARING TO SOLVE:
*
* 8.1: SETTING THE BENCH & SHOCKED CASES ++++++++++++++++
*
* E.G. 10% SHOCK TO GOV EXP CGADJ
CGADJ_SHOCK('BASE') = CGADJ0;
CGADJ_SHOCK('SHOCKED') = 1.0 * CGADJ0;
CGADJ_SHOCK('PCHANGE') = 0;
* OR:
* A CHANGE IN IMPORT PRICES, P_MW(C)
P_MW_SHOCK(C, 'BASE') = P_MW0(C);
P_MW_SHOCK(C, 'SHOCKED') = 1.0 * P_MW0(C);
P_MW_SHOCK(C, 'PCHANGE') = 0;
* A CHANGE IN TAX RATE FOR HOUSEHOLDS
HAtaxrate_SHOCK('BASE') = HAtaxrate0;
HAtaxrate_SHOCK('SHOCKED') = 1.0 * HAtaxrate0;
HAtaxrate_SHOCK('PCHANGE') = 0;
* A CHANGE IN ENERGY TAX
TAXCO2_SHOCK('BASE') = TAXCO20;
TAXCO2_SHOCK('SHOCKED') = 0.5 + TAXCO20;
TAXCO2_SHOCK('PCHANGE') = 50;
When I execute this the above shock (red font), it did not generate the shock results (no percentage changes to the endogenous variables); everything is still at the initial values (preshock level).
I then tried another way where I don't implement the above code, but I directly change the parameter of TAXCO20:
TAXCO20 = 0.5;
The model iterates, but it still does not generate any shock results. Does anybody knows how to implement a shock to a tax which is not existed at initial level like the above case?
Thank you for your helps.
Cheers,
Herbert

To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.

To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.
Re: Allowing the emission tax as shock in the CGE Energy Model
Thanks Renger..
Cheers,
Herbert
On Tuesday, March 29, 2016 at 7:19:32 AM UTC+1, Renger van Nieuwkoop wrote:
Hi Herbert
You write that you directly shocked the model, and it iterates but gives no changes in the endogenous variables. I would check the following:
 First, run the benchmark (iteration limit set to zero which should give you a solution anyway) and display the value of the tax rates.
 Run the shock:
o First with iteration limit set to zero: Display the exogenous tax rates (did they change?) and look at your equations: now your equation listing should give you infeasibilities in the equations with the exogenous tax change.
o If you have infeasibilities with iteration limit set to zero, solve the model with a normal iteration limit.
Hope this helps
Cheers
Renger

From: gams...@googlegroups.com [mailto:gams...@googlegroups.com] On Behalf Of Herbert Loxa
Sent: Freitag, 25. MÃ¤rz 2016 15:18
To: gamsworld
Subject: Allowing the emission tax as shock in the CGE Energy Model
Hi guys,
I have a problem here. I am building a CGE energy model that incorporates with C02 emission (and its tax). However, I have an issue since this emission tax, at initial level, is 0. Thus, I am confused of how to shock this tax, i.e. a 0.5 $/ton CO2.
My equation design to incorporate the emission tax is briefly showed below:
EQUATIONS
eq19(NE)
eq19(NE).. P_ENCOM(NE) * ENCOM(NE)  sum( energyc, (1 + TAXFUEL(energyc, NE) )*
P_Z(energyc) * X(energyc, NE) ) =e= 0;
Note: There a lot of equations that incorporate with the exogenous variable of TAXFUEL; the above is an example case.
TAXFUEL is calibrated from relationship below:
PARAMETER
TAXCO20 = 0;
TAXFUEL0(energyc, A) $ ( X0(energyc, A) > 0 )
= TAXCO20 * CO2FIRM0(energyc, A) / ( P_Z0(energyc) * X0(energyc, A) );
If you see from above, the value of TAXFUEL0 is linked to the TAXCO20. In my model, this TAXCO20 (tax of C02) will be used as the policy instrument. At the initial level, TAXCO20 = 0 since it is not yet being introduced to the economy. So, I want to shock this TAXCO20 let say 0.5 $/ton. How should I implement this shock?
In my model, I created a loop mechanism as follows:
SETS
* CASES FOR WHICH A SOLUTION IS TO BE OBTAINED IN THE LOOP
REP "SET OF VARIABLES TO BE REPORTED: BASE, SIMULATION, %CHANGE"
/
BASE "base simulation = initially calibrated values"
SHOCKED "shocked solution"
PCHANGE "% change in the value of the variable = 100*(shockedbase)/base"
DIFF "change in the value of the variable = shockedbase, if base<=0"
/
* CASES FOR WHICH A SOLUTION IS TO BE OBTAINED IN THE LOOP
SOLU(REP) "SET OF SOLUTIONS: BASE, SIMULATION"
/
BASE "base simulation = calibrated values"
SHOCKED "SHOCKED SOLUTION"
/
* 7.2: PARAMETERS STORING THE SOLUTION VALUES OF THE VARIABLES
PARAMETERS
* VARIABLE VALUES TO BE USED IN SOLUTION FOR BASE & SHOCKED CASES
* SPECIFY THE VARIABLE AT THE OUTSET HERE,
* E.G. A PARAMETER
CGADJ_SHOCK(REP)
* OR AN EXOGENOUS VARIABLE
P_MW_SHOCK(C, REP)
HAtaxrate_SHOCK(REP)
TAXCO2_SHOCK(REP)
* 8: PRPARING TO SOLVE:
*
* 8.1: SETTING THE BENCH & SHOCKED CASES ++++++++++++++++
*
* E.G. 10% SHOCK TO GOV EXP CGADJ
CGADJ_SHOCK('BASE') = CGADJ0;
CGADJ_SHOCK('SHOCKED') = 1.0 * CGADJ0;
CGADJ_SHOCK('PCHANGE') = 0;
* OR:
* A CHANGE IN IMPORT PRICES, P_MW(C)
P_MW_SHOCK(C, 'BASE') = P_MW0(C);
P_MW_SHOCK(C, 'SHOCKED') = 1.0 * P_MW0(C);
P_MW_SHOCK(C, 'PCHANGE') = 0;
* A CHANGE IN TAX RATE FOR HOUSEHOLDS
HAtaxrate_SHOCK('BASE') = HAtaxrate0;
HAtaxrate_SHOCK('SHOCKED') = 1.0 * HAtaxrate0;
HAtaxrate_SHOCK('PCHANGE') = 0;
* A CHANGE IN ENERGY TAX
TAXCO2_SHOCK('BASE') = TAXCO20;
TAXCO2_SHOCK('SHOCKED') = 0.5 + TAXCO20;
TAXCO2_SHOCK('PCHANGE') = 50;
When I execute this the above shock (red font), it did not generate the shock results (no percentage changes to the endogenous variables); everything is still at the initial values (preshock level).
I then tried another way where I don't implement the above code, but I directly change the parameter of TAXCO20:
TAXCO20 = 0.5;
The model iterates, but it still does not generate any shock results. Does anybody knows how to implement a shock to a tax which is not existed at initial level like the above case?
Thank you for your helps.
Cheers,
Herbert

To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+...@googlegroups.com.
To post to this group, send email to gams...@googlegroups.com.
Visit this group at https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.

To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.