$title	Applying an Import Quota in a Small Open Economy

scalar	Quota	Import quota (0=no quota) /0/;

$ontext

Small Open Economy:

Base year SAM:

Columns:
	x,y	Production
	t	Net Trade
	fd	Final demand

Rows:
	px,py	Prices of x and y
	w	Wage rate
	r	Return to capital

	x	y	t	fd
px	100		-20	-80
py		60	+20	-80
w	-60	-20		80
r	-40	-40		80

Assume Ricardo-Viner structure with fixed sectoral capital stocks.  


$model:soequota

$sectors:
	x	!	X production
	y	!	Y production
	t	!	Trade

$commodities:
	px	!	Price of X
	py	!	Price of Y
	w	!	Wage rate
	rx	!	Rental rate in X
	ry	!	Rental rate in Y
	pq$quota	!	Quota rent

$consumers:
	ra	!	Representative agent

$prod:x  s:1
	o:px	q:100
	i:w	q:60
	i:rx	q:40

$prod:y s:1
	o:py	q:60
	i:w	q:20
	i:ry	q:40

$prod:t
	o:py	q:20
	i:px	q:20
	i:pq$quota	q:20

$demand:ra s:1
	d:px	q:80
	d:py	q:80
	e:pq	q:quota
	e:w	q:80
	e:rx	q:40
	e:ry	q:40

$report:
	v:welfare	w:ra

$offtext
$sysinclude mpsgeset soequota

soequota.iterlim = 0;

$include soequota.gen
solve soequota using mcp;

soequota.iterlim = 8000;

parameter	results		Summary of results;

set	qlvl		/0*10/,
	ql(qlvl)	/0 0.0,  5 0.5, 10 1.0/;

$setglobal domain qlvl
$setglobal labels ql

results(qlvl,"ev") = na;
results(qlvl,"qrent") = na;

loop(qlvl$(ord(qlvl) gt 1),

	quota = 20 * (ord(qlvl)-1)/(card(qlvl)-1);

$include soequota.gen
	solve soequota using mcp;

	results(qlvl,"ev") = 100 * (welfare.l-1);
	results(qlvl,"qrent") = pq.l/w.l;
);


*	Terminate if GNUPLOT is not installed:

$if not exist %gams.sdir%wgnupl32.exe $exit

*	Plot results to the terminal:

$libinclude plot results

*	Plot results to a file:

$setglobal batch yes
$setglobal gp_opt1 'set term gif'
$setglobal gp_opt2 "set output 'quota.gif'"
$setglobal gp_opt3 "set size 0.8,0.8"
$libinclude plot results