$ontext This is the endogenous pollution policy model of Ch. 4. Initially the country is an importer of the dirty good but as the world price is increased the country switches to becoming an exporter. While an importer, trade liberalization corresponds to a decrease in the world price of the dirty good. We see that: - demand for dirty good increases, supply decreses, imports increase - utility increases - pollution intensity increases - pollution permit price decreases - pollution and marginal damage decrease When a dirty good exporter, trade liberalization corresponds to an increase in the world price of the dirty good. We see that: - demand for the dirty good drops then increases, supply increases and exports increase - utility increases - pollution intensity decreases - pollution permit price increases - pollution and marginal damage increase $offtext option limcol=0,limrow=0; parameter * tweak these to experiment with model beta labor share in f / 0.3 /, sigma labor share in y / 0.7 /, alpha f share in x / 0.2 /, omega income share of x / 0.6 /, gamma convexity / 2 /, l labor endowment / 1 /, k capitalendowment / 1 /, xprice price of good x / 1 / yprice price of good y / 1 / xinc price increment of x / .05 /; positive variables xs prodn of dirty good x, zx demand for pollution, zs supply of pollution (from utility), kx capital used in dirty good (x) prodn, lx labor used in dirty good (x) prodn, ys prodn of clean good y, ky capital used in clean good (y) prodn, ly labor used in clean good (y) prodn, tau price of pollution permit, e pollution intensity, xd dirty good (x) demand, yd clean good (y) demand, r capital rent, w labor wage, i income, px price of dirty good (x), py price of clean good (y); variables u utility function, md marginal damage; equations xsdef dirty good (x) production, kxdef demand for capital in dirty good (x) prodn, lxdef demand for labor in dirty good (x) prodn, ysdef clean good (y) production kydef demand for capital in clean good (y) prodn, lydef demand for labor in clean good (y) prodn, edef definition of e (pollution intensity), udef utility function, xddef derived demand for dirty good (x), yddef derived demand for clean good (y), rdef capital market clearing condition, wdef labor market clearing condition idef total income clearing condition, zxdef fixed pollution production condition, taudef pollution in dirty good prodn, zsdef pollution demand condition, mddef marginal damage definition; * supply side equations xsdef.. xs =e= (zx**alpha) * (lx**(beta*(1-alpha))) * (kx**((1-beta)*(1-alpha))); taudef.. tau*zx =e= alpha*px*xs; kxdef.. r*kx =e= px*(1-alpha)*(1-beta)*xs; lxdef.. w*lx =e= px*(1-alpha)*beta*xs; ysdef.. ys =e= (ky**(1-sigma)) * (ly**(sigma)); kydef.. r*ky =e= (1-sigma)*py*ys; lydef.. w*ly =e= sigma*py*ys; * demand side equations udef.. u =e= omega*log(xd)+(1-omega)*log(yd) - (zs**gamma)/gamma; xddef.. px*xd =e= omega*i; yddef.. py*yd =e= (1-omega)*i; mddef.. md =e= i*(zs**(gamma-1)); zsdef.. tau =e= md; * clearing conditions rdef.. k =e= kx + ky; wdef.. l =e= lx + ly; zxdef.. zs =e= zx; idef.. px*xd + py*yd =e= w*l + r*k + tau*zx; * variable definitions edef.. xs*e =e= zx; * start with some reasonable values xs.l=1; zx.l=1; zs.l=1; kx.l=1; lx.l=1; ys.l=1; ky.l=1; ly.l=1; e.l=1; tau.l=1; u.l=1; xd.l=1; yd.l=1; zs.l=1; r.l=1; w.l=1; i.l=3; * ensure tau is non-zero tau.lo=.0001; * good prices are fixed px.fx=xprice; py.fx=yprice; * upper bound on intensity(e) e.up=1; model permit /all/; solve permit using nlp maximizing u; set index /1*20/; PARAMETER REPORT(INDEX,*); * loop and increment dirty good world price loop(index, px.fx = xprice+xinc*ord(index); SOLVE PERMIT USING nlp maximizing u; REPORT(INDEX, "X price") = PX.l + EPS; REPORT(INDEX, "Xd") = XD.L+EPS; REPORT(INDEX, "Xs") = XS.L + EPS; REPORT(INDEX, "Mx") = (XD.L - XS.L) + EPS; report(index, "pMx") = px.l * (XD.L-XS.L) + EPS; REPORT(INDEX, "Yd") = YD.L+EPS; REPORT(INDEX,"Ys") = YS.L+EPS; REPORT(INDEX, "Utility") = U.L + EPS; REPORT(INDEX, "Intensity") = e.L + EPS; REPORT(INDEX, "Tau") = TAU.L + EPS; REPORT(INDEX, "Polln") = ZX.L + EPS; REPORT(INDEX, "MD") = md.l + EPS; ); display report;