/* Negative Income Tax */
new;
library nlsys;
/* Individuals differ in terms of their skill and preferences for leisure. Assume three types of individuals,
corresponding to: (1) college graduates (25%); (2) high school (50%); and (3) dropouts (25%).
College graduates are assumed to have high skill and low preference for leisure.
Dropouts are assume to have low skill and high preference for leisure. */
/* Preferences: U(c,l) = ln(c) + psi*(1-eta)^(-1)*(l^(1-eta) - 1) */
/* ========================================================================
Calibrate model initially to a representative agent; normalize wage to unity and calibrate
to 30% tax rate. This exercise is designed simply to get an initial estimate for the parameter psi*/
ttime = 5840; /* Discretionary hours available in one year */
nstar = 0.33; /* Fraction of time spent working for median worker */
wstar = 26; /* Hourly wage rate for median worker */
tstar = 0.30; /* Average tax rate facing median worker */
eta = 1.0;
psistar = (1-tstar)/( nstar*(1-nstar)^(-eta) );
subsidy = tstar*wstar*nstar*ttime;
/* ========================================================================*/
/* Now calibrate the model so as to generate a reasonable distribution of income and hours worked. */
/* Average tax rates (British Columbia)
see: http://www.taxtips.ca/tax_rates.htm#CombinedTaxRates */
tax1 = 0.40;
tax2 = 0.30;
tax3 = 0.20;
N = 3;
wage = zeros(N,1);
psi = zeros(N,1);
emp = zeros(N,1);
sub = 0;
/* Average wage rates for college, highschool and dropouts;
See Andolfatto, Ferral and Gomme (2000) */
wage[1] = 31;
wage[2] = 26;
wage[3] = 17;
/* Choose these parameters to match labour supply observed in data */
psi[1] = psistar*exp(-0.25);
psi[2] = psistar;
psi[3] = psistar*exp(0.25);
x0 = nstar|nstar|nstar|subsidy;
{ x,f,g,h } = NLSYS(&foc1,x0);
emp[1] = x[1];
emp[2] = x[2];
emp[3] = x[3];
sub = x[4];
print;
"Hours Worked:"; print;
" College: " emp[1]/ttime;
" Highschool: " emp[2]/ttime;
" Dropouts: " emp[3]/ttime;
print;
"Earnings: "; print;
" College: " wage[1]*emp[1];
" Highschool: " wage[2]*emp[2];
" Dropouts: " wage[3]*emp[3];
print;
"After-tax Income: "; print;
" College: " (1-tax1)*wage[1]*emp[1]+0.9*sub;
" Highschool: " (1-tax2)*wage[2]*emp[2]+sub;
" Dropouts: " (1-tax3)*wage[3]*emp[3]+1.1*sub;
print;
print;
gdp = ( 0.25*wage[1]*emp[1] + 0.50*wage[2]*emp[2] +0.25*wage[3]*emp[3] );
gov = sub/gdp;
"GDP (per prime age adult) : " gdp; print;
" Govt Transfers (as fraction of GDP): " gov;
print;
print;
proc foc1(x);
local fn1, fn2, fn3, fn4;
fn1 = (1-tax1)*wage[1] - ( (1-tax1)*wage[1]*x[1] + 0.90*x[4] )*psi[1]*( (ttime-x[1]) )^(-eta);
fn2 = (1-tax2)*wage[2] - ( (1-tax2)*wage[2]*x[2] + x[4] )*psi[2]*( (ttime-x[2]) )^(-eta);
fn3 = (1-tax3)*wage[3] - ( (1-tax3)*wage[3]*x[3] + 1.10*x[4] )*psi[3]*( (ttime-x[3]) )^(-eta);
fn4 = (0.25)*( tax1*wage[1]*x[1] - 0.90*x[4] )+ (0.50)*(tax2*wage[2]*x[2] - x[4] )
+ (0.25)*( tax3*wage[3]*x[3] - 1.10*x[4] );
retp( fn1|fn2|fn3|fn4 );
endp;