**Run a Monte Carlo simulation for the costs and benefits of the early commitment program.** clear all set more off set seed 12345678 set obs 10000 **Start by generating the variable for increased enrollment.** gen incenroll_tot=(rbinomial(100, .040)/100) sum incenroll_tot, detail **Then generate the percentage of enrollment that came from HS completers and non-completers in the counterfactual case.** gen pctenr_nohs=(rbinomial(100,.1))/100 sum pctenr_nohs, detail gen pctenr_hs=1-pctenr_nohs sum pctenr_hs, detail **Increase in educational attainment for newly enrolled students.** gen somecoll=(rbinomial(100,.5))/100 sum somecoll, detail gen temp=(rbinomial(100, .60))/100 sum temp, detail gen assoc=temp*(1-somecoll) sum assoc, detail gen bach=1-somecoll-assoc sum bach, detail drop temp **Median (undiscounted) earnings between ages 25 and 64.** **Note: The SD is estimated to be one-third of the median.** **All estimates are in $1,000s.** gen earn=rnormal(1, .333) sum earn, detail replace earn=0 if earn<0 sum earn, detail gen earn_nohs=973*earn sum earn_nohs, detail gen earn_hs=1304*earn sum earn_hs, detail gen earn_somecoll=1547*earn sum earn_somecoll, detail gen earn_aa=1727*earn sum earn_aa, detail gen earn_ba=2268*earn sum earn_ba, detail **Keep three discount rates in mind: 2.2%, 3.7%, and 5.2%--which account for Weimer's recommended rates, plus 0.2% for mortality.** **Cumulative factors: 57.97% for low, 41.63% for medium, and 30.80% for high.** **Translation: $100 undiscounted is worth $57.97 at age 19.** **Create the low, medium, and high discounting earnings expectations.** foreach var in earn_nohs earn_hs earn_somecoll earn_aa earn_ba { gen `var'_low=.5797*`var' sum `var'_low, detail gen `var'_mid=.4163*`var' sum `var'_mid, detail gen `var'_hi=.3080*`var' sum `var'_hi, detail } **Labor force participation rate.** gen lfpr=(rbinomial(100, .78))/100 sum lfpr, detail **Effective federal tax rate.** gen tax=(rbinomial(100, .15))/100 sum tax, detail **Benefits resulting to overawarded students.** gen somecoll_aa=(rbinomial(100, .03))/100 sum somecoll_aa, detail gen aa_ba=(rbinomial(100, .03))/100 sum aa_ba, detail **Calculate the benefits.** **Start with the number of new students** gen n_new=2500000*incenroll_tot sum n_new, detail **Calculate total earnings by the newly enrolled students.** **Old earnings (in mil).** foreach var in _low _mid _hi { gen oldearn_new`var'=(n_new*((pctenr_hs*earn_hs`var')+(pctenr_nohs*earn_nohs`var'))/1000) sum oldearn_new`var', detail } **New earnings (in mil).** foreach var in _low _mid _hi { gen newearn_new`var'=(n_new*((somecoll*earn_somecoll`var')+(assoc*earn_aa`var')+(bach*earn_ba`var'))/1000) sum newearn_new`var', detail } **Earnings gain (in mil).** foreach var in _low _mid _hi { gen earngain_new`var'=newearn_new`var'-oldearn_new`var' sum earngain_new`var', detail } **Calculate the benefits received by the overawarded students.** gen n_old=200250 **This represents 26.7% of the currently enrolled students (30% of 2.5 million per year).** **Earnings gain (in mil).** foreach var in _low _mid _hi { gen earngain_old`var'=(n_old*((somecoll_aa*(earn_aa`var'-earn_somecoll`var'))+(aa_ba*(earn_ba`var'-earn_aa`var')))/1000) sum earngain_old`var', detail } **Calculate the total earning gain.** foreach var in _low _mid _hi { gen earngain`var'=earngain_new`var'+earngain_old`var' sum earngain`var', detail } **Calculate government revenue from both the newly enrolled and overawarded students.** foreach var in _low _mid _hi { gen govtrev_old`var'=earngain_old`var'*lfpr*tax sum govtrev_old`var', detail } foreach var in _low _mid _hi { gen govtrev_new`var'=earngain_new`var'*lfpr*tax sum govtrev_new`var', detail } **Calculate the total government revenue.** foreach var in _low _mid _hi { gen govtrev`var'=govtrev_old`var'+govtrev_new`var' sum govtrev`var', detail } **Now work on the cost estimates.** **CASE 1: Costs based on the enrollment of new students.** **Percentage of students enrolled full-time.** gen pctft_new=(rbinomial(100, .61))/100 sum pctft_new, detail gen pctpt_new=1-pctft_new sum pctpt_new, detail **Years receiving the Pell Grant.** gen yrspellft_new=rnormal(2.5, .625) sum yrspellft_new, detail gen yrspellpt_new=rnormal(1.6, .4) sum yrspellpt_new, detail **Average per-student Pell Grant per year.** gen avgpellft_new=rnormal(4326.94, (4326.94/4)) sum avgpellft_new, detail gen avgpellpt_new=rnormal(1445.43, (1445.93/4)) sum avgpellpt_new, detail **Total per student Pell Grant over time.** gen totalpellft_new=(yrspellft_new*avgpellft_new) sum totalpellft_new, detail gen totalpellpt_new=(yrspellpt_new*avgpellpt_new) sum totalpellpt_new, detail **Total Pell cost.** gen totalpell_new_low=(((totalpellft_new*n_new*pctft_new)+(totalpellpt_new*n_new*pctpt_new))/1000000)*.9902 sum totalpell_new_low, detail gen totalpell_new_mid=(((totalpellft_new*n_new*pctft_new)+(totalpellpt_new*n_new*pctpt_new))/1000000)*.9831 sum totalpell_new_mid, detail gen totalpell_new_hi=(((totalpellft_new*n_new*pctft_new)+(totalpellpt_new*n_new*pctpt_new))/1000000)*.9762 sum totalpell_new_hi, detail **CASE 2: Costs based on the enrollment of current students who wouldn't currently get the full Pell.** **26.7% of current enrollment wouldn't get the full Pell--19.0% would get a partial Pell and 7.7% would get no Pell.** **Percentage of students enrolled full-time.** gen pctft_old=(rbinomial(100, .57))/100 sum pctft_old, detail gen pctpt_old=1-pctft_old sum pctpt_old, detail **This cost estimate has two parts. Start with the cost of everyone getting the same amount and length of Pell as the new students.** **Then subtract out the partial Pell that students currently receive.** gen fullpellft_old=(totalpellft_new*n_old*pctft_old)/1000000 sum fullpellft_old, detail gen fullpellpt_old=(totalpellpt_new*n_old*pctpt_old)/1000000 sum fullpellpt_old, detail gen fullpell_old=fullpellft_old+fullpellpt_old sum fullpell_old, detail **Years receiving the Pell Grant (partial Pell).** gen yrspellft_old=rnormal(2.3, .575) sum yrspellft_old, detail gen yrspellpt_old=rnormal(1.5, .375) sum yrspellpt_old, detail **Average per-student Pell Grant per year.** gen avgpellft_old=rnormal(2644.27, (2644.27/4)) sum avgpellft_old, detail gen avgpellpt_old=rnormal(873.61, (873.61/4)) sum avgpellpt_old, detail **Total per student partial Pell Grant over time.** gen partpellft_old=(yrspellft_old*avgpellft_old) sum partpellft_old, detail gen partpellpt_old=(yrspellpt_old*avgpellpt_old) sum partpellpt_old, detail **Total partial Pell Grant** gen partpell_old=((.17/.267)*(n_old)*((partpellft_old*pctft_old)+(partpellpt_old*pctpt_old)))/1000000 sum partpell_old, detail **Total additional Pell cost for old students.** gen totalpell_old_low=(fullpell_old-partpell_old)*.9902 sum totalpell_old_low, detail gen totalpell_old_mid=(fullpell_old-partpell_old)*.9831 sum totalpell_old_mid, detail gen totalpell_old_hi=(fullpell_old-partpell_old)*.9762 sum totalpell_old_hi, detail **Add up the new and old Pell costs for the total Pell cost.** foreach var in _low _mid _hi { gen pellcost`var'=totalpell_old`var'+totalpell_new`var' sum pellcost`var', detail } **Now look at the net gain.** foreach var in _low _mid _hi { gen govtben`var'=govtrev`var'-pellcost`var' sum govtben`var', detail } **Benefit-cost ratio.** foreach var in _low _mid _hi { gen bcratio`var'=(govtrev`var'/pellcost`var') sum bcratio`var', detail } log close