The ptc.py script automatically reads historical data on states and ACA rating areas within states from four text files located in the data subdirectory. The files, which are written by the prepare_aca_data.py script in the data subdirectory, are as follows:
- aca_data_povline.csv contains parameters required to compute the federal poverty level for each family size in each state for each historical year. These data on the federal poverty guidelines are from this HHS webpage.
- aca_data_medicaid.csv contains information for each historical year by state on the income eligibility thresholds (expressed as a percent of the federal poverty level) for Medicaid eligibility for children of different ages and for adults. These data are adapted from the "State Medicaid and CHIP Income Eligibility Standards" PDF document at this CMS link.
- aca_data_premcalc.csv contains information about how premiums for ACA health insurance plans are calculated for each historical year by state. There is information about the number of plan rating areas, whether or not the state allows plans to vary premiums by age (to date only New York and Vermont prohibit age variation), and the maximum number of children in a family that can be charged an ACA plan premium. The data on the number of state rating areas is from this CMS webpage.
- aca_data_silvprem.csv contains the second-lowest-cost Silver plan (SLCSP) premium for each adult age and for children for each historical year in each of the 499 rating areas in the fifty states and DC. These SLCSP premiums have been systematically extracted from the interactive "Health Insurance Marketplace Calculator" maintained by the Henry J. Kaiser Family Foundation at this KFF webpage. The extraction of SLCSP premiums for 2014 was incomplete when the Kaiser calculator switched over to 2015 SLCSP premiums in the fall of 2014, and therefore, the ptc.py script should never be used to compute 2014 ACA premium tax credits. However, the extraction of SLCSP premiums for available years after 2014 has been completed and thoroughly checked using the kaiser_silvprem.py script, which can be consulted for details on how the interactive Kaiser calculator's input was manipulated and its results scraped to obtain SLCSP premiums.
The calculations of the ptc.py script for 2015 under current-law policy have been validated as described here.