diff --git a/changelog.d/fill-soi-uprating-gaps.fixed.md b/changelog.d/fill-soi-uprating-gaps.fixed.md new file mode 100644 index 00000000000..92a5a37d84e --- /dev/null +++ b/changelog.d/fill-soi-uprating-gaps.fixed.md @@ -0,0 +1 @@ +Fill the IRS Statistics of Income uprating series with Publication 1304 Table 1.4 and 1.4A actuals for every year from 2015 to their last value, and the Social Security cost-of-living index with third-quarter CPI-W for 2015 to 2021. Each series held its 2015 value through the gap, so inputs dated in or before it were uprated past it by the wrong factor. Also corrects values keyed to the wrong tax year or misread from the table (partnership and S corporation income, Social Security benefits, farm rental income), restates rounded totals exactly, and replaces the short-term capital gains placeholder with SOI net short-term capital gain, the counterpart of the long-term series. diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/alimony_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/alimony_income.yaml index c8b9947d526..28d3a3fe0a8 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/alimony_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/alimony_income.yaml @@ -1,11 +1,31 @@ description: Total alimony income. values: - 2015-01-01: 10_077_088_000 + # IRS SOI Publication 1304 Table 1.4, all returns: alimony received. Amounts + # are published in thousands of dollars. Each value is for the tax year of + # its date. + 2015-01-01: 10_077_086_000 + 2016-01-01: 10_468_433_000 + 2017-01-01: 10_381_660_000 + 2018-01-01: 11_271_656_000 + 2019-01-01: 10_810_673_000 + 2020-01-01: 9_659_488_000 2021-01-01: 8_507_104_000 metadata: unit: currency-USD label: SOI alimony income uprating: calibration.gov.cbo.income_by_source.adjusted_gross_income reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, alimony received + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, alimony received + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, alimony received + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, alimony received + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, alimony received + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, alimony received + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2021, alimony received + href: https://www.irs.gov/pub/irs-soi/21in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/employment_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/employment_income.yaml index 639c4ec6e84..5a6466b8a59 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/employment_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/employment_income.yaml @@ -1,6 +1,13 @@ description: Total employment income. values: + # IRS SOI Publication 1304 Table 1.4, all returns: salaries and wages. + # Amounts are published in thousands of dollars. Each value is for the tax + # year of its date. 2015-01-01: 7_112_222_959_000 + 2016-01-01: 7_217_425_529_000 + 2017-01-01: 7_577_563_943_000 + 2018-01-01: 7_907_550_652_000 + 2019-01-01: 8_273_071_046_000 2020-01-01: 8_416_495_535_000 2021-01-01: 9_022_352_941_000 metadata: @@ -8,5 +15,17 @@ metadata: label: SOI employment income uprating: calibration.gov.cbo.income_by_source.employment_income reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, salaries and wages + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, salaries and wages + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, salaries and wages + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, salaries and wages + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, salaries and wages + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, salaries and wages + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2021, salaries and wages + href: https://www.irs.gov/pub/irs-soi/21in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/farm_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/farm_income.yaml index af3566b3913..adb41fc5add 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/farm_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/farm_income.yaml @@ -1,11 +1,31 @@ description: Total farm income. values: - 2015-01-01: -13_963_784_000 # Net income subtract net loss - 2021-01-01: -26_141_944_000 # Net income subtract net loss + # IRS SOI Publication 1304 Table 1.4, all returns: farm net income less farm + # net loss. Amounts are published in thousands of dollars. Each value is for + # the tax year of its date. + 2015-01-01: -13_963_784_000 + 2016-01-01: -17_666_030_000 + 2017-01-01: -19_166_242_000 + 2018-01-01: -23_395_195_000 + 2019-01-01: -23_797_084_000 + 2020-01-01: -21_864_139_000 + 2021-01-01: -26_141_944_000 metadata: unit: currency-USD label: SOI farm income uprating: calibration.gov.cbo.income_by_source.adjusted_gross_income reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, farm net income and net loss + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, farm net income and net loss + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, farm net income and net loss + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, farm net income and net loss + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, farm net income and net loss + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, farm net income and net loss + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2021, farm net income and net loss + href: https://www.irs.gov/pub/irs-soi/21in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/farm_rent_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/farm_rent_income.yaml index 640062df17f..d6a24e95037 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/farm_rent_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/farm_rent_income.yaml @@ -1,11 +1,31 @@ description: Total farm rental income. values: - 2015-01-01: 4_494_377_000 # Net income subtract net loss - 2021-01-01: 6_114_025_000 # Net income subtract net loss + # IRS SOI Publication 1304 Table 1.4, all returns: farm rental net income + # less farm rental net loss. Amounts are published in thousands of dollars. + # Each value is for the tax year of its date. + 2015-01-01: 4_494_377_000 + 2016-01-01: 4_146_658_000 + 2017-01-01: 3_850_104_000 + 2018-01-01: 4_354_843_000 + 2019-01-01: 4_494_333_000 + 2020-01-01: 4_893_181_000 + 2021-01-01: 5_555_955_000 metadata: unit: currency-USD label: SOI farm rental income uprating: calibration.gov.cbo.income_by_source.adjusted_gross_income reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, farm rental net income and net loss + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, farm rental net income and net loss + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, farm rental net income and net loss + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, farm rental net income and net loss + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, farm rental net income and net loss + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, farm rental net income and net loss + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2021, farm rental net income and net loss + href: https://www.irs.gov/pub/irs-soi/21in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/long_term_capital_gains.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/long_term_capital_gains.yaml index 3f4f71214fc..96694b0c204 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/long_term_capital_gains.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/long_term_capital_gains.yaml @@ -1,12 +1,37 @@ description: Total long-term capital gains. values: + # IRS SOI Publication 1304 Table 1.4A, all returns: net long-term capital + # gain. Amounts are published in thousands of dollars. Each value is for the + # tax year of its date. 2015-01-01: 733_313_255_000 + 2016-01-01: 634_770_066_000 + 2017-01-01: 841_131_872_000 + 2018-01-01: 951_249_403_000 + 2019-01-01: 849_406_787_000 2020-01-01: 1_063_500_316_000 + 2021-01-01: 1_922_391_473_000 + 2022-01-01: 1_351_166_751_000 2023-01-01: 971_279_947_000 metadata: unit: currency-USD label: SOI long-term capital gains uprating: calibration.gov.cbo.income_by_source.net_capital_gain reference: - - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A - href: https://www.irs.gov/statistics/soi-tax-stats-individual-income-tax-returns-complete-report-publication-1304-basic-tables-part-1 + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2015, net long-term capital gain + href: https://www.irs.gov/pub/irs-soi/15in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2016, net long-term capital gain + href: https://www.irs.gov/pub/irs-soi/16in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2017, net long-term capital gain + href: https://www.irs.gov/pub/irs-soi/17in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2018, net long-term capital gain + href: https://www.irs.gov/pub/irs-soi/18in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2019, net long-term capital gain + href: https://www.irs.gov/pub/irs-soi/19in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2020, net long-term capital gain + href: https://www.irs.gov/pub/irs-soi/20in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2021, net long-term capital gain + href: https://www.irs.gov/pub/irs-soi/21in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2022, net long-term capital gain + href: https://www.irs.gov/pub/irs-soi/22in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2023, net long-term capital gain + href: https://www.irs.gov/pub/irs-soi/23in14acg.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/non_qualified_dividend_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/non_qualified_dividend_income.yaml index 4cc477806a2..ce636d6db44 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/non_qualified_dividend_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/non_qualified_dividend_income.yaml @@ -1,11 +1,28 @@ description: Total non-qualified dividend income. values: + # IRS SOI Publication 1304 Table 1.4, all returns: ordinary dividends less + # qualified dividends. Amounts are published in thousands of dollars. Each + # value is for the tax year of its date. 2015-01-01: 57_064_932_000 + 2016-01-01: 52_031_360_000 + 2017-01-01: 65_489_076_000 + 2018-01-01: 77_324_260_000 + 2019-01-01: 83_600_037_000 2020-01-01: 67_632_347_000 metadata: unit: currency-USD label: SOI non-qualified dividend income uprating: calibration.gov.cbo.income_by_source.qualified_dividend_income reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, ordinary dividends and qualified dividends + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, ordinary dividends and qualified dividends + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, ordinary dividends and qualified dividends + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, ordinary dividends and qualified dividends + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, ordinary dividends and qualified dividends + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, ordinary dividends and qualified dividends + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/partnership_s_corp_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/partnership_s_corp_income.yaml index 1c4dd795f47..5625465ec63 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/partnership_s_corp_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/partnership_s_corp_income.yaml @@ -1,11 +1,35 @@ description: Total partnership and S-corp income. values: - 2015-01-01: 629_000_000_000 - 2022-01-01: 976_000_000_000 + # IRS SOI Publication 1304 Table 1.4, all returns: partnership and S + # corporation net income less net loss (reported separately for partnerships + # and S corporations from tax year 2021). Amounts are published in thousands + # of dollars. Each value is for the tax year of its date. + 2015-01-01: 629_004_575_000 + 2016-01-01: 628_665_507_000 + 2017-01-01: 680_279_745_000 + 2018-01-01: 683_316_291_000 + 2019-01-01: 677_154_341_000 + 2020-01-01: 707_431_779_000 + 2021-01-01: 975_656_401_000 + 2022-01-01: 1_031_207_920_000 metadata: unit: currency-USD label: SOI partnership and S-corp income uprating: calibration.gov.cbo.income_by_source.self_employment_income reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, partnership and S corporation net income and net loss + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, partnership and S corporation net income and net loss + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, partnership and S corporation net income and net loss + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, partnership and S corporation net income and net loss + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, partnership and S corporation net income and net loss + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, partnership and S corporation net income and net loss + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2021, partnership and S corporation net income and net loss + href: https://www.irs.gov/pub/irs-soi/21in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2022, partnership and S corporation net income and net loss + href: https://www.irs.gov/pub/irs-soi/22in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/qualified_dividend_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/qualified_dividend_income.yaml index 8fd4e3d44c8..07f9a78f3c5 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/qualified_dividend_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/qualified_dividend_income.yaml @@ -1,11 +1,28 @@ description: Total qualified dividend income. values: + # IRS SOI Publication 1304 Table 1.4, all returns: qualified dividends. + # Amounts are published in thousands of dollars. Each value is for the tax + # year of its date. 2015-01-01: 203_187_788_000 + 2016-01-01: 202_033_967_000 + 2017-01-01: 216_846_966_000 + 2018-01-01: 243_746_121_000 + 2019-01-01: 248_190_601_000 2020-01-01: 260_244_440_000 metadata: unit: currency-USD label: SOI qualified dividend income uprating: calibration.gov.cbo.income_by_source.qualified_dividend_income reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, qualified dividends + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, qualified dividends + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, qualified dividends + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, qualified dividends + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, qualified dividends + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, qualified dividends + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/rental_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/rental_income.yaml index 4dafc3089e3..d5373e8dfc1 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/rental_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/rental_income.yaml @@ -1,11 +1,32 @@ description: Total rental/royalty net income. values: - 2015-01-01: 47_000_000_000 - 2021-01-01: 46_000_000_000 + # IRS SOI Publication 1304 Table 1.4, all returns: rent and royalty net + # income less rent and royalty net loss (rent loss includes nondeductible + # loss). Amounts are published in thousands of dollars. Each value is for the + # tax year of its date. + 2015-01-01: 47_087_912_000 + 2016-01-01: 41_633_550_000 + 2017-01-01: 45_777_589_000 + 2018-01-01: 47_348_238_000 + 2019-01-01: 47_874_852_000 + 2020-01-01: 40_035_052_000 + 2021-01-01: 46_581_312_000 metadata: unit: currency-USD label: SOI rental income uprating: calibration.gov.cbo.income_by_source.adjusted_gross_income reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, rent and royalty net income and net loss + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, rent and royalty net income and net loss + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, rent and royalty net income and net loss + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, rent and royalty net income and net loss + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, rent and royalty net income and net loss + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, rent and royalty net income and net loss + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2021, rent and royalty net income and net loss + href: https://www.irs.gov/pub/irs-soi/21in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/self_employment_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/self_employment_income.yaml index 4a7c618b63d..e7de887733e 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/self_employment_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/self_employment_income.yaml @@ -1,11 +1,28 @@ description: Total self-employment income. values: + # IRS SOI Publication 1304 Table 1.4, all returns: business or profession net + # income. Amounts are published in thousands of dollars. Each value is for + # the tax year of its date. 2015-01-01: 391_975_736_000 + 2016-01-01: 389_078_638_000 + 2017-01-01: 416_010_104_000 + 2018-01-01: 430_062_977_000 + 2019-01-01: 442_854_286_000 2020-01-01: 436_378_623_000 metadata: unit: currency-USD label: SOI self-employment income uprating: calibration.gov.cbo.income_by_source.self_employment_income reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, business or profession net income + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, business or profession net income + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, business or profession net income + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, business or profession net income + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, business or profession net income + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, business or profession net income + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/short_term_capital_gains.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/short_term_capital_gains.yaml index 59918fe6162..2aeb445e47c 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/short_term_capital_gains.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/short_term_capital_gains.yaml @@ -1,8 +1,35 @@ -description: Total short-term capital gains. Taken from the IRS PUF in the absence of a SOI target. +description: Total short-term capital gains, summed over returns with a net short-term capital gain on Form 1040 Schedule D line 7. values: - 2015-01-01: -45_000_000_000 # -72 * 63% (same uprating as long-term capital gains) - 2022-01-01: -72_000_000_000 + # IRS SOI Publication 1304 Table 1.4A, all returns: net short-term capital + # gain, which like the long-term series counts returns with a gain and leaves + # out net losses. Amounts are published in thousands of dollars. Each value + # is for the tax year of its date. + 2015-01-01: 38_164_189_000 + 2016-01-01: 38_950_727_000 + 2017-01-01: 56_760_447_000 + 2018-01-01: 50_073_309_000 + 2019-01-01: 58_699_967_000 + 2020-01-01: 150_302_155_000 + 2021-01-01: 208_522_006_000 + 2022-01-01: 77_731_595_000 metadata: unit: currency-USD label: SOI short-term capital gains uprating: calibration.gov.cbo.income_by_source.net_capital_gain + reference: + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2015, net short-term capital gain + href: https://www.irs.gov/pub/irs-soi/15in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2016, net short-term capital gain + href: https://www.irs.gov/pub/irs-soi/16in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2017, net short-term capital gain + href: https://www.irs.gov/pub/irs-soi/17in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2018, net short-term capital gain + href: https://www.irs.gov/pub/irs-soi/18in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2019, net short-term capital gain + href: https://www.irs.gov/pub/irs-soi/19in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2020, net short-term capital gain + href: https://www.irs.gov/pub/irs-soi/20in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2021, net short-term capital gain + href: https://www.irs.gov/pub/irs-soi/21in14acg.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4A, tax year 2022, net short-term capital gain + href: https://www.irs.gov/pub/irs-soi/22in14acg.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/social_security.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/social_security.yaml index 2340bea4734..2d43e8fdbb2 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/social_security.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/social_security.yaml @@ -1,11 +1,31 @@ description: Total social security. values: + # IRS SOI Publication 1304 Table 1.4, all returns: social security benefits, + # total. Amounts are published in thousands of dollars. Each value is for the + # tax year of its date. 2015-01-01: 605_152_093_000 - 2021-01-01: 774_017_713_000 + 2016-01-01: 619_856_114_000 + 2017-01-01: 644_989_570_000 + 2018-01-01: 680_495_999_000 + 2019-01-01: 718_890_477_000 + 2020-01-01: 774_017_713_000 + 2021-01-01: 791_161_174_000 metadata: unit: currency-USD label: SOI social security uprating: calibration.gov.cbo.social_security reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, social security benefits, total + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, social security benefits, total + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, social security benefits, total + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, social security benefits, total + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, social security benefits, total + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, social security benefits, total + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2021, social security benefits, total + href: https://www.irs.gov/pub/irs-soi/21in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/tax_exempt_interest_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/tax_exempt_interest_income.yaml index 678cda28a8a..1bb7e46283d 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/tax_exempt_interest_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/tax_exempt_interest_income.yaml @@ -1,11 +1,28 @@ description: Total tax-exempt interest income. values: + # IRS SOI Publication 1304 Table 1.4, all returns: tax-exempt interest. + # Amounts are published in thousands of dollars. Each value is for the tax + # year of its date. 2015-01-01: 61_871_455_000 + 2016-01-01: 60_652_535_000 + 2017-01-01: 60_058_772_000 + 2018-01-01: 60_224_030_000 + 2019-01-01: 61_575_197_000 2020-01-01: 59_449_107_000 metadata: unit: currency-USD label: SOI tax-exempt interest income uprating: calibration.gov.cbo.income_by_source.taxable_interest_and_ordinary_dividends reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, tax-exempt interest + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, tax-exempt interest + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, tax-exempt interest + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, tax-exempt interest + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, tax-exempt interest + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, tax-exempt interest + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/tax_exempt_pension_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/tax_exempt_pension_income.yaml index 5f7ff737560..32eab8f7ccf 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/tax_exempt_pension_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/tax_exempt_pension_income.yaml @@ -1,11 +1,29 @@ description: Total tax-exempt pension income. values: + # IRS SOI Publication 1304 Table 1.4, all returns: pensions and annuities, + # total less taxable. Amounts are published in thousands of dollars. Each + # value is for the tax year of its date. 2015-01-01: 479_075_149_000 + 2016-01-01: 414_400_590_000 + 2017-01-01: 442_604_495_000 + # The 2018 Form 1040 combined IRA distributions with pensions and annuities, + # so SOI has no separate figure for 2018 (Table 1.4, tax year 2019, note 3). + # Geometric mean of 2017 and 2019. + 2018-01-01: 473_418_497_000 + 2019-01-01: 506_377_761_000 2020-01-01: 580_350_454_000 metadata: unit: currency-USD label: SOI tax-exempt pension income uprating: calibration.gov.cbo.income_by_source.taxable_pension_income reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, pensions and annuities, total and taxable + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, pensions and annuities, total and taxable + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, pensions and annuities, total and taxable + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, pensions and annuities, total and taxable + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, pensions and annuities, total and taxable + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/taxable_interest_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/taxable_interest_income.yaml index 86bdcc5313e..60db1b52a15 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/taxable_interest_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/taxable_interest_income.yaml @@ -1,11 +1,28 @@ description: Total taxable interest income. values: + # IRS SOI Publication 1304 Table 1.4, all returns: taxable interest. Amounts + # are published in thousands of dollars. Each value is for the tax year of + # its date. 2015-01-01: 95_881_223_000 + 2016-01-01: 96_640_233_000 + 2017-01-01: 106_055_367_000 + 2018-01-01: 128_582_739_000 + 2019-01-01: 153_253_476_000 2020-01-01: 127_375_994_000 metadata: unit: currency-USD label: SOI taxable interest income uprating: calibration.gov.cbo.income_by_source.taxable_interest_and_ordinary_dividends reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, taxable interest + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, taxable interest + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, taxable interest + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, taxable interest + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, taxable interest + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, taxable interest + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/taxable_pension_income.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/taxable_pension_income.yaml index 7a86dca62f4..d8c699cb6dd 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/taxable_pension_income.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/taxable_pension_income.yaml @@ -1,11 +1,32 @@ description: Total taxable pension income. values: + # IRS SOI Publication 1304 Table 1.4, all returns: pensions and annuities, + # taxable. Amounts are published in thousands of dollars. Each value is for + # the tax year of its date. 2015-01-01: 689_991_999_000 + 2016-01-01: 693_626_543_000 + 2017-01-01: 729_187_412_000 + # The 2018 Form 1040 combined IRA distributions with pensions and annuities, + # so SOI has no separate figure for 2018 (Table 1.4, tax year 2019, note 3). + # Taxable IRA distributions, pensions and annuities for 2018 times the mean + # of the pension share of that total in 2017 and 2019. + 2018-01-01: 774_661_125_000 + 2019-01-01: 784_497_673_000 2020-01-01: 827_597_726_000 metadata: unit: currency-USD label: SOI taxable pension income uprating: calibration.gov.cbo.income_by_source.taxable_pension_income reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, pensions and annuities, taxable + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, pensions and annuities, taxable + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, pensions and annuities, taxable + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, IRA distributions, pensions and annuities, taxable + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, pensions and annuities, taxable + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, pensions and annuities, taxable + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls diff --git a/policyengine_us/parameters/calibration/gov/irs/soi/unemployment_compensation.yaml b/policyengine_us/parameters/calibration/gov/irs/soi/unemployment_compensation.yaml index f797d093c9e..fbc6b9b76aa 100644 --- a/policyengine_us/parameters/calibration/gov/irs/soi/unemployment_compensation.yaml +++ b/policyengine_us/parameters/calibration/gov/irs/soi/unemployment_compensation.yaml @@ -1,16 +1,36 @@ description: Total unemployment compensation. values: + # IRS SOI Publication 1304 Table 1.4, all returns: unemployment compensation. + # Amounts are published in thousands of dollars. Each value is for the tax + # year of its date. 2015-01-01: 27_225_383_000 + 2016-01-01: 25_420_264_000 + 2017-01-01: 23_946_035_000 + 2018-01-01: 21_998_211_000 + 2019-01-01: 21_395_491_000 2020-01-01: 405_283_667_000 - 2021-01-01: 208_000_000_000 + 2021-01-01: 208_872_354_000 + 2022-01-01: 30_247_572_000 metadata: unit: currency-USD label: SOI unemployment compensation - # CBO's unemployment compensation outlays begin in 2022, a year after the - # last SOI total, so growth is applied from 2022. - uprating: - parameter: calibration.gov.cbo.unemployment_compensation - start_instant: 2022-01-01 + # CBO's unemployment compensation outlays begin in 2022, the year of the + # last SOI total, so later years grow with them. + uprating: calibration.gov.cbo.unemployment_compensation reference: - - title: IRS SOI Tax Stats - Individual Statistical Tables by Size of Adjusted Gross Income - href: https://www.irs.gov/statistics/soi-tax-stats-individual-statistical-tables-by-size-of-adjusted-gross-income + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2015, unemployment compensation + href: https://www.irs.gov/pub/irs-soi/15in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2016, unemployment compensation + href: https://www.irs.gov/pub/irs-soi/16in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2017, unemployment compensation + href: https://www.irs.gov/pub/irs-soi/17in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2018, unemployment compensation + href: https://www.irs.gov/pub/irs-soi/18in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2019, unemployment compensation + href: https://www.irs.gov/pub/irs-soi/19in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2020, unemployment compensation + href: https://www.irs.gov/pub/irs-soi/20in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2021, unemployment compensation + href: https://www.irs.gov/pub/irs-soi/21in14ar.xls + - title: IRS SOI Tax Stats - Publication 1304 Table 1.4, tax year 2022, unemployment compensation + href: https://www.irs.gov/pub/irs-soi/22in14ar.xls diff --git a/policyengine_us/parameters/gov/ssa/uprating.yaml b/policyengine_us/parameters/gov/ssa/uprating.yaml index c8940519456..25878c12ece 100644 --- a/policyengine_us/parameters/gov/ssa/uprating.yaml +++ b/policyengine_us/parameters/gov/ssa/uprating.yaml @@ -1,6 +1,16 @@ description: The US indexes Social Security benefits (OASDI and SSI) according to this schedule, annually updating based on CPI-W in the third quarter of the prior year. values: # Actuals. + 2015-01-01: 234.242 # 2014Q3: (234.525 + 234.030 + 234.170) / 3 + # 2015Q3 averaged 233.278, below 2014Q3, so no COLA was payable for 2016 + # and benefits stayed at the 2014Q3 level. The 2017 COLA (0.3%) compared + # 2016Q3 with 2014Q3. + 2016-01-01: 234.242 + 2017-01-01: 235.057 # 2016Q3: (234.771 + 234.904 + 235.495) / 3 + 2018-01-01: 239.668 # 2017Q3: (238.617 + 239.448 + 240.939) / 3 + 2019-01-01: 246.352 # 2018Q3: (246.155 + 246.336 + 246.565) / 3 + 2020-01-01: 250.2 # 2019Q3: (250.236 + 250.112 + 250.251) / 3 + 2021-01-01: 253.412 # 2020Q3: (252.636 + 253.597 + 254.004) / 3 2022-01-01: 268.421 # 2021Q3: (267.789 + 268.387 + 269.086) / 3 2023-01-01: 291.901 # 2022Q3: (292.219 + 291.629 + 291.854) / 3 2024-01-01: 301.236 # 2023Q3: (299.899 + 301.551 + 302.257) / 3 @@ -24,5 +34,9 @@ metadata: reference: - title: Historical values href: https://www.ssa.gov/oact/cola/colaseries.html + - title: SSA, Consumer Price Index (CPI-W), monthly values + href: https://www.ssa.gov/oact/STATS/cpiw.html + - title: 42 U.S. Code ยง 415(i), cost-of-living increases in benefits + href: https://www.law.cornell.edu/uscode/text/42/415#i - title: CBO Economic Projections, February 2024. href: https://www.cbo.gov/publication/59710 diff --git a/policyengine_us/tests/core/test_uprating_series.py b/policyengine_us/tests/core/test_uprating_series.py index fb7d4e7aec6..1df26050b46 100644 --- a/policyengine_us/tests/core/test_uprating_series.py +++ b/policyengine_us/tests/core/test_uprating_series.py @@ -8,7 +8,10 @@ import pytest from policyengine_core.parameters.operations.get_parameter import get_parameter -from policyengine_us.data.economic_assumptions import MICRODATA_UPRATING_OVERRIDES +from policyengine_us.data.economic_assumptions import ( + MICRODATA_UPRATING_OVERRIDES, + get_parameter_last_year, +) from policyengine_us.system import system from policyengine_us.tools.per_capita_uprating import DERIVED_FROM, per_capita_path @@ -195,3 +198,51 @@ def test_methodology_page_links_every_series_an_input_follows(series): f"{METHODOLOGY_PAGE.name} does not link {series}, which uprates at " "least one input. Say on the page which inputs follow it." ) + + +def _january_years(parameter): + return sorted( + { + int(value.instant_str[:4]) + for value in parameter.values_list + if value.instant_str.endswith("-01-01") + } + ) + + +@pytest.mark.parametrize("series", _series_that_inputs_follow()) +def test_series_has_a_january_value_for_every_year(series): + """A year with no value holds the previous one. The per-capita index then + drifts down with population across the gap and jumps when values resume, + and an input dated in or before the gap is uprated past it by the wrong + factor. The IRS SOI series once had nothing between 2015 and 2020 or + 2021.""" + years = _january_years(get_parameter(system.parameters, series)) + missing = sorted(set(range(years[0], years[-1] + 1)) - set(years)) + assert missing == [], f"{series} has no January 1 value for {missing}" + + +SOI_SERIES_UPRATED_BY_CBO = sorted( + series + for series in _series_that_inputs_follow() + if series.startswith("calibration.gov.irs.soi.") + and get_parameter(system.parameters, series).metadata.get("uprating") +) + + +@pytest.mark.parametrize("series", SOI_SERIES_UPRATED_BY_CBO) +def test_soi_series_follows_its_projection_from_its_last_authored_year(series): + """From its last authored value on, an SOI series grows with the series + in its uprating metadata, so values filled in before that year cannot + move the projection's growth.""" + total = get_parameter(system.parameters, series) + uprating = total.metadata["uprating"] + uprater = get_parameter( + system.parameters, + uprating["parameter"] if isinstance(uprating, dict) else uprating, + ) + last = get_parameter_last_year(total) + for year in range(last + 1, 2036): + assert total(f"{year}-01-01") / total(f"{last}-01-01") == pytest.approx( + uprater(f"{year}-01-01") / uprater(f"{last}-01-01"), rel=1e-12 + ) diff --git a/policyengine_us/tests/test_parameter_files.py b/policyengine_us/tests/test_parameter_files.py index 06f47a58368..2b648c6df0f 100644 --- a/policyengine_us/tests/test_parameter_files.py +++ b/policyengine_us/tests/test_parameter_files.py @@ -1,3 +1,4 @@ +import re from datetime import date from pathlib import Path @@ -32,6 +33,37 @@ date(2020, 1, 1): 1_063_500_316_000, date(2023, 1, 1): 971_279_947_000, } +SOI_DIR = PARAMETERS_DIR / "calibration/gov/irs/soi" +SOI_TABLE_1_4_FILE = re.compile( + r"https://www\.irs\.gov/pub/irs-soi/(\d{2})in14(?:ar|acg)\.xls" +) +# Values SOI did not publish. The 2018 Form 1040 combined IRA distributions +# with pensions and annuities, so 2018 pensions are estimated from 2017 and +# 2019 (each file says how). The taxable estimate also uses the 2018 table. +SOI_ESTIMATED_VALUES = { + ("taxable_pension_income.yaml", 2018), + ("tax_exempt_pension_income.yaml", 2018), +} +# Values that were once keyed to the wrong tax year or misread from the table. +# IRS SOI Publication 1304 Table 1.4, all returns, thousands of dollars: +# partnership and S corporation net income less net loss (from tax year 2021 +# the table splits partnerships from S corporations), social security benefits +# in total, and farm rental net income less net loss. +SOI_CORRECTED_VALUES = { + "partnership_s_corp_income.yaml": { + # 21in14ar: 469_816_308 - 168_152_043 + 766_681_240 - 92_689_104 + date(2021, 1, 1): 975_656_401_000, + # 22in14ar: 487_094_509 - 175_602_300 + 812_741_318 - 93_025_607 + date(2022, 1, 1): 1_031_207_920_000, + }, + "social_security.yaml": { + date(2020, 1, 1): 774_017_713_000, + date(2021, 1, 1): 791_161_174_000, + }, + # 21in14ar: 6_186_997 - 631_042. The loss column's neighbour is the + # number of returns with a loss (72_972). + "farm_rent_income.yaml": {date(2021, 1, 1): 5_555_955_000}, +} PARAMETER_SCHEMA_KEYS = { "brackets", "description", @@ -163,9 +195,35 @@ def test_soi_long_term_capital_gains_uses_latest_publication_1304_anchor(): assert values[period] == value assert max(values) >= date(2023, 1, 1) - assert parameter["metadata"]["reference"][0]["href"].endswith( - "publication-1304-basic-tables-part-1" - ) + assert [reference["href"] for reference in parameter["metadata"]["reference"]] == [ + f"https://www.irs.gov/pub/irs-soi/{period.year % 100:02d}in14acg.xls" + for period in sorted(values) + ] + + +def test_soi_series_cite_the_table_for_each_tax_year(): + """Each SOI series value is for the tax year of its date and cites that + year's Publication 1304 Table 1.4 or 1.4A file.""" + for path in sorted(SOI_DIR.glob("*.yaml")): + parameter = yaml.safe_load(path.read_text()) + if "values" not in parameter: + continue + years = {period.year for period in parameter["values"]} + cited = { + 2000 + int(match[1]) + for reference in parameter["metadata"]["reference"] + if (match := SOI_TABLE_1_4_FILE.fullmatch(reference["href"])) + } + estimated = {year for name, year in SOI_ESTIMATED_VALUES if name == path.name} + assert years - estimated <= cited, (path.name, sorted(years - cited)) + assert cited <= years, (path.name, sorted(cited - years)) + + +def test_soi_corrected_values_hold_their_table_1_4_totals(): + for filename, anchors in SOI_CORRECTED_VALUES.items(): + values = yaml.safe_load((SOI_DIR / filename).read_text())["values"] + for period, value in anchors.items(): + assert values[period] == value, (filename, period) def test_soi_agi_bands_are_keyed_to_their_table_1_1_tax_year():