/* 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;