Resource Center

Advanced Search
Technical Papers
Working Papers
Research Memoranda
GTAP-L Mailing List
CGE Books/Articles
Important References
Submit New Resource

GTAP Resources: Frequently Asked Question Details

Subject: FAQ

Question: How does one efficiently change each country's initial tms for imports of goods from all other regions with x percentage points (ie ordinary change to the tariff rate). How can this be done in GTAP?


RunGTAP offers various "canned" systems of uniform shocks, but not the particular one [equal ordinary change in rate] that you want today.

Any serious GTAP work will require you to compute shock values for huge variables with your own formulae, to store these values on file, and to use shocks statements which read many values at once from file. It is a skill you have to learn.

That''s why, in the GTAP training course, you spend a session editing and running your own version of SHOCKS.TAB. You should make a program based on (but with a different name) to compute your special shocks which you store in a file with a name chosen by you [NOT "tms.shk"].

Have a look in the attached zip to find:
* excerpt from recent RunGTAP help file, about shock statements
* Shocks.TAB -- I added a few helpful comments to it

In we find the following section:
Coefficient (all,i,NSAV_COMM)(all,r,REG) TO_L(i,r)
# benchmark power: output (or income) tax in region r #; Formula (all,i,NSAV_COMM)(all,r,REG)
TO_L(i,r) = VOA(i,r)/VOM(i,r);
Coefficient (all,i,NSAV_COMM)(all,r,REG) TO_HAT(i,r)
# shock to remove all output (or income) tax in region r #; Formula (all,i,NSAV_COMM)(all,r,REG)
TO_HAT(i,r) = 100*[1-TO_L(i,r)] / TO_L(i,r); ! above formula is formula for % change: 100*[New-Old]/Old
In this case we want New=1. Suppose you wanted 20% tax, you might write:
TO_HAT(i,r) = {[1.2-TO_L(i,r)] / TO_L(i,r)} * 100; !

The comment at the end should be helpful to you.
The % change is: 100*[New-Old]/Old = 100*Change/Old In your special case you want a uniform change (say 20% points reduction). So you would write (for tariffs)
TMS_HAT(i,r,s) = 100*[-0.2] / TMS_L(i,r,s);
Actually quite easy !

Contrary to what another poster suggested, the shock statements you will need, which might resemble:
Shock tms(“Food”,REG,REG) = select from file MyShock.shk; can equally be used in the RunGTAP shock memo (edit box), or (if you are running GTAP outside RunGTAP) in the CMF file.
So no need to abandon RunGTAP ! Though remember, REAL men do not use the mouse ;-)

You could also create files like MyShock.shk using Excel (save as CSV) although Excel gets hard for 3-dimensional data. You could even compute your shocks using GAMS, write them to GDX, convert GDX into HAR (using GDXtoHAR or ViewHAR), and read your shock values from the HAR.


Date Added: 1/17/2006