TCJA after 2025#
Many provisions of the TCJA are temporary and are scheduled to end after 2025 under current-law policy. Tax policy parameters that are associated with expiring provisions and that are not inflation indexed will revert to their 2017 values in 2026. Tax policy parameters that are associated with expiring provisions and that are inflation indexed will revert to their 2017 values indexed to 2026 using a chained CPI-U inflation factor. For a list of the ending TCJA provisions, see this Congressional Research Service document: Reference Table: Expiring Provisions in the “Tax Cuts and Jobs Act” (TCJA, P.L. 115-97), which is dated November 21, 2023.
This document describes how to use the PSLmodels Tax-Calculator command-line interface tc with any compatible input dataset to analyze the post-2025 effects of alternatives to current-law policy (which calls for all temporary TCJA provisions to expire). Compatible input datasets include:
the older
cps.csv
file included in the Tax-Calculator packagethe older
puf.csv
file generated in the PSLmodels taxdata repository and available only to those with access to the 2011 IRS/SOI PUFthe newer
tmd.csv
file generated in the PSLmodels tax-microdata repository that are based on the 2015 IRS/SOI PUF and on more recent CPS data, and are available only to those with access to the 2015 IRS/SOI PUF
Note that if you are using the Python API to Tax-Calculator (as
described in the
Recipes) to
analyze the TCJA after 2025 and need to specify custom GrowFactors
after 2025, you can use the old additive-differences growdiffs
approach or you can specify a custom growfactors
file as described
here.
Before reading the rest of this document, be sure you understand how
to use the Tax-Calculator command-line tool
tc, particularly the
--baseline
and --reform
command-line options. (For complete and
up-to-date tc
documentation, enter tc --help
at the command
prompt.) Omitting the --baseline
option means the baseline policy
is current-law policy. Omitting the --reform
option means the
reform policy is current-law policy. The --tables
option produces
tables comparing taxes under the baseline policy to taxes under the
reform policy by income decile and in aggregate.
The --baseline
option is not commonly used, but it can be very
helpful in analyzing reforms that take effect beginning in 2026. Such
a reform could be analyzed relative to current-law policy (that is,
with temporary TCJA provisions expiring after 2025) by omitting the
--baseline
option. But if such a reform were to be analyzed
relative to extending all the temporary TCJA provisions beyond 2025,
then the --baseline ext.json
option would need to be used. The
ext.json
file contains the 2026
tax policy reform provisions that would extend TCJA’s temporary
provisions beyond 2025. Before using this ext.json
reform file, be
sure to read how it is generated at the end of this document.
Here are some concrete examples of using the tc
tool to analyze a
reform of interest to you that begins in 2026. The examples assume
you have named your reform file x.json
and that you are using one
of the compatible input datasets describe above. The examples will
call the input dataset z.csv
.
To analyze your reform relative to current-law policy (which means temporary TCJA provisions have expired beginning in 2026), you would execute this command:
tc z.csv 2026 --exact --tables --reform x.json
The tables would be in the z-26-#-x-#-tab.text
output file generated
by this tc
run. If you want to do custom tabulations of the micro
output data, use the --dump
, --dvars
, and --sqldb
options as
explained by the tc --help
documentation.
To analyze your reform relative to a reform that extends all TCJA temporary provisions beyond 2025, you would execute this command:
tc z.csv 2026 --exact --tables --baseline ext.json --reform ext.json+x.json
The tables would be in the z-26-ext-ext+x-#-tab.text
output file
generated by this tc
run.
And finally, you might consider creating a reform file called
end.json
that contains just the two characters {}
. This is a null
reform, which is equivalent to current-law policy, that could be used
as follows:
tc z.csv 2026 --exact --tables --baseline end.json --reform x.json
The resulting table output would be named z-26-end-x-#-tab.text
and
have the same tabular output as the z-26-#-x-#-tab.text
file. Some
people may prefer end
to #
as a way of naming current-law policy
in the context of discussing TCJA-related reforms.
How is the ext.json
file generated?
The short answer is by using the
extend_tcja.py
script.
Reading the extend_tcja.py
script will provide details on how the
values in the ext.json
file are generated.
It is important to bear in mind that the extend_tcja.py
script will
generate a different ext.json
file whenever the CBO economic
projection (incorporated in the Tax-Calculator growfactors.csv
file)
changes or whenever new historical values of policy parameters are
added to the policy_current_law.json
file thereby changing the
Policy.LAST_KNOWN_YEAR
.
The 4.0.0 version of Tax-Calculator incorporates the February 2024 CBO
economic projection and contains historical tax policy parameter values
through 2022. Future versions of Tax-Calculator that use historical
policy parameter values for 2023 and 2024 or use the February 2025 CBO
economic projection will cause the extend_tcja.py
script to generate
somewhat different 2026 parameter values in the ext.json
file.