Equal Yield Constraint

Problems with modeling
Post Reply
ElCarpintero
User
User
Posts: 4
Joined: 4 years ago

Equal Yield Constraint

Post by ElCarpintero »

Dear all,

I have been running into a problem when trying to implement an equal yield constraint (i.e. keeping public goods provision constant per period) in a standard Ramsey-dynamic CGE model written in MPSGE.

The model runs over the time period from 2020 to 2050. It entails benchmark taxes, Armington trade and sector-specific capital. At the moment, there are 6 sectors: 2 industry sectors, 2 service sectors, one electricity and one fuel sector.

I implemented an equal yield constraint that adjusts the income tax (i.e. the labor tax) in the sectoral production block with the corresponding constraint and initialization of the benchmark variable as follows:
I:PL(t) Q:(fd0("L",i)) p:pf0("L") A:GOV T:(2*ftax0("L")) N:TAU(t) M:(-1)

$CONSTRAINT:TAU(t)
GVNT(t) =E= QREF(t);

TAU.L(t) = ftax0("L");

In simulations (e.g. a 10% increase in the annual fuel tax over the entire time horizon), the resulting labor tax oscillates heavily and in an erratic manner. In other cases, e.g. where the tax is only introduced for a ten-year period in 2030, the solver returns “locally infeasible”. My investment / capital accumulation / terminal condition is modelled as follows:

$PROD:Kpt(cs,t)
O:PK(cs,t+1) Q:((1-delta)*KptShare(cs)*KPT0)
O:PKT$TLAST(t) Q:((1-delta)*KptShare(cs)*KPT0)
O:RK(cs,t) Q:(KptShare(cs)*VK0)
I:PK(cs,t) Q:(KptShare(cs)*KPT0)

$PROD:Inv(cs,t)
O:PK(cs,t+1) Q:((delta+growth)*KptShare(cs)*KPT0)
O:PKT$TLAST(t) Q:((delta+growth)*KptShare(cs)*KPT0)
I:PA(i,t) Q:(KptShare(cs)*I0(i))

$CONSTRAINT:TK
sum(t$TLAST(t), sum(cs, Inv(cs,t)*KptShare(cs))/sum(cs,Inv(cs,t-1)*KptShare(cs)) - sum(i, Y(i,t)*y0(i)) /sum(i, Y(i,t-1)*y0(i))) =G= 0;

I have tested a wide range of elements in order to find the problem, such as the following:
• Rearranging the two equations for constraints for TK and TAU, respectively.
• Modelling the weight KptShare(cs) explicitly, as: sum(i$mapcap(i,cs),i0(i)))
• Without the equal yield constraint, the model successfully converges towards the steady-state after the implementation of a wide range of taxes (and also with almost prohibitively high
tax rates).
• Removing the sector-specific capital and tested the equal yield constraint likewise leads to erratic labor tax movements

All of this was unfortunately to no avail and I would be delighted if someone could be of any help, in case you have run into similar problems before. If you need any additional information, please let me know. Many thanks!

Best regards,
Michel
User avatar
Renger
Posts: 639
Joined: 7 years ago

Re: Equal Yield Constraint

Post by Renger »

Hi
It might be the following:
Be aware that TAU is a positive variable, so if TAU has to become negative you run into problems.
I usually have two constraints: If GVNT(t) =G= QREF(t) and QREF(t) =G= GVNT(t); with corresponding variables TAU_N and TAU_P (if government income is too big, you should have a subsidy, if it is too small, TAU should work as a tax).
See if that helps
Cheers
Renger

PS. Better copy lots of code using the code button in the editor </>.
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
ElCarpintero
User
User
Posts: 4
Joined: 4 years ago

Re: Equal Yield Constraint

Post by ElCarpintero »

Dear Renger,

Thank your for your suggestions. Unfortunately, it did not solve the problem. Firstly, with your suggestions, the model did only find solutions that were locally unfeasible.

Secondly, by modelling the equal yield as shown below (e.g. the artifical sevenfold increase of the benchmark tax), I already tried to ensure that TAU never drops below zero in the first place.

Code: Select all

I:PL(t)                           Q:(fd0("L",i)) p:pf0("L") A:GOV T:(7*ftax0("L")) A:GOV N:TAU_P(t) M:(-1) b:

$CONSTRAINT:TAU_P(t)
         GVNT(t) =E= QREF(t);
         
TAU_P.L(t) = (6*ftax0("L"));              
The resulting TAU then nonetheless oscillates around +-100% of the initial benchmark tax rate, while staying above zero. Also, the problem persists even if the simulated tax increases are marginal and therefore only a small adjustment of the labor tax would be expected.

Cheers,
Michel
User avatar
Renger
Posts: 639
Joined: 7 years ago

Re: Equal Yield Constraint

Post by Renger »

Hi Michael
Then there must be another problem in your model.
Did you test the steady state benchmark with iteration limit to zero? Can you solve the model with doubling of the numeraire?
Cheers
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
ElCarpintero
User
User
Posts: 4
Joined: 4 years ago

Re: Equal Yield Constraint

Post by ElCarpintero »

Dear Renger,

I have tested both the steady-state benchmark with zero iterations and the doubling my numeraire PW.FX. For the steady-state benchmark, i only get very small marginals (i.e. the largest is E^-5, which is due to the data in my SAM) and when doubling my numeraire, there are no changes in the results.

But i have also tested my model with a dummy SAM to rule out any numerical issues and the problem with the equal yield unforunately persists.

Cheers,
Michel
User avatar
Renger
Posts: 639
Joined: 7 years ago

Re: Equal Yield Constraint

Post by Renger »

perhaps you could send the model and I have a look at it (be sure I can run it).
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
ElCarpintero
User
User
Posts: 4
Joined: 4 years ago

Re: Equal Yield Constraint

Post by ElCarpintero »

Hi Renger

Thank you for your offer. That would be very helpful! Would it be possible to send the model to you by email?

Cheers,
Michel
Post Reply