交易条件効果と温暖化対策

交易条件効果と温暖化対策の関係.あくまで数値例.以下はGAMS用のプログラムファイル

$title 国際間の排出権取引に参加することで損失が生じる (厚生が低下する) 例
display "com: 国際間の排出権取引に参加することで損失が生じる (厚生が低下する) 例";
$ontext
Time-stamp: <2010-09-23 16:42:11 >
First-written: <2010/06/01>

GAMS 用のプログラム.

通常,国際間の排出権取引は全ての地域にとって利益をもたらす (と言われる).

しかし,一般均衡モデルを前提にした場合には,国際間の排出権取引を行うことで損失を
こうむる地域もありうる.以下はその例

地域 A は国際間の排出権取引をおこなわないほうが厚生は高い.

理由は単純.国際間の排出権取引をおこなうケースでは地域 A の交易条件が大幅に悪化す
るため.国際間の取引それ自体は利益をもたらすが,同時にそれは交易条件の大幅な悪化
という間接的な効果ももたらすので全体として厚生が悪化してしまうということ.

あくまで数値例.

【モデル】

モデルの概要
・静学モデル
・2 地域 (A と B)
・3 財・部門 (x, y, e)
・e の利用から CO2 が排出される (1単位のeから1単位のCO2)
・3 つの生産要素 (k, l, r)
・x と y の貿易はあり.e の貿易はなし.


排出規制
・Cap & Trade
・初期配分は auction.
・auction 収入は家計に一括で還元
・政府支出,投資は考慮せず.

国際間の排出権取引
・国際間の排出権取引が可能なケースでは共通の排出権価格が成立.

ベンチマークデータ】

ベンチマークデータはあくまで仮想的なもの.

SAM for region A
x y e u ex_x ex_y im_x im_y hh
px 200 -20 -170 -30 20
py -40 200 -170 -20 30
pe -5 -95 100
pu 340 -340
pk -90 -40 -30 160
pl -65 -45 -30 140
pr -40 40
pfx 30 20 -20 -30

SAM for region B
x y e u ex_x ex_y im_x im_y hh
px 200 -40 -170 -20 30
py -20 200 -170 -30 20
pe -60 -40 100
pu 340 -340
pk -60 -70 -30 160
pl -60 -50 -30 140
pr -40 40
pfx 20 30 -30 -20

$offtext

table sam_a SAM for region A
x y e u ex_x ex_y im_x im_y hh
x 200 -20 -170 -30 20
y -40 200 -170 -20 30
e -5 -95 100
u 340 -340
k -90 -40 -30 160
l -65 -45 -30 140
r -40 40
pfx 30 20 -20 -30
;

table sam_b SAM for region B
x y e u ex_x ex_y im_x im_y hh
x 200 -40 -170 -20 30
y -20 200 -170 -30 20
e -60 -40 100
u 340 -340
k -60 -70 -30 160
l -60 -50 -30 140
r -40 40
pfx 20 30 -30 -20
;

display sam_a, sam_b;

set i Sectors / x, y, e /
f Factors / k, l, r /
r Regions / a, b /
e(i) Energy sector / e /
;
alias (i,ii), (i,j), (f,ff), (r,rr), (r,s);

parameter
vq(i,r) Output
vint(i,j,r) Intermediate input
vened(j,r) Energy input
vene(r) Total energy input
vf(f,i,r) Factor input
vex(i,r,s) Export supply
vdm(i,r) Domestic supply
vmm(i,r) Import
va(i,r) Armington goods
vc(i,r) Consumption
vu(r) Utility

end(f,r) Endowment of factors
;

* ----------------------------------------------------------------------
* Regions A:
vq(i,"a") = sam_a(i,i);
vint(i,j,"a") = - sam_a(i,j);
vint("e",i,"a") = 0;
vint(i,i,"a") = 0;
vened(i,"a") = - sam_a("e",i);
vened("e","a") = 0;
vene("a") = sum(i, vened(i,"a"));
vf(f,i,"a") = - sam_a(f,i);
vex("x","a","b") = - sam_a("x","ex_x");
vex("y","a","b") = - sam_a("y","ex_y");
vdm(i,"a") = vq(i,"a") - vex(i,"a","b");
vmm("x","a") = sam_a("x","im_x");
vmm("y","a") = sam_a("y","im_y");
va(i,"a") = vdm(i,"a") + vmm(i,"a");
vc(i,"a") = - sam_a(i,"u");
vu("a") = sam_a("u","u");
end(f,"a") = sam_a(f,"hh");

* ----------------------------------------------------------------------
* Regions B:
vq(i,"b") = sam_b(i,i);
vint(i,j,"b") = - sam_b(i,j);
vint("e",i,"b") = 0;
vint(i,i,"b") = 0;
vened(i,"b") = - sam_b("e",i);
vened("e","b") = 0;
vene("b") = sum(i, vened(i,"b"));
vf(f,i,"b") = - sam_b(f,i);
vex("x","b","a") = - sam_b("x","ex_x");
vex("y","b","a") = - sam_b("y","ex_y");
vdm(i,"b") = vq(i,"b") - vex(i,"b","a");
vmm("x","b") = sam_b("x","im_x");
vmm("y","b") = sam_b("y","im_y");
va(i,"b") = vdm(i,"b") + vmm(i,"b");
vc(i,"b") = - sam_b(i,"u");
vu("b") = sam_b("u","u");
end(f,"b") = sam_b(f,"hh");

display vq, vint, vene, vened, vf, vex, vdm, vmm, va, vc, vu, end;

$ontext
fl_pt を non-zero とすると国際間の排出権取引があるケースになる.
$offtext
parameter
co2lim(r) CO2 limit
fl_pt Flag for permit trade
;
co2lim(r) = vene(r) * 10;
fl_pt = 0;

parameter
s_f Scale factor
;
s_f = 1;

* option sysout = on;

$ontext
$model:sample

* Debug options for MPSGE
* $echop:.true.
* $datech:.true.
$funlog:.true.

$sectors:
q(i,r) ! Output
a(i,r) ! Armington aggregation
u(r) ! Utlity
im(i,r)$vmm(i,r) ! Import
ene(r) ! Energy + permit

$commodities:
pq(i,r) ! Price of output
pa(i,r) ! Price of Armington goods
pf(f,r) ! Price of factors
pu(r) ! Price of utility
pm(i,r)$vmm(i,r) ! Price of import goods
pene(r) ! Price of energy
pco2(r)$(not fl_pt) ! Price of CO2
pco2w$fl_pt ! Price of CO2

$consumers:
hh(r) ! Income of representative consumer

$prod:q(i,r)$(not e(i)) s:0 vae:0.2 va(vae):0.5
o:pq(i,r) q:vq(i,r)
i:pa(j,r) q:vint(j,i,r)
i:pene(r) q:vened(i,r) vae:
i:pf(f,r) q:vf(f,i,r) va:

$prod:q(i,r)$e(i) s:0.1 kl:0.2
o:pq(i,r) q:vq(i,r)
i:pf("r",r) q:vf("r",i,r)
i:pf("k",r) q:vf("k",i,r) kl:
i:pf("l",r) q:vf("l",i,r) kl:

$prod:a(i,r) s:10
o:pa(i,r) q:va(i,r)
i:pq(i,r) q:vdm(i,r)
i:pm(i,r) q:vmm(i,r)

$prod:im(i,r)$vmm(i,r) s:0
o:pm(i,r) q:vmm(i,r)
i:pq(i,s) q:vex(i,s,r)

$prod:u(r) s:1
o:pu(r) q:vu(r)
i:pa(i,r) q:vc(i,r)

$prod:ene(r) s:0
o:pene(r) q:vene(r)
i:pa("e",r) q:vene(r)
i:pco2(r)$(not fl_pt) q:vene(r) p:(1e-6)
i:pco2w$fl_pt q:vene(r) p:(1e-6)

$demand:hh(r)
d:pu(r)
e:pf(f,r) q:(end(f,r)*s_f)
e:pco2(r)$(not fl_pt) q:co2lim(r)
e:pco2w$fl_pt q:co2lim(r)

$report:
v:z_c(r) o:pu(r) prod:u(r) ! Consumption
v:z_ex(i,r,s)$vex(i,r,s) i:pq(i,r) prod:im(i,s) ! Export
v:z_co2(r)$(not fl_pt) i:pco2(r) prod:ene(r) ! CO2 input
v:z_co2(r)$fl_pt i:pco2w prod:ene(r) ! CO2 input

$offtext

$sysinclude mpsgeset sample

pco2.l(r) = 0;
pco2w.l = 0;

sample.workspace = 300;

parameter
co2b(*) Benchmark CO2
l_u Utility
l_q Output
l_gdp GDP
l_co2 CO2
l_ex Export
l_im Import
l_ex_sh Export share
l_im_sh Import share
l_tot Terms of trade
l_pco2 Permit price
l_co2imp Permit import (export if negative)

pc_u Utility
pc_q Output
pc_gdp GDP
pc_co2 CO2
pc_ex Export
pc_im Import
pc_tot Terms of trade
;
* ----------------------------------------------------------------------
* Benchmark replication.
display "com: Benchmark replication.";
$ontext
Benchmark 均衡は排出規制がない均衡.

$offtext

sample.iterlim = 0;
$include sample.gen
solve sample using mcp;

* ----------------------------------------------------------------------
* Cleanup calculation.
display "com: Cleanup calculation.";

sample.iterlim = 10000;
$include sample.gen
solve sample using mcp;

co2b(r) = ene.l(r) * vene(r);
display co2b;

l_u(r,"bench") = u.l(r);
l_q(i,r,"bench") = q.l(i,r);
l_ex(r,"bench") = sum((i,s)$vex(i,r,s), z_ex.l(i,r,s));
l_im(r,"bench") = sum((i,s)$vex(i,r,s), z_ex.l(i,s,r));
l_gdp(r,"bench") = z_c.l(r) + sum((i,s)$vex(i,r,s), z_ex.l(i,r,s))
- sum((i,s)$vex(i,s,r), z_ex.l(i,s,r));
l_co2(r,"bench") = ene.l(r) * vene(r);

l_ex_sh(i,r,"bench") = sum(s, z_ex.l(i,r,s)) / sum((ii,s), z_ex.l(ii,r,s));
l_im_sh(i,r,"bench") = sum(s, z_ex.l(i,s,r)) / sum((ii,s), z_ex.l(ii,s,r));
l_tot(r,"bench") = sum(i, l_ex_sh(i,r,"bench") * pq.l(i,r)) / sum(i, l_im_sh(i,r,"bench") * pm.l(i,r));

l_pco2(r,"bench") = (pco2.l(r)$(not fl_pt) + pco2w.l$fl_pt) / pu.l("a");

$ontext
* ----------------------------------------------------------------------
* Scale check:
display "com: Scale check:";

s_f = 1.1;
$include sample.gen
solve sample using mcp;
s_f = 1;
$offtext

parameter
r_rate(r) Reduction rate
;
r_rate("a") = 0.8;
r_rate("b") = 0.7;

co2lim(r) = co2b(r) * r_rate(r);
display co2lim;

set sce / npt, pt /;

* ----------------------------------------------------------------------
* Emissions regulation w/o international permit trade
display "com: Emissions regulation w/o international permit trade";
$ontext
「排出規制の導入+国際間での排出権取引はない」ケース

$offtext

$include sample.gen
solve sample using mcp;

* 結果を保存.
l_u(r,"npt") = u.l(r);
l_q(i,r,"npt") = q.l(i,r);
l_ex(r,"npt") = sum((i,s)$vex(i,r,s), z_ex.l(i,r,s));
l_im(r,"npt") = sum((i,s)$vex(i,r,s), z_ex.l(i,s,r));
l_gdp(r,"npt") = z_c.l(r) + sum((i,s)$vex(i,r,s), z_ex.l(i,r,s))
- sum((i,s)$vex(i,s,r), z_ex.l(i,s,r));
l_co2(r,"npt") = ene.l(r) * vene(r);

l_ex_sh(i,r,"npt") = sum(s, z_ex.l(i,r,s)) / sum((ii,s), z_ex.l(ii,r,s));
l_im_sh(i,r,"npt") = sum(s, z_ex.l(i,s,r)) / sum((ii,s), z_ex.l(ii,s,r));
l_tot(r,"npt") = sum(i, l_ex_sh(i,r,"npt") * pq.l(i,r))
/ sum(i, l_im_sh(i,r,"npt") * pm.l(i,r));
l_pco2(r,"npt") = (pco2.l(r)$(not fl_pt) + pco2w.l$fl_pt) / pu.l("a");
l_co2imp(r,"npt") = z_co2.l(r) - co2lim(r);

* ----------------------------------------------------------------------
* Emissions regulation with permit trade
display "com: Emissions regulation with permit trade";
$ontext
「排出規制の導入+国際間での排出権取引がある」ケース

$offtext

* 国際間の排出権取引を可能とする.
fl_pt = 1;

$include sample.gen
solve sample using mcp;

l_u(r,"pt") = u.l(r);
l_q(i,r,"pt") = q.l(i,r);
l_ex(r,"pt") = sum((i,s)$vex(i,r,s), z_ex.l(i,r,s));
l_im(r,"pt") = sum((i,s)$vex(i,r,s), z_ex.l(i,s,r));
l_gdp(r,"pt") = z_c.l(r) + sum((i,s)$vex(i,r,s), z_ex.l(i,r,s))
- sum((i,s)$vex(i,s,r), z_ex.l(i,s,r));
l_co2(r,"pt") = ene.l(r) * vene(r);

l_ex_sh(i,r,"pt") = sum(s, z_ex.l(i,r,s)) / sum((ii,s), z_ex.l(ii,r,s));
l_im_sh(i,r,"pt") = sum(s, z_ex.l(i,s,r)) / sum((ii,s), z_ex.l(ii,s,r));
l_tot(r,"pt") = sum(i, l_ex_sh(i,r,"pt") * pq.l(i,r)) / sum(i, l_im_sh(i,r,"pt") * pm.l(i,r));
l_pco2(r,"pt") = (pco2.l(r)$(not fl_pt) + pco2w.l$fl_pt) / pu.l("a");
l_co2imp(r,"pt") = z_co2.l(r) - co2lim(r);

* ----------------------------------------------------------------------
* 国際間の排出権取引があるケースとないケースを比較する.
$ontext
npt がないケース
pt があるケース.
$offtext
pc_u(r,sce) = 100 * (l_u(r,sce) / l_u(r,"bench") - 1);
pc_q(i,r,sce) = 100 * (l_q(i,r,sce) / l_q(i,r,"bench") - 1);
pc_ex(r,sce) = 100 * (l_ex(r,sce) / l_ex(r,"bench") - 1);
pc_im(r,sce) = 100 * (l_im(r,sce) / l_im(r,"bench") - 1);
pc_gdp(r,sce) = 100 * (l_gdp(r,sce) / l_gdp(r,"bench") - 1);
pc_co2(r,sce) = 100 * (l_co2(r,sce) / l_co2(r,"bench") - 1);
pc_tot(r,sce) = 100 * (l_tot(r,sce) / l_tot(r,"bench") - 1);

l_co2("sum","bench") = sum(r, l_co2(r,"bench"));
l_co2("sum",sce) = sum(r, l_co2(r,sce));

display pc_u, pc_q, pc_gdp, pc_co2, pc_ex, pc_im, pc_tot, l_co2, l_pco2, l_co2imp;

$ontext
「地域 A は x の輸出国,y の輸入国」+「地域 A の y 部門は e 集約的」
→ 排出規制で y の生産が減少,x の生産が増加
→ A の交易条件悪化.

国際間の排出権取引があるケースでは,A はより多くの削減をおこなう (排出権の輸出国になる) ので
上の効果が強くなる.

$offtext

* --------------------
* Local Variables:
* mode: gams
* fill-column: 80
* End: