Allowing the emission tax as shock in the CGE Energy Model

Archive of Gamsworld Google Group
Post Reply
Archiver
User
User
Posts: 7876
Joined: 2 years ago

Allowing the emission tax as shock in the CGE Energy Model

Post by Archiver » 2 years ago


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*(shocked-base)/base"
DIFF "change in the value of the variable = shocked-base, 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 (pre-shock 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.

Archiver
User
User
Posts: 7876
Joined: 2 years ago

RE: Allowing the emission tax as shock in the CGE Energy Model

Post by Archiver » 2 years ago


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*(shocked-base)/base"

DIFF "change in the value of the variable = shocked-base, 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 (pre-shock 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.

Archiver
User
User
Posts: 7876
Joined: 2 years ago

Re: Allowing the emission tax as shock in the CGE Energy Model

Post by Archiver » 2 years ago


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*(shocked-base)/base"

DIFF "change in the value of the variable = shocked-base, 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 (pre-shock 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.

Post Reply