diff --git a/debug_filing_status.ipynb b/debug_filing_status.ipynb
new file mode 100644
index 0000000..3bd35dc
--- /dev/null
+++ b/debug_filing_status.ipynb
@@ -0,0 +1,1633 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "id": "2e25e958",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from policyengine_us import Microsimulation\n",
+ "import pandas as pd\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "id": "dfeec15d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "baseline = Microsimulation(dataset=\"hf://policyengine/policyengine-us-data/enhanced_cps_2024.h5\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "id": "c54a6179",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "variables = [\"household_id\", \"household_size\", \"age\", \"age_head\", \"age_spouse\", \"is_married\", \"tax_unit_dependents\", \"filing_status\", \"is_tax_unit_spouse\", \"tax_unit_married\", \"is_tax_unit_head\", \"household_weight\", \"person_household_id\", \"person_tax_unit_id\", \"tax_unit_weight\", \"tax_unit_id\", \"tax_unit_household_id\"]\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "id": "6e20ad7e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "hh_variables = [\"household_id\", \"household_size\", \"age\", \"age_head\", \"age_spouse\", \"is_married\", \"tax_unit_dependents\", \"is_tax_unit_spouse\", \"tax_unit_married\", \"is_tax_unit_head\", \"household_weight\", \"person_household_id\", \"person_tax_unit_id\", \"tax_unit_weight\", \"tax_unit_id\", \"tax_unit_household_id\"]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "id": "f4b3b6d5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "person_df = baseline.calculate_dataframe(variables, map_to=\"person\", period=2026)\n",
+ "person_df = person_df.sort_values('household_id')\n",
+ "tax_unit_df = baseline.calculate_dataframe(variables, map_to=\"tax_unit\", period=2026)\n",
+ "tax_unit_df = tax_unit_df.sort_values('household_id')\n",
+ "spm_unit_df = baseline.calculate_dataframe(hh_variables, map_to=\"spm_unit\", period=2026)\n",
+ "spm_unit_df = tax_unit_df.sort_values('household_id')\n",
+ "household_df = baseline.calculate_dataframe(hh_variables, map_to=\"household\", period=2026)\n",
+ "household_df = household_df.sort_values('household_id')\n",
+ "family_df = baseline.calculate_dataframe(hh_variables, map_to=\"family\", period=2026)\n",
+ "family_df = family_df.sort_values('household_id')\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "id": "7434dfdd",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " household_id | \n",
+ " household_size | \n",
+ " age | \n",
+ " age_head | \n",
+ " age_spouse | \n",
+ " is_married | \n",
+ " tax_unit_dependents | \n",
+ " filing_status | \n",
+ " is_tax_unit_spouse | \n",
+ " tax_unit_married | \n",
+ " is_tax_unit_head | \n",
+ " household_weight | \n",
+ " person_household_id | \n",
+ " person_tax_unit_id | \n",
+ " tax_unit_weight | \n",
+ " tax_unit_id | \n",
+ " tax_unit_household_id | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 123 | \n",
+ " 12 | \n",
+ " 2 | \n",
+ " 61.0 | \n",
+ " 63 | \n",
+ " 61 | \n",
+ " True | \n",
+ " 0 | \n",
+ " JOINT | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
+ " 9000.369141 | \n",
+ " 12 | \n",
+ " 1201 | \n",
+ " 9000.369141 | \n",
+ " 1201 | \n",
+ " 12.0 | \n",
+ "
\n",
+ " \n",
+ " | 124 | \n",
+ " 12 | \n",
+ " 2 | \n",
+ " 63.0 | \n",
+ " 63 | \n",
+ " 61 | \n",
+ " True | \n",
+ " 0 | \n",
+ " JOINT | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " 9000.369141 | \n",
+ " 12 | \n",
+ " 1201 | \n",
+ " 9000.369141 | \n",
+ " 1201 | \n",
+ " 12.0 | \n",
+ "
\n",
+ " \n",
+ " | 0 | \n",
+ " 21 | \n",
+ " 3 | \n",
+ " 57.0 | \n",
+ " 57 | \n",
+ " 57 | \n",
+ " True | \n",
+ " 0 | \n",
+ " JOINT | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " 982.614807 | \n",
+ " 21 | \n",
+ " 2101 | \n",
+ " 982.614807 | \n",
+ " 2101 | \n",
+ " 21.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 21 | \n",
+ " 3 | \n",
+ " 57.0 | \n",
+ " 57 | \n",
+ " 57 | \n",
+ " True | \n",
+ " 0 | \n",
+ " JOINT | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
+ " 982.614807 | \n",
+ " 21 | \n",
+ " 2101 | \n",
+ " 982.614807 | \n",
+ " 2101 | \n",
+ " 21.0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 21 | \n",
+ " 3 | \n",
+ " 23.0 | \n",
+ " 23 | \n",
+ " 0 | \n",
+ " True | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " 982.614807 | \n",
+ " 21 | \n",
+ " 2103 | \n",
+ " 982.614807 | \n",
+ " 2103 | \n",
+ " 21.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " household_id household_size age age_head age_spouse is_married \\\n",
+ "123 12 2 61.0 63 61 True \n",
+ "124 12 2 63.0 63 61 True \n",
+ "0 21 3 57.0 57 57 True \n",
+ "1 21 3 57.0 57 57 True \n",
+ "2 21 3 23.0 23 0 True \n",
+ "\n",
+ " tax_unit_dependents filing_status is_tax_unit_spouse tax_unit_married \\\n",
+ "123 0 JOINT True True \n",
+ "124 0 JOINT False True \n",
+ "0 0 JOINT False True \n",
+ "1 0 JOINT True True \n",
+ "2 0 SINGLE False False \n",
+ "\n",
+ " is_tax_unit_head household_weight person_household_id \\\n",
+ "123 False 9000.369141 12 \n",
+ "124 True 9000.369141 12 \n",
+ "0 True 982.614807 21 \n",
+ "1 False 982.614807 21 \n",
+ "2 True 982.614807 21 \n",
+ "\n",
+ " person_tax_unit_id tax_unit_weight tax_unit_id tax_unit_household_id \n",
+ "123 1201 9000.369141 1201 12.0 \n",
+ "124 1201 9000.369141 1201 12.0 \n",
+ "0 2101 982.614807 2101 21.0 \n",
+ "1 2101 982.614807 2101 21.0 \n",
+ "2 2103 982.614807 2103 21.0 "
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "person_df.head()\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "id": "c74945db",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " household_id | \n",
+ " household_size | \n",
+ " age | \n",
+ " age_head | \n",
+ " age_spouse | \n",
+ " is_married | \n",
+ " tax_unit_dependents | \n",
+ " filing_status | \n",
+ " is_tax_unit_spouse | \n",
+ " tax_unit_married | \n",
+ " is_tax_unit_head | \n",
+ " household_weight | \n",
+ " person_household_id | \n",
+ " person_tax_unit_id | \n",
+ " tax_unit_weight | \n",
+ " tax_unit_id | \n",
+ " tax_unit_household_id | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 2 | \n",
+ " 7.0 | \n",
+ " 1.0 | \n",
+ " 23.0 | \n",
+ " 23 | \n",
+ " 0 | \n",
+ " 0.333333 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 327.538269 | \n",
+ " 21.0 | \n",
+ " 2103.0 | \n",
+ " 982.614807 | \n",
+ " 2103 | \n",
+ " 21.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 72.0 | \n",
+ " 72 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 3801.030518 | \n",
+ " 22.0 | \n",
+ " 2201.0 | \n",
+ " 7602.061035 | \n",
+ " 2201 | \n",
+ " 22.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 56.0 | \n",
+ " 56 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 3801.030518 | \n",
+ " 22.0 | \n",
+ " 2202.0 | \n",
+ " 7602.061035 | \n",
+ " 2202 | \n",
+ " 22.0 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 29.0 | \n",
+ " 29 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 4572.396973 | \n",
+ " 44.0 | \n",
+ " 4402.0 | \n",
+ " 18289.587891 | \n",
+ " 4402 | \n",
+ " 44.0 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 26.0 | \n",
+ " 26 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 4572.396973 | \n",
+ " 44.0 | \n",
+ " 4403.0 | \n",
+ " 18289.587891 | \n",
+ " 4403 | \n",
+ " 44.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " household_id household_size age age_head age_spouse is_married \\\n",
+ "2 7.0 1.0 23.0 23 0 0.333333 \n",
+ "3 11.0 1.0 72.0 72 0 0.000000 \n",
+ "4 11.0 1.0 56.0 56 0 0.000000 \n",
+ "12 11.0 1.0 29.0 29 0 0.000000 \n",
+ "13 11.0 1.0 26.0 26 0 0.000000 \n",
+ "\n",
+ " tax_unit_dependents filing_status is_tax_unit_spouse tax_unit_married \\\n",
+ "2 0 SINGLE 0.0 False \n",
+ "3 0 SINGLE 0.0 False \n",
+ "4 0 SINGLE 0.0 False \n",
+ "12 0 SINGLE 0.0 False \n",
+ "13 0 SINGLE 0.0 False \n",
+ "\n",
+ " is_tax_unit_head household_weight person_household_id \\\n",
+ "2 1.0 327.538269 21.0 \n",
+ "3 1.0 3801.030518 22.0 \n",
+ "4 1.0 3801.030518 22.0 \n",
+ "12 1.0 4572.396973 44.0 \n",
+ "13 1.0 4572.396973 44.0 \n",
+ "\n",
+ " person_tax_unit_id tax_unit_weight tax_unit_id tax_unit_household_id \n",
+ "2 2103.0 982.614807 2103 21.0 \n",
+ "3 2201.0 7602.061035 2201 22.0 \n",
+ "4 2202.0 7602.061035 2202 22.0 \n",
+ "12 4402.0 18289.587891 4402 44.0 \n",
+ "13 4403.0 18289.587891 4403 44.0 "
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "tax_unit_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "id": "82f42bf5",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " household_id | \n",
+ " household_size | \n",
+ " age | \n",
+ " age_head | \n",
+ " age_spouse | \n",
+ " is_married | \n",
+ " tax_unit_dependents | \n",
+ " is_tax_unit_spouse | \n",
+ " tax_unit_married | \n",
+ " is_tax_unit_head | \n",
+ " household_weight | \n",
+ " person_household_id | \n",
+ " person_tax_unit_id | \n",
+ " tax_unit_weight | \n",
+ " tax_unit_id | \n",
+ " tax_unit_household_id | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 12 | \n",
+ " 2 | \n",
+ " 124.0 | \n",
+ " 63.0 | \n",
+ " 61.0 | \n",
+ " 1.0 | \n",
+ " 0.0 | \n",
+ " 1.0 | \n",
+ " 1.0 | \n",
+ " 1.0 | \n",
+ " 9000.369141 | \n",
+ " 24.0 | \n",
+ " 2402.0 | \n",
+ " 9000.369141 | \n",
+ " 1201.0 | \n",
+ " 12.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 21 | \n",
+ " 3 | \n",
+ " 137.0 | \n",
+ " 80.0 | \n",
+ " 57.0 | \n",
+ " 1.0 | \n",
+ " 0.0 | \n",
+ " 1.0 | \n",
+ " 1.0 | \n",
+ " 2.0 | \n",
+ " 982.614807 | \n",
+ " 63.0 | \n",
+ " 6305.0 | \n",
+ " 1965.229614 | \n",
+ " 4204.0 | \n",
+ " 42.0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 22 | \n",
+ " 2 | \n",
+ " 128.0 | \n",
+ " 128.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 2.0 | \n",
+ " 7602.061035 | \n",
+ " 44.0 | \n",
+ " 4403.0 | \n",
+ " 15204.122070 | \n",
+ " 4403.0 | \n",
+ " 44.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 30 | \n",
+ " 2 | \n",
+ " 139.0 | \n",
+ " 139.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 2.0 | \n",
+ " 5251.430664 | \n",
+ " 60.0 | \n",
+ " 6003.0 | \n",
+ " 10502.861328 | \n",
+ " 6003.0 | \n",
+ " 60.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 36 | \n",
+ " 3 | \n",
+ " 151.0 | \n",
+ " 151.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 3.0 | \n",
+ " 3196.937012 | \n",
+ " 108.0 | \n",
+ " 10806.0 | \n",
+ " 9590.811035 | \n",
+ " 10806.0 | \n",
+ " 108.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " household_id household_size age age_head age_spouse is_married \\\n",
+ "0 12 2 124.0 63.0 61.0 1.0 \n",
+ "1 21 3 137.0 80.0 57.0 1.0 \n",
+ "2 22 2 128.0 128.0 0.0 0.0 \n",
+ "3 30 2 139.0 139.0 0.0 0.0 \n",
+ "4 36 3 151.0 151.0 0.0 0.0 \n",
+ "\n",
+ " tax_unit_dependents is_tax_unit_spouse tax_unit_married \\\n",
+ "0 0.0 1.0 1.0 \n",
+ "1 0.0 1.0 1.0 \n",
+ "2 0.0 0.0 0.0 \n",
+ "3 0.0 0.0 0.0 \n",
+ "4 0.0 0.0 0.0 \n",
+ "\n",
+ " is_tax_unit_head household_weight person_household_id \\\n",
+ "0 1.0 9000.369141 24.0 \n",
+ "1 2.0 982.614807 63.0 \n",
+ "2 2.0 7602.061035 44.0 \n",
+ "3 2.0 5251.430664 60.0 \n",
+ "4 3.0 3196.937012 108.0 \n",
+ "\n",
+ " person_tax_unit_id tax_unit_weight tax_unit_id tax_unit_household_id \n",
+ "0 2402.0 9000.369141 1201.0 12.0 \n",
+ "1 6305.0 1965.229614 4204.0 42.0 \n",
+ "2 4403.0 15204.122070 4403.0 44.0 \n",
+ "3 6003.0 10502.861328 6003.0 60.0 \n",
+ "4 10806.0 9590.811035 10806.0 108.0 "
+ ]
+ },
+ "execution_count": 45,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "household_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "id": "ee1e8d67",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " household_id | \n",
+ " household_size | \n",
+ " age | \n",
+ " age_head | \n",
+ " age_spouse | \n",
+ " is_married | \n",
+ " tax_unit_dependents | \n",
+ " filing_status | \n",
+ " is_tax_unit_spouse | \n",
+ " tax_unit_married | \n",
+ " is_tax_unit_head | \n",
+ " household_weight | \n",
+ " person_household_id | \n",
+ " person_tax_unit_id | \n",
+ " tax_unit_weight | \n",
+ " tax_unit_id | \n",
+ " tax_unit_household_id | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 2 | \n",
+ " 7.0 | \n",
+ " 1.0 | \n",
+ " 23.0 | \n",
+ " 23 | \n",
+ " 0 | \n",
+ " 0.333333 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 327.538269 | \n",
+ " 21.0 | \n",
+ " 2103.0 | \n",
+ " 982.614807 | \n",
+ " 2103 | \n",
+ " 21.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 72.0 | \n",
+ " 72 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 3801.030518 | \n",
+ " 22.0 | \n",
+ " 2201.0 | \n",
+ " 7602.061035 | \n",
+ " 2201 | \n",
+ " 22.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 56.0 | \n",
+ " 56 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 3801.030518 | \n",
+ " 22.0 | \n",
+ " 2202.0 | \n",
+ " 7602.061035 | \n",
+ " 2202 | \n",
+ " 22.0 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 29.0 | \n",
+ " 29 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 4572.396973 | \n",
+ " 44.0 | \n",
+ " 4402.0 | \n",
+ " 18289.587891 | \n",
+ " 4402 | \n",
+ " 44.0 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 26.0 | \n",
+ " 26 | \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 4572.396973 | \n",
+ " 44.0 | \n",
+ " 4403.0 | \n",
+ " 18289.587891 | \n",
+ " 4403 | \n",
+ " 44.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " household_id household_size age age_head age_spouse is_married \\\n",
+ "2 7.0 1.0 23.0 23 0 0.333333 \n",
+ "3 11.0 1.0 72.0 72 0 0.000000 \n",
+ "4 11.0 1.0 56.0 56 0 0.000000 \n",
+ "12 11.0 1.0 29.0 29 0 0.000000 \n",
+ "13 11.0 1.0 26.0 26 0 0.000000 \n",
+ "\n",
+ " tax_unit_dependents filing_status is_tax_unit_spouse tax_unit_married \\\n",
+ "2 0 SINGLE 0.0 False \n",
+ "3 0 SINGLE 0.0 False \n",
+ "4 0 SINGLE 0.0 False \n",
+ "12 0 SINGLE 0.0 False \n",
+ "13 0 SINGLE 0.0 False \n",
+ "\n",
+ " is_tax_unit_head household_weight person_household_id \\\n",
+ "2 1.0 327.538269 21.0 \n",
+ "3 1.0 3801.030518 22.0 \n",
+ "4 1.0 3801.030518 22.0 \n",
+ "12 1.0 4572.396973 44.0 \n",
+ "13 1.0 4572.396973 44.0 \n",
+ "\n",
+ " person_tax_unit_id tax_unit_weight tax_unit_id tax_unit_household_id \n",
+ "2 2103.0 982.614807 2103 21.0 \n",
+ "3 2201.0 7602.061035 2201 22.0 \n",
+ "4 2202.0 7602.061035 2202 22.0 \n",
+ "12 4402.0 18289.587891 4402 44.0 \n",
+ "13 4403.0 18289.587891 4403 44.0 "
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "spm_unit_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "id": "1cba4dff",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " household_id | \n",
+ " household_size | \n",
+ " age | \n",
+ " age_head | \n",
+ " age_spouse | \n",
+ " is_married | \n",
+ " tax_unit_dependents | \n",
+ " is_tax_unit_spouse | \n",
+ " tax_unit_married | \n",
+ " is_tax_unit_head | \n",
+ " household_weight | \n",
+ " person_household_id | \n",
+ " person_tax_unit_id | \n",
+ " tax_unit_weight | \n",
+ " tax_unit_id | \n",
+ " tax_unit_household_id | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 2 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 72.0 | \n",
+ " 72.0 | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 1.0 | \n",
+ " 3801.030518 | \n",
+ " 22.0 | \n",
+ " 2201.0 | \n",
+ " 7602.061035 | \n",
+ " 2201.0 | \n",
+ " 22.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 56.0 | \n",
+ " 56.0 | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 1.0 | \n",
+ " 3801.030518 | \n",
+ " 22.0 | \n",
+ " 2202.0 | \n",
+ " 7602.061035 | \n",
+ " 2202.0 | \n",
+ " 22.0 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 26.0 | \n",
+ " 26.0 | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 1.0 | \n",
+ " 4572.396973 | \n",
+ " 44.0 | \n",
+ " 4403.0 | \n",
+ " 18289.587891 | \n",
+ " 4403.0 | \n",
+ " 44.0 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 5.0 | \n",
+ " 27.0 | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 0.5 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 4572.396973 | \n",
+ " 44.0 | \n",
+ " 4401.0 | \n",
+ " 9144.793945 | \n",
+ " 2200.5 | \n",
+ " 22.0 | \n",
+ "
\n",
+ " \n",
+ " | 0 | \n",
+ " 12.0 | \n",
+ " 2.0 | \n",
+ " 124.0 | \n",
+ " 63.0 | \n",
+ " 61.0 | \n",
+ " True | \n",
+ " 0.0 | \n",
+ " 1.0 | \n",
+ " 1.0 | \n",
+ " 1.0 | \n",
+ " 9000.369141 | \n",
+ " 24.0 | \n",
+ " 2402.0 | \n",
+ " 9000.369141 | \n",
+ " 1201.0 | \n",
+ " 12.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " household_id household_size age age_head age_spouse is_married \\\n",
+ "2 11.0 1.0 72.0 72.0 0.0 False \n",
+ "3 11.0 1.0 56.0 56.0 0.0 False \n",
+ "8 11.0 1.0 26.0 26.0 0.0 False \n",
+ "9 11.0 1.0 5.0 27.0 0.0 False \n",
+ "0 12.0 2.0 124.0 63.0 61.0 True \n",
+ "\n",
+ " tax_unit_dependents is_tax_unit_spouse tax_unit_married \\\n",
+ "2 0.0 0.0 0.0 \n",
+ "3 0.0 0.0 0.0 \n",
+ "8 0.0 0.0 0.0 \n",
+ "9 0.5 0.0 0.0 \n",
+ "0 0.0 1.0 1.0 \n",
+ "\n",
+ " is_tax_unit_head household_weight person_household_id \\\n",
+ "2 1.0 3801.030518 22.0 \n",
+ "3 1.0 3801.030518 22.0 \n",
+ "8 1.0 4572.396973 44.0 \n",
+ "9 0.0 4572.396973 44.0 \n",
+ "0 1.0 9000.369141 24.0 \n",
+ "\n",
+ " person_tax_unit_id tax_unit_weight tax_unit_id tax_unit_household_id \n",
+ "2 2201.0 7602.061035 2201.0 22.0 \n",
+ "3 2202.0 7602.061035 2202.0 22.0 \n",
+ "8 4403.0 18289.587891 4403.0 44.0 \n",
+ "9 4401.0 9144.793945 2200.5 22.0 \n",
+ "0 2402.0 9000.369141 1201.0 12.0 "
+ ]
+ },
+ "execution_count": 47,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "family_df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fb996d8c",
+ "metadata": {},
+ "source": [
+ "# Looking into specific households "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 131,
+ "id": "3a287fe2",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " household_id | \n",
+ " tax_unit_id | \n",
+ " age | \n",
+ " is_dependent | \n",
+ " is_head | \n",
+ " is_spouse | \n",
+ " is_married | \n",
+ " ssn_card_type | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 123 | \n",
+ " 12 | \n",
+ " 1201 | \n",
+ " 61.0 | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " CITIZEN | \n",
+ "
\n",
+ " \n",
+ " | 124 | \n",
+ " 12 | \n",
+ " 1201 | \n",
+ " 63.0 | \n",
+ " False | \n",
+ " True | \n",
+ " False | \n",
+ " True | \n",
+ " CITIZEN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " household_id tax_unit_id age is_dependent is_head is_spouse \\\n",
+ "123 12 1201 61.0 False False True \n",
+ "124 12 1201 63.0 False True False \n",
+ "\n",
+ " is_married ssn_card_type \n",
+ "123 True CITIZEN \n",
+ "124 True CITIZEN "
+ ]
+ },
+ "execution_count": 131,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "person_df[person_df['household_id'] == 12]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "id": "3101feb6",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " household_id | \n",
+ " household_size | \n",
+ " age | \n",
+ " age_head | \n",
+ " age_spouse | \n",
+ " is_married | \n",
+ " tax_unit_dependents | \n",
+ " filing_status | \n",
+ " is_tax_unit_spouse | \n",
+ " tax_unit_married | \n",
+ " is_tax_unit_head | \n",
+ " household_weight | \n",
+ " person_household_id | \n",
+ " person_tax_unit_id | \n",
+ " tax_unit_weight | \n",
+ " tax_unit_id | \n",
+ " tax_unit_household_id | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 12.0 | \n",
+ " 2.0 | \n",
+ " 124.0 | \n",
+ " 63 | \n",
+ " 61 | \n",
+ " 1.0 | \n",
+ " 0 | \n",
+ " JOINT | \n",
+ " 1.0 | \n",
+ " True | \n",
+ " 1.0 | \n",
+ " 9000.369141 | \n",
+ " 24.0 | \n",
+ " 2402.0 | \n",
+ " 9000.369141 | \n",
+ " 1201 | \n",
+ " 12.0 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " 12.0 | \n",
+ " 1.0 | \n",
+ " 85.0 | \n",
+ " 85 | \n",
+ " 0 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 1065.645671 | \n",
+ " 36.0 | \n",
+ " 3601.0 | \n",
+ " 3196.937012 | \n",
+ " 3601 | \n",
+ " 36.0 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " 12.0 | \n",
+ " 1.0 | \n",
+ " 24.0 | \n",
+ " 24 | \n",
+ " 0 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 1065.645671 | \n",
+ " 36.0 | \n",
+ " 3602.0 | \n",
+ " 3196.937012 | \n",
+ " 3602 | \n",
+ " 36.0 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " 12.0 | \n",
+ " 1.0 | \n",
+ " 42.0 | \n",
+ " 42 | \n",
+ " 0 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 1065.645671 | \n",
+ " 36.0 | \n",
+ " 3603.0 | \n",
+ " 3196.937012 | \n",
+ " 3603 | \n",
+ " 36.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " household_id household_size age age_head age_spouse is_married \\\n",
+ "0 12.0 2.0 124.0 63 61 1.0 \n",
+ "7 12.0 1.0 85.0 85 0 0.0 \n",
+ "8 12.0 1.0 24.0 24 0 0.0 \n",
+ "9 12.0 1.0 42.0 42 0 0.0 \n",
+ "\n",
+ " tax_unit_dependents filing_status is_tax_unit_spouse tax_unit_married \\\n",
+ "0 0 JOINT 1.0 True \n",
+ "7 0 SINGLE 0.0 False \n",
+ "8 0 SINGLE 0.0 False \n",
+ "9 0 SINGLE 0.0 False \n",
+ "\n",
+ " is_tax_unit_head household_weight person_household_id \\\n",
+ "0 1.0 9000.369141 24.0 \n",
+ "7 1.0 1065.645671 36.0 \n",
+ "8 1.0 1065.645671 36.0 \n",
+ "9 1.0 1065.645671 36.0 \n",
+ "\n",
+ " person_tax_unit_id tax_unit_weight tax_unit_id tax_unit_household_id \n",
+ "0 2402.0 9000.369141 1201 12.0 \n",
+ "7 3601.0 3196.937012 3601 36.0 \n",
+ "8 3602.0 3196.937012 3602 36.0 \n",
+ "9 3603.0 3196.937012 3603 36.0 "
+ ]
+ },
+ "execution_count": 49,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "tax_unit_df[tax_unit_df['household_id'] == 12]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "id": "2553a99b",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " household_id | \n",
+ " household_size | \n",
+ " age | \n",
+ " age_head | \n",
+ " age_spouse | \n",
+ " is_married | \n",
+ " tax_unit_dependents | \n",
+ " is_tax_unit_spouse | \n",
+ " tax_unit_married | \n",
+ " is_tax_unit_head | \n",
+ " household_weight | \n",
+ " person_household_id | \n",
+ " person_tax_unit_id | \n",
+ " tax_unit_weight | \n",
+ " tax_unit_id | \n",
+ " tax_unit_household_id | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 12 | \n",
+ " 2 | \n",
+ " 124.0 | \n",
+ " 63.0 | \n",
+ " 61.0 | \n",
+ " 1.0 | \n",
+ " 0.0 | \n",
+ " 1.0 | \n",
+ " 1.0 | \n",
+ " 1.0 | \n",
+ " 9000.369141 | \n",
+ " 24.0 | \n",
+ " 2402.0 | \n",
+ " 9000.369141 | \n",
+ " 1201.0 | \n",
+ " 12.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " household_id household_size age age_head age_spouse is_married \\\n",
+ "0 12 2 124.0 63.0 61.0 1.0 \n",
+ "\n",
+ " tax_unit_dependents is_tax_unit_spouse tax_unit_married \\\n",
+ "0 0.0 1.0 1.0 \n",
+ "\n",
+ " is_tax_unit_head household_weight person_household_id \\\n",
+ "0 1.0 9000.369141 24.0 \n",
+ "\n",
+ " person_tax_unit_id tax_unit_weight tax_unit_id tax_unit_household_id \n",
+ "0 2402.0 9000.369141 1201.0 12.0 "
+ ]
+ },
+ "execution_count": 50,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "household_df[household_df['household_id'] == 12]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "id": "9acfc129",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " household_id | \n",
+ " household_size | \n",
+ " age | \n",
+ " age_head | \n",
+ " age_spouse | \n",
+ " is_married | \n",
+ " tax_unit_dependents | \n",
+ " filing_status | \n",
+ " is_tax_unit_spouse | \n",
+ " tax_unit_married | \n",
+ " is_tax_unit_head | \n",
+ " household_weight | \n",
+ " person_household_id | \n",
+ " person_tax_unit_id | \n",
+ " tax_unit_weight | \n",
+ " tax_unit_id | \n",
+ " tax_unit_household_id | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 12.0 | \n",
+ " 2.0 | \n",
+ " 124.0 | \n",
+ " 63 | \n",
+ " 61 | \n",
+ " 1.0 | \n",
+ " 0 | \n",
+ " JOINT | \n",
+ " 1.0 | \n",
+ " True | \n",
+ " 1.0 | \n",
+ " 9000.369141 | \n",
+ " 24.0 | \n",
+ " 2402.0 | \n",
+ " 9000.369141 | \n",
+ " 1201 | \n",
+ " 12.0 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " 12.0 | \n",
+ " 1.0 | \n",
+ " 85.0 | \n",
+ " 85 | \n",
+ " 0 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 1065.645671 | \n",
+ " 36.0 | \n",
+ " 3601.0 | \n",
+ " 3196.937012 | \n",
+ " 3601 | \n",
+ " 36.0 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " 12.0 | \n",
+ " 1.0 | \n",
+ " 24.0 | \n",
+ " 24 | \n",
+ " 0 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 1065.645671 | \n",
+ " 36.0 | \n",
+ " 3602.0 | \n",
+ " 3196.937012 | \n",
+ " 3602 | \n",
+ " 36.0 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " 12.0 | \n",
+ " 1.0 | \n",
+ " 42.0 | \n",
+ " 42 | \n",
+ " 0 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " SINGLE | \n",
+ " 0.0 | \n",
+ " False | \n",
+ " 1.0 | \n",
+ " 1065.645671 | \n",
+ " 36.0 | \n",
+ " 3603.0 | \n",
+ " 3196.937012 | \n",
+ " 3603 | \n",
+ " 36.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " household_id household_size age age_head age_spouse is_married \\\n",
+ "0 12.0 2.0 124.0 63 61 1.0 \n",
+ "7 12.0 1.0 85.0 85 0 0.0 \n",
+ "8 12.0 1.0 24.0 24 0 0.0 \n",
+ "9 12.0 1.0 42.0 42 0 0.0 \n",
+ "\n",
+ " tax_unit_dependents filing_status is_tax_unit_spouse tax_unit_married \\\n",
+ "0 0 JOINT 1.0 True \n",
+ "7 0 SINGLE 0.0 False \n",
+ "8 0 SINGLE 0.0 False \n",
+ "9 0 SINGLE 0.0 False \n",
+ "\n",
+ " is_tax_unit_head household_weight person_household_id \\\n",
+ "0 1.0 9000.369141 24.0 \n",
+ "7 1.0 1065.645671 36.0 \n",
+ "8 1.0 1065.645671 36.0 \n",
+ "9 1.0 1065.645671 36.0 \n",
+ "\n",
+ " person_tax_unit_id tax_unit_weight tax_unit_id tax_unit_household_id \n",
+ "0 2402.0 9000.369141 1201 12.0 \n",
+ "7 3601.0 3196.937012 3601 36.0 \n",
+ "8 3602.0 3196.937012 3602 36.0 \n",
+ "9 3603.0 3196.937012 3603 36.0 "
+ ]
+ },
+ "execution_count": 51,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "spm_unit_df[spm_unit_df['household_id'] == 12]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "id": "e486384a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " household_id | \n",
+ " household_size | \n",
+ " age | \n",
+ " age_head | \n",
+ " age_spouse | \n",
+ " is_married | \n",
+ " tax_unit_dependents | \n",
+ " is_tax_unit_spouse | \n",
+ " tax_unit_married | \n",
+ " is_tax_unit_head | \n",
+ " household_weight | \n",
+ " person_household_id | \n",
+ " person_tax_unit_id | \n",
+ " tax_unit_weight | \n",
+ " tax_unit_id | \n",
+ " tax_unit_household_id | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 12.0 | \n",
+ " 2.0 | \n",
+ " 124.0 | \n",
+ " 63.0 | \n",
+ " 61.0 | \n",
+ " True | \n",
+ " 0.0 | \n",
+ " 1.0 | \n",
+ " 1.0 | \n",
+ " 1.0 | \n",
+ " 9000.369141 | \n",
+ " 24.0 | \n",
+ " 2402.0 | \n",
+ " 9000.369141 | \n",
+ " 1201.0 | \n",
+ " 12.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " household_id household_size age age_head age_spouse is_married \\\n",
+ "0 12.0 2.0 124.0 63.0 61.0 True \n",
+ "\n",
+ " tax_unit_dependents is_tax_unit_spouse tax_unit_married \\\n",
+ "0 0.0 1.0 1.0 \n",
+ "\n",
+ " is_tax_unit_head household_weight person_household_id \\\n",
+ "0 1.0 9000.369141 24.0 \n",
+ "\n",
+ " person_tax_unit_id tax_unit_weight tax_unit_id tax_unit_household_id \n",
+ "0 2402.0 9000.369141 1201.0 12.0 "
+ ]
+ },
+ "execution_count": 52,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "family_df[family_df['household_id'] == 12]"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "pe",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.14"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/us/reconciliation/senate_bill/social_security_analysis.ipynb b/us/reconciliation/senate_bill/social_security_analysis.ipynb
new file mode 100644
index 0000000..1a4e325
--- /dev/null
+++ b/us/reconciliation/senate_bill/social_security_analysis.ipynb
@@ -0,0 +1,1522 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "c33646e0",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/pavelmakarchuk/anaconda3/envs/pe/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
+ " from .autonotebook import tqdm as notebook_tqdm\n"
+ ]
+ }
+ ],
+ "source": [
+ "from policyengine_us import Microsimulation\n",
+ "from policyengine_core.reforms import Reform\n",
+ "import numpy as np"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "511f6dee",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "baseline_branching_reform = Reform.from_dict(\n",
+ " {\n",
+ " \"gov.simulation.branch_to_determine_itemization\": {\n",
+ " \"2026-01-01.2100-12-31\": True\n",
+ " },\n",
+ " },\n",
+ " country_id=\"us\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "65b511cc",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "senate_bill = Reform.from_dict({\n",
+ " \"gov.irs.credits.estate.base\": {\n",
+ " \"2026-01-01.2026-12-31\": 15000000,\n",
+ " \"2027-01-01.2027-12-31\": 15600000,\n",
+ " \"2028-01-01.2028-12-31\": 15930000,\n",
+ " \"2029-01-01.2029-12-31\": 16250000,\n",
+ " \"2030-01-01.2030-12-31\": 16570000,\n",
+ " \"2031-01-01.2031-12-31\": 16900000,\n",
+ " \"2032-01-01.2032-12-31\": 17230000,\n",
+ " \"2033-01-01.2033-12-31\": 17570000,\n",
+ " \"2034-01-01.2034-12-31\": 17920000,\n",
+ " \"2035-01-01.2100-12-31\": 18270000\n",
+ " },\n",
+ " \"gov.irs.income.bracket.rates.2\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.12\n",
+ " },\n",
+ " \"gov.irs.income.bracket.rates.3\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.22\n",
+ " },\n",
+ " \"gov.irs.income.bracket.rates.4\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.24\n",
+ " },\n",
+ " \"gov.irs.income.bracket.rates.5\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.32\n",
+ " },\n",
+ " \"gov.irs.income.bracket.rates.7\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.37\n",
+ " },\n",
+ " \"gov.contrib.salt_phase_out.rate\": {\n",
+ " \"2025-01-01.2100-12-31\": 0.3\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.max.rate\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.2\n",
+ " },\n",
+ " \"gov.irs.income.exemption.amount\": {\n",
+ " \"2026-01-01.2100-12-31\": 0\n",
+ " },\n",
+ " \"gov.irs.credits.cdcc.phase_out.max\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.5\n",
+ " },\n",
+ " \"gov.irs.credits.cdcc.phase_out.min\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.35\n",
+ " },\n",
+ " \"gov.contrib.salt_phase_out.in_effect\": {\n",
+ " \"2025-01-01.2029-12-31\": True\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.ctc.in_effect\": {\n",
+ " \"2025-01-01.2100-12-31\": True\n",
+ " },\n",
+ " \"gov.contrib.salt_phase_out.floor.applies\": {\n",
+ " \"2025-01-01.2029-12-31\": True\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.misc.applies\": {\n",
+ " \"2026-01-01.2100-12-31\": False\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.max.w2_wages.rate\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.5\n",
+ " },\n",
+ " \"gov.irs.deductions.standard.amount.JOINT\": {\n",
+ " \"2025-01-01.2025-12-31\": 31500,\n",
+ " \"2026-01-01.2026-12-31\": 32600,\n",
+ " \"2027-01-01.2027-12-31\": 33400,\n",
+ " \"2028-01-01.2028-12-31\": 34100,\n",
+ " \"2029-01-01.2029-12-31\": 34800,\n",
+ " \"2030-01-01.2030-12-31\": 35500,\n",
+ " \"2031-01-01.2031-12-31\": 36200,\n",
+ " \"2032-01-01.2032-12-31\": 36900,\n",
+ " \"2033-01-01.2033-12-31\": 37700,\n",
+ " \"2034-01-01.2034-12-31\": 38400,\n",
+ " \"2035-01-01.2100-12-31\": 39200\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.cdcc.in_effect\": {\n",
+ " \"2026-01-01.2100-12-31\": True\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.amount.base[0].amount\": {\n",
+ " \"2025-01-01.2026-12-31\": 2200,\n",
+ " \"2027-01-01.2028-12-31\": 2300,\n",
+ " \"2029-01-01.2030-12-31\": 2400,\n",
+ " \"2031-01-01.2032-12-31\": 2500,\n",
+ " \"2033-01-01.2034-12-31\": 2600,\n",
+ " \"2035-01-01.2100-12-31\": 2700\n",
+ " },\n",
+ " \"gov.irs.deductions.standard.amount.SINGLE\": {\n",
+ " \"2025-01-01.2025-12-31\": 15750,\n",
+ " \"2026-01-01.2026-12-31\": 16300,\n",
+ " \"2027-01-01.2027-12-31\": 16700,\n",
+ " \"2028-01-01.2028-12-31\": 17050,\n",
+ " \"2029-01-01.2029-12-31\": 17400,\n",
+ " \"2030-01-01.2030-12-31\": 17750,\n",
+ " \"2031-01-01.2031-12-31\": 18100,\n",
+ " \"2032-01-01.2032-12-31\": 18450,\n",
+ " \"2033-01-01.2033-12-31\": 18850,\n",
+ " \"2034-01-01.2034-12-31\": 19200,\n",
+ " \"2035-01-01.2100-12-31\": 19600\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.amount.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 139000,\n",
+ " \"2027-01-01.2027-12-31\": 142500,\n",
+ " \"2028-01-01.2028-12-31\": 145500,\n",
+ " \"2029-01-01.2029-12-31\": 148400,\n",
+ " \"2030-01-01.2030-12-31\": 151300,\n",
+ " \"2031-01-01.2031-12-31\": 154300,\n",
+ " \"2032-01-01.2032-12-31\": 157400,\n",
+ " \"2033-01-01.2033-12-31\": 160500,\n",
+ " \"2034-01-01.2034-12-31\": 163700,\n",
+ " \"2035-01-01.2100-12-31\": 166900\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.1.JOINT\": {\n",
+ " \"2026-01-01.2100-12-31\": 23850\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.2.JOINT\": {\n",
+ " \"2026-01-01.2100-12-31\": 96950\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.3.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 208300,\n",
+ " \"2027-01-01.2027-12-31\": 213400,\n",
+ " \"2028-01-01.2028-12-31\": 217850,\n",
+ " \"2029-01-01.2029-12-31\": 222200,\n",
+ " \"2030-01-01.2030-12-31\": 226650,\n",
+ " \"2031-01-01.2031-12-31\": 231100,\n",
+ " \"2032-01-01.2032-12-31\": 235650,\n",
+ " \"2033-01-01.2033-12-31\": 240300,\n",
+ " \"2034-01-01.2034-12-31\": 245100,\n",
+ " \"2035-01-01.2036-12-31\": 249950\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.4.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 397650,\n",
+ " \"2027-01-01.2027-12-31\": 407450,\n",
+ " \"2028-01-01.2028-12-31\": 415900,\n",
+ " \"2029-01-01.2029-12-31\": 424250,\n",
+ " \"2030-01-01.2030-12-31\": 432700,\n",
+ " \"2031-01-01.2031-12-31\": 441250,\n",
+ " \"2032-01-01.2032-12-31\": 449900,\n",
+ " \"2033-01-01.2033-12-31\": 458800,\n",
+ " \"2034-01-01.2034-12-31\": 467950,\n",
+ " \"2035-01-01.2036-12-31\": 477150\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.5.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 512950,\n",
+ " \"2027-01-01.2027-12-31\": 525600,\n",
+ " \"2028-01-01.2028-12-31\": 536500,\n",
+ " \"2029-01-01.2029-12-31\": 547200,\n",
+ " \"2030-01-01.2030-12-31\": 558100,\n",
+ " \"2031-01-01.2031-12-31\": 569150,\n",
+ " \"2032-01-01.2032-12-31\": 580350,\n",
+ " \"2033-01-01.2033-12-31\": 591800,\n",
+ " \"2034-01-01.2034-12-31\": 603550,\n",
+ " \"2035-01-01.2037-12-31\": 615500\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.6.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 772750,\n",
+ " \"2027-01-01.2027-12-31\": 791800,\n",
+ " \"2028-01-01.2028-12-31\": 808200,\n",
+ " \"2029-01-01.2029-12-31\": 824400,\n",
+ " \"2030-01-01.2030-12-31\": 840800,\n",
+ " \"2031-01-01.2031-12-31\": 857400,\n",
+ " \"2032-01-01.2032-12-31\": 874250,\n",
+ " \"2033-01-01.2033-12-31\": 891550,\n",
+ " \"2034-01-01.2034-12-31\": 909300,\n",
+ " \"2035-01-01.2036-12-31\": 927250\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.pease.in_effect\": {\n",
+ " \"2026-01-01.2100-12-31\": True\n",
+ " },\n",
+ " \"gov.contrib.salt_phase_out.threshold.JOINT\": {\n",
+ " \"2025-01-01.2025-12-31\": 500000,\n",
+ " \"2026-01-01.2026-12-31\": 505000,\n",
+ " \"2027-01-01.2027-12-31\": 510050,\n",
+ " \"2028-01-01.2028-12-31\": 515151,\n",
+ " \"2029-01-01.2029-12-31\": 520302,\n",
+ " \"2030-01-01.2030-12-31\": 525505,\n",
+ " \"2031-01-01.2031-12-31\": 530760,\n",
+ " \"2032-01-01.2032-12-31\": 536069,\n",
+ " \"2033-01-01.2100-12-31\": 541428\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.amount.adult_dependent\": {\n",
+ " \"2026-01-01.2100-12-31\": 500\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.amount.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 89400,\n",
+ " \"2027-01-01.2027-12-31\": 91700,\n",
+ " \"2028-01-01.2028-12-31\": 93500,\n",
+ " \"2029-01-01.2029-12-31\": 95400,\n",
+ " \"2030-01-01.2030-12-31\": 97300,\n",
+ " \"2031-01-01.2031-12-31\": 99200,\n",
+ " \"2032-01-01.2032-12-31\": 101200,\n",
+ " \"2033-01-01.2033-12-31\": 103200,\n",
+ " \"2034-01-01.2034-12-31\": 105300,\n",
+ " \"2035-01-01.2100-12-31\": 107300\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.1.SINGLE\": {\n",
+ " \"2026-01-01.2100-12-31\": 11925\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.2.SINGLE\": {\n",
+ " \"2026-01-01.2100-12-31\": 48475\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.3.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 104900,\n",
+ " \"2027-01-01.2027-12-31\": 107500,\n",
+ " \"2028-01-01.2028-12-31\": 109700,\n",
+ " \"2029-01-01.2029-12-31\": 111900,\n",
+ " \"2030-01-01.2030-12-31\": 114150,\n",
+ " \"2031-01-01.2031-12-31\": 116400,\n",
+ " \"2032-01-01.2032-12-31\": 118700,\n",
+ " \"2033-01-01.2033-12-31\": 121050,\n",
+ " \"2034-01-01.2034-12-31\": 123450,\n",
+ " \"2035-01-01.2036-12-31\": 125900\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.4.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 198800,\n",
+ " \"2027-01-01.2027-12-31\": 203700,\n",
+ " \"2028-01-01.2028-12-31\": 207950,\n",
+ " \"2029-01-01.2029-12-31\": 212100,\n",
+ " \"2030-01-01.2030-12-31\": 216350,\n",
+ " \"2031-01-01.2031-12-31\": 220600,\n",
+ " \"2032-01-01.2032-12-31\": 224950,\n",
+ " \"2033-01-01.2033-12-31\": 229400,\n",
+ " \"2034-01-01.2034-12-31\": 233950,\n",
+ " \"2035-01-01.2036-12-31\": 238550\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.5.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 256450,\n",
+ " \"2027-01-01.2027-12-31\": 262800,\n",
+ " \"2028-01-01.2028-12-31\": 268250,\n",
+ " \"2029-01-01.2029-12-31\": 273600,\n",
+ " \"2030-01-01.2030-12-31\": 279050,\n",
+ " \"2031-01-01.2031-12-31\": 284550,\n",
+ " \"2032-01-01.2032-12-31\": 290150,\n",
+ " \"2033-01-01.2033-12-31\": 295900,\n",
+ " \"2034-01-01.2034-12-31\": 301750,\n",
+ " \"2035-01-01.2100-12-31\": 307750\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.6.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 643950,\n",
+ " \"2027-01-01.2027-12-31\": 659800,\n",
+ " \"2028-01-01.2028-12-31\": 673500,\n",
+ " \"2029-01-01.2029-12-31\": 687000,\n",
+ " \"2030-01-01.2030-12-31\": 700650,\n",
+ " \"2031-01-01.2031-12-31\": 714500,\n",
+ " \"2032-01-01.2032-12-31\": 728550,\n",
+ " \"2033-01-01.2033-12-31\": 742950,\n",
+ " \"2034-01-01.2034-12-31\": 757750,\n",
+ " \"2035-01-01.2036-12-31\": 772700\n",
+ " },\n",
+ " \"gov.contrib.salt_phase_out.threshold.SINGLE\": {\n",
+ " \"2025-01-01.2025-12-31\": 500000,\n",
+ " \"2026-01-01.2026-12-31\": 505000,\n",
+ " \"2027-01-01.2027-12-31\": 510050,\n",
+ " \"2028-01-01.2028-12-31\": 515151,\n",
+ " \"2029-01-01.2029-12-31\": 520302,\n",
+ " \"2030-01-01.2030-12-31\": 525505,\n",
+ " \"2031-01-01.2031-12-31\": 530760,\n",
+ " \"2032-01-01.2032-12-31\": 536068,\n",
+ " \"2033-01-01.2100-12-31\": 541428\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.casualty.active\": {\n",
+ " \"2026-01-01.2100-12-31\": False\n",
+ " },\n",
+ " \"gov.irs.deductions.standard.amount.SEPARATE\": {\n",
+ " \"2025-01-01.2025-12-31\": 15750,\n",
+ " \"2026-01-01.2026-12-31\": 16300,\n",
+ " \"2027-01-01.2027-12-31\": 16700,\n",
+ " \"2028-01-01.2028-12-31\": 17050,\n",
+ " \"2029-01-01.2029-12-31\": 17400,\n",
+ " \"2030-01-01.2030-12-31\": 17750,\n",
+ " \"2031-01-01.2031-12-31\": 18100,\n",
+ " \"2032-01-01.2032-12-31\": 18450,\n",
+ " \"2033-01-01.2033-12-31\": 18850,\n",
+ " \"2034-01-01.2034-12-31\": 19200,\n",
+ " \"2035-01-01.2100-12-31\": 19600\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.phase_out.rate\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.5\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.separate_limit\": {\n",
+ " \"2026-01-01.2026-12-31\": 639200,\n",
+ " \"2027-01-01.2027-12-31\": 662750,\n",
+ " \"2028-01-01.2028-12-31\": 676350,\n",
+ " \"2029-01-01.2029-12-31\": 689950,\n",
+ " \"2030-01-01.2030-12-31\": 703750,\n",
+ " \"2031-01-01.2031-12-31\": 717650,\n",
+ " \"2032-01-01.2032-12-31\": 731700,\n",
+ " \"2033-01-01.2033-12-31\": 746100,\n",
+ " \"2034-01-01.2034-12-31\": 760950,\n",
+ " \"2035-01-01.2100-12-31\": 776150\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.max.w2_wages.alt_rate\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.25\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.start.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 400600,\n",
+ " \"2027-01-01.2027-12-31\": 413900,\n",
+ " \"2028-01-01.2028-12-31\": 422400,\n",
+ " \"2029-01-01.2029-12-31\": 430900,\n",
+ " \"2030-01-01.2030-12-31\": 439500,\n",
+ " \"2031-01-01.2031-12-31\": 448200,\n",
+ " \"2032-01-01.2032-12-31\": 457000,\n",
+ " \"2033-01-01.2033-12-31\": 466000,\n",
+ " \"2034-01-01.2034-12-31\": 475300,\n",
+ " \"2035-01-01.2100-12-31\": 484700\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.amount.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 69600,\n",
+ " \"2027-01-01.2027-12-31\": 71300,\n",
+ " \"2028-01-01.2028-12-31\": 72700,\n",
+ " \"2029-01-01.2029-12-31\": 74200,\n",
+ " \"2030-01-01.2030-12-31\": 75700,\n",
+ " \"2031-01-01.2031-12-31\": 77200,\n",
+ " \"2032-01-01.2032-12-31\": 78700,\n",
+ " \"2033-01-01.2033-12-31\": 80200,\n",
+ " \"2034-01-01.2034-12-31\": 81800,\n",
+ " \"2035-01-01.2100-12-31\": 83500\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.1.SEPARATE\": {\n",
+ " \"2026-01-01.2100-12-31\": 11925\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.2.SEPARATE\": {\n",
+ " \"2026-01-01.2100-12-31\": 48475\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.3.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 104900,\n",
+ " \"2027-01-01.2027-12-31\": 107500,\n",
+ " \"2028-01-01.2028-12-31\": 109700,\n",
+ " \"2029-01-01.2029-12-31\": 111900,\n",
+ " \"2030-01-01.2030-12-31\": 114150,\n",
+ " \"2031-01-01.2031-12-31\": 116400,\n",
+ " \"2032-01-01.2032-12-31\": 118700,\n",
+ " \"2033-01-01.2033-12-31\": 121050,\n",
+ " \"2034-01-01.2034-12-31\": 123450,\n",
+ " \"2035-01-01.2036-12-31\": 125900\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.4.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 198800,\n",
+ " \"2027-01-01.2027-12-31\": 203700,\n",
+ " \"2028-01-01.2028-12-31\": 207950,\n",
+ " \"2029-01-01.2029-12-31\": 212100,\n",
+ " \"2030-01-01.2030-12-31\": 216350,\n",
+ " \"2031-01-01.2031-12-31\": 220600,\n",
+ " \"2032-01-01.2032-12-31\": 224950,\n",
+ " \"2033-01-01.2033-12-31\": 229400,\n",
+ " \"2034-01-01.2034-12-31\": 233950,\n",
+ " \"2035-01-01.2036-12-31\": 238550\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.5.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 256450,\n",
+ " \"2027-01-01.2027-12-31\": 262800,\n",
+ " \"2028-01-01.2028-12-31\": 268250,\n",
+ " \"2029-01-01.2029-12-31\": 273600,\n",
+ " \"2030-01-01.2030-12-31\": 279050,\n",
+ " \"2031-01-01.2031-12-31\": 284550,\n",
+ " \"2032-01-01.2032-12-31\": 290150,\n",
+ " \"2033-01-01.2033-12-31\": 295900,\n",
+ " \"2034-01-01.2034-12-31\": 301750,\n",
+ " \"2035-01-01.2100-12-31\": 307750\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.6.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 386350,\n",
+ " \"2027-01-01.2027-12-31\": 395900,\n",
+ " \"2028-01-01.2028-12-31\": 404100,\n",
+ " \"2029-01-01.2029-12-31\": 412200,\n",
+ " \"2030-01-01.2030-12-31\": 420400,\n",
+ " \"2031-01-01.2031-12-31\": 428700,\n",
+ " \"2032-01-01.2032-12-31\": 437100,\n",
+ " \"2033-01-01.2033-12-31\": 445750,\n",
+ " \"2034-01-01.2034-12-31\": 454650,\n",
+ " \"2035-01-01.2036-12-31\": 463600\n",
+ " },\n",
+ " \"gov.contrib.salt_phase_out.threshold.SEPARATE\": {\n",
+ " \"2025-01-01.2025-12-31\": 250000,\n",
+ " \"2026-01-01.2026-12-31\": 252500,\n",
+ " \"2027-01-01.2027-12-31\": 255025,\n",
+ " \"2028-01-01.2028-12-31\": 257575,\n",
+ " \"2029-01-01.2029-12-31\": 260151,\n",
+ " \"2030-01-01.2030-12-31\": 262753,\n",
+ " \"2031-01-01.2031-12-31\": 265380,\n",
+ " \"2032-01-01.2032-12-31\": 268034,\n",
+ " \"2033-01-01.2100-12-31\": 270714\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.phase_out.threshold.JOINT\": {\n",
+ " \"2026-01-01.2100-12-31\": 400000\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.refundable.individual_max\": {\n",
+ " \"2026-01-01.2026-12-31\": 1700,\n",
+ " \"2027-01-01.2028-12-31\": 1800,\n",
+ " \"2029-01-01.2031-12-31\": 1900,\n",
+ " \"2032-01-01.2033-12-31\": 2000,\n",
+ " \"2034-01-01.2100-12-31\": 2100\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.length.JOINT\": {\n",
+ " \"2026-01-01.2100-12-31\": 150000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.start.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 200300,\n",
+ " \"2027-01-01.2027-12-31\": 206950,\n",
+ " \"2028-01-01.2028-12-31\": 211200,\n",
+ " \"2029-01-01.2029-12-31\": 215450,\n",
+ " \"2030-01-01.2030-12-31\": 219750,\n",
+ " \"2031-01-01.2031-12-31\": 224100,\n",
+ " \"2032-01-01.2032-12-31\": 228500,\n",
+ " \"2033-01-01.2033-12-31\": 233000,\n",
+ " \"2034-01-01.2034-12-31\": 237650,\n",
+ " \"2035-01-01.2100-12-31\": 242350\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.phase_out.threshold.SINGLE\": {\n",
+ " \"2026-01-01.2100-12-31\": 200000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.length.SINGLE\": {\n",
+ " \"2026-01-01.2100-12-31\": 75000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.start.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 200300,\n",
+ " \"2027-01-01.2027-12-31\": 206950,\n",
+ " \"2028-01-01.2028-12-31\": 211200,\n",
+ " \"2029-01-01.2029-12-31\": 215450,\n",
+ " \"2030-01-01.2030-12-31\": 219750,\n",
+ " \"2031-01-01.2031-12-31\": 224100,\n",
+ " \"2032-01-01.2032-12-31\": 228500,\n",
+ " \"2033-01-01.2033-12-31\": 233000,\n",
+ " \"2034-01-01.2034-12-31\": 237650,\n",
+ " \"2035-01-01.2100-12-31\": 242350\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.phase_out.threshold.SEPARATE\": {\n",
+ " \"2026-01-01.2100-12-31\": 200000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.length.SEPARATE\": {\n",
+ " \"2026-01-01.2100-12-31\": 75000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.ctc.one_person_ssn_req\": {\n",
+ " \"2025-01-01.2100-12-31\": True\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.refundable.phase_in.threshold\": {\n",
+ " \"2026-01-01.2100-12-31\": 2500\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.max.business_property.rate\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.025\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.phase_out.start.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 1000000,\n",
+ " \"2027-01-01.2027-12-31\": 1040300,\n",
+ " \"2028-01-01.2028-12-31\": 1061900,\n",
+ " \"2029-01-01.2029-12-31\": 1083100,\n",
+ " \"2030-01-01.2030-12-31\": 1104700,\n",
+ " \"2031-01-01.2031-12-31\": 1126500,\n",
+ " \"2032-01-01.2032-12-31\": 1148600,\n",
+ " \"2033-01-01.2033-12-31\": 1171400,\n",
+ " \"2034-01-01.2034-12-31\": 1194700,\n",
+ " \"2035-01-01.2100-12-31\": 1218300\n",
+ " },\n",
+ " \"gov.irs.deductions.standard.amount.SURVIVING_SPOUSE\": {\n",
+ " \"2025-01-01.2025-12-31\": 31500,\n",
+ " \"2026-01-01.2026-12-31\": 32600,\n",
+ " \"2027-01-01.2027-12-31\": 33400,\n",
+ " \"2028-01-01.2028-12-31\": 34100,\n",
+ " \"2029-01-01.2029-12-31\": 34800,\n",
+ " \"2030-01-01.2030-12-31\": 35500,\n",
+ " \"2031-01-01.2031-12-31\": 36200,\n",
+ " \"2032-01-01.2032-12-31\": 36900,\n",
+ " \"2033-01-01.2033-12-31\": 37700,\n",
+ " \"2034-01-01.2034-12-31\": 38400,\n",
+ " \"2035-01-01.2100-12-31\": 39200\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.phase_out.start.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 500000,\n",
+ " \"2027-01-01.2027-12-31\": 520150,\n",
+ " \"2028-01-01.2028-12-31\": 530950,\n",
+ " \"2029-01-01.2029-12-31\": 541550,\n",
+ " \"2030-01-01.2030-12-31\": 552350,\n",
+ " \"2031-01-01.2031-12-31\": 563250,\n",
+ " \"2032-01-01.2032-12-31\": 574300,\n",
+ " \"2033-01-01.2033-12-31\": 585700,\n",
+ " \"2034-01-01.2034-12-31\": 597350,\n",
+ " \"2035-01-01.2100-12-31\": 609150\n",
+ " },\n",
+ " \"gov.irs.deductions.standard.amount.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2025-01-01.2025-12-31\": 23625,\n",
+ " \"2026-01-01.2026-12-31\": 24500,\n",
+ " \"2027-01-01.2027-12-31\": 25100,\n",
+ " \"2028-01-01.2028-12-31\": 25600,\n",
+ " \"2029-01-01.2029-12-31\": 26150,\n",
+ " \"2030-01-01.2030-12-31\": 26650,\n",
+ " \"2031-01-01.2031-12-31\": 27200,\n",
+ " \"2032-01-01.2032-12-31\": 27700,\n",
+ " \"2033-01-01.2033-12-31\": 28250,\n",
+ " \"2034-01-01.2034-12-31\": 28800,\n",
+ " \"2035-01-01.2100-12-31\": 29400\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.amount.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 139100,\n",
+ " \"2027-01-01.2027-12-31\": 142500,\n",
+ " \"2028-01-01.2028-12-31\": 145500,\n",
+ " \"2029-01-01.2029-12-31\": 148400,\n",
+ " \"2030-01-01.2030-12-31\": 151300,\n",
+ " \"2031-01-01.2031-12-31\": 154300,\n",
+ " \"2032-01-01.2032-12-31\": 157400,\n",
+ " \"2033-01-01.2033-12-31\": 160500,\n",
+ " \"2034-01-01.2034-12-31\": 163700,\n",
+ " \"2035-01-01.2100-12-31\": 166900\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.1.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2100-12-31\": 23850\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.2.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2100-12-31\": 96950\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.3.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 208300,\n",
+ " \"2027-01-01.2027-12-31\": 213400,\n",
+ " \"2028-01-01.2028-12-31\": 217850,\n",
+ " \"2029-01-01.2029-12-31\": 222200,\n",
+ " \"2030-01-01.2030-12-31\": 226650,\n",
+ " \"2031-01-01.2031-12-31\": 231100,\n",
+ " \"2032-01-01.2032-12-31\": 235650,\n",
+ " \"2033-01-01.2033-12-31\": 240300,\n",
+ " \"2034-01-01.2034-12-31\": 245100,\n",
+ " \"2035-01-01.2036-12-31\": 249950\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.4.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 397650,\n",
+ " \"2027-01-01.2027-12-31\": 407450,\n",
+ " \"2028-01-01.2028-12-31\": 415900,\n",
+ " \"2029-01-01.2029-12-31\": 424250,\n",
+ " \"2030-01-01.2030-12-31\": 432700,\n",
+ " \"2031-01-01.2031-12-31\": 441250,\n",
+ " \"2032-01-01.2032-12-31\": 449900,\n",
+ " \"2033-01-01.2033-12-31\": 458800,\n",
+ " \"2034-01-01.2034-12-31\": 467950,\n",
+ " \"2035-01-01.2036-12-31\": 477150\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.5.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 512950,\n",
+ " \"2027-01-01.2027-12-31\": 525600,\n",
+ " \"2028-01-01.2028-12-31\": 536500,\n",
+ " \"2029-01-01.2029-12-31\": 547200,\n",
+ " \"2030-01-01.2030-12-31\": 558100,\n",
+ " \"2031-01-01.2031-12-31\": 569150,\n",
+ " \"2032-01-01.2032-12-31\": 580350,\n",
+ " \"2033-01-01.2033-12-31\": 591800,\n",
+ " \"2034-01-01.2034-12-31\": 603550,\n",
+ " \"2035-01-01.2037-12-31\": 615500\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.6.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 772750,\n",
+ " \"2027-01-01.2027-12-31\": 791800,\n",
+ " \"2028-01-01.2028-12-31\": 808200,\n",
+ " \"2029-01-01.2029-12-31\": 824400,\n",
+ " \"2030-01-01.2030-12-31\": 840800,\n",
+ " \"2031-01-01.2031-12-31\": 857400,\n",
+ " \"2032-01-01.2032-12-31\": 874250,\n",
+ " \"2033-01-01.2033-12-31\": 891550,\n",
+ " \"2034-01-01.2034-12-31\": 909300,\n",
+ " \"2035-01-01.2036-12-31\": 927300\n",
+ " },\n",
+ " \"gov.contrib.salt_phase_out.threshold.SURVIVING_SPOUSE\": {\n",
+ " \"2025-01-01.2025-12-31\": 500000,\n",
+ " \"2026-01-01.2026-12-31\": 505000,\n",
+ " \"2027-01-01.2027-12-31\": 510050,\n",
+ " \"2028-01-01.2028-12-31\": 515151,\n",
+ " \"2029-01-01.2029-12-31\": 520302,\n",
+ " \"2030-01-01.2030-12-31\": 525505,\n",
+ " \"2031-01-01.2031-12-31\": 530760,\n",
+ " \"2032-01-01.2032-12-31\": 536068,\n",
+ " \"2033-01-01.2100-12-31\": 541428\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.amount.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 89400,\n",
+ " \"2027-01-01.2027-12-31\": 91700,\n",
+ " \"2028-01-01.2028-12-31\": 93600,\n",
+ " \"2029-01-01.2029-12-31\": 95400,\n",
+ " \"2030-01-01.2030-12-31\": 97300,\n",
+ " \"2031-01-01.2031-12-31\": 99200,\n",
+ " \"2032-01-01.2032-12-31\": 101200,\n",
+ " \"2033-01-01.2033-12-31\": 103200,\n",
+ " \"2034-01-01.2034-12-31\": 105300,\n",
+ " \"2035-01-01.2100-12-31\": 107300\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.phase_out.start.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 500000,\n",
+ " \"2027-01-01.2027-12-31\": 520150,\n",
+ " \"2028-01-01.2028-12-31\": 530950,\n",
+ " \"2029-01-01.2029-12-31\": 541550,\n",
+ " \"2030-01-01.2030-12-31\": 552350,\n",
+ " \"2031-01-01.2031-12-31\": 563250,\n",
+ " \"2032-01-01.2032-12-31\": 574300,\n",
+ " \"2033-01-01.2033-12-31\": 585700,\n",
+ " \"2034-01-01.2034-12-31\": 597350,\n",
+ " \"2035-01-01.2100-12-31\": 609150\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.1.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2100-12-31\": 17000\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.2.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2100-12-31\": 64850\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.3.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 104900,\n",
+ " \"2027-01-01.2027-12-31\": 107500,\n",
+ " \"2028-01-01.2028-12-31\": 109700,\n",
+ " \"2029-01-01.2029-12-31\": 111900,\n",
+ " \"2030-01-01.2030-12-31\": 114150,\n",
+ " \"2031-01-01.2031-12-31\": 116400,\n",
+ " \"2032-01-01.2032-12-31\": 118700,\n",
+ " \"2033-01-01.2033-12-31\": 121050,\n",
+ " \"2034-01-01.2034-12-31\": 123450,\n",
+ " \"2035-01-01.2036-12-31\": 125900\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.4.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 198800,\n",
+ " \"2027-01-01.2027-12-31\": 203700,\n",
+ " \"2028-01-01.2028-12-31\": 207950,\n",
+ " \"2029-01-01.2029-12-31\": 212100,\n",
+ " \"2030-01-01.2030-12-31\": 216350,\n",
+ " \"2031-01-01.2031-12-31\": 220600,\n",
+ " \"2032-01-01.2032-12-31\": 224950,\n",
+ " \"2033-01-01.2033-12-31\": 229400,\n",
+ " \"2034-01-01.2034-12-31\": 233950,\n",
+ " \"2035-01-01.2036-12-31\": 238550\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.5.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 256486,\n",
+ " \"2027-01-01.2027-12-31\": 262806,\n",
+ " \"2028-01-01.2028-12-31\": 268250,\n",
+ " \"2029-01-01.2029-12-31\": 273621,\n",
+ " \"2030-01-01.2030-12-31\": 279065,\n",
+ " \"2031-01-01.2031-12-31\": 284584,\n",
+ " \"2032-01-01.2032-12-31\": 290175,\n",
+ " \"2033-01-01.2033-12-31\": 295914,\n",
+ " \"2034-01-01.2034-12-31\": 301800,\n",
+ " \"2035-01-01.2036-12-31\": 307759\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.6.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 643950,\n",
+ " \"2027-01-01.2027-12-31\": 659800,\n",
+ " \"2028-01-01.2028-12-31\": 673500,\n",
+ " \"2029-01-01.2029-12-31\": 687000,\n",
+ " \"2030-01-01.2030-12-31\": 700650,\n",
+ " \"2031-01-01.2031-12-31\": 714500,\n",
+ " \"2032-01-01.2032-12-31\": 728550,\n",
+ " \"2033-01-01.2033-12-31\": 742950,\n",
+ " \"2034-01-01.2034-12-31\": 757750,\n",
+ " \"2035-01-01.2036-12-31\": 772700\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.tip_income_exempt.cap.JOINT\": {\n",
+ " \"2025-01-01.2100-12-31\": 25000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.tip_income_exempt.in_effect\": {\n",
+ " \"2025-01-01.2028-12-31\": True\n",
+ " },\n",
+ " \"gov.contrib.salt_phase_out.threshold.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2025-01-01.2025-12-31\": 500000,\n",
+ " \"2026-01-01.2026-12-31\": 505000,\n",
+ " \"2027-01-01.2027-12-31\": 510050,\n",
+ " \"2028-01-01.2028-12-31\": 515151,\n",
+ " \"2029-01-01.2029-12-31\": 520302,\n",
+ " \"2030-01-01.2030-12-31\": 525505,\n",
+ " \"2031-01-01.2031-12-31\": 530760,\n",
+ " \"2032-01-01.2032-12-31\": 536068,\n",
+ " \"2033-01-01.2100-12-31\": 541428\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.tip_income_exempt.cap.SINGLE\": {\n",
+ " \"2025-01-01.2100-12-31\": 25000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.interest.mortgage.cap.JOINT\": {\n",
+ " \"2026-01-01.2100-12-31\": 750000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.start.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 400600,\n",
+ " \"2027-01-01.2027-12-31\": 413900,\n",
+ " \"2028-01-01.2028-12-31\": 422400,\n",
+ " \"2029-01-01.2029-12-31\": 430900,\n",
+ " \"2030-01-01.2030-12-31\": 439500,\n",
+ " \"2031-01-01.2031-12-31\": 448200,\n",
+ " \"2032-01-01.2032-12-31\": 457000,\n",
+ " \"2033-01-01.2033-12-31\": 466000,\n",
+ " \"2034-01-01.2034-12-31\": 475300,\n",
+ " \"2035-01-01.2100-12-31\": 484700\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.phase_out.threshold.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2100-12-31\": 400000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.interest.mortgage.cap.SINGLE\": {\n",
+ " \"2026-01-01.2100-12-31\": 750000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.length.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2100-12-31\": 150000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.start.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 200300,\n",
+ " \"2027-01-01.2027-12-31\": 206950,\n",
+ " \"2028-01-01.2028-12-31\": 211200,\n",
+ " \"2029-01-01.2029-12-31\": 215450,\n",
+ " \"2030-01-01.2030-12-31\": 219750,\n",
+ " \"2031-01-01.2031-12-31\": 224100,\n",
+ " \"2032-01-01.2032-12-31\": 228500,\n",
+ " \"2033-01-01.2033-12-31\": 233000,\n",
+ " \"2034-01-01.2034-12-31\": 237650,\n",
+ " \"2035-01-01.2100-12-31\": 242350\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.qbid.deduction_floor.in_effect\": {\n",
+ " \"2026-01-01.2100-12-31\": True\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.tip_income_exempt.cap.SEPARATE\": {\n",
+ " \"2025-01-01.2100-12-31\": 25000\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.phase_out.threshold.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2100-12-31\": 200000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.length.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2100-12-31\": 75000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.interest.mortgage.cap.SEPARATE\": {\n",
+ " \"2026-01-01.2100-12-31\": 375000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.salt_and_real_estate.cap.JOINT\": {\n",
+ " \"2025-01-01.2025-12-31\": 40000,\n",
+ " \"2026-01-01.2026-12-31\": 40400,\n",
+ " \"2027-01-01.2027-12-31\": 40804,\n",
+ " \"2028-01-01.2028-12-31\": 41212,\n",
+ " \"2029-01-01.2029-12-31\": 41624,\n",
+ " \"2030-01-01.2100-12-31\": 10000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.auto_loan_interest_ald.in_effect\": {\n",
+ " \"2025-01-01.2028-12-31\": True\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.overtime_income_exempt.cap.JOINT\": {\n",
+ " \"2025-01-01.2100-12-31\": 25000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.overtime_income_exempt.in_effect\": {\n",
+ " \"2025-01-01.2028-12-31\": True\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.salt_and_real_estate.cap.SINGLE\": {\n",
+ " \"2025-01-01.2025-12-31\": 40000,\n",
+ " \"2026-01-01.2026-12-31\": 40400,\n",
+ " \"2027-01-01.2027-12-31\": 40804,\n",
+ " \"2028-01-01.2028-12-31\": 41212,\n",
+ " \"2029-01-01.2029-12-31\": 41624,\n",
+ " \"2030-01-01.2100-12-31\": 10000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.overtime_income_exempt.cap.SINGLE\": {\n",
+ " \"2025-01-01.2100-12-31\": 12500\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.salt_and_real_estate.cap.SEPARATE\": {\n",
+ " \"2025-01-01.2025-12-31\": 20000,\n",
+ " \"2026-01-01.2026-12-31\": 20200,\n",
+ " \"2027-01-01.2027-12-31\": 20402,\n",
+ " \"2028-01-01.2028-12-31\": 20606,\n",
+ " \"2029-01-01.2029-12-31\": 20812,\n",
+ " \"2030-01-01.2100-12-31\": 5000\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.phase_out.start.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 1000000,\n",
+ " \"2027-01-01.2027-12-31\": 1040300,\n",
+ " \"2028-01-01.2028-12-31\": 1061900,\n",
+ " \"2029-01-01.2029-12-31\": 1083100,\n",
+ " \"2030-01-01.2030-12-31\": 1104700,\n",
+ " \"2031-01-01.2031-12-31\": 1126500,\n",
+ " \"2032-01-01.2032-12-31\": 1148600,\n",
+ " \"2033-01-01.2033-12-31\": 1171400,\n",
+ " \"2034-01-01.2034-12-31\": 1194700,\n",
+ " \"2035-01-01.2100-12-31\": 1218300\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.overtime_income_exempt.cap.SEPARATE\": {\n",
+ " \"2025-01-01.2100-12-31\": 12500\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.tip_income_exempt.phase_out.applies\": {\n",
+ " \"2025-01-01.2028-12-31\": True\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.charity.non_itemizers_amount.JOINT\": {\n",
+ " \"2026-01-01.2100-12-31\": 2000\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.phase_out.start.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 500000,\n",
+ " \"2027-01-01.2027-12-31\": 520150,\n",
+ " \"2028-01-01.2028-12-31\": 530950,\n",
+ " \"2029-01-01.2029-12-31\": 541550,\n",
+ " \"2030-01-01.2030-12-31\": 552350,\n",
+ " \"2031-01-01.2031-12-31\": 563250,\n",
+ " \"2032-01-01.2032-12-31\": 574300,\n",
+ " \"2033-01-01.2033-12-31\": 585700,\n",
+ " \"2034-01-01.2034-12-31\": 597350,\n",
+ " \"2035-01-01.2100-12-31\": 609150\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.charity.non_itemizers_amount.SINGLE\": {\n",
+ " \"2026-01-01.2100-12-31\": 1000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.qbid.deduction_floor.amount[1].amount\": {\n",
+ " \"2027-01-01.2027-12-31\": 415,\n",
+ " \"2028-01-01.2028-12-31\": 425,\n",
+ " \"2029-01-01.2029-12-31\": 435,\n",
+ " \"2030-01-01.2030-12-31\": 440,\n",
+ " \"2031-01-01.2031-12-31\": 450,\n",
+ " \"2032-01-01.2032-12-31\": 460,\n",
+ " \"2033-01-01.2033-12-31\": 470,\n",
+ " \"2034-01-01.2034-12-31\": 480,\n",
+ " \"2035-01-01.2100-12-31\": 485\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.tip_income_exempt.cap.SURVIVING_SPOUSE\": {\n",
+ " \"2025-01-01.2100-12-31\": 25000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.charity.non_itemizers_amount.SEPARATE\": {\n",
+ " \"2026-01-01.2100-12-31\": 1000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.tip_income_exempt.cap.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2025-01-01.2100-12-31\": 25000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.interest.mortgage.cap.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2100-12-31\": 750000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.overtime_income_exempt.phase_out.applies\": {\n",
+ " \"2025-01-01.2028-12-31\": True\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.qbid.deduction_floor.amount[1].threshold\": {\n",
+ " \"2027-01-01.2027-12-31\": 1040,\n",
+ " \"2028-01-01.2028-12-31\": 1060,\n",
+ " \"2029-01-01.2029-12-31\": 1085,\n",
+ " \"2030-01-01.2030-12-31\": 1105,\n",
+ " \"2031-01-01.2031-12-31\": 1125,\n",
+ " \"2032-01-01.2032-12-31\": 1150,\n",
+ " \"2033-01-01.2033-12-31\": 1170,\n",
+ " \"2034-01-01.2034-12-31\": 1195,\n",
+ " \"2035-01-01.2100-12-31\": 1220\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.interest.mortgage.cap.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2100-12-31\": 750000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.salt_and_real_estate.cap.SURVIVING_SPOUSE\": {\n",
+ " \"2025-01-01.2025-12-31\": 40000,\n",
+ " \"2026-01-01.2026-12-31\": 40400,\n",
+ " \"2027-01-01.2027-12-31\": 40804,\n",
+ " \"2028-01-01.2028-12-31\": 41212,\n",
+ " \"2029-01-01.2029-12-31\": 41624,\n",
+ " \"2030-01-01.2100-12-31\": 10000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.additional_senior_standard_deduction.amount\": {\n",
+ " \"2025-01-01.2100-12-31\": 6000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.overtime_income_exempt.cap.SURVIVING_SPOUSE\": {\n",
+ " \"2025-01-01.2100-12-31\": 12500\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.salt_and_real_estate.cap.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2025-01-01.2025-12-31\": 40000,\n",
+ " \"2026-01-01.2026-12-31\": 40400,\n",
+ " \"2027-01-01.2027-12-31\": 40804,\n",
+ " \"2028-01-01.2028-12-31\": 41212,\n",
+ " \"2029-01-01.2029-12-31\": 41624,\n",
+ " \"2030-01-01.2100-12-31\": 10000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.cdcc.phase_out.second_start.SURVIVING_SPOUSE\": {\n",
+ " \"2025-01-01.2100-12-31\": 75000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.overtime_income_exempt.cap.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2025-01-01.2100-12-31\": 12500\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.additional_senior_standard_deduction.in_effect\": {\n",
+ " \"2025-01-01.2028-12-31\": True\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.charity.non_itemizers_amount.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2100-12-31\": 1000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.charity.non_itemizers_amount.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2100-12-31\": 1000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.cdcc.phase_out.second_increment.SURVIVING_SPOUSE\": {\n",
+ " \"2025-01-01.2100-12-31\": 2000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.tip_income_exempt.phase_out.start.SURVIVING_SPOUSE\": {\n",
+ " \"2025-01-01.2100-12-31\": 150000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.additional_senior_standard_deduction.rate.joint[1].rate\": {\n",
+ " \"2025-01-01.2100-12-31\": 0.06\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.additional_senior_standard_deduction.rate.other[1].rate\": {\n",
+ " \"2025-01-01.2100-12-31\": 0.06\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.auto_loan_interest_ald.phase_out.start.SURVIVING_SPOUSE\": {\n",
+ " \"2025-01-01.2100-12-31\": 100000\n",
+ " },\n",
+ " \"gov.contrib.reconciliation.overtime_income_exempt.phase_out.start.SURVIVING_SPOUSE\": {\n",
+ " \"2025-01-01.2100-12-31\": 150000\n",
+ " },\n",
+ " \"gov.simulation.branch_to_determine_itemization\": {\n",
+ " \"2026-01-01.2100-12-31\": True\n",
+ " },\n",
+ "}, country_id=\"us\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "cd00e024",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tcja_extension = Reform.from_dict(\n",
+ " {\n",
+ " \"gov.irs.income.bracket.rates.2\": {\"2026-01-01.2100-12-31\": 0.12},\n",
+ " \"gov.irs.income.bracket.rates.3\": {\"2026-01-01.2100-12-31\": 0.22},\n",
+ " \"gov.irs.income.bracket.rates.4\": {\"2026-01-01.2100-12-31\": 0.24},\n",
+ " \"gov.irs.income.bracket.rates.5\": {\"2026-01-01.2100-12-31\": 0.32},\n",
+ " \"gov.irs.income.bracket.rates.7\": {\"2026-01-01.2100-12-31\": 0.37},\n",
+ " \"gov.irs.deductions.qbi.max.rate\": {\"2026-01-01.2100-12-31\": 0.2},\n",
+ " \"gov.irs.income.exemption.amount\": {\"2026-01-01.2100-12-31\": 0},\n",
+ " \"gov.irs.deductions.qbi.max.w2_wages.rate\": {\"2026-01-01.2100-12-31\": 0.5},\n",
+ " \"gov.irs.deductions.standard.amount.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 30300,\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.amount.base[0].amount\": {\"2026-01-01.2100-12-31\": 2000},\n",
+ " \"gov.irs.deductions.standard.amount.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 15150,\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.amount.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 139100,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.3.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 208300,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.4.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 397650,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.5.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 512950,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.6.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 769450,\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.amount.adult_dependent\": {\"2026-01-01.2100-12-31\": 500},\n",
+ " \"gov.irs.income.amt.exemption.amount.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 89400,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.3.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 104900,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.4.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 198800,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.5.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 256450,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.6.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 641200,\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.casualty.active\": {\"2026-01-01.2100-12-31\": False},\n",
+ " \"gov.irs.deductions.standard.amount.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 15150,\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.max.w2_wages.alt_rate\": {\"2026-01-01.2100-12-31\": 0.25},\n",
+ " \"gov.irs.deductions.qbi.phase_out.start.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 409800,\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.amount.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 69500,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.3.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 104900,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.4.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 198800,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.5.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 256450,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.6.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 384700,\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.phase_out.threshold.JOINT\": {\n",
+ " \"2026-01-01.2100-12-31\": 400000\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.refundable.individual_max\": {\n",
+ " \"2026-01-01.2026-12-31\": 1800,\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.length.JOINT\": {\n",
+ " \"2026-01-01.2100-12-31\": 100000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.start.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 204900,\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.phase_out.threshold.SINGLE\": {\n",
+ " \"2026-01-01.2100-12-31\": 200000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.length.SINGLE\": {\n",
+ " \"2026-01-01.2100-12-31\": 50000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.charity.ceiling.all\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.6\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.limitation.agi_rate\": {\n",
+ " \"2026-01-01.2100-12-31\": np.inf\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.start.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 204900,\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.phase_out.threshold.SEPARATE\": {\n",
+ " \"2026-01-01.2100-12-31\": 200000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.length.SEPARATE\": {\n",
+ " \"2026-01-01.2100-12-31\": 50000\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.refundable.phase_in.threshold\": {\n",
+ " \"2026-01-01.2100-12-31\": 2500\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.max.business_property.rate\": {\n",
+ " \"2026-01-01.2100-12-31\": 0.025\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.phase_out.start.JOINT\": {\n",
+ " \"2026-01-01.2026-12-31\": 1271900,\n",
+ " },\n",
+ " \"gov.irs.deductions.standard.amount.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 30300,\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.phase_out.start.SINGLE\": {\n",
+ " \"2026-01-01.2026-12-31\": 635900,\n",
+ " },\n",
+ " \"gov.irs.deductions.standard.amount.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 22700,\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.amount.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 139100,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.3.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 208300,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.4.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 397650,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.5.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 512950,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.6.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 769450,\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.amount.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 89400,\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.phase_out.start.SEPARATE\": {\n",
+ " \"2026-01-01.2026-12-31\": 635900,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.3.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 104900,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.4.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 198800,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.5.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 256486,\n",
+ " },\n",
+ " \"gov.irs.income.bracket.thresholds.6.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 641200,\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.start.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 409800,\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.phase_out.threshold.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2100-12-31\": 400000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.length.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2100-12-31\": 100000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.start.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 204900,\n",
+ " },\n",
+ " \"gov.irs.credits.ctc.phase_out.threshold.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2100-12-31\": 200000\n",
+ " },\n",
+ " \"gov.irs.deductions.qbi.phase_out.length.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2100-12-31\": 50000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.salt_and_real_estate.cap.JOINT\": {\n",
+ " \"2026-01-01.2100-12-31\": 10000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.salt_and_real_estate.cap.SINGLE\": {\n",
+ " \"2026-01-01.2100-12-31\": 10000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.salt_and_real_estate.cap.SEPARATE\": {\n",
+ " \"2026-01-01.2100-12-31\": 5000\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.phase_out.start.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2026-12-31\": 1271900,\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.reduction.applies\": {\n",
+ " \"2026-01-01.2100-12-31\": False\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.reduction.agi_threshold.SINGLE\": {\n",
+ " \"2026-01-01.2100-12-31\": 0\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.phase_out.start.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2026-12-31\": 635900,\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.reduction.agi_threshold.JOINT\": {\n",
+ " \"2026-01-01.2100-12-31\": 0\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.reduction.agi_threshold.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2100-12-31\": 0\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.salt_and_real_estate.cap.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2100-12-31\": 10_000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.salt_and_real_estate.cap.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2100-12-31\": 10_000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.reduction.agi_threshold.SEPARATE\": {\n",
+ " \"2026-01-01.2100-12-31\": 0\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.reduction.agi_threshold.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2100-12-31\": 0\n",
+ " },\n",
+ " \"gov.irs.credits.estate.base\": {\n",
+ " \"2026-01-01.2026-12-31\": 14200000,\n",
+ " },\n",
+ " \"gov.irs.income.amt.exemption.separate_limit\": {\n",
+ " \"2026-01-01.2026-12-31\": 913900,\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.misc.applies\": {\n",
+ " \"2026-01-01.2100-12-31\": False\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.interest.mortgage.cap.JOINT\": {\n",
+ " \"2026-01-01.2100-12-31\": 750000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.interest.mortgage.cap.SINGLE\": {\n",
+ " \"2026-01-01.2100-12-31\": 750000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.interest.mortgage.cap.SEPARATE\": {\n",
+ " \"2026-01-01.2100-12-31\": 375000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.interest.mortgage.cap.SURVIVING_SPOUSE\": {\n",
+ " \"2026-01-01.2100-12-31\": 750000\n",
+ " },\n",
+ " \"gov.irs.deductions.itemized.interest.mortgage.cap.HEAD_OF_HOUSEHOLD\": {\n",
+ " \"2026-01-01.2100-12-31\": 750000\n",
+ " },\n",
+ " \"gov.simulation.branch_to_determine_itemization\": {\n",
+ " \"2026-01-01.2100-12-31\": True\n",
+ " },\n",
+ " },\n",
+ " country_id=\"us\",\n",
+ " )\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "dce96072",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "baseline = Microsimulation(dataset=\"hf://policyengine/policyengine-us-data/enhanced_cps_2024.h5\")\n",
+ "reformed = Microsimulation(reform=senate_bill, dataset=\"hf://policyengine/policyengine-us-data/enhanced_cps_2024.h5\")\n",
+ "tcja_extension = Microsimulation(reform=tcja_extension, dataset=\"hf://policyengine/policyengine-us-data/enhanced_cps_2024.h5\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "6ff1ec42",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "social_security = baseline.calculate(\"social_security\", map_to=\"person\", period=2026)\n",
+ "age = baseline.calculate(\"age\", map_to=\"person\", period=2026)\n",
+ "weight = baseline.calculate(\"household_weight\", map_to=\"person\", period=2026)\n",
+ "is_senior = (age >= 65)\n",
+ "senior_received_social_security = ((social_security > 0) * is_senior) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "8e8c9657",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "18.920846760929585"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "itemizes = baseline.calculate(\"tax_unit_itemizes\", map_to=\"person\", period=2026)\n",
+ "itemizes[senior_received_social_security].sum() / 1e6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "72bca63c",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "54.87423033602494"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "senior_received_social_security.sum() / 1e6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "d4929e13",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "deductions = baseline.calculate(\"taxable_income_deductions\", map_to=\"person\", period=2026)\n",
+ "exemptions = baseline.calculate(\"exemptions\", map_to=\"person\", period=2026)\n",
+ "total_exemptions_deductions = exemptions + deductions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "800caaa9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "taxable_social_security = baseline.calculate(\"taxable_social_security\", map_to=\"person\", period=2026)\n",
+ "deductions_exceed_ss = (total_exemptions_deductions > taxable_social_security) * senior_received_social_security"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "3aa30815",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "48.542799120267986"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "(deductions_exceed_ss).sum() / 1e6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "17f8ffe3",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "88.46192251447332"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "(((deductions_exceed_ss).sum() / 1e6) / (senior_received_social_security.sum() / 1e6)) * 100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "2f395952",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "reformed_social_security = reformed.calculate(\"social_security\", map_to=\"person\", period=2026)\n",
+ "reformed_senior_received_social_security = (reformed_social_security > 0) * is_senior"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "42b91458",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "54.87423033602494"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "reformed_senior_received_social_security.sum() / 1e6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "9cc0f5f7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "reformed_deductions = reformed.calculate(\"taxable_income_deductions\", map_to=\"person\", period=2026)\n",
+ "reformed_exemptions = reformed.calculate(\"exemptions\", map_to=\"person\", period=2026)\n",
+ "reformed_total_exemptions_deductions = reformed_exemptions + reformed_deductions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "7eb0c295",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "reformed_taxable_social_security = reformed.calculate(\"taxable_social_security\", map_to=\"person\", period=2026)\n",
+ "reformed_deductions_exceed_ss = (reformed_total_exemptions_deductions > reformed_taxable_social_security)* reformed_senior_received_social_security"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "f20f6381",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "52.449298341421965"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "reformed_deductions_exceed_ss.sum() / 1e6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "756e0885",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "95.58092755059381"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "((reformed_deductions_exceed_ss.sum() / 1e6) / (reformed_senior_received_social_security.sum() / 1e6)) * 100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "7cd26510",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tcja_social_security = tcja_extension.calculate(\"social_security\", map_to=\"person\", period=2026)\n",
+ "tcja_senior_received_ss = (tcja_social_security > 0)* is_senior\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "14844a11",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tcja_deductions = tcja_extension.calculate(\"taxable_income_deductions\", map_to=\"person\", period=2026)\n",
+ "tcja_exemptions = tcja_extension.calculate(\"exemptions\", map_to=\"person\", period=2026)\n",
+ "tcja_total_exemptions_deductions = tcja_exemptions + tcja_deductions\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "ab3717a5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tcja_taxable_social_security = tcja_extension.calculate(\"taxable_social_security\", map_to=\"person\", period=2026)\n",
+ "tcja_deductions_exceed_ss = (tcja_total_exemptions_deductions > tcja_taxable_social_security) * tcja_senior_received_ss"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "ddbe60ab",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "48.7600570592413"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "(tcja_deductions_exceed_ss.sum()) / 1e6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "e1517c56",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "88.85784230713905"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "((tcja_deductions_exceed_ss.sum() / 1e6) / (tcja_senior_received_ss.sum() / 1e6)) * 100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "d7ceb486",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "pe",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.14"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}