Description
This model explores the effects of CAFE standards on the composition of new automobile sales, individual manufacturer average fuel efficiency, and combined new-fleet average fuel efficiency. The model is short-run in which constrained firms increase their CAFE ratings by altering relative prices only, and in which "uncaring" firms simply choose to pay fines. Steven G. Thorpe, Depart- ment of Economics, University of Colorado at Boulder, August 1994.
Large Model of Types : MPSGE mcp
Category : GAMS Model library
Main file : cafemge.gms
$title Fuel Economy Standards and New Automobile Sales (CAFEMGE,SEQ=139)
$onText
This model explores the effects of CAFE standards on the composition of new
automobile sales, individual manufacturer average fuel efficiency, and combined
new-fleet average fuel efficiency. The model is short-run in which constrained
firms increase their CAFE ratings by altering relative prices only, and in
which "uncaring" firms simply choose to pay fines. Steven G. Thorpe, Depart-
ment of Economics, University of Colorado at Boulder, August 1994.
Thorpe, S, The Effects of Fuel Economy Standards on Automobile Sales
and Average Fuel Efficiency. Tech. rep., Department of Economics,
University of Colorado, 1994.
Keywords: mixed complementarity problem, applied general equilibrium, public finance,
industrial organization, fuel economy
$offText
* GAMS declarations and input data
Set
J 'automobile firms' / ASIA, EURO, US /
J1(J) 'potentially constrained firms' / ASIA, US /
J2(J) 'uncaring firms' / EURO /
I 'vehicle classes' / SUB, COM, MID, LG, SMT, LGT /
IC(I) 'car classes' / SUB, COM, MID, LG /
IT(I) 'truck classes' / SMT, LGT /
NEST(I) 'nest identifiers' /SUB 'a', COM 'a', MID 'b', LG 'c', SMT 'c', LGT 'c'/;
Alias (J,JJ), (I,II);
Scalar
LSHRX 'labor share in auto production' / 0.5 /
LSHRY 'labor share in non-auto production' / 0.3 /
PF0 'used to calculate FSHR' / 1.0 /
YTOX 'ratio of Y to X expenditures' / 8.085 /
ETRN 'elasticity of transformation' / 5.0 /
ESUB1 'ESUB between automobile groups' / 0.5 /
ESUB2 'ESUB within automobile groups' / 8.0 /;
Table MPG(I,J) 'sales-weighted MPGs.'
ASIA EURO US
SUB 33.05 28.52 31.64
COM 28.75 26.69 29.75
MID 25.88 23.14 26.18
LG 25.8800 24.30 23.58
SMT 23.88 21.10 23.36
LGT 24.46 16.00 17.60;
Table PX0(I,J) 'sales-weighted average prices (thou).'
ASIA EURO US
SUB 11.122 19.125 10.735
COM 14.457 22.197 11.021
MID 19.352 35.581 14.841
LG 26.378 20.836
SMT 11.585 14.400 11.740
LGT 10.032 38.575 13.041;
Table X0(I,J) 'unit sales (mil).'
ASIA EURO US
SUB 1.162339 0.115131 0.757758
COM 0.968914 0.303296 1.884271
MID 0.293727 0.109034 2.108742
LG 0.0 0.008351 1.270741
SMT 0.424089 0.006251 1.919135
LGT 0.320493 0.004614 1.840043;
Table LIFE(I,J) 'automobile life in total miles.'
ASIA EURO US
SUB 100000 100000 100000
COM 100000 100000 100000
MID 100000 100000 100000
LG 100000 100000 100000
SMT 100000 100000 100000
LGT 100000 100000 100000;
Parameter
FSHR(I,J) 'fuel cost as a percent of automobile cost.'
CX0 'BM automobile services consumption ($bil).'
CY0 'BM non-auto consumption ($bil).'
U0 'BM utility.'
CF0 'BM fuel consumption ($bil).'
LY0 'labor input to non-auto production.'
KY0 'capital input to non-auto production.'
LX0(J) 'labor input to automobile production.'
KX0(J) 'capital input to automobile production.'
EL 'endowment of labor.'
EKY 'endowment of non-auto capital.'
EKX(J) 'endowment of automobile capital.'
KCAR(J) 'CAFE standard for passenger cars (mpg).'
KTRK(J) 'CAFE standard for light trucks (mpg).'
EBCAR(J) 'CAFE standard for passenger cars (gpm).'
EBTRK(J) 'CAFE standard for light trucks (gpm).'
ECAR(I,J) 'passenger car efficiency (gpm).'
ETRK(I,J) 'light truck efficiency (gpm).'
CARFINE(IC,J2) 'fine (tax) for noncompliance.'
TRKFINE(IT,J2) 'fine (tax) for noncompliance.'
BINDCAR(J1) 'equals 1 if CAFE is potentially binding.'
BINDTRK(J1) 'equals 1 if CAFE is potentially binding.'
AFECAR0(J) 'BM passenger car AFE.'
AFETRK0(J) 'BM light truck AFE.'
AFEALL0 'BM combined fleet AFE.'
MSHR0(I,J) 'BM market shares.';
* GAMS assignments
FSHR(I,J)$PX0(I,J) = (LIFE(I,J)*PF0/MPG(I,J))/(PX0(I,J)*1000);
CX0 = sum((I,J), (1 + FSHR(I,J))*PX0(I,J)*X0(I,J));
CY0 = YTOX*CX0;
U0 = CY0 + CX0;
CF0 = sum((I,J), FSHR(I,J)*PX0(I,J)*X0(I,J));
LY0 = LSHRY*(CY0 + CF0);
KY0 = (1 - LSHRY)*(CY0 + CF0);
LX0(J) = LSHRX*sum(I, PX0(I,J)*X0(I,J));
KX0(J) = (1 - LSHRX)*sum(I, PX0(I,J)*X0(I,J));
EL = sum(J, LX0(J)) + LY0;
EKY = KY0;
EKX(J) = KX0(J);
ECAR(IC,J) = 1/MPG(IC,J);
ETRK(IT,J) = 1/MPG(IT,J);
AFECAR0(J) = sum(IC, X0(IC,J))/sum(IC, X0(IC,J)/MPG(IC,J));
AFETRK0(J) = sum(IT, X0(IT,J))/sum(IT, X0(IT,J)/MPG(IT,J));
AFEALL0 =(sum((IC,J), X0(IC,J)) + sum((IT,J), X0(IT,J)))
/(sum((IC,J), X0(IC,J)/MPG(IC,J)) + sum((IT,J), X0(IT,J)/MPG(IT,J)));
MSHR0(I,J) =(X0(I,J)/sum((II,JJ), X0(II,JJ)))*100;
* Benchmark Replication
* Set the standards to a non-binding level
KCAR(J) = 1;
KTRK(J) = 1;
EBCAR(J) = 1/KCAR(J);
EBTRK(J) = 1/KTRK(J);
* Set the taxes and fines to zero
CARFINE(IC,J2) = 0;
TRKFINE(IT,J2) = 0;
* Limit the occurrence of PT to binding firms
BINDCAR(J1) = 0;
BINDTRK(J1) = 0;
BINDCAR(J1) = 1$(KCAR(J1) > smin(IC, MPG(IC,J1)) and KCAR(J1) < smax(IC, MPG(IC,J1)));
BINDTRK(J1) = 1$(KTRK(J1) > smin(IT, MPG(IT,J1)) and KTRK(J1) < smax(IT, MPG(IT,J1)));
* The MPSGE Model
$onText
$MODEL:CAFE2
$SECTORS:
U ! welfare.
Y ! non-automotive production.
X(J) ! automobile production.
M ! imports of fuel.
CAFECAR(IC,J1)$X0(IC,J1) ! constraint mechanism.
CAFETRK(IT,J1)$X0(IT,J1) ! constraint mechanism.
FINECAR(IC,J2)$X0(IC,J2) ! penalty mechanism.
FINETRK(IT,J2)$X0(IT,J2) ! penalty mechanism.
HP(I,J)$X0(I,J) ! automobile consumption.
CX ! aggregate automobile consumption.
$COMMODITIES:
PY ! price of good Y.
W ! wage.
RY ! rental rate of Y capital.
PU ! utility price.
PF ! price of fuel.
RX(J) ! rental rate of X capital.
MVX ! marginal value of aggregate auto consumption.
MCX(I,J)$X0(I,J) ! marginal cost of automobiles.
PX(I,J)$X0(I,J) ! price of automobiles.
PTCAR(J1)$BINDCAR(J1) ! internal transfer price.
PTTRK(J1)$BINDTRK(J1) ! internal transfer price.
PCX(I,J)$X0(I,J) ! price of automobile consumption.
$CONSUMERS:
RA ! representative agent income.
* Consumers are endowed with labor and capital and demand utility.
$DEMAND:RA
D:PU Q:U0
E:W Q:EL
E:RY Q:EKY
E:RX(J) Q:EKX(J)
* CES/Cobb-Douglas utility function.
$PROD:U s:1.0
O:PU Q:U0
I:PY Q:CY0
I:MVX Q:CX0
* CES/Cobb-Douglas production of good Y.
$PROD:Y s:1.0
O:PY Q:(CY0+CF0)
I:W Q:LY0
I:RY Q:KY0
* CES/Cobb-Douglas production of automobiles.
$PROD:X(J) s:1.0 t:ETRN
O:MCX(I,J) Q:X0(I,J) P:PX0(I,J)
I:W Q:LX0(J)
I:RX(J) Q:KX0(J)
* Fuel is obtained by trading away some Y.
$PROD:M
O:PF Q:CF0
I:PY Q:CF0
* CAFE enters as a tax-subsidy on potentially constrained firms.
$PROD:CAFECAR(IC,J1)$X0(IC,J1) s:0 t:0
O:PX(IC,J1) Q:X0(IC,J1) P:PX0(IC,J1)
I:MCX(IC,J1) Q:X0(IC,J1) P:PX0(IC,J1)
I:PTCAR(J1)$BINDCAR(J1)$(ECAR(IC,J1) > EBCAR(J1))
+ Q:(1000*X0(IC,J1)*(ECAR(IC,J1) - EBCAR(J1)))
O:PTCAR(J1)$BINDCAR(J1)$(ECAR(IC,J1) < EBCAR(J1))
+ Q:(1000*X0(IC,J1)*(EBCAR(J1) - ECAR(IC,J1)))
$PROD:CAFETRK(IT,J1)$X0(IT,J1) s:0 t:0
O:PX(IT,J1) Q:X0(IT,J1) P:PX0(IT,J1)
I:MCX(IT,J1) Q:X0(IT,J1) P:PX0(IT,J1)
I:PTTRK(J1)$BINDTRK(J1)$(ETRK(IT,J1) > EBTRK(J1))
+ Q:(1000*X0(IT,J1)*(ETRK(IT,J1) - EBTRK(J1)))
O:PTTRK(J1)$BINDTRK(J1)$(ETRK(IT,J1) < EBTRK(J1))
+ Q:(1000*X0(IT,J1)*(EBTRK(J1) - ETRK(IT,J1)))
* Penalties are incurred by uncaring firms in the form of a tax.
$PROD:FINECAR(IC,J2)$X0(IC,J2)
O:PX(IC,J2) Q:X0(IC,J2) P:PX0(IC,J2)
I:MCX(IC,J2) Q:X0(IC,J2) P:PX0(IC,J2) A:RA T:CARFINE(IC,J2)
$PROD:FINETRK(IT,J2)$X0(IT,J2)
O:PX(IT,J2) Q:X0(IT,J2) P:PX0(IT,J2)
I:MCX(IT,J2) Q:X0(IT,J2) P:PX0(IT,J2) A:RA T:TRKFINE(IT,J2)
* Automobiles and fuel are consumed in fixed proportions.
$PROD:HP(I,J)$X0(I,J) s:0
O:PCX(I,J) Q:((1 + FSHR(I,J))*PX0(I,J)*X0(I,J))
I:PX(I,J) Q:X0(I,J) P:PX0(I,J)
I:PF Q:(FSHR(I,J)*PX0(I,J)*X0(I,J))
* ESUB1 is the elasticity of substitution BETWEEN vehicle classes.
$PROD:CX s:ESUB1 a:ESUB2 b:ESUB2 c:ESUB2
O:MVX Q:CX0
I:PCX(I,J) Q:((1 + FSHR(I,J))*PX0(I,J)*X0(I,J)) NEST.TE(I):
$offText
$sysInclude mpsgeset CAFE2
* Normalize prices using the non-auto commodity:
PY.fx = 1;
$include CAFE2.GEN
solve CAFE2 using mcp;
* Generate and report statistics on the calibrated benchmark
Parameter
BMAGGR(*,*) 'benchmark aggregate expenditures.'
BMCX(*,*) 'benchmark automobile consumption expenditures (%).'
BMFIRM(*,*) 'benchmark firm market shares based on units (%).';
BMAGGR("CY","LEVEL") = CY0;
BMAGGR("CY","PERCENT") = (CY0/(CY0 + CX0))*100;
BMAGGR("CX","LEVEL") = CX0;
BMAGGR("CX","PERCENT") = (CX0/(CY0 + CX0))*100;
BMAGGR("TOTAL","LEVEL") = CY0 + CX0;
BMAGGR("TOTAL","PERCENT") = 100;
BMCX(I,J) = (((1 + FSHR(I,J))*PX0(I,J)*X0(I,J))/CX0)*100;
BMCX("FLEET",J) = sum(I, (((1 + FSHR(I,J))*PX0(I,J)*X0(I,J))/CX0)*100);
BMCX(I,"ALL") = sum(J, (((1 + FSHR(I,J))*PX0(I,J)*X0(I,J))/CX0)*100);
BMFIRM(I,J) = (X0(I,J)/sum((II,JJ), X0(II,JJ)))*100;
BMFIRM("FLEET",J) = sum(I, (X0(I,J)/sum((II,JJ), X0(II,JJ)))*100);
BMFIRM(I,"ALL") = sum(J, (X0(I,J)/sum((II,JJ), X0(II,JJ)))*100);
display BMAGGR, BMCX, BMFIRM;
* Introduce binding CAFE standards and impose fines
* Set the CAFE standards
KCAR(J) = 29;
KTRK(J) = 20;
EBCAR(J) = 1/KCAR(J);
EBTRK(J) = 1/KTRK(J);
* Set the fines
CARFINE(IC,J2) = 0;
TRKFINE(IT,J2) = 0;
* Limit the occurrence of PT to binding firms
BINDCAR(J1) = 0.25;
BINDTRK(J1) = 0.25;
BINDCAR(J1) = 1$(KCAR(J1) > smin(IC, MPG(IC,J1)) and KCAR(J1) < smax(IC, MPG(IC,J1)));
BINDTRK(J1) = 1$(KTRK(J1) > smin(IT, MPG(IT,J1)) and KTRK(J1) < smax(IT, MPG(IT,J1)));
$include CAFE2.GEN
solve CAFE2 using mcp;
* Generate and report counterfactual results
Parameter
DPX(I,J) 'percentage change in automobile prices.'
DX(I,J) 'percentage change in automobile output.'
DXALL 'percentage change in aggregate automobile output.'
MSHR(I,J)
DMSHR(*,J) 'change in manufacturer market shares.'
AFECAR(J)
AFETRK(J)
AFEALL
AFERPT(*,*) 'average fuel efficiencies.';
DPX(I,J)$PX0(I,J) = ((PX.l(I,J) - PX0(I,J))/PX0(I,J))*100;
DX(I,J)$X0(I,J) = (HP.l(I,J) - 1)*100;
DXALL = (sum((I,J), HP.l(I,J)*X0(I,J)) - sum((I,J), X0(I,J)))/sum((I,J), X0(I,J));
MSHR(I,J) = (HP.l(I,J)*X0(I,J)/sum((II,JJ), HP.l(II,JJ)*X0(II,JJ)))*100;
DMSHR("CARS",J) = sum(IC, MSHR(IC,J) - MSHR0(IC,J));
DMSHR("TRKS",J) = sum(IT, MSHR(IT,J) - MSHR0(IT,J));
AFECAR(J) = sum(IC, HP.l(IC,J)*X0(IC,J))/sum(IC, HP.l(IC,J)*X0(IC,J)/MPG(IC,J));
AFETRK(J) = sum(IT, HP.l(IT,J)*X0(IT,J))/sum(IT, HP.l(IT,J)*X0(IT,J)/MPG(IT,J));
AFEALL = (sum((IC,J), HP.l(IC,J)*X0(IC,J))
+sum((IT,J), HP.l(IT,J)*X0(IT,J)))/
(sum((IC,J), HP.l(IC,J)*X0(IC,J)/MPG(IC,J))
+sum((IT,J), HP.l(IT,J)*X0(IT,J)/MPG(IT,J)));
AFERPT("CAR0",J) = AFECAR0(J);
AFERPT("CAR0","ALL") = sum((IC,J), X0(IC,J))/sum((IC,J), X0(IC,J)/MPG(IC,J));
AFERPT("CAR1",J) = AFECAR(J);
AFERPT("CAR1","ALL") = sum((IC,J), HP.l(IC,J)*X0(IC,J))/sum((IC,J), HP.l(IC,J)*X0(IC,J)/MPG(IC,J));
AFERPT("CAR%CHG",J) = ((AFECAR(J) - AFECAR0(J))/AFECAR0(J))*100;
AFERPT("CAR%CHG","ALL") = ((AFERPT("CAR1","ALL") - AFERPT("CAR0","ALL"))/AFERPT("CAR0","ALL"))*100;
AFERPT("TRUCK0",J) = AFETRK0(J);
AFERPT("TRUCK0","ALL") = sum((IT,J), X0(IT,J))/sum((IT,J), X0(IT,J)/MPG(IT,J));
AFERPT("TRUCK1",J) = AFETRK(J);
AFERPT("TRUCK1","ALL") = sum((IT,J), HP.l(IT,J)*X0(IT,J))/sum((IT,J), HP.l(IT,J)*X0(IT,J)/MPG(IT,J));
AFERPT("TRK%CHG",J) = ((AFETRK(J) - AFETRK0(J))/AFETRK0(J))*100;
AFERPT("TRK%CHG","ALL") = ((AFERPT("TRUCK1","ALL") - AFERPT("TRUCK0","ALL"))/AFERPT("TRUCK0","ALL"))*100;
AFERPT("FLEET0","ALL") = AFEALL0;
AFERPT("FLEET1","ALL") = AFEALL;
AFERPT("FLEET%CHG","ALL") = ((AFEALL - AFEALL0)/AFEALL0)*100;
display KCAR, KTRK, ESUB1, ESUB2, DPX, DX, AFERPT;