From 4b6bfce9a240cd44c45210fbf508640d8402343d Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Fri, 23 Oct 2026 14:18:16 -0400 Subject: [PATCH 1/2] Calibrate the SCF-imputed student loan balances to Federal Student Aid portfolio facts (#1074) A new runtime module, fsa_student_loan_targets, binds Federal Student Aid's portfolio tables (the six packages/ed_fsa packages of chronicle#347) to the SCF education-debt stage's person columns, federal_student_loan_balance and federal_parent_plus_loan_balance: the balance and borrower count of each state and DC, of five borrower age bands and of nine debt-size bands, and the Parent PLUS balance beside the balance of every other loan type. Every family binds at FY2026 Q2 (31 March 2026), the latest quarter all four bound tables publish, as a stock unaged at the 2024 build period (target aging's new declared stock_at_source_reference_date alignment). Not Reported is allocated to the reported locations, Puerto Rico and Other leave with their share, and the age, debt-size and loan-type rows bind as shares of the one in-scope control ($1,679.1B, 44.31M borrowers). Repayment plans, the portfolio summary and loan-type recipient counts stay diagnostic, each with its reason in the receipt. compile_us_fiscal_target_registry binds the facts only with student_loan_targets, which the fiscal-refresh release tool sets with --scf-education-debt; the release materializes the rows from the stored person columns, guards their restated age and balance bands, records every fact's disposition in us_source_coverage.json and keeps the opt-in family off the target-parity contract. Default compiles and releases are unchanged. The ED Federal Student Aid provider joins the calibration label registries. experiments/fit_1074_fsa_calibration.py refits the published default with and without the family (plus L2-anchored arms) on Modal through experiments/modal_1074.py, against the pinned feed plus chronicle#347's FSA rows, now built at its merge commit on Chronicle main. Squashes #1357's earlier history onto #1246's review-round head. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../1074-fsa-student-loan-targets.added.md | 7 + docs/us-fact-to-target.md | 77 + experiments/1074-fsa-calibration-receipts.md | 291 + experiments/fit_1074_fsa_calibration.py | 1088 ++ experiments/modal_1074.py | 696 + .../receipts/1074-fsa-calibration-fit.json | 10563 ++++++++++++++++ .../build/us_runtime/fiscal_targets.py | 31 + .../us_runtime/fsa_student_loan_targets.py | 1054 ++ .../build/us_runtime/target_aging.py | 18 + .../us/test_us_fiscal_refresh_builder.py | 7 +- .../engine_free/us/test_us_fiscal_targets.py | 4 + .../us/test_us_fsa_student_loan_targets.py | 543 + .../engine_free/us/test_us_spine_blindness.py | 4 + ...fsa_portfolio_chronicle_347_facts.jsonl.gz | Bin 0 -> 50445 bytes .../microcosm/calibrate/provider_labels.py | 1 + .../microcosm/calibrate/variable_labels.py | 8 + .../shared/test_provider_labels.py | 1 + .../shared/test_variable_labels.py | 4 + tools/build_us_fiscal_refresh_release.py | 105 +- 19 files changed, 14498 insertions(+), 4 deletions(-) create mode 100644 changelog.d/1074-fsa-student-loan-targets.added.md create mode 100644 experiments/1074-fsa-calibration-receipts.md create mode 100644 experiments/fit_1074_fsa_calibration.py create mode 100644 experiments/modal_1074.py create mode 100644 experiments/receipts/1074-fsa-calibration-fit.json create mode 100644 packages/microcosm-build/src/microcosm/build/us_runtime/fsa_student_loan_targets.py create mode 100644 packages/microcosm-build/tests/engine_free/us/test_us_fsa_student_loan_targets.py create mode 100644 packages/microcosm-build/tests/fixtures/us_fsa_portfolio_chronicle_347_facts.jsonl.gz diff --git a/changelog.d/1074-fsa-student-loan-targets.added.md b/changelog.d/1074-fsa-student-loan-targets.added.md new file mode 100644 index 0000000000..5e007c609a --- /dev/null +++ b/changelog.d/1074-fsa-student-loan-targets.added.md @@ -0,0 +1,7 @@ +The US build can calibrate the SCF-imputed federal student loan balances to Federal Student Aid's portfolio tables (microcosm#1074, the student debt pilot). A new runtime module, `fsa_student_loan_targets`, binds the FSA facts Chronicle stores (PolicyEngine/chronicle#310) to the person columns `federal_student_loan_balance` and `federal_parent_plus_loan_balance`: the balance and borrower count of each state and DC, of five borrower age bands and of nine debt-size bands, and the Parent PLUS balance beside the balance of every other loan type. A borrower is a person whose own plus Parent PLUS balance is positive. Repayment plans, the portfolio summary and the loan-type recipient counts stay diagnostic only, each with its reason in the receipt. + +Every family binds at one reference date, the latest quarter every bound table publishes (FY2026 Q2, 31 March 2026, in the draft packages), as a stock unaged at the 2024 build period: target aging gains a declared `stock_at_source_reference_date` alignment, which only these targets carry. FSA's "Not Reported" row is allocated to every reported location in proportion to its reported value; Puerto Rico and "Other" are outside the host universe and leave with their share. The 51 allocated state levels make one in-scope control, and the age, debt-size and loan-type rows bind as their table's shares of it, so every family sums to the same total. + +`compile_us_fiscal_target_registry` binds the facts only with `student_loan_targets`, which the fiscal-refresh release tool sets with `--scf-education-debt`; the release materializes the rows from the stage's stored person columns, accepts their age and balance bands in its restated-filter guard only on that materializer, records every FSA fact's disposition in `us_source_coverage.json`, and keeps the opt-in family off the target-parity contract. Default compiles and releases are unchanged, and the pinned US feed carries no FSA facts until it moves to a Chronicle commit with the packages. The `ED · Federal Student Aid` provider and its four categories join the calibration label registries, so the family shows on the calibration dashboard once a release carries it. + +Fit receipts are in `experiments/1074-fsa-calibration-receipts.md`, generated by `experiments/fit_1074_fsa_calibration.py` on Modal through `experiments/modal_1074.py` against a candidate feed (the pinned feed plus the draft chronicle#347 rows). diff --git a/docs/us-fact-to-target.md b/docs/us-fact-to-target.md index e4ae417a8d..7c3d4e0fa6 100644 --- a/docs/us-fact-to-target.md +++ b/docs/us-fact-to-target.md @@ -186,6 +186,83 @@ binds them: band. `experiments/940-state-agi-bands/` measures pre-calibration support per state and band on the #982 fix's offline outputs. +### Federal Student Aid's portfolio binds the student loan balances (microcosm#1074) + +Federal Student Aid publishes its federal student loan portfolio quarterly. +Chronicle stores each table as published (PolicyEngine/chronicle#310); the +alignment across tables is Microcosm's, in +`us_runtime/fsa_student_loan_targets.py`. The targets bind the person columns +the SCF education-debt stage writes (microcosm#1073): +`federal_student_loan_balance` (own loans) and +`federal_parent_plus_loan_balance`. A person's federal balance is the sum, and a +borrower is a person whose federal balance is positive. + +- **Which rows.** The borrower-based tables: by location (the 50 states and DC, + balance and borrowers), by age (five bands on the person's age) and by debt + size (nine bands on the person's federal balance, lower edge inclusive). From + the loan-type table, the Parent PLUS balance and the balance of every other + loan type. Each fact's disposition, bound or not, is in + `fsa_student_loan_target_receipt` and in a release's + `us_source_coverage.json` (`fsa_student_loan_target_receipt`). +- **Diagnostic only.** Repayment plans: the SCF records only an income-driven + yes/no, the build has no plan column, and FSA counts plan recipients loan by + loan. The portfolio summary: recipient totals by loan program, which the + balances do not record. Loan-type recipient counts: loan-level, so a person + with two loan types counts twice. Stafford (Combined): a subtotal. +- **The reference date.** The latest quarter every bound table publishes, FY2026 + Q2 (31 March 2026) in the draft packages: the location workbook publishes + only that date, so the age, debt-size and loan-type tables bind at it too, and + every family describes one portfolio on one day. The facts are stocks the + build carries as they stand at that date, unaged at the 2024 build period + (`period_alignment = stock_at_source_reference_date`, factor policy 5 in + `target_aging`): no income-growth series describes a loan stock, and the + analysis reads the columns in 2026. +- **Not Reported, Puerto Rico and Other.** The location table has no total row. + Its "Not Reported" row ($52.2B, 1.95M borrowers) holds FFEL and Perkins loans + whose commercial lenders need not report an address. It is allocated to every + reported location in proportion to that location's reported balance (or + borrowers, for the count). Puerto Rico and "Other" (an address outside the + listed states and territories) are outside the host universe, the 50 states + and DC the CPS samples, and leave with their share. The 51 allocated state + levels sum to the **in-scope control**: $1,679.1B and 44.31M borrowers at the + draft packages, against $1,696.3B and 44.76M in the table. +- **One control.** FSA's tables disagree slightly (the borrower tables total + $1,696.3B, the recipient-based loan-type table $1,723.8B). The age and + debt-size bands and the two loan-type rows bind as their table's share of the + in-scope control, `control x row / partition`, the state AGI band pattern. A + table's own "not reported" age row is in no partition, which allocates it + across the reported bands. So the state, age, debt-size and loan-type families + each sum to the same total. +- **Opt-in.** `compile_us_fiscal_target_registry(student_loan_targets=True)` + binds the facts; the release tool sets it with `--scf-education-debt`, the + only builds that carry the columns. The release materializes the rows from + the stored person columns (`fsa_student_loan_household_values`), because the + pinned policyengine-us does not define them yet. The release's + restated-filter guard accepts the age and balance bands only on that + materializer. While the stage is opt-in the family stays off the one-surface + target-parity contract (`_without_opt_in_student_loan_targets`). +- **Known limits, measured.** The receipt + (`experiments/1074-fsa-calibration-receipts.md`) refits the published + default with and without the family. The stage gives balances only to + reference persons and spouses (and Parent PLUS to the reference person), so + the host holds about half of FSA's borrowers ($0.86T and 21.2M at the + published weights). Calibration closes that by reweighting: borrower + households' weight doubles and their share of household weight goes from + 16.4% to 33.0%, against 18.2% of SCF families. Borrowers under 25 stay about + 40% short, because the host has few young reference persons with a balance. + FSA's Parent PLUS row counts only unconsolidated Parent PLUS loans (a + consolidated one sits in "Consolidation"), while the SCF's loans for a + child's education include consolidated ones, so that target is a lower bound + on the concept it binds; it pulls the Parent PLUS share from 16.8% to 6.8%. +- **When the facts reach the pin.** The US pin moves to a Chronicle commit that + carries the six `packages/ed_fsa` packages: add their (record set, period) + pairs to `us/chronicle_feed_scope.json` (build year 2026), rebuild the feed, + re-pin `us/chronicle_feed.json`, and regenerate the two parity resources with + the FSA families declared as reviewed exclusions that bind only with + `--scf-education-debt`. The fixture + `tests/fixtures/us_fsa_portfolio_chronicle_347_facts.jsonl.gz` is the draft + export the tests pin; refresh it from the merged packages. + ## 4. Keep the exclusion register honest `US_FISCAL_TARGET_SUPPORT_EXCLUSIONS` is keyed by `source_record_id` and its diff --git a/experiments/1074-fsa-calibration-receipts.md b/experiments/1074-fsa-calibration-receipts.md new file mode 100644 index 0000000000..ec6a8c1b5f --- /dev/null +++ b/experiments/1074-fsa-calibration-receipts.md @@ -0,0 +1,291 @@ +# microcosm#1074 receipts: Federal Student Aid portfolio targets + +Generated 2026-10-22 by `experiments/fit_1074_fsa_calibration.py`, commit `c94516ee14b1920a490902288115d66dbc743762`, Modal run `20261022T194252Z-c94516ee1` (`experiments/modal_1074.py`). Machine-readable copy: `experiments/receipts/1074-fsa-calibration-fit.json`. + +Host: the published default `populace-us-2024-spm-20260915` (sha256 `6496cc4393d4…`, 57,240 households), with the SCF 2025 education-debt stage run at seed 0. Feed: the pinned `51aa40f` US feed plus the draft chronicle#347 FSA rows (`d8e3d0fd9e21…`, 40,639 rows). Arms: **release** = the published weights; **A** = a dense refit to the `national_state` surface without the FSA family; **B** = the same refit with it. Same epochs (1500), learning rate, 5x weight cap and conserved mass as a release. Not a release: no gate ran and nothing was published. + +## FSA targets: the reconciled levels + +| | Balance | Borrowers | +|---|---:|---:| +| 50 states and DC, as published | $1,627.4B | 42.38M | +| Puerto Rico and Other (leave) | $16.7B | 433,400 | +| Not Reported (allocated) | $52.2B | 1.95M | +| Location table total | $1,696.3B | 44.76M | +| Allocation factor | 1.0317 | 1.0456 | +| In-scope control (every family sums to it) | $1,679.1B | 44.31M | + +Reference date: Data as of Mar. 31, 2026 (`2026-03`), the latest quarter all four bound tables publish; unaged at the 2024 build period (`period_alignment = stock_at_source_reference_date`). + +## Fit by FSA family + +Mean absolute relative error (share of targets within 5%). + +| FSA family | Targets | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | +|---|---:|---:|---:|---:|---:|---:| +| fsa_age_band_balance | 5 | 50.3% (0%) | 48.4% (0%) | 0.1% (100%) | 50.6% (0%) | 1.1% (100%) | +| fsa_age_band_borrowers | 5 | 53.1% (0%) | 52.1% (0%) | 10.7% (40%) | 52.8% (0%) | 9.5% (80%) | +| fsa_balance_excluding_parent_plus | 1 | 54.3% (0%) | 53.1% (0%) | 0.1% (100%) | 54.5% (0%) | 1.5% (100%) | +| fsa_debt_size_band_balance | 9 | 51.0% (0%) | 50.3% (0%) | 1.0% (89%) | 51.1% (0%) | 4.8% (78%) | +| fsa_debt_size_band_borrowers | 9 | 49.6% (0%) | 49.4% (0%) | 3.7% (78%) | 49.9% (0%) | 6.8% (67%) | +| fsa_parent_plus_balance | 1 | 25.3% (0%) | 32.8% (0%) | 0.0% (100%) | 25.2% (0%) | 10.3% (0%) | +| fsa_state_balance | 51 | 47.0% (0%) | 46.7% (2%) | 0.2% (100%) | 47.0% (0%) | 1.1% (92%) | +| fsa_state_borrowers | 51 | 49.2% (0%) | 49.8% (0%) | 1.7% (90%) | 49.1% (0%) | 7.8% (59%) | + +## Headline levels + +| | FSA target | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | +|---|---:|---:|---:|---:|---:|---:| +| Federal balance, own plus Parent PLUS | $1,679.1B | $858.4B | $886.0B | $1,678.0B | $855.8B | $1,668.1B | +| Borrowers (people with a balance) | 44.31M | 21.22M | 21.45M | 43.78M | 21.43M | 41.95M | +| Parent PLUS balance | $114.8B | $143.9B | $152.6B | $114.9B | $143.8B | $126.7B | +| Parent PLUS share of the balance | 6.8% | 16.8% | 17.2% | 6.8% | 16.8% | 7.6% | +| Mean balance per borrower | $37,894 | $40,447 | $41,313 | $38,331 | $39,934 | $39,767 | +| Households with federal education debt | | 16.4% | 16.6% | 33.0% | 16.6% | 31.5% | + +## Every other family: does adding FSA cost the rest of the surface? + +Mean absolute relative error over the `national_state` surface's non-FSA targets, by provider/category (the dashboard's family), each miss capped at 100% of its target as the loss caps it, sorted by how much adding the FSA family moves it: + +| Family | Targets | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | B - A (pp) | B+L2 - A+L2 (pp) | +|---|---:|---:|---:|---:|---:|---:|---:|---:| +| hhs_acf_tanf/hhs_acf_tanf.hhs_acf_tanf | 30 | 29.8% | 18.3% | 20.5% | 22.5% | 22.4% | +2.17 | -0.05 | +| jct/jct.individual_tax_expenditure_revenue_loss | 11 | 42.3% | 35.3% | 37.5% | 39.9% | 39.3% | +2.14 | -0.63 | +| bea/bea.nipa_proprietors_income | 1 | 11.6% | 5.9% | 7.8% | 11.2% | 9.5% | +1.90 | -1.72 | +| ssa/ssa.ssi_federal_payment_recipients | 3 | 28.5% | 15.6% | 17.2% | 24.3% | 21.6% | +1.60 | -2.68 | +| irs_soi/irs_soi.capital_gains_gross | 104 | 30.1% | 17.0% | 18.5% | 26.0% | 24.6% | +1.52 | -1.43 | +| irs_soi/irs_soi.assigned_aca_ptc | 104 | 0.9% | 0.6% | 1.6% | 0.7% | 1.2% | +1.04 | +0.45 | +| irs_soi/irs_soi.real_estate_taxes | 106 | 6.5% | 5.3% | 6.3% | 6.3% | 6.4% | +0.95 | +0.14 | +| irs_soi/irs_soi.refundable_ctc | 104 | 0.8% | 0.3% | 1.2% | 0.7% | 1.3% | +0.87 | +0.61 | +| irs_soi/irs_soi.eitc | 781 | 3.1% | 2.5% | 3.3% | 2.7% | 3.1% | +0.84 | +0.43 | +| irs_soi/irs_soi.ctc | 104 | 1.5% | 0.6% | 1.3% | 1.2% | 1.4% | +0.67 | +0.19 | +| irs_soi/irs_soi.charitable_deduction | 2 | 7.5% | 6.8% | 7.4% | 6.2% | 6.7% | +0.58 | +0.56 | +| irs_soi/irs_soi.salt_deduction | 106 | 1.9% | 1.8% | 2.3% | 2.1% | 2.3% | +0.51 | +0.20 | +| irs_soi/irs_soi.interest_deduction | 2 | 2.0% | 1.7% | 1.2% | 2.4% | 2.0% | -0.49 | -0.43 | +| irs_soi/irs_soi.taxable_interest_income | 1038 | 6.0% | 5.7% | 6.2% | 6.0% | 5.9% | +0.49 | -0.08 | +| irs_soi/irs_soi.unemployment_compensation | 106 | 0.1% | 0.3% | 0.7% | 0.2% | 0.7% | +0.45 | +0.45 | +| irs_soi/irs_soi.count | 260 | 31.7% | 20.5% | 20.9% | 22.9% | 22.1% | +0.37 | -0.79 | +| irs_soi/irs_soi.qualified_dividends | 104 | 0.3% | 0.5% | 0.9% | 0.5% | 0.5% | +0.34 | +0.05 | +| ssa/ssa.ssi_payments | 51 | 3.7% | 0.4% | 0.6% | 0.5% | 0.9% | +0.18 | +0.31 | +| irs_soi/irs_soi.adjusted_gross_income | 261 | 19.7% | 0.6% | 0.7% | 2.8% | 2.0% | +0.16 | -0.76 | +| irs_soi/irs_soi.income_tax | 104 | 0.6% | 0.7% | 0.8% | 0.8% | 0.9% | +0.15 | +0.08 | +| irs_soi/irs_soi.income_tax_before_credits | 104 | 1.6% | 1.6% | 1.8% | 1.9% | 2.0% | +0.15 | +0.08 | +| cms_medicare/cms_medicare.cms_medicare | 1 | 13.8% | 13.5% | 13.6% | 13.5% | 13.3% | +0.15 | -0.23 | +| irs_soi/irs_soi.estate_losses | 2 | 50.0% | 50.2% | 50.1% | 50.2% | 50.3% | -0.12 | +0.11 | +| irs_soi/irs_soi.ordinary_dividend_income | 108 | 0.8% | 0.8% | 0.9% | 0.8% | 0.8% | +0.12 | -0.06 | +| usda_snap/usda_snap.usda_snap | 104 | 7.9% | 0.1% | 0.2% | 0.6% | 0.5% | +0.12 | -0.15 | +| ssa/ssa.ssi_recipients | 51 | 4.8% | 0.7% | 0.8% | 2.0% | 1.5% | +0.11 | -0.48 | +| census_stc/census_stc.individual_income_tax_collections | 44 | 13.9% | 13.7% | 13.8% | 13.9% | 13.9% | +0.11 | -0.01 | +| irs_soi/irs_soi.taxable_income | 107 | 0.3% | 0.4% | 0.5% | 0.6% | 0.6% | +0.11 | -0.00 | +| bea/bea.nipa_wages_and_salaries | 1 | 13.3% | 13.6% | 13.5% | 13.5% | 13.6% | -0.10 | +0.18 | +| irs_soi/irs_soi.medical_expense_deduction | 104 | 6.0% | 6.3% | 6.3% | 6.2% | 6.4% | +0.09 | +0.24 | +| irs_soi/irs_soi.tax_exempt_interest_income | 104 | 0.1% | 0.7% | 0.8% | 1.0% | 1.0% | +0.09 | -0.06 | +| irs_soi/irs_soi.employment_income | 106 | 0.1% | 0.1% | 0.2% | 0.2% | 0.2% | +0.08 | -0.00 | +| ssa/ssa.ssa | 6 | 3.7% | 0.1% | 0.0% | 1.4% | 1.1% | -0.08 | -0.38 | +| irs_soi/irs_soi.estate_income | 2 | 0.0% | 0.1% | 0.0% | 0.1% | 0.1% | -0.07 | +0.06 | +| irs_soi/irs_soi.non_sch_d_capital_gains | 2 | 0.0% | 0.0% | 0.1% | 0.1% | 0.1% | +0.07 | -0.01 | +| irs_soi/irs_soi.deductible_mortgage_interest | 2 | 0.4% | 0.0% | 0.1% | 0.1% | 0.0% | +0.07 | -0.08 | +| cbo/cbo.cbo | 5 | 4.5% | 4.6% | 4.7% | 4.6% | 4.7% | +0.05 | +0.18 | +| irs_soi/irs_soi.tip_income | 1 | 21.3% | 0.1% | 0.2% | 0.1% | 0.0% | +0.04 | -0.04 | +| irs_soi/irs_soi.partnership_and_s_corp_income | 104 | 0.6% | 0.4% | 0.3% | 0.6% | 0.6% | -0.04 | -0.05 | +| irs_soi/irs_soi.itemized_taxable_income_deductions | 55 | 2.0% | 2.3% | 2.3% | 2.5% | 2.3% | +0.03 | -0.23 | +| cms_medicaid/cms_medicaid.cms_medicaid | 135 | 3.1% | 2.3% | 2.3% | 2.3% | 2.3% | +0.03 | +0.01 | +| irs_soi/irs_soi.rent_and_royalty_net_income | 104 | 4.0% | 3.1% | 3.1% | 3.1% | 3.1% | +0.02 | -0.06 | +| hhs_acf_liheap/hhs_acf_liheap.hhs_acf_liheap | 1 | 0.0% | 0.0% | 0.0% | 0.0% | 0.1% | +0.02 | +0.08 | +| cms_aca/cms_aca.cms_aca | 102 | 1.6% | 0.2% | 0.2% | 0.7% | 0.6% | +0.02 | -0.13 | +| federal_reserve/federal_reserve.federal_reserve | 1 | 0.0% | 0.0% | 0.0% | 0.1% | 0.1% | -0.01 | -0.01 | +| irs_soi/irs_soi.business_net_profits | 104 | 1.3% | 1.1% | 1.1% | 1.1% | 1.1% | +0.01 | -0.00 | +| irs_soi/irs_soi.ira_distributions | 108 | 0.1% | 0.1% | 0.1% | 0.1% | 0.2% | -0.00 | +0.01 | +| census_pep/census_pep.resident_population | 936 | 0.1% | 0.1% | 0.1% | 0.1% | 0.1% | +0.00 | +0.01 | +| irs_soi/irs_soi.taxable_social_security | 108 | 0.3% | 0.2% | 0.2% | 0.3% | 0.3% | +0.00 | +0.05 | +| irs_soi/irs_soi.taxable_pension_income | 108 | 0.1% | 0.1% | 0.1% | 0.1% | 0.1% | +0.00 | +0.01 | +| **all non-FSA targets** | 6102 | 5.3% | 3.3% | 3.7% | 3.8% | 3.8% | +0.36 | -0.02 | + +## Racial composition of borrowers, before and after calibration + +Borrower households by the reference person's race (the SCF's `racecl4`; the SCF column pools the five implicates): + +| | SCF 2025 | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | B - release (pp) | +|---|---:|---:|---:|---:|---:|---:|---:| +| white_non_hispanic | 57.6% | 60.8% | 60.0% | 57.9% | 62.1% | 60.0% | -2.9 | +| black_non_hispanic | 18.6% | 17.4% | 16.4% | 19.0% | 16.8% | 19.0% | +1.6 | +| hispanic | 9.2% | 12.9% | 13.8% | 14.8% | 12.4% | 12.8% | +1.9 | +| other_or_multiple | 14.7% | 9.0% | 9.8% | 8.3% | 8.7% | 8.2% | -0.7 | + +Borrowers (people) by their own race, and the share of adults who borrow: + +| | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | Adults with a balance: release | B | B + L2 | +|---|---:|---:|---:|---:|---:|---:|---:|---:| +| white_non_hispanic | 61.5% | 60.9% | 59.2% | 62.9% | 61.4% | 7.9% | 16.0% | 15.0% | +| black_non_hispanic | 16.4% | 15.7% | 17.8% | 16.0% | 17.7% | 12.8% | 26.2% | 25.3% | +| hispanic | 13.0% | 13.5% | 14.5% | 12.2% | 12.6% | 6.2% | 14.2% | 14.1% | +| other_or_multiple | 9.0% | 9.9% | 8.4% | 8.8% | 8.3% | 7.6% | 13.9% | 13.8% | + +## Weight movement against the published weights + +| | A, no FSA | B, with FSA | A + L2 | B + L2 | +|---|---:|---:|---:|---:| +| Borrower households' weight ratio | 1.01 | 2.01 | 1.01 | 1.92 | +| Other households' weight ratio | 0.998 | 0.801 | 0.998 | 0.819 | +| Borrower households' share of weight | 16.6% | 33.0% | 16.6% | 31.5% | +| Median household weight ratio | 0.02 | 4.4e-04 | 0.13 | 3.9e-03 | +| 99th percentile weight ratio | 4.76 | 4.98 | 1.97 | 2.80 | +| Effective sample size (release 9,174) | 4,149 | 2,951 | 6,435 | 4,248 | + +## FSA facts that do not bind + +| Disposition | Facts | Reason | +|---|---:|---| +| allocated | 2 | 'Not Reported' (FFEL and Perkins loans whose commercial lenders need not report an address) has no state; it is allocated to every reported location in proportion to that location's reported value. | +| allocated | 2 | Age not reported: in no partition, so the reported bands, which bind as shares of the in-scope control, absorb it pro rata. | +| diagnostic | 12 | ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only. | +| diagnostic | 45 | ED-held FFEL by repayment plan: no plan column in the build; diagnostic only. | +| diagnostic | 24 | Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only. | +| diagnostic | 65 | Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only. | +| diagnostic | 24 | Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only. | +| diagnostic | 24 | Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead. | +| diagnostic | 57 | Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074). | +| excluded | 6 | Loan-type recipient counts are loan-level (a borrower with two loan types counts twice), so they are not counts of people. | +| excluded | 2 | Stafford (Combined) is a subtotal of rows the loan-type targets already count. | +| other_quarter | 58 | Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03). | +| out_of_scope | 2 | 'Other' is a borrower address outside the states and territories the table lists, outside the host universe; it leaves the in-scope control with its pro-rata share of Not Reported. | +| out_of_scope | 2 | Puerto Rico is outside the host universe (the CPS samples the 50 states and DC). Its rows, with their pro-rata share of Not Reported, leave the in-scope control. | + +Materialization dropped 0 FSA targets. + +## Every FSA target + +| Target | FSA (reconciled) | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | +|---|---:|---:|---:|---:|---:|---:| +| Federal student loan balance, Alabama | $26.8B | $8.3B (-69.0%) | $7.3B (-72.7%) | $26.8B (+0.0%) | $7.9B (-70.7%) | $26.8B (-0.2%) | +| Federal student loan balance, Alaska | $2.5B | $1.1B (-53.6%) | $1.4B (-42.4%) | $2.5B (-0.0%) | $1.2B (-52.7%) | $2.3B (-9.1%) | +| Federal student loan balance, Arizona | $35.1B | $24.3B (-30.7%) | $14.4B (-59.0%) | $35.1B (-0.1%) | $18.5B (-47.1%) | $35.1B (-0.0%) | +| Federal student loan balance, Arkansas | $15.0B | $6.0B (-59.9%) | $6.1B (-59.3%) | $15.0B (+0.1%) | $6.3B (-57.6%) | $15.0B (+0.0%) | +| Federal student loan balance, California | $161.7B | $91.3B (-43.5%) | $99.2B (-38.6%) | $161.8B (+0.1%) | $96.8B (-40.1%) | $161.6B (-0.0%) | +| Federal student loan balance, Colorado | $30.6B | $12.2B (-60.0%) | $6.4B (-79.1%) | $30.6B (-0.0%) | $9.0B (-70.5%) | $30.6B (-0.2%) | +| Federal student loan balance, Connecticut | $20.4B | $8.2B (-59.8%) | $8.1B (-60.2%) | $20.4B (-0.2%) | $7.9B (-61.1%) | $20.4B (-0.1%) | +| Federal student loan balance, Delaware | $5.8B | $2.6B (-54.7%) | $3.3B (-42.6%) | $5.8B (-0.2%) | $2.9B (-49.4%) | $5.4B (-5.8%) | +| Federal student loan balance, District of Columbia | $6.6B | $2.6B (-60.6%) | $1.5B (-77.5%) | $6.6B (+0.1%) | $2.5B (-62.1%) | $6.6B (-0.3%) | +| Federal student loan balance, Florida | $116.7B | $42.9B (-63.2%) | $43.9B (-62.4%) | $116.7B (-0.0%) | $42.8B (-63.4%) | $116.8B (+0.1%) | +| Federal student loan balance, Georgia | $77.0B | $38.4B (-50.1%) | $51.9B (-32.5%) | $77.1B (+0.1%) | $33.3B (-56.8%) | $76.8B (-0.2%) | +| Federal student loan balance, Hawaii | $5.1B | $3.3B (-35.6%) | $3.2B (-36.0%) | $5.1B (-0.1%) | $3.2B (-36.7%) | $5.1B (-0.1%) | +| Federal student loan balance, Idaho | $7.7B | $6.2B (-20.5%) | $6.4B (-17.2%) | $7.7B (+0.1%) | $6.5B (-16.0%) | $7.7B (-0.2%) | +| Federal student loan balance, Illinois | $67.4B | $34.1B (-49.3%) | $50.4B (-25.2%) | $67.4B (+0.1%) | $47.7B (-29.2%) | $67.3B (-0.1%) | +| Federal student loan balance, Indiana | $32.0B | $25.3B (-20.8%) | $26.4B (-17.3%) | $32.0B (+0.0%) | $28.2B (-11.8%) | $32.0B (-0.0%) | +| Federal student loan balance, Iowa | $13.9B | $5.5B (-60.6%) | $6.5B (-53.1%) | $14.0B (+0.2%) | $6.1B (-56.5%) | $13.9B (+0.2%) | +| Federal student loan balance, Kansas | $13.5B | $6.5B (-52.1%) | $6.5B (-52.1%) | $13.5B (-0.0%) | $6.9B (-49.2%) | $13.3B (-1.7%) | +| Federal student loan balance, Kentucky | $22.3B | $12.8B (-42.6%) | $20.2B (-9.5%) | $22.3B (+0.0%) | $13.2B (-40.6%) | $22.3B (+0.2%) | +| Federal student loan balance, Louisiana | $25.9B | $6.1B (-76.6%) | $9.0B (-65.4%) | $24.6B (-5.0%) | $6.6B (-74.4%) | $19.2B (-25.9%) | +| Federal student loan balance, Maine | $6.9B | $4.0B (-42.0%) | $2.7B (-60.9%) | $6.9B (-0.0%) | $3.6B (-48.5%) | $6.9B (-0.1%) | +| Federal student loan balance, Maryland | $39.6B | $14.4B (-63.8%) | $15.2B (-61.5%) | $39.6B (-0.0%) | $14.4B (-63.6%) | $37.5B (-5.4%) | +| Federal student loan balance, Massachusetts | $34.5B | $19.3B (-44.0%) | $16.5B (-52.3%) | $34.5B (+0.2%) | $18.7B (-45.8%) | $34.4B (-0.1%) | +| Federal student loan balance, Michigan | $54.9B | $34.0B (-38.1%) | $39.5B (-28.0%) | $55.1B (+0.3%) | $34.5B (-37.1%) | $54.8B (-0.1%) | +| Federal student loan balance, Minnesota | $28.4B | $20.9B (-26.4%) | $21.5B (-24.1%) | $28.4B (+0.0%) | $22.3B (-21.3%) | $28.3B (-0.2%) | +| Federal student loan balance, Mississippi | $18.4B | $7.9B (-57.1%) | $6.3B (-65.8%) | $18.4B (+0.1%) | $7.9B (-56.9%) | $18.4B (-0.0%) | +| Federal student loan balance, Missouri | $31.6B | $15.7B (-50.2%) | $24.7B (-21.7%) | $31.6B (+0.0%) | $18.4B (-41.7%) | $31.6B (+0.2%) | +| Federal student loan balance, Montana | $4.6B | $3.6B (-23.5%) | $3.5B (-25.1%) | $4.6B (+0.1%) | $3.6B (-22.8%) | $4.7B (+0.2%) | +| Federal student loan balance, Nebraska | $8.5B | $3.9B (-54.3%) | $4.3B (-49.1%) | $8.5B (+0.1%) | $3.7B (-56.7%) | $8.5B (+0.2%) | +| Federal student loan balance, Nevada | $13.6B | $5.4B (-60.4%) | $6.8B (-50.2%) | $13.6B (-0.1%) | $6.0B (-55.9%) | $13.6B (-0.0%) | +| Federal student loan balance, New Hampshire | $7.0B | $3.6B (-48.4%) | $2.9B (-58.9%) | $7.0B (+0.2%) | $3.1B (-55.9%) | $7.0B (+0.3%) | +| Federal student loan balance, New Jersey | $49.9B | $22.9B (-54.1%) | $27.5B (-44.9%) | $49.9B (+0.0%) | $24.2B (-51.5%) | $50.0B (+0.0%) | +| Federal student loan balance, New Mexico | $8.3B | $9.6B (+15.8%) | $4.6B (-44.1%) | $8.2B (-0.2%) | $7.4B (-10.5%) | $8.3B (+0.2%) | +| Federal student loan balance, New York | $103.1B | $59.0B (-42.7%) | $52.1B (-49.4%) | $103.0B (-0.0%) | $54.5B (-47.1%) | $103.2B (+0.1%) | +| Federal student loan balance, North Carolina | $57.6B | $30.7B (-46.7%) | $48.5B (-15.8%) | $57.5B (-0.1%) | $34.4B (-40.2%) | $57.6B (+0.1%) | +| Federal student loan balance, North Dakota | $2.8B | $1.5B (-47.1%) | $1.6B (-42.6%) | $2.8B (-0.2%) | $1.6B (-44.3%) | $2.8B (-0.3%) | +| Federal student loan balance, Ohio | $66.3B | $24.9B (-62.4%) | $17.5B (-73.7%) | $66.4B (+0.0%) | $22.7B (-65.7%) | $66.2B (-0.1%) | +| Federal student loan balance, Oklahoma | $17.6B | $12.7B (-28.1%) | $10.4B (-41.1%) | $17.7B (+0.1%) | $11.9B (-32.6%) | $17.6B (+0.0%) | +| Federal student loan balance, Oregon | $21.5B | $9.8B (-54.5%) | $10.2B (-52.6%) | $21.5B (-0.0%) | $9.8B (-54.5%) | $21.0B (-2.0%) | +| Federal student loan balance, Pennsylvania | $71.8B | $27.9B (-61.1%) | $19.5B (-72.9%) | $71.7B (-0.1%) | $24.6B (-65.7%) | $71.7B (-0.1%) | +| Federal student loan balance, Rhode Island | $5.3B | $2.8B (-46.9%) | $2.2B (-58.6%) | $5.3B (+0.0%) | $2.7B (-48.8%) | $5.3B (+0.2%) | +| Federal student loan balance, South Carolina | $32.4B | $17.5B (-46.1%) | $14.4B (-55.5%) | $32.4B (-0.1%) | $13.3B (-58.9%) | $32.4B (+0.0%) | +| Federal student loan balance, South Dakota | $3.8B | $2.5B (-33.3%) | $1.2B (-67.7%) | $3.8B (+0.0%) | $1.8B (-52.5%) | $3.8B (+0.1%) | +| Federal student loan balance, Tennessee | $35.7B | $30.7B (-14.0%) | $34.8B (-2.6%) | $35.8B (+0.2%) | $30.9B (-13.5%) | $35.7B (-0.1%) | +| Federal student loan balance, Texas | $142.7B | $69.0B (-51.6%) | $44.8B (-68.6%) | $142.5B (-0.1%) | $58.3B (-59.2%) | $142.2B (-0.4%) | +| Federal student loan balance, Utah | $11.5B | $7.1B (-38.2%) | $9.2B (-19.8%) | $11.5B (+0.0%) | $8.6B (-24.6%) | $11.4B (-0.3%) | +| Federal student loan balance, Vermont | $3.0B | $1.5B (-49.1%) | $1.4B (-51.9%) | $3.0B (-0.1%) | $1.6B (-48.0%) | $3.0B (-0.1%) | +| Federal student loan balance, Virginia | $46.9B | $23.9B (-49.1%) | $37.9B (-19.2%) | $46.9B (-0.0%) | $31.0B (-34.0%) | $46.9B (-0.0%) | +| Federal student loan balance, Washington | $30.5B | $16.0B (-47.4%) | $13.4B (-56.1%) | $30.6B (+0.2%) | $15.4B (-49.5%) | $30.5B (-0.0%) | +| Federal student loan balance, West Virginia | $7.9B | $5.6B (-29.1%) | $6.4B (-19.2%) | $7.9B (-0.0%) | $5.6B (-29.9%) | $8.0B (+0.1%) | +| Federal student loan balance, Wisconsin | $24.8B | $11.6B (-53.1%) | $11.8B (-52.5%) | $24.7B (-0.1%) | $11.0B (-55.5%) | $24.7B (-0.2%) | +| Federal student loan balance, Wyoming | $1.9B | $799,653,011 (-56.9%) | $494,870,182 (-73.4%) | $1.9B (-0.3%) | $732,630,963 (-60.6%) | $1.9B (-0.2%) | +| Federal student loan borrowers, Alabama | 694,297 | 299,800 (-56.8%) | 254,906 (-63.3%) | 694,484 (+0.0%) | 299,798 (-56.8%) | 695,397 (+0.2%) | +| Federal student loan borrowers, Alaska | 67,443 | 42,367 (-37.2%) | 43,515 (-35.5%) | 67,419 (-0.0%) | 41,980 (-37.8%) | 67,404 (-0.1%) | +| Federal student loan borrowers, Arizona | 957,900 | 568,336 (-40.7%) | 475,180 (-50.4%) | 957,726 (-0.0%) | 539,307 (-43.7%) | 956,166 (-0.2%) | +| Federal student loan borrowers, Arkansas | 427,034 | 179,315 (-58.0%) | 166,818 (-60.9%) | 427,506 (+0.1%) | 181,962 (-57.4%) | 377,427 (-11.6%) | +| Federal student loan borrowers, California | 4.10M | 2.20M (-46.4%) | 2.31M (-43.7%) | 4.10M (+0.0%) | 2.16M (-47.3%) | 4.10M (+0.0%) | +| Federal student loan borrowers, Colorado | 799,487 | 376,661 (-52.9%) | 287,576 (-64.0%) | 800,730 (+0.2%) | 307,585 (-61.5%) | 797,681 (-0.2%) | +| Federal student loan borrowers, Connecticut | 538,917 | 200,218 (-62.8%) | 215,616 (-60.0%) | 428,970 (-20.4%) | 214,014 (-60.3%) | 357,504 (-33.7%) | +| Federal student loan borrowers, Delaware | 144,088 | 61,556 (-57.3%) | 66,317 (-54.0%) | 120,920 (-16.1%) | 62,407 (-56.7%) | 109,128 (-24.3%) | +| Federal student loan borrowers, District of Columbia | 119,829 | 56,416 (-52.9%) | 45,141 (-62.3%) | 119,785 (-0.0%) | 54,249 (-54.7%) | 104,429 (-12.9%) | +| Federal student loan borrowers, Florida | 2.87M | 1.02M (-64.6%) | 1.18M (-59.0%) | 2.87M (-0.0%) | 1.07M (-62.8%) | 2.79M (-2.9%) | +| Federal student loan borrowers, Georgia | 1.78M | 895,114 (-49.7%) | 949,522 (-46.7%) | 1.78M (-0.0%) | 803,541 (-54.9%) | 1.72M (-3.3%) | +| Federal student loan borrowers, Hawaii | 126,521 | 70,947 (-43.9%) | 79,600 (-37.1%) | 126,442 (-0.1%) | 66,457 (-47.5%) | 114,039 (-9.9%) | +| Federal student loan borrowers, Idaho | 226,378 | 158,278 (-30.1%) | 154,004 (-32.0%) | 226,432 (+0.0%) | 163,950 (-27.6%) | 225,793 (-0.3%) | +| Federal student loan borrowers, Illinois | 1.67M | 809,565 (-51.7%) | 991,286 (-40.8%) | 1.67M (-0.1%) | 949,750 (-43.3%) | 1.67M (-0.1%) | +| Federal student loan borrowers, Indiana | 939,497 | 566,356 (-39.7%) | 576,460 (-38.6%) | 939,405 (-0.0%) | 606,899 (-35.4%) | 939,251 (-0.0%) | +| Federal student loan borrowers, Iowa | 442,719 | 197,218 (-55.5%) | 239,760 (-45.8%) | 442,894 (+0.0%) | 237,122 (-46.4%) | 440,443 (-0.5%) | +| Federal student loan borrowers, Kansas | 396,607 | 227,692 (-42.6%) | 222,096 (-44.0%) | 396,315 (-0.1%) | 214,203 (-46.0%) | 396,666 (+0.0%) | +| Federal student loan borrowers, Kentucky | 643,689 | 292,355 (-54.6%) | 324,504 (-49.6%) | 643,650 (-0.0%) | 301,880 (-53.1%) | 494,346 (-23.2%) | +| Federal student loan borrowers, Louisiana | 725,666 | 221,291 (-69.5%) | 259,676 (-64.2%) | 725,630 (-0.0%) | 233,994 (-67.8%) | 608,283 (-16.2%) | +| Federal student loan borrowers, Maine | 195,114 | 116,910 (-40.1%) | 93,095 (-52.3%) | 163,309 (-16.3%) | 108,179 (-44.6%) | 152,248 (-22.0%) | +| Federal student loan borrowers, Maryland | 880,732 | 365,740 (-58.5%) | 361,944 (-58.9%) | 772,806 (-12.3%) | 333,874 (-62.1%) | 653,671 (-25.8%) | +| Federal student loan borrowers, Massachusetts | 941,693 | 468,114 (-50.3%) | 410,147 (-56.4%) | 942,709 (+0.1%) | 440,759 (-53.2%) | 927,634 (-1.5%) | +| Federal student loan borrowers, Michigan | 1.44M | 804,634 (-44.1%) | 819,196 (-43.1%) | 1.44M (+0.1%) | 835,678 (-42.0%) | 1.44M (-0.1%) | +| Federal student loan borrowers, Minnesota | 807,852 | 476,572 (-41.0%) | 489,445 (-39.4%) | 806,823 (-0.1%) | 499,984 (-38.1%) | 769,185 (-4.8%) | +| Federal student loan borrowers, Mississippi | 477,120 | 212,627 (-55.4%) | 199,676 (-58.1%) | 476,743 (-0.1%) | 225,931 (-52.6%) | 446,337 (-6.5%) | +| Federal student loan borrowers, Missouri | 864,211 | 452,444 (-47.6%) | 553,444 (-36.0%) | 865,514 (+0.2%) | 473,298 (-45.2%) | 769,360 (-11.0%) | +| Federal student loan borrowers, Montana | 132,167 | 93,724 (-29.1%) | 86,614 (-34.5%) | 132,178 (+0.0%) | 94,461 (-28.5%) | 131,897 (-0.2%) | +| Federal student loan borrowers, Nebraska | 254,610 | 111,991 (-56.0%) | 120,989 (-52.5%) | 255,006 (+0.2%) | 105,848 (-58.4%) | 210,699 (-17.2%) | +| Federal student loan borrowers, Nevada | 384,687 | 177,125 (-54.0%) | 213,697 (-44.4%) | 384,138 (-0.1%) | 196,577 (-48.9%) | 354,481 (-7.9%) | +| Federal student loan borrowers, New Hampshire | 196,264 | 108,023 (-45.0%) | 103,378 (-47.3%) | 196,628 (+0.2%) | 109,233 (-44.3%) | 196,426 (+0.1%) | +| Federal student loan borrowers, New Jersey | 1.29M | 447,680 (-65.3%) | 536,510 (-58.5%) | 1.29M (+0.1%) | 483,073 (-62.6%) | 1.07M (-16.8%) | +| Federal student loan borrowers, New Mexico | 236,312 | 147,762 (-37.5%) | 85,697 (-63.7%) | 235,942 (-0.2%) | 123,887 (-47.6%) | 191,802 (-18.8%) | +| Federal student loan borrowers, New York | 2.57M | 1.24M (-51.8%) | 1.19M (-53.7%) | 2.57M (-0.1%) | 1.28M (-50.3%) | 2.57M (-0.1%) | +| Federal student loan borrowers, North Carolina | 1.44M | 763,659 (-47.1%) | 955,792 (-33.7%) | 1.44M (-0.1%) | 815,913 (-43.4%) | 1.44M (-0.1%) | +| Federal student loan borrowers, North Dakota | 92,434 | 54,709 (-40.8%) | 68,206 (-26.2%) | 92,302 (-0.1%) | 59,660 (-35.5%) | 92,240 (-0.2%) | +| Federal student loan borrowers, Ohio | 1.85M | 706,815 (-61.8%) | 520,187 (-71.9%) | 1.61M (-13.1%) | 624,258 (-66.3%) | 1.44M (-22.4%) | +| Federal student loan borrowers, Oklahoma | 534,002 | 320,839 (-39.9%) | 276,825 (-48.2%) | 533,733 (-0.1%) | 296,474 (-44.5%) | 532,759 (-0.2%) | +| Federal student loan borrowers, Oregon | 550,628 | 297,551 (-46.0%) | 322,529 (-41.4%) | 550,760 (+0.0%) | 320,994 (-41.7%) | 551,860 (+0.2%) | +| Federal student loan borrowers, Pennsylvania | 1.94M | 698,545 (-64.0%) | 537,921 (-72.3%) | 1.94M (-0.0%) | 646,671 (-66.6%) | 1.93M (-0.3%) | +| Federal student loan borrowers, Rhode Island | 156,531 | 91,440 (-41.6%) | 67,193 (-57.1%) | 156,676 (+0.1%) | 83,389 (-46.7%) | 143,823 (-8.1%) | +| Federal student loan borrowers, South Carolina | 817,995 | 307,285 (-62.4%) | 272,654 (-66.7%) | 817,209 (-0.1%) | 268,422 (-67.2%) | 704,814 (-13.8%) | +| Federal student loan borrowers, South Dakota | 122,025 | 49,229 (-59.7%) | 36,584 (-70.0%) | 122,016 (-0.0%) | 45,954 (-62.3%) | 82,771 (-32.2%) | +| Federal student loan borrowers, Tennessee | 935,732 | 618,646 (-33.9%) | 723,231 (-22.7%) | 935,922 (+0.0%) | 671,009 (-28.3%) | 934,369 (-0.1%) | +| Federal student loan borrowers, Texas | 4.13M | 1.92M (-53.6%) | 1.90M (-54.1%) | 4.13M (-0.1%) | 2.04M (-50.6%) | 4.12M (-0.2%) | +| Federal student loan borrowers, Utah | 327,595 | 229,732 (-29.9%) | 277,395 (-15.3%) | 327,688 (+0.0%) | 274,031 (-16.4%) | 327,472 (-0.0%) | +| Federal student loan borrowers, Vermont | 78,213 | 49,097 (-37.2%) | 49,037 (-37.3%) | 78,112 (-0.1%) | 49,999 (-36.1%) | 78,189 (-0.0%) | +| Federal student loan borrowers, Virginia | 1.14M | 491,787 (-56.7%) | 510,462 (-55.0%) | 1.13M (-0.1%) | 492,105 (-56.6%) | 949,575 (-16.3%) | +| Federal student loan borrowers, Washington | 811,512 | 510,863 (-37.0%) | 398,849 (-50.9%) | 812,134 (+0.1%) | 467,945 (-42.3%) | 810,895 (-0.1%) | +| Federal student loan borrowers, West Virginia | 238,717 | 99,508 (-58.3%) | 111,062 (-53.5%) | 227,134 (-4.9%) | 105,667 (-55.7%) | 160,975 (-32.6%) | +| Federal student loan borrowers, Wisconsin | 741,455 | 324,174 (-56.3%) | 294,341 (-60.3%) | 740,807 (-0.1%) | 318,365 (-57.1%) | 740,101 (-0.2%) | +| Federal student loan borrowers, Wyoming | 57,300 | 35,036 (-38.9%) | 27,385 (-52.2%) | 57,268 (-0.1%) | 31,449 (-45.1%) | 57,300 (-0.0%) | +| Federal student loan balance, borrower age 24 and Younger | $84.9B | $21.8B (-74.3%) | $21.2B (-75.0%) | $84.8B (-0.1%) | $21.3B (-74.9%) | $82.0B (-3.5%) | +| Federal student loan balance, borrower age 25 to 34 | $462.0B | $193.5B (-58.1%) | $192.1B (-58.4%) | $461.4B (-0.1%) | $191.9B (-58.5%) | $454.1B (-1.7%) | +| Federal student loan balance, borrower age 35 to 49 | $679.5B | $347.9B (-48.8%) | $344.7B (-49.3%) | $679.0B (-0.1%) | $341.6B (-49.7%) | $679.6B (+0.0%) | +| Federal student loan balance, borrower age 50 to 61 | $310.2B | $203.8B (-34.3%) | $236.3B (-23.8%) | $310.3B (+0.0%) | $213.6B (-31.1%) | $310.2B (-0.0%) | +| Federal student loan balance, borrower age 62 and Older | $142.5B | $91.4B (-35.9%) | $91.7B (-35.7%) | $142.4B (-0.1%) | $87.3B (-38.7%) | $142.4B (-0.1%) | +| Federal student loan borrowers, borrower age 24 and Younger | 6.13M | 1.06M (-82.7%) | 894,843 (-85.4%) | 3.72M (-39.3%) | 956,370 (-84.4%) | 3.43M (-44.0%) | +| Federal student loan borrowers, borrower age 25 to 34 | 13.85M | 6.19M (-55.3%) | 6.30M (-54.5%) | 14.85M (+7.2%) | 6.26M (-54.8%) | 13.85M (+0.0%) | +| Federal student loan borrowers, borrower age 35 to 49 | 14.84M | 8.02M (-45.9%) | 8.07M (-45.6%) | 15.60M (+5.1%) | 8.19M (-44.8%) | 15.04M (+1.4%) | +| Federal student loan borrowers, borrower age 50 to 61 | 6.33M | 4.41M (-30.3%) | 4.44M (-29.8%) | 6.44M (+1.8%) | 4.46M (-29.5%) | 6.46M (+2.0%) | +| Federal student loan borrowers, borrower age 62 and Older | 3.16M | 1.54M (-51.4%) | 1.74M (-45.0%) | 3.17M (+0.1%) | 1.57M (-50.4%) | 3.17M (+0.0%) | +| Federal student loan balance, borrower debt size Less than 5K | $18.7B | $6.9B (-63.2%) | $6.7B (-64.3%) | $17.0B (-9.1%) | $6.9B (-63.0%) | $14.2B (-24.3%) | +| Federal student loan balance, borrower debt size 5K to 10K | $52.0B | $20.4B (-60.7%) | $18.8B (-63.8%) | $52.0B (+0.0%) | $19.6B (-62.4%) | $43.1B (-17.1%) | +| Federal student loan balance, borrower debt size 10K to 20K | $131.2B | $58.6B (-55.3%) | $60.2B (-54.1%) | $131.1B (-0.0%) | $60.6B (-53.8%) | $131.1B (-0.0%) | +| Federal student loan balance, borrower debt size 20K to 40K | $268.0B | $136.5B (-49.1%) | $147.3B (-45.0%) | $268.2B (+0.1%) | $142.9B (-46.7%) | $267.5B (-0.2%) | +| Federal student loan balance, borrower debt size 40K to 60K | $204.3B | $111.9B (-45.3%) | $102.9B (-49.6%) | $204.4B (+0.0%) | $109.4B (-46.5%) | $204.3B (-0.0%) | +| Federal student loan balance, borrower debt size 60K to 80K | $175.6B | $126.8B (-27.8%) | $142.5B (-18.9%) | $175.7B (+0.1%) | $132.7B (-24.4%) | $178.4B (+1.6%) | +| Federal student loan balance, borrower debt size 80K to 100K | $126.4B | $58.4B (-53.8%) | $53.6B (-57.6%) | $126.4B (-0.0%) | $55.3B (-56.3%) | $126.3B (-0.1%) | +| Federal student loan balance, borrower debt size 100K to 200K | $350.7B | $153.4B (-56.2%) | $159.4B (-54.6%) | $350.9B (+0.0%) | $149.2B (-57.5%) | $350.7B (+0.0%) | +| Federal student loan balance, borrower debt size 200K+ | $352.2B | $185.6B (-47.3%) | $194.7B (-44.7%) | $352.4B (+0.0%) | $179.2B (-49.1%) | $352.6B (+0.1%) | +| Federal student loan borrowers, borrower debt size Less than 5K | 6.82M | 2.66M (-61.0%) | 2.67M (-60.9%) | 6.29M (-7.8%) | 2.75M (-59.7%) | 5.48M (-19.7%) | +| Federal student loan borrowers, borrower debt size 5K to 10K | 7.12M | 2.89M (-59.5%) | 2.66M (-62.7%) | 7.11M (-0.1%) | 2.76M (-61.2%) | 5.94M (-16.5%) | +| Federal student loan borrowers, borrower debt size 10K to 20K | 9.10M | 4.03M (-55.7%) | 4.11M (-54.8%) | 8.85M (-2.8%) | 4.14M (-54.5%) | 8.86M (-2.7%) | +| Federal student loan borrowers, borrower debt size 20K to 40K | 9.40M | 4.99M (-46.9%) | 5.36M (-43.0%) | 9.38M (-0.2%) | 5.21M (-44.5%) | 9.50M (+1.1%) | +| Federal student loan borrowers, borrower debt size 40K to 60K | 4.15M | 2.30M (-44.7%) | 2.12M (-49.0%) | 4.15M (+0.0%) | 2.26M (-45.7%) | 4.15M (+0.0%) | +| Federal student loan borrowers, borrower debt size 60K to 80K | 2.57M | 1.84M (-28.5%) | 2.08M (-19.0%) | 2.55M (-0.7%) | 1.93M (-25.1%) | 2.57M (+0.1%) | +| Federal student loan borrowers, borrower debt size 80K to 100K | 1.38M | 671,311 (-51.5%) | 609,132 (-56.0%) | 1.44M (+3.7%) | 631,351 (-54.4%) | 1.44M (+3.7%) | +| Federal student loan borrowers, borrower debt size 100K to 200K | 2.57M | 1.19M (-53.7%) | 1.20M (-53.5%) | 2.63M (+2.2%) | 1.15M (-55.4%) | 2.65M (+3.2%) | +| Federal student loan borrowers, borrower debt size 200K+ | 1.19M | 656,753 (-44.7%) | 642,242 (-45.9%) | 1.37M (+15.7%) | 609,324 (-48.7%) | 1.35M (+13.8%) | +| Parent PLUS loan balance | $114.8B | $143.9B (+25.3%) | $152.6B (+32.8%) | $114.9B (+0.0%) | $143.8B (+25.2%) | $126.7B (+10.3%) | +| Federal student loan balance excluding Parent PLUS | $1,564.2B | $714.6B (-54.3%) | $733.5B (-53.1%) | $1,563.1B (-0.1%) | $712.0B (-54.5%) | $1,541.5B (-1.5%) | diff --git a/experiments/fit_1074_fsa_calibration.py b/experiments/fit_1074_fsa_calibration.py new file mode 100644 index 0000000000..0ff1109e83 --- /dev/null +++ b/experiments/fit_1074_fsa_calibration.py @@ -0,0 +1,1088 @@ +#!/usr/bin/env python +"""Fit Federal Student Aid portfolio targets on the published US default (#1074). + +What it measures. The published default ``populace-us-2024-spm-20260915`` with +the SCF 2025 education-debt stage run on it (seed 0, as microcosm#1073's host +receipt), calibrated on its own 57,240-household support: + +- **release**: the published weights, which never saw the student loan + columns (the "before"); +- **A, no FSA**: a dense refit from those weights to the release's + ``national_state`` surface, compiled from the candidate feed without the + FSA family. It separates what re-solving on the current surface moves from + what the FSA family moves; +- **B, with FSA**: the same refit with the 132 FSA targets added; +- **A + L2, B + L2**: both again with an L2 anchor to the published weights + (``l2_lambda = 0.03``). The release default has none, and a dense refit of + an L0-selected support without one concentrates weight, so these show how + much of the movement the anchor holds back. + +Each arm uses the release tool's own compile (``compile_us_fiscal_target_registry`` +with ``student_loan_targets``), Medicaid substitutions, ``national_state`` +surface, target materializer (``_materialize_target_frame``, the FSA rows +through ``fsa_student_loan_household_values``), loss weights and loss cap, and +``calibrate`` with the release's epochs, learning rate, weight cap and +conserved mass. It is not a release: it runs no release gate, uses a +candidate feed (the pinned ``51aa40f`` feed plus the merged chronicle#347 FSA +rows) and publishes nothing. + +Outputs: the fit table per family and per FSA target, the borrower and +household composition by race before and after (and in the SCF), the weight +movement, every FSA fact that does not bind with its reason, and a schema-8 +``calibration_diagnostics.json`` for arm B (left on the run volume; the +dashboard's staging page reads that format). + + python experiments/fit_1074_fsa_calibration.py --h5 populace_us_2024.h5 \\ + --feed candidate_feed.jsonl --scf-cache-dir dta +""" + +from __future__ import annotations + +import argparse +import hashlib +import importlib.util +import json +import math +import subprocess +import sys +import time +from collections.abc import Mapping, Sequence +from datetime import UTC, datetime +from pathlib import Path + +import numpy as np + +REPO = Path(__file__).resolve().parents[1] +ISSUE = "PolicyEngine/microcosm#1074" +HOST_RELEASE = "populace-us-2024-spm-20260915" +TARGET_SURFACE = "national_state" +ARMS = ("release", "a_no_fsa", "b_with_fsa", "a_no_fsa_l2", "b_with_fsa_l2") +#: The L2 anchor of the sensitivity arms: ``l2_lambda`` times +#: ``mean((w / w_release) ** 2)``, the configuration +#: ``docs/calibration-l2-basis.md`` studies. The release default is 0. +L2_SENSITIVITY_LAMBDA = 0.03 +#: solved arm -> (with the FSA family, l2_lambda or None for the release's). +SOLVED_ARMS = { + "a_no_fsa": (False, None), + "b_with_fsa": (True, None), + "a_no_fsa_l2": (False, L2_SENSITIVITY_LAMBDA), + "b_with_fsa_l2": (True, L2_SENSITIVITY_LAMBDA), +} +ARM_LABELS = { + "release": "Release", + "a_no_fsa": "A, no FSA", + "b_with_fsa": "B, with FSA", + "a_no_fsa_l2": "A + L2", + "b_with_fsa_l2": "B + L2", +} +#: The release's per-target loss cap (``US_FISCAL_TARGET_LOSS_CAP``): a miss +#: counts at most 100% of the target's scale, as the loss counts it. +ERROR_CAP = 1.0 +_RACE_LABELS = { + 1: "white_non_hispanic", + 2: "black_non_hispanic", + 3: "hispanic", + 4: "other_or_multiple", +} + + +def _log(message: str) -> None: + print(f"[{datetime.now(UTC).strftime('%H:%M:%S')}] {message}", flush=True) + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as handle: + for block in iter(lambda: handle.read(1 << 20), b""): + digest.update(block) + return digest.hexdigest() + + +def _git_commit() -> str: + try: + return subprocess.check_output( + ["git", "rev-parse", "HEAD"], cwd=REPO, text=True + ).strip() + except (OSError, subprocess.CalledProcessError): + return "unknown" + + +def _load_release(): + path = REPO / "tools" / "build_us_fiscal_refresh_release.py" + spec = importlib.util.spec_from_file_location( + "build_us_fiscal_refresh_release", path + ) + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + assert spec.loader is not None + spec.loader.exec_module(module) + return module + + +def engine_ready_frame(release, frame): + """The host frame without the columns the locked engine computes itself. + + The published H5 was written on an older policyengine-us, so a few of its + stored columns are formula-owned on the locked 2.2.1, and the release + materializer refuses them. ``has_marketplace_health_coverage`` carries the + reported Marketplace coverage the ACA enrollment target reads under its + 2.2.1 name, ``has_marketplace_health_coverage_at_interview``; it moves + there, as the release's ACA source stage does (``_aca_source_person_table``). + Every other formula-owned column is dropped, and both lists are recorded. + """ + + from microcosm.frame import Frame + + tables = {entity: frame.table(entity).copy() for entity in frame.entities} + owned = sorted( + release._formula_owned_gate_adapter()._engine_computed_columns( + tables, period=release.PERIOD + ) + ) + person = tables["person"] + renamed = {} + reported = release.US_ACA_REPORTED_MARKETPLACE_COVERAGE + if "has_marketplace_health_coverage" in owned and reported not in person: + person[reported] = person["has_marketplace_health_coverage"] + renamed["has_marketplace_health_coverage"] = reported + dropped = {} + for entity, table in tables.items(): + present = [column for column in owned if column in table.columns] + if present: + tables[entity] = table.drop(columns=present) + dropped[entity] = present + ready = Frame( + tables, + frame.schema, + {entity: frame.weights_for(entity) for entity in frame.weighted_entities}, + ) + return ready, {"formula_owned_dropped": dropped, "renamed": renamed} + + +def _read_facts(path: Path) -> list[dict]: + with path.open("r", encoding="utf-8") as handle: + return [json.loads(line) for line in handle if line.strip()] + + +def _relative_error(estimate: float, target: float) -> float: + return (estimate - target) / max(abs(target), 1.0) + + +def _family(spec) -> str: + """The dashboard's family (provider/category), with the FSA rows by role.""" + + if spec.family == "ed_fsa": + return f"ed_fsa/{spec.metadata['target_role']}" + hierarchy = spec.hierarchy + if hierarchy is None: + return f"{spec.family}/(no hierarchy)" + return f"{hierarchy.provider.id}/{hierarchy.category.id}" + + +def _summary(errors: Sequence[float]) -> dict[str, float]: + values = np.abs(np.asarray(errors, dtype=np.float64)) + capped = np.minimum(values, ERROR_CAP) + return { + "targets": len(values), + "mean_capped_abs_rel_error": float(capped.mean()) if len(values) else math.nan, + "mean_abs_rel_error": float(values.mean()) if len(values) else math.nan, + "median_abs_rel_error": float(np.median(values)) if len(values) else math.nan, + "max_abs_rel_error": float(values.max()) if len(values) else math.nan, + "share_within_5pct": float((values <= 0.05).mean()) + if len(values) + else math.nan, + "share_within_10pct": float((values <= 0.10).mean()) + if len(values) + else math.nan, + } + + +def _person_weights(frame, household_weights: np.ndarray) -> np.ndarray: + import pandas as pd + + household_ids = frame.table("household")["household_id"].to_numpy() + by_household = pd.Series(np.asarray(household_weights), index=household_ids) + return by_household.reindex( + frame.table("person")["person_household_id"].to_numpy() + ).to_numpy(dtype=np.float64) + + +def _person_balances(frame) -> tuple[np.ndarray, np.ndarray]: + import pandas as pd + + person = frame.table("person") + own = pd.to_numeric(person["federal_student_loan_balance"], errors="coerce") + plus = pd.to_numeric(person["federal_parent_plus_loan_balance"], errors="coerce") + return ( + own.fillna(0.0).to_numpy(dtype=np.float64), + plus.fillna(0.0).to_numpy(dtype=np.float64), + ) + + +def race_composition(frame, household_weights: np.ndarray) -> dict[str, object]: + """Borrowers by race (person and reference-person household), at weights.""" + + from microcosm.build.us_runtime.scf_education_debt import _racecl4_from_cps + + person = frame.table("person") + own, plus = _person_balances(frame) + total = own + plus + weights = _person_weights(frame, household_weights) + race = _racecl4_from_cps(person) + age = person["age"].to_numpy(dtype=np.float64) + borrower = total > 0 + adult = age >= 18 + + def shares(mask: np.ndarray, value: np.ndarray | None = None) -> dict[str, float]: + base = weights * (value if value is not None else 1.0) + denominator = float(base[mask].sum()) + return { + label: float(base[mask & (race == code)].sum()) / denominator + for code, label in _RACE_LABELS.items() + } + + return { + "borrowers": shares(borrower), + "balance": shares(borrower, total), + "adults": shares(adult), + "borrower_share_of_adults_by_race": { + label: float(weights[borrower & adult & (race == code)].sum()) + / float(weights[adult & (race == code)].sum()) + for code, label in _RACE_LABELS.items() + }, + } + + +def borrower_support(frame) -> dict[str, object]: + """Unweighted borrower records in each FSA age band: the carriers a band's + count can be reweighted from (the stage gives balances to reference + persons, spouses and co-resident adult children, so young borrowers living + on their own are missed).""" + + own, plus = _person_balances(frame) + borrower = (own + plus) > 0 + age = frame.table("person")["age"].to_numpy(dtype=np.float64) + bands = ( + ("24_and_younger", -math.inf, 25.0), + ("25_to_34", 25.0, 35.0), + ("35_to_49", 35.0, 50.0), + ("50_to_61", 50.0, 62.0), + ("62_and_older", 62.0, math.inf), + ) + return { + "borrower_records": int(borrower.sum()), + "people": int(len(age)), + "borrower_records_by_age_band": { + label: int((borrower & (age >= low) & (age < high)).sum()) + for label, low, high in bands + }, + "people_by_age_band": { + label: int(((age >= low) & (age < high)).sum()) + for label, low, high in bands + }, + } + + +def household_race_composition(fit_table: Mapping[str, object]) -> dict[str, float]: + """Borrower households by the reference person's race, from a fit table.""" + + by_race = fit_table["by_race"] + holders = { + label: float(row["household_weight"]) + * float(row["share_with_federal_education_debt"]) + for label, row in by_race.items() + } + total = sum(holders.values()) + return {label: value / total for label, value in holders.items()} + + +def weight_movement( + frame, initial: np.ndarray, final: np.ndarray, cap: float +) -> dict[str, object]: + import pandas as pd + + ratio = final / initial + own, plus = _person_balances(frame) + household_ids = frame.table("household")["household_id"].to_numpy() + debt = ( + pd.Series(own + plus, index=frame.table("person")["person_household_id"]) + .groupby(level=0) + .sum() + .reindex(household_ids) + .fillna(0.0) + .to_numpy() + ) + holds = debt > 0 + + def ess(weights: np.ndarray) -> float: + return float(weights.sum() ** 2 / np.square(weights).sum()) + + return { + "ratio_quantiles": { + str(q): float(np.quantile(ratio, q)) + for q in (0.01, 0.05, 0.25, 0.5, 0.75, 0.95, 0.99) + }, + "share_at_cap": float((ratio >= cap * 0.999).mean()), + "borrower_households_weighted_mean_ratio": float( + final[holds].sum() / initial[holds].sum() + ), + "other_households_weighted_mean_ratio": float( + final[~holds].sum() / initial[~holds].sum() + ), + "borrower_household_weight_share": { + "initial": float(initial[holds].sum() / initial.sum()), + "final": float(final[holds].sum() / final.sum()), + }, + "effective_sample_size": {"initial": ess(initial), "final": ess(final)}, + "total_weight": {"initial": float(initial.sum()), "final": float(final.sum())}, + } + + +def repayment_plan_diagnostic(facts: Sequence[Mapping]) -> dict[str, object]: + """FSA's Direct Loan portfolio by repayment plan, latest quarter (no model + counterpart: the build carries no plan column).""" + + rows = [ + fact + for fact in facts + if str(fact.get("layout", {}).get("record_set_id", "")).startswith( + "ed_fsa.dl_by_repayment_plan." + ) + ] + if not rows: + return {"status": "absent"} + latest = max(str(fact["period"]["value"]) for fact in rows) + table: dict[str, dict[str, float]] = {} + for fact in rows: + if str(fact["period"]["value"]) != latest: + continue + layout = fact["layout"] + entry = table.setdefault( + layout["groupby_value_id"], {"label": layout["groupby_value_label"]} + ) + entry[layout["measure_id"]] = float(fact["value"]) + dollars = sum(row.get("dollars_outstanding", 0.0) for row in table.values()) + for row in table.values(): + if "dollars_outstanding" in row and dollars: + row["share_of_dollars"] = row["dollars_outstanding"] / dollars + return {"status": "diagnostic_only", "period": latest, "plans": table} + + +def _fmt_pct(value: float, digits: int = 1) -> str: + return "" if value != value else f"{100 * value:.{digits}f}%" + + +def _fmt_signed_pct(value: float) -> str: + return "" if value != value else f"{100 * value:+.1f}%" + + +def _fmt_money(value: float) -> str: + if value != value: + return "" + if abs(value) >= 1e9: + return f"${value / 1e9:,.1f}B" + return f"${value:,.0f}" + + +def _fmt_ratio(value: float) -> str: + return f"{value:.1e}" if abs(value) < 0.01 else f"{value:.2f}" + + +def _fmt_count(value: float) -> str: + if value != value: + return "" + if abs(value) >= 1e6: + return f"{value / 1e6:,.2f}M" + return f"{value:,.0f}" + + +def markdown(receipt: Mapping[str, object]) -> str: + lines = [ + "# microcosm#1074 receipts: Federal Student Aid portfolio targets", + "", + f"Generated {receipt['generated_at']} by " + "`experiments/fit_1074_fsa_calibration.py`, commit " + f"`{receipt['provenance']['commit']}`, Modal run " + f"`{receipt['provenance']['run']}` (`experiments/modal_1074.py`). " + "Machine-readable copy: `experiments/receipts/1074-fsa-calibration-fit.json`.", + "", + "Host: the published default " + f"`{receipt['host']['release']}` (sha256 `{receipt['host']['sha256'][:12]}…`, " + f"{receipt['host']['households']:,} households), with the SCF 2025 " + "education-debt stage run at seed 0. Feed: the pinned " + f"`51aa40f` US feed plus the merged chronicle#347 FSA rows " + f"(`{receipt['feed']['candidate_sha256'][:12]}…`, " + f"{receipt['feed']['rows']:,} rows). Arms: **release** = the published " + "weights; **A** = a dense refit to the `national_state` surface without " + "the FSA family; **B** = the same refit with it. Same epochs " + f"({receipt['solver']['epochs']}), learning rate, 5x weight cap and " + "conserved mass as a release. Not a release: no gate ran and nothing " + "was published.", + "", + "## FSA targets: the reconciled levels", + "", + ] + controls = receipt["fsa"]["controls"] + lines += [ + "| | Balance | Borrowers |", + "|---|---:|---:|", + ] + for key, label in ( + ("published_states_and_dc", "50 states and DC, as published"), + ("published_out_of_scope", "Puerto Rico and Other (leave)"), + ("published_not_reported", "Not Reported (allocated)"), + ("published_total", "Location table total"), + ("not_reported_allocation_factor", "Allocation factor"), + ("in_scope_control", "In-scope control (every family sums to it)"), + ): + balance = controls["total_balance"][key] + borrowers = controls["borrowers"][key] + if key == "not_reported_allocation_factor": + lines.append(f"| {label} | {balance:.4f} | {borrowers:.4f} |") + else: + lines.append( + f"| {label} | {_fmt_money(balance)} | {_fmt_count(borrowers)} |" + ) + lines += [ + "", + f"Reference date: {receipt['fsa']['reference_label']} " + f"(`{receipt['fsa']['reference_period']}`), the latest quarter all four " + "bound tables publish; unaged at the 2024 build period " + "(`period_alignment = stock_at_source_reference_date`).", + "", + "## Fit by FSA family", + "", + "Mean absolute relative error (share of targets within 5%).", + "", + "| FSA family | Targets | " + + " | ".join(ARM_LABELS[arm] for arm in ARMS) + + " |", + "|---|---:|" + "---:|" * len(ARMS), + ] + for family, row in receipt["fit_by_family"].items(): + if not family.startswith("ed_fsa/"): + continue + cells = [ + f"{_fmt_pct(row[arm]['mean_abs_rel_error'])} " + f"({_fmt_pct(row[arm]['share_within_5pct'], 0)})" + for arm in ARMS + ] + lines.append( + f"| {family.removeprefix('ed_fsa/')} | {row['release']['targets']} | " + + " | ".join(cells) + + " |" + ) + lines += [ + "", + "## Headline levels", + "", + "| | FSA target | " + " | ".join(ARM_LABELS[arm] for arm in ARMS) + " |", + "|---|---:|" + "---:|" * len(ARMS), + ] + for row in receipt["headline"]: + formatter = _fmt_count if row["kind"] == "count" else _fmt_money + if row["kind"] == "share": + formatter = _fmt_pct + lines.append( + f"| {row['label']} | {formatter(row['target'])} | " + + " | ".join(formatter(row[arm]) for arm in ARMS) + + " |" + ) + lines += [ + "", + "## Every other family: does adding FSA cost the rest of the surface?", + "", + "Mean absolute relative error over the `national_state` surface's " + "non-FSA targets, by provider/category (the dashboard's family), each " + "miss capped at 100% of its target as the loss caps it, sorted by how " + "much adding the FSA family moves it:", + "", + "| Family | Targets | " + + " | ".join(ARM_LABELS[arm] for arm in ARMS) + + " | B - A (pp) | B+L2 - A+L2 (pp) |", + "|---|---:|" + "---:|" * (len(ARMS) + 2), + ] + others = [ + (family, row) + for family, row in receipt["fit_by_family"].items() + if not family.startswith("ed_fsa/") + ] + metric = "mean_capped_abs_rel_error" + + def delta(row, with_arm: str, without_arm: str) -> float: + return row[with_arm][metric] - row[without_arm][metric] + + others.sort(key=lambda item: -abs(delta(item[1], "b_with_fsa", "a_no_fsa"))) + for family, row in others: + lines.append( + f"| {family} | {row['release']['targets']} | " + + " | ".join(_fmt_pct(row[arm][metric]) for arm in ARMS) + + f" | {100 * delta(row, 'b_with_fsa', 'a_no_fsa'):+.2f}" + + f" | {100 * delta(row, 'b_with_fsa_l2', 'a_no_fsa_l2'):+.2f} |" + ) + totals = receipt["fit_overall"]["non_fsa"] + lines += [ + f"| **all non-FSA targets** | {totals['release']['targets']} | " + + " | ".join(_fmt_pct(totals[arm][metric]) for arm in ARMS) + + f" | {100 * delta(totals, 'b_with_fsa', 'a_no_fsa'):+.2f}" + + f" | {100 * delta(totals, 'b_with_fsa_l2', 'a_no_fsa_l2'):+.2f} |", + "", + "## Racial composition of borrowers, before and after calibration", + "", + "Borrower households by the reference person's race (the SCF's " + "`racecl4`; the SCF column pools the five implicates):", + "", + "| | SCF 2025 | " + + " | ".join(ARM_LABELS[arm] for arm in ARMS) + + " | B - release (pp) |", + "|---|---:|" + "---:|" * (len(ARMS) + 1), + ] + race = receipt["race"] + for label in _RACE_LABELS.values(): + lines.append( + f"| {label} | {_fmt_pct(race['households']['scf_2025'][label])} | " + + " | ".join(_fmt_pct(race["households"][arm][label]) for arm in ARMS) + + f" | {100 * (race['households']['b_with_fsa'][label] - race['households']['release'][label]):+.1f} |" + ) + lines += [ + "", + "Borrowers (people) by their own race, and the share of adults who borrow:", + "", + "| | " + + " | ".join(ARM_LABELS[arm] for arm in ARMS) + + " | Adults with a balance: release | B | B + L2 |", + "|---|" + "---:|" * (len(ARMS) + 3), + ] + for label in _RACE_LABELS.values(): + lines.append( + f"| {label} | " + + " | ".join( + _fmt_pct(race["people"][arm]["borrowers"][label]) for arm in ARMS + ) + + f" | {_fmt_pct(race['people']['release']['borrower_share_of_adults_by_race'][label])}" + + f" | {_fmt_pct(race['people']['b_with_fsa']['borrower_share_of_adults_by_race'][label])}" + + f" | {_fmt_pct(race['people']['b_with_fsa_l2']['borrower_share_of_adults_by_race'][label])} |" + ) + weights = receipt["weights"] + lines += [ + "", + "## Weight movement against the published weights", + "", + "| | " + " | ".join(ARM_LABELS[arm] for arm in SOLVED_ARMS) + " |", + "|---|" + "---:|" * len(SOLVED_ARMS), + ] + rows_movement = ( + ( + "Borrower households' weight ratio", + lambda m: f"{m['borrower_households_weighted_mean_ratio']:.2f}", + ), + ( + "Other households' weight ratio", + lambda m: f"{m['other_households_weighted_mean_ratio']:.3f}", + ), + ( + "Borrower households' share of weight", + lambda m: _fmt_pct(m["borrower_household_weight_share"]["final"]), + ), + ( + "Median household weight ratio", + lambda m: _fmt_ratio(m["ratio_quantiles"]["0.5"]), + ), + ( + "99th percentile weight ratio", + lambda m: _fmt_ratio(m["ratio_quantiles"]["0.99"]), + ), + ( + "Effective sample size (release " + f"{weights['b_with_fsa']['effective_sample_size']['initial']:,.0f})", + lambda m: f"{m['effective_sample_size']['final']:,.0f}", + ), + ) + for label, getter in rows_movement: + lines.append( + f"| {label} | " + + " | ".join(getter(weights[arm]) for arm in SOLVED_ARMS) + + " |" + ) + lines += [ + "", + "## FSA facts that do not bind", + "", + "| Disposition | Facts | Reason |", + "|---|---:|---|", + ] + reasons: dict[tuple[str, str], int] = {} + for item in receipt["fsa"]["dispositions"]: + if item["disposition"] == "bound": + continue + key = (item["disposition"], item["reason"]) + reasons[key] = reasons.get(key, 0) + 1 + for (disposition, reason), count in sorted(reasons.items()): + lines.append(f"| {disposition} | {count} | {reason} |") + dropped = receipt["fsa"]["materialization_dropped"] + lines += [ + "", + f"Materialization dropped {len(dropped)} FSA targets" + + (f": {', '.join(dropped)}." if dropped else "."), + "", + "## Every FSA target", + "", + "| Target | FSA (reconciled) | " + + " | ".join(ARM_LABELS[arm] for arm in ARMS) + + " |", + "|---|---:|" + "---:|" * len(ARMS), + ] + for row in receipt["fsa_targets"]: + formatter = _fmt_count if row["measure_mode"] == "indicator_sum" else _fmt_money + lines.append( + f"| {row['label']} | {formatter(row['target'])} | " + + " | ".join( + f"{formatter(row[arm])} ({_fmt_signed_pct(row[arm + '_error'])})" + for arm in ARMS + ) + + " |" + ) + return "\n".join(lines) + "\n" + + +def main(argv: Sequence[str] | None = None) -> int: + parser = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + parser.add_argument("--h5", type=Path, required=True) + parser.add_argument("--feed", type=Path, required=True) + parser.add_argument("--feed-provenance", type=Path) + parser.add_argument("--scf-cache-dir", type=Path, required=True) + parser.add_argument("--run", default="") + parser.add_argument("--seed", type=int, default=0) + parser.add_argument("--epochs", type=int) + parser.add_argument("--diagnostics-dir", type=Path) + parser.add_argument( + "--materialization-cache-dir", + type=Path, + help="Cache the JCT reform passes here, so a restarted run reuses them.", + ) + parser.add_argument( + "--maximum-microsim-batch-size", + type=int, + default=0, + help=( + "Households per engine batch; 0 (default) runs the whole support " + "in one simulation, the batch-invariant reading." + ), + ) + parser.add_argument( + "--out-json", + type=Path, + default=REPO / "experiments" / "receipts" / "1074-fsa-calibration-fit.json", + ) + parser.add_argument( + "--out-md", + type=Path, + default=REPO / "experiments" / "1074-fsa-calibration-receipts.md", + ) + args = parser.parse_args(argv) + started = time.perf_counter() + + release = _load_release() + from microcosm.build.us_runtime import compile_us_fiscal_target_registry + from microcosm.build.us_runtime.fsa_student_loan_targets import ( + FSA_TARGET_FAMILY, + fsa_student_loan_target_receipt, + ) + from microcosm.build.us_runtime.scf_education_debt import ( + SCF_2025_FULL_EXTRACT, + SCF_2025_SUMMARY_EXTRACT, + fetch_scf_public_file, + load_scf_2025_education_debt_donor, + scf_education_debt_donor_fit_table, + us_scf_education_debt_fit_table, + us_scf_education_debt_signal_gate, + with_us_scf_education_debt_inputs, + ) + from microcosm.calibrate import ( + TargetRegistry, + build_constraint_matrix, + calibrate, + write_calibration_diagnostics, + ) + from microcosm.frame import Frame, WeightKind, Weights + + # The release's own defaults (epochs, learning rate, weight cap, aging, + # batch size), read from its parser rather than restated here. + cli = release._parse_args( + [ + "--base-h5", + str(args.h5), + "--ledger-facts", + str(args.feed), + "--out", + str(Path("/tmp") / "fit-1074-release-args"), + "--no-staging", + ] + ) + epochs = int(args.epochs or cli.epochs) + + _log(f"reading feed {args.feed}") + facts = _read_facts(args.feed) + feed_sha = _sha256(args.feed) + crosswalk_path = release.default_congressional_district_vintage_crosswalk_path() + crosswalk = release.load_congressional_district_vintage_crosswalk(crosswalk_path) + + _log("compiling the target registry with and without the FSA family") + registry = compile_us_fiscal_target_registry( + facts, + target_period=release.PERIOD, + congressional_district_vintage_crosswalk=crosswalk, + age_targets=cli.age_targets, + allow_unaged_dollar_targets=cli.allow_unaged_dollar_targets, + student_loan_targets=True, + ) + without_flag = compile_us_fiscal_target_registry( + facts, + target_period=release.PERIOD, + congressional_district_vintage_crosswalk=crosswalk, + age_targets=cli.age_targets, + allow_unaged_dollar_targets=cli.allow_unaged_dollar_targets, + ) + non_fsa_names = [s.name for s in registry.specs if s.family != FSA_TARGET_FAMILY] + if non_fsa_names != [s.name for s in without_flag.specs]: + raise RuntimeError("The FSA flag changed the non-FSA surface.") + registry, _ = release.apply_us_medicaid_enrollment_substitutions(registry) + specs, surface_receipt = release._select_target_surface( + registry.specs, TARGET_SURFACE + ) + fsa_receipt = fsa_student_loan_target_receipt(facts, target_period=release.PERIOD) + _log(f"{len(specs)} targets on the {TARGET_SURFACE} surface") + + _log("loading the host and running the SCF education-debt stage") + summary_path = fetch_scf_public_file(SCF_2025_SUMMARY_EXTRACT, args.scf_cache_dir) + full_path = fetch_scf_public_file(SCF_2025_FULL_EXTRACT, args.scf_cache_dir) + donor = load_scf_2025_education_debt_donor(summary_path, full_path) + host_sha = _sha256(args.h5) + base = release._load_frame(args.h5) + frame = with_us_scf_education_debt_inputs( + base, + seed=args.seed, + time_period=release.PERIOD, + scf_education_debt_donor=donor, + ) + del base + gate = us_scf_education_debt_signal_gate(frame) + _log(f"stage gate passed={gate.passed}") + frame, engine_adaptation = engine_ready_frame(release, frame) + _log(f"engine adaptation: {engine_adaptation}") + + _log("materializing the target frame") + batch_size = args.maximum_microsim_batch_size or None + cache_context = None + if args.materialization_cache_dir is not None: + args.materialization_cache_dir.mkdir(parents=True, exist_ok=True) + # Binds the reform caches to these exact staged inputs and engine. + cache_context = { + "experiment": ISSUE, + "base_dataset_sha256": host_sha, + "staged_frame_sha256": release._staged_frame_sha256(frame), + "policyengine_us_version": release._package_or_workspace_version( + "policyengine-us" + ), + "target_period": release.PERIOD, + "maximum_microsim_batch_size": batch_size, + # Not a release producer: the release binds its materializer + # identity here, and declares None otherwise. + "target_frame_materializer_identity_sha256": None, + } + target_frame, materialized, compilation = release._materialize_target_frame( + frame, + tuple(specs), + maximum_microsim_batch_size=batch_size, + target_materialization_cache_dir=args.materialization_cache_dir, + target_materialization_cache_context=cache_context, + ) + dropped = list(compilation.get("dropped_target_names") or []) + _log(f"materialized {len(materialized)} targets; dropped {len(dropped)}") + registry_b = materialized + registry_a = TargetRegistry( + tuple(s for s in materialized.specs if s.family != FSA_TARGET_FAMILY), + country="us", + ) + initial = np.asarray(target_frame.weights_for("household").values, dtype=np.float64) + + results = {} + timings = {} + for arm, (with_fsa, l2_lambda) in SOLVED_ARMS.items(): + arm_registry = registry_b if with_fsa else registry_a + _log(f"calibrating arm {arm} ({len(arm_registry)} targets, {epochs} epochs)") + t0 = time.perf_counter() + results[arm] = calibrate( + target_frame, + arm_registry.to_target_set(), + epochs=epochs, + learning_rate=cli.learning_rate, + max_weight_ratio=cli.max_weight_ratio, + seed=args.seed, + mass="conserve", + l2_lambda=cli.l2_lambda if l2_lambda is None else l2_lambda, + target_loss_weights=release._fiscal_target_loss_weights( + arm_registry, cli.target_family_loss_multipliers + ), + target_loss_cap=release.US_FISCAL_TARGET_LOSS_CAP, + ) + timings[arm] = time.perf_counter() - t0 + _log( + f"arm {arm}: loss {results[arm].initial_loss:.5f} -> " + f"{results[arm].final_loss:.5f} in {timings[arm]:.0f}s" + ) + weights = { + "release": initial, + **{ + arm: np.asarray(results[arm].weights, dtype=np.float64) + for arm in SOLVED_ARMS + }, + } + + problem = build_constraint_matrix(target_frame, registry_b.to_target_set()) + estimates = {arm: problem.estimates(w) for arm, w in weights.items()} + specs_by_row = {f"{spec.name}@{spec.period}": spec for spec in registry_b.specs} + rows = [] + for index, name in enumerate(problem.names): + spec = specs_by_row[name] + target = float(problem.target_vector[index]) + row = { + "name": spec.name, + "family": _family(spec), + "is_fsa": spec.family == FSA_TARGET_FAMILY, + "target": target, + } + for arm in ARMS: + value = float(estimates[arm][index]) + row[arm] = value + row[f"{arm}_error"] = _relative_error(value, target) + if row["is_fsa"]: + row["label"] = spec.hierarchy.target.label + row["measure_mode"] = spec.metadata["measure_mode"] + row["target_role"] = spec.metadata["target_role"] + rows.append(row) + + if args.diagnostics_dir is not None: + # Every target's row, kept on the run volume beside the diagnostics. + args.diagnostics_dir.mkdir(parents=True, exist_ok=True) + (args.diagnostics_dir / "targets.json").write_text( + json.dumps(rows, default=float), encoding="utf-8" + ) + fit_by_family: dict[str, dict[str, object]] = {} + for family in sorted({row["family"] for row in rows}): + members = [row for row in rows if row["family"] == family] + fit_by_family[family] = { + arm: _summary([row[f"{arm}_error"] for row in members]) for arm in ARMS + } + fit_overall = { + group: { + arm: _summary( + [row[f"{arm}_error"] for row in rows if row["is_fsa"] == is_fsa] + ) + for arm in ARMS + } + for group, is_fsa in (("fsa", True), ("non_fsa", False)) + } + + _log("tabulating composition and fit tables") + + def with_weights(values: np.ndarray): + return Frame( + {entity: target_frame.table(entity) for entity in target_frame.entities}, + target_frame.schema, + {"household": Weights(values, WeightKind.CALIBRATED)}, + ) + + fit_tables = { + arm: us_scf_education_debt_fit_table(with_weights(w)) + for arm, w in weights.items() + } + scf_fit = scf_education_debt_donor_fit_table(donor) + race = { + "households": { + "scf_2025": household_race_composition(scf_fit), + **{arm: household_race_composition(fit_tables[arm]) for arm in ARMS}, + }, + "people": { + arm: race_composition(target_frame, w) for arm, w in weights.items() + }, + } + own, plus = _person_balances(target_frame) + person_weights = { + arm: _person_weights(target_frame, w) for arm, w in weights.items() + } + controls = fsa_receipt["controls"] + pp_target = next( + row["target"] + for row in rows + if row["is_fsa"] and row["target_role"] == "fsa_parent_plus_balance" + ) + headline = [ + { + "label": "Federal balance, own plus Parent PLUS", + "kind": "amount", + "target": controls["total_balance"]["in_scope_control"], + **{arm: float(np.dot(own + plus, person_weights[arm])) for arm in ARMS}, + }, + { + "label": "Borrowers (people with a balance)", + "kind": "count", + "target": controls["borrowers"]["in_scope_control"], + **{arm: float(person_weights[arm][(own + plus) > 0].sum()) for arm in ARMS}, + }, + { + "label": "Parent PLUS balance", + "kind": "amount", + "target": pp_target, + **{arm: float(np.dot(plus, person_weights[arm])) for arm in ARMS}, + }, + { + "label": "Parent PLUS share of the balance", + "kind": "share", + "target": pp_target / controls["total_balance"]["in_scope_control"], + **{ + arm: float(np.dot(plus, person_weights[arm])) + / float(np.dot(own + plus, person_weights[arm])) + for arm in ARMS + }, + }, + { + "label": "Mean balance per borrower", + "kind": "amount", + "target": controls["total_balance"]["in_scope_control"] + / controls["borrowers"]["in_scope_control"], + **{ + arm: float(np.dot(own + plus, person_weights[arm])) + / float(person_weights[arm][(own + plus) > 0].sum()) + for arm in ARMS + }, + }, + { + "label": "Households with federal education debt", + "kind": "share", + "target": math.nan, + **{ + arm: float( + fit_tables[arm]["households"]["share_with_federal_education_debt"] + ) + for arm in ARMS + }, + }, + ] + + if args.diagnostics_dir is not None: + args.diagnostics_dir.mkdir(parents=True, exist_ok=True) + try: + outcome = write_calibration_diagnostics( + results["b_with_fsa"], + args.diagnostics_dir / "calibration_diagnostics.json", + target_registry=registry_b, + target_surface=release.target_surface_payload(results["b_with_fsa"]), + build={ + "base_dataset_sha256": host_sha, + "experiment": ISSUE, + "candidate_feed_sha256": feed_sha, + "target_compilation": compilation, + }, + ) + _log(f"diagnostics written: {outcome}") + except Exception as error: # noqa: BLE001 - a receipt still ships + _log(f"diagnostics not written: {error!r}") + + fsa_dropped = sorted( + name for name in dropped if name.startswith(f"{FSA_TARGET_FAMILY}.") + ) + receipt = { + "schema_version": 1, + "issue": ISSUE, + "generated_at": datetime.now(UTC).strftime("%Y-%m-%d"), + "provenance": {"commit": _git_commit(), "run": args.run}, + "host": { + "release": HOST_RELEASE, + "sha256": host_sha, + "households": int(target_frame.n("household")), + "people": int(target_frame.n("person")), + "scf_stage_seed": args.seed, + "scf_stage_gate_passed": bool(gate.passed), + "engine_adaptation": engine_adaptation, + }, + "feed": { + "candidate_sha256": feed_sha, + "rows": len(facts), + "provenance": ( + json.loads(args.feed_provenance.read_text()) + if args.feed_provenance is not None + else None + ), + }, + "solver": { + "kernel": "microcosm.calibrate.calibrate (dense refit, no L0)", + "epochs": epochs, + "learning_rate": cli.learning_rate, + "max_weight_ratio": cli.max_weight_ratio, + "l2_lambda": cli.l2_lambda, + "mass": "conserve", + "target_surface": TARGET_SURFACE, + "age_targets": cli.age_targets, + "loss": { + arm: { + "initial": float(results[arm].initial_loss), + "final": float(results[arm].final_loss), + "seconds": timings[arm], + } + for arm in results + }, + "arms": { + arm: { + "with_fsa": with_fsa, + "targets": len(registry_b if with_fsa else registry_a), + "l2_lambda": cli.l2_lambda if l2_lambda is None else l2_lambda, + } + for arm, (with_fsa, l2_lambda) in SOLVED_ARMS.items() + }, + "surface": surface_receipt, + }, + "fsa": { + **{ + key: fsa_receipt[key] + for key in ( + "status", + "reference_period", + "reference_label", + "period_alignment", + "controls", + "disposition_counts", + "dispositions", + ) + }, + "materialization_dropped": fsa_dropped, + "repayment_plan_diagnostic": repayment_plan_diagnostic(facts), + }, + "headline": headline, + "fit_by_family": fit_by_family, + "fit_overall": fit_overall, + "fsa_targets": [row for row in rows if row["is_fsa"]], + "race": race, + "support": borrower_support(target_frame), + "scf_fit_tables": {"scf_2025": scf_fit, **fit_tables}, + "weights": { + arm: weight_movement( + target_frame, initial, weights[arm], cli.max_weight_ratio + ) + for arm in SOLVED_ARMS + }, + "seconds": time.perf_counter() - started, + } + args.out_json.parent.mkdir(parents=True, exist_ok=True) + args.out_json.write_text( + json.dumps(receipt, indent=2, default=float, allow_nan=True) + "\n", + encoding="utf-8", + newline="\n", + ) + args.out_md.write_text(markdown(receipt), encoding="utf-8", newline="\n") + _log(f"wrote {args.out_json} and {args.out_md}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/experiments/modal_1074.py b/experiments/modal_1074.py new file mode 100644 index 0000000000..f8e8948d10 --- /dev/null +++ b/experiments/modal_1074.py @@ -0,0 +1,696 @@ +"""Run the microcosm#1074 FSA-target experiments on Modal instead of local RAM. + +Each run clones a pushed commit of PolicyEngine/microcosm, syncs that tree's +uv.lock, fetches the inputs and verifies each sha256, runs the requested steps +in order, and saves every receipt the steps write plus a run log to the +`microcosm-1074-cache` volume under results//. `collect` copies a +run's files back into this checkout. Inputs: + +- the published host release `populace-us-2024-spm-20260915` from Hugging Face + (policyengine/populace-us at a pinned revision); +- the Federal Reserve's SCF 2025 public zips (summary extract and full file); +- for ``fit``: a candidate Chronicle feed, built in the container and cached + on the volume. It is the pinned US feed (rebuilt byte for byte at Chronicle + ``51aa40f`` with ``tools/build_us_chronicle_feed.py`` and checked against + ``us/chronicle_feed.json``) plus the six FSA packages of + PolicyEngine/chronicle#347 (``chronicle build-bundle --year 2026`` at the + merge commit ``acbedb5`` on Chronicle main, which reads the raw files from + R2). The candidate is a reviewed diagnostic input only; no pin in the + repository names it. + + export PYTHONIOENCODING=utf-8 PYTHONUTF8=1 + modal run experiments/modal_1074.py::preflight --commit + modal run --detach experiments/modal_1074.py::launch --commit --steps tests,fit + modal run experiments/modal_1074.py::collect --run-id + +Steps (see STEPS; each runs one or more commands, stopping at the first that +fails): + +- ``tests``: the FSA target, fiscal-target, ledger, parity, chronicle-feed, + label and release-tool filter tests (engine-free); +- ``contract``: the engine-contract fiscal-target and release-input tests; +- ``spec``: the bundle generator and the spec-engine coverage attestation in + ``--check`` mode, and the engine-free spec-engine tests, which fail if the + change moved a spec identity; +- ``feed``: build (or verify the cached) candidate feed only; +- ``fit``: the calibration fit and receipt + (``experiments/fit_1074_fsa_calibration.py``), labelled with the run id. + +After the steps the run saves every tracked file they changed +(``git status --porcelain``) and every untracked file matching OUTPUT_GLOBS, +so ``collect`` brings receipts back. This is an experiment runner, not the +registered stage runner in tools/modal_us_stage.py; it writes nothing to the +Hub and publishes nothing. +""" + +from __future__ import annotations + +import hashlib +import json +import os +import shutil +import subprocess +import time +import urllib.request +import zipfile +from datetime import UTC, datetime +from pathlib import Path + +import modal + +REPO_URL = "https://github.com/PolicyEngine/microcosm.git" +HOST = { + "repo_id": "policyengine/populace-us", + "filename": "populace_us_2024.h5", + "revision": "8ab57ffc2ca41d8af631ff62ebbce95e966299f3", + "sha256": "6496cc4393d4d3c6574f76eca231de5898c803b9067645591fd5c4d3e65aee84", +} +# zip name -> (url, zip sha256, member, member sha256) +SCF_ZIPS = { + "scfp2025s.zip": ( + "https://www.federalreserve.gov/econres/files/scfp2025s.zip", + "32dcf86be48b20fb5fd9e659f79fa22a4d9cccf456e44b6ca9b1329e9869bbeb", + "rscfp2025.dta", + "454a287f188bf13f94efc09820fa878482d897db1d2a16ac63bec14eb580d2dd", + ), + "scf2025s.zip": ( + "https://www.federalreserve.gov/econres/files/scf2025s.zip", + "c4010bd5decaa13d5d027862ed4b6c41b4106925089290f879749f8f5a467741", + "p25i6.dta", + "38926275dfb8f00ea843b80ced7a9412ad4653d39c7fab8fe24c3bdf912902ad", + ), +} +#: The pinned US feed (us/chronicle_feed.json) and where it is rebuilt from. +PINNED_FEED = { + "repo": "https://github.com/PolicyEngine/chronicle.git", + "commit": "51aa40fd28e2ca81937752515e773d123fecfb71", + "facts_sha256": "965a29ac9458edb58a05184917ee4a19772fd3dc7b4588db6eb6da5803641aac", + "rows": 40178, +} +#: PolicyEngine/chronicle#347: the six FSA portfolio packages. +FSA_PACKAGES = { + "repo": "https://github.com/PolicyEngine/chronicle.git", + # The merge commit of chronicle#347 on Chronicle main (2026-10-22). Its + # packages/ed_fsa tree is the PR head's (81e3f98), whose FSA facts are the + # first draft's (4448a7c), the export the test fixture holds. The digest + # is of the LF export the container wrote at the PR head (run + # 20261022T194252Z-c94516ee1); a Windows build writes the same rows with + # CRLF endings. The run records whether the merge commit's export matches. + "commit": "acbedb5fef490137219207cf40945d70c2db34ea", + "facts_sha256": "58774e11cf63754f85be0a082c29b581033c304e5d26dc71b2b23eac0cc3f1d8", + "pull_request": "https://github.com/PolicyEngine/chronicle/pull/347", + "year": 2026, + "packages": [ + "packages/ed_fsa/portfolio_summary_fy2026_q3", + "packages/ed_fsa/portfolio_by_location_fy2026_q2", + "packages/ed_fsa/portfolio_by_age_fy2026_q2", + "packages/ed_fsa/portfolio_by_debt_size_fy2026_q2", + "packages/ed_fsa/portfolio_by_loan_type_fy2026_q3", + "packages/ed_fsa/dl_portfolio_by_repayment_plan_fy2026_q3", + ], + "rows": 461, +} +_TESTS = "packages/microcosm-build/tests" +_CALIBRATE_TESTS = "packages/microcosm-calibrate/tests" +#: step -> commands. A part "glob:" expands to the sorted matches. +STEPS: dict[str, list[list[str]]] = { + "tests": [ + [ + "{python}", + "-m", + "pytest", + "-q", + f"{_TESTS}/engine_free/us/test_us_fsa_student_loan_targets.py", + f"{_TESTS}/engine_free/us/test_us_fiscal_targets.py", + f"{_TESTS}/engine_free/us/test_us_chronicle_feed.py", + f"{_TESTS}/engine_free/shared/test_ledger_targets.py", + f"{_TESTS}/engine_free/shared/test_ledger_artifact.py", + f"{_TESTS}/engine_free/shared/test_release_target_parity.py", + f"{_CALIBRATE_TESTS}/engine_free/shared/test_provider_labels.py", + f"{_CALIBRATE_TESTS}/engine_free/shared/test_variable_labels.py", + ], + [ + "{python}", + "-m", + "pytest", + "-q", + f"{_TESTS}/engine_free/us/test_us_fiscal_refresh_builder.py", + "-k", + "ledger_filter or restated or scf_education_debt or parity or materializ", + ], + ], + "contract": [ + [ + "{python}", + "-m", + "pytest", + "-q", + f"{_TESTS}/engine_contract/us/test_us_fiscal_targets.py", + f"{_TESTS}/engine_contract/us/test_release_input_coverage.py", + ], + ], + "spec": [ + ["{python}", "tools/generate_us_bundle_from_constants.py", "--check"], + ["{python}", "tools/spec_engine_coverage.py", "--check"], + [ + "{python}", + "-m", + "pytest", + "-q", + f"glob:{_TESTS}/engine_free/shared/test_spec_engine_*.py", + f"{_TESTS}/engine_free/us/test_us_spec_bundle.py", + f"{_TESTS}/engine_free/us/test_us_bundle_core_contracts.py", + ], + ], + "feed": [], + "fit": [ + [ + "{python}", + "experiments/fit_1074_fsa_calibration.py", + "--h5", + "{h5}", + "--feed", + "{feed}", + "--feed-provenance", + "{feed_provenance}", + "--scf-cache-dir", + "{scf}", + "--diagnostics-dir", + "{results}/diagnostics", + "--materialization-cache-dir", + "/cache/materialization", + "--run", + "{run_id}", + ] + ], +} +OUTPUT_GLOBS = ("experiments/receipts/1074-*.json", "experiments/1074-*.md") +CPU = 8.0 +# The whole 57,240-household support in one engine peaks near 88 GB. +MEMORY_MB = 131072 + +image = ( + modal.Image.debian_slim(python_version="3.14") + .apt_install("git") + .pip_install("uv==0.11.7", "huggingface_hub") +) +app = modal.App("microcosm-1074-experiments") +cache = modal.Volume.from_name("microcosm-1074-cache", create_if_missing=True) +CACHE = Path("/cache") +WORK = Path("/work/microcosm") +VENV = Path("/opt/venv") + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as handle: + for block in iter(lambda: handle.read(1 << 20), b""): + digest.update(block) + return digest.hexdigest() + + +def _verified(path: Path, sha256: str) -> bool: + return path.exists() and _sha256(path) == sha256 + + +def _clean_env(**overrides: str) -> dict[str, str]: + """The container environment without the Modal runtime's Python path. + + Modal puts its own client and dependencies (under /pkg) on PYTHONPATH. A + subprocess that inherits it sees those packages beside the venv's, and the + build's worker-identity check refuses the duplicates (e.g. idna). + """ + env = { + key: value + for key, value in os.environ.items() + if key not in {"PYTHONPATH", "PYTHONHOME", "PYTHONSTARTUP"} + } + env.update(overrides) + return env + + +def _uv_env(**overrides: str) -> dict[str, str]: + # A Modal volume cannot host uv's cache: uv persists temporary files by + # atomic rename, which the volume refuses. + return _clean_env(UV_CACHE_DIR="/root/.cache/uv", UV_LINK_MODE="copy", **overrides) + + +def _clone(url: str, commit: str, target: Path) -> None: + target.mkdir(parents=True, exist_ok=True) + run = lambda *args: subprocess.run(args, cwd=target, check=True) # noqa: E731 + run("git", "init", "-q") + run("git", "remote", "add", "origin", url) + run("git", "fetch", "-q", "--depth", "1", "origin", commit) + run("git", "checkout", "-q", "--detach", "FETCH_HEAD") + head = subprocess.run( + ["git", "rev-parse", "HEAD"], + cwd=target, + check=True, + capture_output=True, + text=True, + ).stdout.strip() + if head != commit: + raise RuntimeError(f"{url}: checked out {head}, expected {commit}") + + +def _checkout(commit: str) -> None: + _clone(REPO_URL, commit, WORK) + subprocess.run( + ["uv", "sync", "--all-packages", "--extra", "us", "--frozen"], + cwd=WORK, + env=_uv_env(UV_PROJECT_ENVIRONMENT=str(VENV)), + check=True, + ) + + +def _inputs() -> dict[str, Path]: + from huggingface_hub import hf_hub_download + + host_dir = CACHE / "host" / HOST["revision"] + host = host_dir / HOST["filename"] + if not _verified(host, HOST["sha256"]): + hf_hub_download( + repo_id=HOST["repo_id"], + filename=HOST["filename"], + revision=HOST["revision"], + repo_type="dataset", + local_dir=host_dir, + ) + if not _verified(host, HOST["sha256"]): + raise RuntimeError("host H5 sha256 mismatch") + zips = CACHE / "scf" / "zips" + scf = CACHE / "scf" / "dta" + zips.mkdir(parents=True, exist_ok=True) + scf.mkdir(parents=True, exist_ok=True) + for name, (url, zip_sha, member, member_sha) in SCF_ZIPS.items(): + archive = zips / name + if not _verified(archive, zip_sha): + request = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}) + with urllib.request.urlopen(request, timeout=600) as response: + archive.write_bytes(response.read()) + if not _verified(archive, zip_sha): + raise RuntimeError(f"{name} sha256 mismatch") + target = scf / member + if not _verified(target, member_sha): + with zipfile.ZipFile(archive) as bundle: + target.write_bytes(bundle.read(member)) + if not _verified(target, member_sha): + raise RuntimeError(f"{member} sha256 mismatch") + cache.commit() + return {"h5": host, "zips": zips, "scf": scf} + + +def _pinned_feed(log) -> Path: + """The pinned US feed, rebuilt at its Chronicle commit and sha-checked.""" + + feeds = CACHE / "feeds" + feeds.mkdir(parents=True, exist_ok=True) + path = feeds / f"consumer_facts_us_{PINNED_FEED['commit'][:7]}.jsonl" + if _verified(path, PINNED_FEED["facts_sha256"]): + return path + root = Path("/work/chronicle-pinned") + _clone(PINNED_FEED["repo"], PINNED_FEED["commit"], root) + subprocess.run(["uv", "sync", "--frozen"], cwd=root, env=_uv_env(), check=True) + out = Path("/tmp/us-feed") + t0 = time.time() + subprocess.run( + [ + str(VENV / "bin" / "python"), + "tools/build_us_chronicle_feed.py", + "--chronicle-root", + str(root), + "--out", + str(out), + "--replace", + "--skip-artifact", + ], + cwd=WORK, + env=_uv_env(), + check=True, + ) + log["pinned_feed_build_seconds"] = round(time.time() - t0, 1) + built = out / "consumer_facts.jsonl" + if not _verified(built, PINNED_FEED["facts_sha256"]): + raise RuntimeError( + f"rebuilt US feed sha256 {_sha256(built)} != pinned " + f"{PINNED_FEED['facts_sha256']}" + ) + shutil.copyfile(built, path) + cache.commit() + return path + + +def _fsa_rows(log) -> Path: + """The FSA packages' consumer facts at chronicle#347's merge commit.""" + + feeds = CACHE / "feeds" + path = feeds / f"ed_fsa_{FSA_PACKAGES['commit'][:7]}.jsonl" + receipt = feeds / f"ed_fsa_{FSA_PACKAGES['commit'][:7]}.json" + if path.exists() and receipt.exists(): + if json.loads(receipt.read_text())["sha256"] == _sha256(path): + return path + root = Path("/work/chronicle-fsa") + _clone(FSA_PACKAGES["repo"], FSA_PACKAGES["commit"], root) + subprocess.run(["uv", "sync", "--frozen"], cwd=root, env=_uv_env(), check=True) + out = Path("/tmp/fsa-bundle") + command = [ + "uv", + "run", + "--frozen", + "chronicle", + "build-bundle", + "--year", + str(FSA_PACKAGES["year"]), + *[ + part + for package in FSA_PACKAGES["packages"] + for part in ("--source", package) + ], + "--out", + str(out), + "--replace", + ] + subprocess.run( + command, cwd=root, env=_uv_env(), check=True, stdout=subprocess.DEVNULL + ) + built = out / "consumer_facts.jsonl" + rows = [line for line in built.read_bytes().splitlines() if line.strip()] + if len(rows) != FSA_PACKAGES["rows"]: + raise RuntimeError(f"FSA bundle has {len(rows)} rows, expected 461") + shutil.copyfile(built, path) + sha256 = _sha256(path) + receipt.write_text( + json.dumps( + { + "sha256": sha256, + "matches_facts_sha256": sha256 == FSA_PACKAGES["facts_sha256"], + "command": command, + }, + indent=1, + ), + encoding="utf-8", + ) + log["fsa_command"] = command + cache.commit() + return path + + +def _candidate_feed(log) -> tuple[Path, Path]: + """The pinned feed plus the FSA rows, sorted by aggregate_fact_key.""" + + pinned = _pinned_feed(log) + fsa = _fsa_rows(log) + feeds = CACHE / "feeds" + path = feeds / ( + f"candidate_us_{PINNED_FEED['commit'][:7]}_ed_fsa_" + f"{FSA_PACKAGES['commit'][:7]}.jsonl" + ) + provenance = path.with_suffix(".provenance.json") + if path.exists() and provenance.exists(): + if json.loads(provenance.read_text())["candidate_sha256"] == _sha256(path): + return path, provenance + pinned_rows = [line for line in pinned.read_bytes().splitlines() if line.strip()] + fsa_rows = [line for line in fsa.read_bytes().splitlines() if line.strip()] + keys = {} + ids = set() + for line in pinned_rows: + row = json.loads(line) + keys[row["aggregate_fact_key"]] = line + ids.add(row["lineage"]["source_record_id"]) + for line in fsa_rows: + row = json.loads(line) + if ( + row["aggregate_fact_key"] in keys + or row["lineage"]["source_record_id"] in ids + ): + raise RuntimeError( + f"FSA row collides with the pinned feed: {row['lineage']}" + ) + keys[row["aggregate_fact_key"]] = line + payload = b"".join(keys[key] + b"\n" for key in sorted(keys)) + path.write_bytes(payload) + provenance.write_text( + json.dumps( + { + "kind": "reviewed diagnostic candidate (not a pin)", + "pinned_feed": {**PINNED_FEED, "path": pinned.name}, + "fsa_packages": { + **FSA_PACKAGES, + "path": fsa.name, + "sha256": _sha256(fsa), + "matches_facts_sha256": _sha256(fsa) + == FSA_PACKAGES["facts_sha256"], + }, + "rule": ( + "pinned feed rows plus the FSA rows, no shared " + "aggregate_fact_key or source_record_id, sorted by " + "aggregate_fact_key" + ), + "rows": len(keys), + "candidate_sha256": _sha256(path), + }, + indent=1, + ), + encoding="utf-8", + ) + cache.commit() + return path, provenance + + +def _expand(command: list[str], fields: dict[str, str]) -> list[str]: + parts: list[str] = [] + for part in command: + if part.startswith("glob:"): + matches = sorted(WORK.glob(part.removeprefix("glob:"))) + if not matches: + raise RuntimeError(f"{part} matched nothing") + parts.extend(str(path.relative_to(WORK)) for path in matches) + else: + parts.append(part.format(**fields)) + return parts + + +def _save_changed_files(target_root: Path) -> list[str]: + """Copy tracked files the steps changed, and new outputs, under target_root.""" + + status = subprocess.run( + ["git", "status", "--porcelain", "--untracked-files=all"], + cwd=WORK, + check=True, + capture_output=True, + text=True, + ).stdout.splitlines() + saved = [] + for line in status: + code, rel = line[:2], line[3:] + path = WORK / rel + untracked = code == "??" + if untracked and not any(path.match(p) for p in OUTPUT_GLOBS): + continue + if not path.is_file(): + continue + target = target_root / rel + target.parent.mkdir(parents=True, exist_ok=True) + target.write_bytes(path.read_bytes()) + saved.append(f"{code} {rel}") + return saved + + +@app.function( + image=image, cpu=2.0, memory=8192, timeout=3600, volumes={"/cache": cache} +) +def preflight_remote(commit: str) -> dict: + """Clone, sync and stage the inputs without running a step.""" + started = time.time() + _checkout(commit) + paths = _inputs() + probe = subprocess.run( + [ + str(VENV / "bin" / "python"), + "-c", + "import microcosm.build.us_runtime.fsa_student_loan_targets as m; " + "print(m.__file__)", + ], + cwd=WORK, + capture_output=True, + text=True, + ) + return { + "commit": commit, + "inputs": {key: str(path) for key, path in paths.items()}, + "import_ok": probe.returncode == 0, + "import_output": (probe.stdout + probe.stderr)[-2000:], + "seconds": round(time.time() - started, 1), + } + + +# Non-preemptible, as tools/modal_us_stage.py runs its heavy stages: a +# preempted container restarts the whole run from the clone. +@app.function( + image=image, + cpu=CPU, + memory=MEMORY_MB, + timeout=8 * 3600, + volumes={"/cache": cache}, + retries=0, + nonpreemptible=True, +) +def run_steps( + commit: str, steps: list[str], run_id: str, script_text: str = "" +) -> dict: + import resource # Unix-only; the local entrypoint runs on Windows too + + started = datetime.now(UTC) + _checkout(commit) + paths = _inputs() + out = CACHE / "results" / run_id + out.mkdir(parents=True, exist_ok=True) + fields = {key: str(path) for key, path in paths.items()} | { + "python": str(VENV / "bin" / "python"), + "run_id": run_id, + "results": str(out), + } + log = { + "run_id": run_id, + "commit": commit, + "steps": [], + "cpu": CPU, + "memory_mb": MEMORY_MB, + "inputs": {"host": HOST, "scf": {k: v[1] for k, v in SCF_ZIPS.items()}}, + "started_at": started.isoformat(), + } + if {"feed", "fit"} & set(steps): + feed_log: dict[str, object] = {} + feed, provenance = _candidate_feed(feed_log) + fields |= {"feed": str(feed), "feed_provenance": str(provenance)} + log["feed"] = { + **json.loads(provenance.read_text()), + **feed_log, + "path": str(feed), + } + threads = str(int(CPU)) + env = _clean_env( + PYTHONUNBUFFERED="1", + OMP_NUM_THREADS=threads, + MKL_NUM_THREADS=threads, + OPENBLAS_NUM_THREADS=threads, + ) + failed = False + for step in steps: + if step == "script": + # An uncommitted local probe passed by --script; it runs in the + # clone like any step, and the run log records its text. + (WORK / "_modal_probe.py").write_text(script_text, encoding="utf-8") + log["script_sha256"] = hashlib.sha256(script_text.encode()).hexdigest() + commands = [[fields["python"], "_modal_probe.py"]] + else: + commands = [_expand(command, fields) for command in STEPS[step]] + before = resource.getrusage(resource.RUSAGE_CHILDREN).ru_maxrss + t0 = time.time() + returncodes = [] + with (out / f"{step}.log").open("w", encoding="utf-8") as handle: + for command in commands: + handle.write("$ " + " ".join(command) + "\n") + handle.flush() + result = subprocess.run( + command, + cwd=WORK, + env=env, + stdout=handle, + stderr=subprocess.STDOUT, + text=True, + ) + returncodes.append(result.returncode) + if result.returncode != 0: + break + peak_kb = resource.getrusage(resource.RUSAGE_CHILDREN).ru_maxrss + log["steps"].append( + { + "step": step, + "commands": commands, + "returncodes": returncodes, + "returncode": next((code for code in returncodes if code), 0), + "seconds": round(time.time() - t0, 1), + "peak_child_rss_gb": round(max(peak_kb, before) / 1024 / 1024, 2), + } + ) + cache.commit() + if any(returncodes): + failed = True + break + log["failed"] = failed + log["changed_files"] = _save_changed_files(out / "files") + log["finished_at"] = datetime.now(UTC).isoformat() + (out / "run.json").write_text(json.dumps(log, indent=2) + "\n", encoding="utf-8") + cache.commit() + return log + + +@app.function(image=image, volumes={"/cache": cache}) +def fetch_results(run_id: str) -> dict[str, bytes]: + root = CACHE / "results" / run_id + return { + str(p.relative_to(root)): p.read_bytes() + for p in root.rglob("*") + if p.is_file() and "diagnostics" not in p.parts + } + + +def _check_commit(commit: str) -> None: + if len(commit) != 40 or any(c not in "0123456789abcdef" for c in commit): + raise SystemExit("--commit must be a full 40-hex sha that is pushed to GitHub") + + +def _names(steps: str, script: str) -> tuple[list[str], str]: + names = [s for s in steps.split(",") if s] + script_text = Path(script).read_text(encoding="utf-8") if script else "" + if script and "script" not in names: + names.append("script") + unknown = sorted(set(names) - set(STEPS) - {"script"}) + if unknown: + raise SystemExit(f"unknown steps: {unknown}") + return names, script_text + + +@app.local_entrypoint() +def preflight(commit: str) -> None: + _check_commit(commit) + print(json.dumps(preflight_remote.remote(commit), indent=2)) + + +@app.local_entrypoint() +def launch(commit: str, steps: str = "tests", script: str = "") -> None: + """Spawn the run and exit at once (use with ``modal run --detach``). + + A client attached for the whole run cancels the remote input when it is + stopped (for example when the machine runs low on memory), even under + --detach. ``launch`` returns as soon as the call is spawned, so nothing + local can cancel it; ``collect`` fetches the results. + """ + _check_commit(commit) + names, script_text = _names(steps, script) + run_id = datetime.now(UTC).strftime("%Y%m%dT%H%M%SZ") + "-" + commit[:9] + call = run_steps.spawn(commit, names, run_id, script_text) + print(f"run_id={run_id}") + print(f"function_call_id={call.object_id}") + + +@app.local_entrypoint() +def collect(run_id: str, logs_dir: str = "") -> None: + """Write a run's changed files into this checkout and its logs to logs_dir.""" + repo = Path(__file__).resolve().parents[1] + logs = ( + Path(logs_dir) + if logs_dir + else Path.home() / ".cache" / "microcosm" / "modal-1074" / run_id + ) + logs.mkdir(parents=True, exist_ok=True) + for rel, data in fetch_results.remote(run_id).items(): + if rel.startswith("files/"): + target = repo / rel.removeprefix("files/") + target.parent.mkdir(parents=True, exist_ok=True) + target.write_bytes(data) + print("file", target.relative_to(repo)) + else: + (logs / rel).write_bytes(data) + print("log", logs / rel) diff --git a/experiments/receipts/1074-fsa-calibration-fit.json b/experiments/receipts/1074-fsa-calibration-fit.json new file mode 100644 index 0000000000..8061cdc85f --- /dev/null +++ b/experiments/receipts/1074-fsa-calibration-fit.json @@ -0,0 +1,10563 @@ +{ + "schema_version": 1, + "issue": "PolicyEngine/microcosm#1074", + "generated_at": "2026-10-22", + "provenance": { + "commit": "c94516ee14b1920a490902288115d66dbc743762", + "run": "20261022T194252Z-c94516ee1" + }, + "host": { + "release": "populace-us-2024-spm-20260915", + "sha256": "6496cc4393d4d3c6574f76eca231de5898c803b9067645591fd5c4d3e65aee84", + "households": 57240, + "people": 166321, + "scf_stage_seed": 0, + "scf_stage_gate_passed": true, + "engine_adaptation": { + "formula_owned_dropped": { + "person": [ + "has_marketplace_health_coverage" + ] + }, + "renamed": {} + } + }, + "feed": { + "candidate_sha256": "d8e3d0fd9e2113ba95e561ff2c746ed5edd28b9f65885c3deb55b7e88ec94d45", + "rows": 40639, + "provenance": { + "kind": "reviewed diagnostic candidate (not a pin)", + "pinned_feed": { + "repo": "https://github.com/PolicyEngine/chronicle.git", + "commit": "51aa40fd28e2ca81937752515e773d123fecfb71", + "facts_sha256": "965a29ac9458edb58a05184917ee4a19772fd3dc7b4588db6eb6da5803641aac", + "rows": 40178, + "path": "consumer_facts_us_51aa40f.jsonl" + }, + "fsa_packages": { + "repo": "https://github.com/DTrim99/chronicle.git", + "commit": "81e3f986ccc47571a427a4adda8d4b49560d03bf", + "facts_sha256": "763d1eed8cedf1065d19462c90848f3fda23bb6407214d4fd0b1f31995cc9ded", + "pull_request": "https://github.com/PolicyEngine/chronicle/pull/347", + "year": 2026, + "packages": [ + "packages/ed_fsa/portfolio_summary_fy2026_q3", + "packages/ed_fsa/portfolio_by_location_fy2026_q2", + "packages/ed_fsa/portfolio_by_age_fy2026_q2", + "packages/ed_fsa/portfolio_by_debt_size_fy2026_q2", + "packages/ed_fsa/portfolio_by_loan_type_fy2026_q3", + "packages/ed_fsa/dl_portfolio_by_repayment_plan_fy2026_q3" + ], + "rows": 461, + "path": "ed_fsa_81e3f98.jsonl", + "sha256": "58774e11cf63754f85be0a082c29b581033c304e5d26dc71b2b23eac0cc3f1d8" + }, + "rule": "pinned feed rows plus the FSA rows, no shared aggregate_fact_key or source_record_id, sorted by aggregate_fact_key", + "rows": 40639, + "candidate_sha256": "d8e3d0fd9e2113ba95e561ff2c746ed5edd28b9f65885c3deb55b7e88ec94d45" + } + }, + "solver": { + "kernel": "microcosm.calibrate.calibrate (dense refit, no L0)", + "epochs": 1500, + "learning_rate": 0.02, + "max_weight_ratio": 5.0, + "l2_lambda": 0.0, + "mass": "conserve", + "target_surface": "national_state", + "age_targets": true, + "loss": { + "a_no_fsa": { + "initial": 0.03675158694386482, + "final": 0.01565397913686619, + "seconds": 93.02935022699995 + }, + "b_with_fsa": { + "initial": 0.055196743458509445, + "final": 0.01691054419252314, + "seconds": 96.23905654400005 + }, + "a_no_fsa_l2": { + "initial": 0.03675158694386482, + "final": 0.019865802644470798, + "seconds": 93.82711086800009 + }, + "b_with_fsa_l2": { + "initial": 0.055196743458509445, + "final": 0.019569097800648236, + "seconds": 95.14704152500008 + } + }, + "arms": { + "a_no_fsa": { + "with_fsa": false, + "targets": 6102, + "l2_lambda": 0.0 + }, + "b_with_fsa": { + "with_fsa": true, + "targets": 6234, + "l2_lambda": 0.0 + }, + "a_no_fsa_l2": { + "with_fsa": false, + "targets": 6102, + "l2_lambda": 0.03 + }, + "b_with_fsa_l2": { + "with_fsa": true, + "targets": 6234, + "l2_lambda": 0.03 + } + }, + "surface": { + "mode": "national_state", + "compiled_targets": 33382, + "calibrated_targets": 6234, + "dropped_congressional_district_targets": 27148 + } + }, + "fsa": { + "status": "bound", + "reference_period": "2026-03", + "reference_label": "Data as of Mar. 31, 2026", + "period_alignment": "stock_at_source_reference_date", + "controls": { + "borrowers": { + "published_states_and_dc": 42375900.0, + "published_out_of_scope": 433400.0, + "published_not_reported": 1953300.0, + "published_total": 44762600.0, + "not_reported_allocation_factor": 1.0456279359858722, + "in_scope_control": 44309424.85254373, + "in_scope_share_of_total": 0.989876031609954 + }, + "total_balance": { + "published_states_and_dc": 1627400000000.0, + "published_out_of_scope": 16700000000.0, + "published_not_reported": 52200000000.0, + "published_total": 1696300000000.0, + "not_reported_allocation_factor": 1.0317498935587859, + "in_scope_control": 1679069776777.568, + "in_scope_share_of_total": 0.9898424670032235 + } + }, + "disposition_counts": { + "allocated": 4, + "bound": 136, + "diagnostic": 251, + "excluded": 8, + "other_quarter": 58, + "out_of_scope": 4 + }, + "dispositions": [ + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q2.recipients.direct_loans.recipients", + "table": "portfolio_summary", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q3.dollars_outstanding.income_based_with_pfh.dollars_outstanding", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ar.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ar.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.dollars_outstanding.alternative.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q2.recipients.income_based_without_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.grad_plus.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "A member of the balance-excluding-Parent-PLUS target: the build records own and Parent PLUS balances, not loan types.", + "target": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.excluding_parent_plus.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.recipients.level_over_10_years.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nm.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nm.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.recipients.parent_plus.recipients", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.me.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.me.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.mn.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.mn.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.mi.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.mi.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.dollars_outstanding.other.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.recipients.income_based.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.az.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.az.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.dollars_outstanding.level_10_years_or_less.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.recipients.income_based.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.pa.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.pa.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ks.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ks.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.recipients.stafford_unsubsidized.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "recipients", + "disposition": "excluded", + "reason": "Loan-type recipient counts are loan-level (a borrower with two loan types counts twice), so they are not counts of people." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.co.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.co.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q2.recipients.income_based_without_pfh.recipients", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.dollars_outstanding.level_over_10_years.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_10k_to_20k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_10k_to_20k.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q3.dollars_outstanding.pay_as_you_earn_with_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q2.dollars_outstanding.income_based_with_pfh.dollars_outstanding", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.recipients.income_contingent.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.mt.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.mt.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.dollars_outstanding.save.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ak.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ak.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q2.recipients.pay_as_you_earn_with_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ca.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ca.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ut.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ut.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.dollars_outstanding.save.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.borrowers.debt_100k_to_200k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.not_reported.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "allocated", + "reason": "'Not Reported' (FFEL and Perkins loans whose commercial lenders need not report an address) has no state; it is allocated to every reported location in proportion to that location's reported value." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.dollars_outstanding.debt_100k_to_200k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.dollars_outstanding.other.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nh.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nh.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.dollars_outstanding.graduated_over_10_years.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q2.dollars_outstanding.pay_as_you_earn_without_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.fl.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.fl.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q3.dollars_outstanding.income_based_without_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.recipients.save.recipients", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q2.dollars_outstanding.pay_as_you_earn_with_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.dollars_outstanding.pay_as_you_earn.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q2.recipients.ffel.recipients", + "table": "portfolio_summary", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.dollars_outstanding.debt_5k_to_10k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q3.dollars_outstanding.income_based_with_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.dollars_outstanding.level_over_10_years.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.borrowers.debt_80k_to_100k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ms.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ms.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.recipients.level_over_10_years.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q1.unduplicated_recipients.all.unduplicated_recipients", + "table": "portfolio_summary", + "period": "2025-12", + "measure": "unduplicated_recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.dc.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.dc.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_5k_to_10k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_5k_to_10k.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.dollars_outstanding.income_sensitive.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.dollars_outstanding.income_contingent.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.dollars_outstanding.graduated_over_10_years.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.sd.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.sd.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_24_and_younger.borrowers", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_24_and_younger.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.dollars_outstanding.income_based.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.recipients.income_sensitive.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.dollars_outstanding.alternative.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.mo.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.mo.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ar.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ar.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q2.recipients.income_based_without_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.id.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.id.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.dollars_outstanding.graduated_10_years_or_less.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_not_reported.borrowers", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "borrowers", + "disposition": "allocated", + "reason": "Age not reported: in no partition, so the reported bands, which bind as shares of the in-scope control, absorb it pro rata." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.borrowers.age_24_and_younger.borrowers", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q3.unduplicated_recipients.all.unduplicated_recipients", + "table": "portfolio_summary", + "period": "2026-06", + "measure": "unduplicated_recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q3.recipients.perkins.recipients", + "table": "portfolio_summary", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q3.recipients.income_based_without_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.other.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "out_of_scope", + "reason": "'Other' is a borrower address outside the states and territories the table lists, outside the host universe; it leaves the in-scope control with its pro-rata share of Not Reported." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.not_reported.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "allocated", + "reason": "'Not Reported' (FFEL and Perkins loans whose commercial lenders need not report an address) has no state; it is allocated to every reported location in proportion to that location's reported value." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.dollars_outstanding.other.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.dollars_outstanding.level_over_10_years.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.de.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.de.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.dollars_outstanding.graduated_10_years_or_less.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.dollars_outstanding.graduated_10_years_or_less.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q3.recipients.income_based_with_pfh.recipients", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.dollars_outstanding.graduated_10_years_or_less.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.recipients.level_over_10_years.recipients", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.recipients.pay_as_you_earn.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ga.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ga.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ok.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ok.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.dollars_outstanding.grad_plus.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.pr.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "out_of_scope", + "reason": "Puerto Rico is outside the host universe (the CPS samples the 50 states and DC). Its rows, with their pro-rata share of Not Reported, leave the in-scope control." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_24_and_younger.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_24_and_younger.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.dollars_outstanding.level_over_10_years.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q2.dollars_outstanding.income_based_with_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.recipients.graduated_10_years_or_less.recipients", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ga.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ga.borrowers" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.recipients.level_over_10_years.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_62_and_older.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_62_and_older.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q1.dollars_outstanding.pay_as_you_earn_with_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.dollars_outstanding.other.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.dollars_outstanding.stafford_unsubsidized.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.dollars_outstanding.debt_less_than_5k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.md.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.md.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q1.recipients.ffel.recipients", + "table": "portfolio_summary", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_80k_to_100k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_80k_to_100k.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.borrowers.age_not_reported.borrowers", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.borrowers.age_62_and_older.borrowers", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.dollars_outstanding.income_contingent.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.recipients.consolidation.recipients", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q3.recipients.pay_as_you_earn_without_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nj.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nj.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.recipients.consolidation.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "recipients", + "disposition": "excluded", + "reason": "Loan-type recipient counts are loan-level (a borrower with two loan types counts twice), so they are not counts of people." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.dollars_outstanding.save.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q3.recipients.pay_as_you_earn_with_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.dollars_outstanding.save.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.dollars_outstanding.income_based.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ne.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ne.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.recipients.graduated_10_years_or_less.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_40k_to_60k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_40k_to_60k.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q1.dollars_outstanding.income_based_with_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.dollars_outstanding.perkins.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.tx.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.tx.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.stafford_combined_unique_recipients.stafford_combined.stafford_combined_unique_recipients", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "stafford_combined_unique_recipients", + "disposition": "excluded", + "reason": "Stafford (Combined) is a subtotal of rows the loan-type targets already count." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.recipients.graduated_10_years_or_less.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.dollars_outstanding.age_50_to_61.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.dollars_outstanding.debt_40k_to_60k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.dollars_outstanding.stafford_subsidized.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.recipients.save.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.borrowers.debt_10k_to_20k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.dollars_outstanding.debt_10k_to_20k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.dollars_outstanding.income_contingent.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q2.dollars_outstanding.pay_as_you_earn_with_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.recipients.level_10_years_or_less.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q3.dollars_outstanding.pay_as_you_earn_without_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.recipients.income_contingent.recipients", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.dollars_outstanding.other.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.dollars_outstanding.income_based.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.recipients.level_10_years_or_less.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.or.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.or.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.recipients.level_10_years_or_less.recipients", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q2.dollars_outstanding.direct_loans.dollars_outstanding", + "table": "portfolio_summary", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.recipients.perkins.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "recipients", + "disposition": "excluded", + "reason": "Loan-type recipient counts are loan-level (a borrower with two loan types counts twice), so they are not counts of people." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nc.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nc.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.consolidation.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "A member of the balance-excluding-Parent-PLUS target: the build records own and Parent PLUS balances, not loan types.", + "target": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.excluding_parent_plus.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.dollars_outstanding.income_based.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.recipients.level_over_10_years.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.borrowers.debt_5k_to_10k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q1.recipients.pay_as_you_earn_with_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nh.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nh.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.dollars_outstanding.income_based.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.recipients.income_sensitive.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.recipients.income_based.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.stafford_combined_unique_recipients.stafford_combined.stafford_combined_unique_recipients", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "stafford_combined_unique_recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q1.recipients.pay_as_you_earn_with_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.dollars_outstanding.save.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q2.dollars_outstanding.pay_as_you_earn_without_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.dollars_outstanding.level_over_10_years.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.recipients.graduated_over_10_years.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_35_to_49.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_35_to_49.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.tn.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.tn.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.dollars_outstanding.income_contingent.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.borrowers.age_35_to_49.borrowers", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.dollars_outstanding.other.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.recipients.level_over_10_years.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.recipients.income_contingent.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ct.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ct.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ma.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ma.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.recipients.graduated_over_10_years.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nd.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nd.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q1.dollars_outstanding.income_based_without_pfh.dollars_outstanding", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.sc.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.sc.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.recipients.income_sensitive.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q1.dollars_outstanding.income_based_without_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.recipients.graduated_10_years_or_less.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.recipients.save.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q1.recipients.income_based_without_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.dollars_outstanding.level_over_10_years.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.recipients.income_sensitive.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ok.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ok.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.recipients.stafford_subsidized.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.dollars_outstanding.graduated_over_10_years.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.recipients.income_contingent.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.recipients.level_over_10_years.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q3.dollars_outstanding.income_based_without_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.dollars_outstanding.other.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_60k_to_80k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_60k_to_80k.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.dollars_outstanding.consolidation.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q3.recipients.income_based_without_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.recipients.parent_plus.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.dollars_outstanding.income_based.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.recipients.income_sensitive.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.wi.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.wi.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nm.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nm.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q1.dollars_outstanding.income_based_with_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.borrowers.debt_40k_to_60k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.dollars_outstanding.alternative.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ny.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ny.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.dollars_outstanding.level_10_years_or_less.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q2.recipients.income_based_with_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.dollars_outstanding.level_10_years_or_less.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.mi.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.mi.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.recipients.grad_plus.recipients", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.dollars_outstanding.pay_as_you_earn.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q1.recipients.income_based_without_pfh.recipients", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.mo.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.mo.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.borrowers.age_50_to_61.borrowers", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q1.recipients.income_based_without_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.recipients.save.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.recipients.income_based.recipients", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.dollars_outstanding.graduated_over_10_years.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.dollars_outstanding.consolidation.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.pr.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "out_of_scope", + "reason": "Puerto Rico is outside the host universe (the CPS samples the 50 states and DC). Its rows, with their pro-rata share of Not Reported, leave the in-scope control." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.recipients.level_10_years_or_less.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.sd.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.sd.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.recipients.alternative.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_20k_to_40k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_20k_to_40k.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.dollars_outstanding.graduated_over_10_years.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_50_to_61.borrowers", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_50_to_61.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.mt.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.mt.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.dollars_outstanding.parent_plus.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_50_to_61.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_50_to_61.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.il.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.il.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q3.recipients.pay_as_you_earn_without_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.recipients.pay_as_you_earn.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ky.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ky.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.dollars_outstanding.income_based.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.dollars_outstanding.level_10_years_or_less.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ca.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ca.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q1.dollars_outstanding.perkins.dollars_outstanding", + "table": "portfolio_summary", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.recipients.pay_as_you_earn.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.dc.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.dc.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.recipients.alternative.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ri.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ri.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.dollars_outstanding.other.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.dollars_outstanding.income_sensitive.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q1.recipients.perkins.recipients", + "table": "portfolio_summary", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q2.recipients.income_based_with_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.dollars_outstanding.level_over_10_years.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.dollars_outstanding.age_24_and_younger.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.recipients.level_10_years_or_less.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.dollars_outstanding.graduated_10_years_or_less.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.sc.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.sc.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q2.dollars_outstanding.income_based_without_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q2.recipients.pay_as_you_earn_without_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.dollars_outstanding.alternative.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.recipients.income_based.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_less_than_5k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_less_than_5k.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.dollars_outstanding.income_sensitive.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.wy.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.wy.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.recipients.income_sensitive.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.recipients.perkins.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q1.dollars_outstanding.all.dollars_outstanding", + "table": "portfolio_summary", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.recipients.level_10_years_or_less.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_20k_to_40k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_20k_to_40k.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.dollars_outstanding.debt_20k_to_40k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q2.dollars_outstanding.income_based_with_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_35_to_49.borrowers", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_35_to_49.borrowers" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.dollars_outstanding.income_sensitive.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.dollars_outstanding.pay_as_you_earn.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ct.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ct.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q2.recipients.perkins.recipients", + "table": "portfolio_summary", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.hi.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.hi.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.va.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.va.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q3.recipients.income_based_with_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.dollars_outstanding.stafford_subsidized.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q3.recipients.pay_as_you_earn_with_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nv.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nv.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ak.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ak.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.vt.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.vt.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ia.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ia.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.recipients.graduated_over_10_years.recipients", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.recipients.graduated_over_10_years.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.dollars_outstanding.alternative.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_80k_to_100k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_80k_to_100k.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_200k_plus.borrowers", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_200k_plus.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q3.dollars_outstanding.pay_as_you_earn_without_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.stafford_combined_unique_recipients.stafford_combined.stafford_combined_unique_recipients", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "stafford_combined_unique_recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.dollars_outstanding.income_based.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.recipients.graduated_10_years_or_less.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ne.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ne.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q1.recipients.direct_loans.recipients", + "table": "portfolio_summary", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.dollars_outstanding.level_10_years_or_less.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ia.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ia.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q3.recipients.income_based_with_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q2.recipients.pay_as_you_earn_with_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.al.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.al.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.dollars_outstanding.income_sensitive.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.hi.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.hi.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.recipients.stafford_subsidized.recipients", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_not_reported.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "allocated", + "reason": "Age not reported: in no partition, so the reported bands, which bind as shares of the in-scope control, absorb it pro rata." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.dollars_outstanding.other.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.dollars_outstanding.pay_as_you_earn.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.recipients.save.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.dollars_outstanding.income_contingent.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q1.dollars_outstanding.pay_as_you_earn_without_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.recipients.level_10_years_or_less.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.tx.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.tx.borrowers" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.recipients.graduated_over_10_years.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.recipients.income_based.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.me.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.me.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.recipients.other.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.in.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.in.borrowers" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q2.dollars_outstanding.income_based_without_pfh.dollars_outstanding", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q2.dollars_outstanding.perkins.dollars_outstanding", + "table": "portfolio_summary", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q1.dollars_outstanding.direct_loans.dollars_outstanding", + "table": "portfolio_summary", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q3.recipients.ffel.recipients", + "table": "portfolio_summary", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.recipients.alternative.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q1.dollars_outstanding.ffel.dollars_outstanding", + "table": "portfolio_summary", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q1.recipients.pay_as_you_earn_without_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.or.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.or.borrowers" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.recipients.graduated_10_years_or_less.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.dollars_outstanding.graduated_10_years_or_less.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.dollars_outstanding.level_10_years_or_less.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.borrowers.debt_less_than_5k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.de.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.de.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.dollars_outstanding.age_35_to_49.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.recipients.grad_plus.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_25_to_34.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_25_to_34.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ks.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ks.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.recipients.consolidation.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_60k_to_80k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_60k_to_80k.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.stafford_subsidized.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "A member of the balance-excluding-Parent-PLUS target: the build records own and Parent PLUS balances, not loan types.", + "target": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.excluding_parent_plus.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q2.unduplicated_recipients.all.unduplicated_recipients", + "table": "portfolio_summary", + "period": "2026-03", + "measure": "unduplicated_recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.dollars_outstanding.graduated_10_years_or_less.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q3.dollars_outstanding.pay_as_you_earn_with_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.recipients.level_over_10_years.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.borrowers.debt_20k_to_40k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.dollars_outstanding.pay_as_you_earn.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.recipients.graduated_10_years_or_less.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.dollars_outstanding.level_10_years_or_less.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.dollars_outstanding.save.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_25_to_34.borrowers", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_25_to_34.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.dollars_outstanding.alternative.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.recipients.alternative.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_40k_to_60k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_40k_to_60k.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q2.dollars_outstanding.all.dollars_outstanding", + "table": "portfolio_summary", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.dollars_outstanding.graduated_over_10_years.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.recipients.graduated_over_10_years.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.recipients.stafford_subsidized.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "recipients", + "disposition": "excluded", + "reason": "Loan-type recipient counts are loan-level (a borrower with two loan types counts twice), so they are not counts of people." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.la.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.la.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q1.dollars_outstanding.income_based_without_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_less_than_5k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_less_than_5k.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.dollars_outstanding.debt_60k_to_80k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.recipients.graduated_10_years_or_less.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ri.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ri.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q3.dollars_outstanding.income_based_with_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ny.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ny.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.stafford_unsubsidized.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "A member of the balance-excluding-Parent-PLUS target: the build records own and Parent PLUS balances, not loan types.", + "target": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.excluding_parent_plus.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.wi.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.wi.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_100k_to_200k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_100k_to_200k.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.dollars_outstanding.graduated_over_10_years.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.dollars_outstanding.age_not_reported.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_5k_to_10k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_5k_to_10k.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.recipients.alternative.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.recipients.parent_plus.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "recipients", + "disposition": "excluded", + "reason": "Loan-type recipient counts are loan-level (a borrower with two loan types counts twice), so they are not counts of people." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.recipients.graduated_10_years_or_less.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.stafford_combined_dollars_outstanding.stafford_combined.stafford_combined_dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "stafford_combined_dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nj.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nj.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.stafford_combined_dollars_outstanding.stafford_combined.stafford_combined_dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "stafford_combined_dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.perkins.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "A member of the balance-excluding-Parent-PLUS target: the build records own and Parent PLUS balances, not loan types.", + "target": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.excluding_parent_plus.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.recipients.pay_as_you_earn.recipients", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.dollars_outstanding.level_10_years_or_less.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.recipients.grad_plus.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "recipients", + "disposition": "excluded", + "reason": "Loan-type recipient counts are loan-level (a borrower with two loan types counts twice), so they are not counts of people." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_200k_plus.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_200k_plus.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.wy.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.wy.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.wv.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.wv.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.dollars_outstanding.alternative.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.recipients.stafford_unsubsidized.recipients", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.dollars_outstanding.level_over_10_years.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.dollars_outstanding.debt_200k_plus.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.borrowers.age_25_to_34.borrowers", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ut.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ut.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.dollars_outstanding.grad_plus.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.dollars_outstanding.graduated_over_10_years.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.il.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.il.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q2.dollars_outstanding.ffel.dollars_outstanding", + "table": "portfolio_summary", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.co.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.co.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.va.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.va.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q2.recipients.pay_as_you_earn_without_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nd.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nd.borrowers" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.dollars_outstanding.alternative.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q2.dollars_outstanding.income_based_without_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.recipients.other.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.mn.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.mn.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.dollars_outstanding.income_based.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.md.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.md.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q3.dollars_outstanding.direct_loans.dollars_outstanding", + "table": "portfolio_summary", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.recipients.alternative.recipients", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q1.recipients.perkins.recipients", + "table": "portfolio_by_loan_type", + "period": "2025-12", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.oh.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.oh.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.wa.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.wa.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q3.dollars_outstanding.income_based_without_pfh.dollars_outstanding", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q1.recipients.pay_as_you_earn_without_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.recipients.alternative.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ma.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ma.borrowers" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q2.recipients.income_based_with_pfh.recipients", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.dollars_outstanding.graduated_10_years_or_less.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.parent_plus.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Parent PLUS share of the in-scope control.", + "target": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.parent_plus.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.dollars_outstanding.parent_plus.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q3.recipients.direct_loans.recipients", + "table": "portfolio_summary", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.tn.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.tn.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.az.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.az.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.recipients.level_10_years_or_less.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_10k_to_20k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_10k_to_20k.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.dollars_outstanding.perkins.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.dollars_outstanding.graduated_10_years_or_less.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.pa.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.pa.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.dollars_outstanding.stafford_unsubsidized.dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.recipients.level_10_years_or_less.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.recipients.pay_as_you_earn.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q1.recipients.income_based_with_pfh.recipients", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.fl.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.fl.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ky.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ky.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.id.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.id.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.recipients.pay_as_you_earn.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q3.dollars_outstanding.ffel.dollars_outstanding", + "table": "portfolio_summary", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.vt.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.vt.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.recipients.income_contingent.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.recipients.income_based.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q3.recipients.stafford_unsubsidized.recipients", + "table": "portfolio_by_loan_type", + "period": "2026-06", + "measure": "recipients", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.wv.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.wv.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q1.dollars_outstanding.pay_as_you_earn_without_pfh.dollars_outstanding", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.in.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.in.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.recipients.graduated_over_10_years.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.dollars_outstanding.income_sensitive.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.dollars_outstanding.age_25_to_34.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_loan_type.fy2026_q2.stafford_combined_dollars_outstanding.stafford_combined.stafford_combined_dollars_outstanding", + "table": "portfolio_by_loan_type", + "period": "2026-03", + "measure": "stafford_combined_dollars_outstanding", + "disposition": "excluded", + "reason": "Stafford (Combined) is a subtotal of rows the loan-type targets already count." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q3.dollars_outstanding.perkins.dollars_outstanding", + "table": "portfolio_summary", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.dollars_outstanding.pay_as_you_earn.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q2.recipients.level_over_10_years.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nv.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nv.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.ms.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.ms.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.dollars_outstanding.level_over_10_years.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.recipients.alternative.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_62_and_older.borrowers", + "table": "portfolio_by_age", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_62_and_older.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.al.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.al.borrowers" + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.recipients.income_contingent.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.oh.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.oh.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.borrowers.debt_200k_plus.borrowers", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.recipients.alternative.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q1.dollars_outstanding.income_based_with_pfh.dollars_outstanding", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q1.recipients.income_based.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q3.dollars_outstanding.level_10_years_or_less.dollars_outstanding", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.la.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.la.borrowers" + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.borrowers.debt_60k_to_80k.borrowers", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "borrowers", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q1.recipients.income_based_with_pfh.recipients", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q2.recipients.income_based.recipients", + "table": "dl_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q1.dollars_outstanding.graduated_over_10_years.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.other.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "out_of_scope", + "reason": "'Other' is a borrower address outside the states and territories the table lists, outside the host universe; it leaves the in-scope control with its pro-rata share of Not Reported." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_idr_by_partial_financial_hardship.fy2026_q3.recipients.income_based_without_pfh.recipients", + "table": "ed_held_ffel_idr_by_partial_financial_hardship", + "period": "2026-06", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL IBR by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_age.fy2026_q1.dollars_outstanding.age_62_and_older.dollars_outstanding", + "table": "portfolio_by_age", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + }, + { + "source_record_id": "ed_fsa.portfolio_summary.fy2026_q3.dollars_outstanding.all.dollars_outstanding", + "table": "portfolio_summary", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). The stage's balances do not record the program, and FSA counts the student, not the parent, as the recipient of a Parent PLUS loan; the borrower-based location table sets the level instead." + }, + { + "source_record_id": "ed_fsa.dl_idr_by_partial_financial_hardship.fy2026_q1.recipients.income_based_with_pfh.recipients", + "table": "dl_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Income-driven plans by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.recipients.graduated_over_10_years.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.federally_managed_idr_by_partial_financial_hardship.fy2026_q1.dollars_outstanding.pay_as_you_earn_with_pfh.dollars_outstanding", + "table": "federally_managed_idr_by_partial_financial_hardship", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed IBR/PAYE by partial financial hardship: no plan or hardship column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.nc.dollars_outstanding", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.nc.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q1.recipients.save.recipients", + "table": "federally_managed_by_repayment_plan", + "period": "2025-12", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.ed_held_ffel_by_repayment_plan.fy2026_q2.recipients.graduated_over_10_years.recipients", + "table": "ed_held_ffel_by_repayment_plan", + "period": "2026-03", + "measure": "recipients", + "disposition": "diagnostic", + "reason": "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_100k_to_200k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2026-03", + "measure": "dollars_outstanding", + "disposition": "bound", + "reason": "Band share of the in-scope control.", + "target": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_100k_to_200k.dollars_outstanding" + }, + { + "source_record_id": "ed_fsa.portfolio_by_location.2026_03_31.wa.borrowers", + "table": "portfolio_by_location", + "period": "2026-03", + "measure": "borrowers", + "disposition": "bound", + "reason": "State level, Not Reported allocated pro rata.", + "target": "ed_fsa.portfolio_by_location.2026_03_31.wa.borrowers" + }, + { + "source_record_id": "ed_fsa.federally_managed_by_repayment_plan.fy2026_q3.dollars_outstanding.income_contingent.dollars_outstanding", + "table": "federally_managed_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Federally managed portfolio by repayment plan: no plan column in the build; diagnostic only." + }, + { + "source_record_id": "ed_fsa.dl_by_repayment_plan.fy2026_q3.dollars_outstanding.alternative.dollars_outstanding", + "table": "dl_by_repayment_plan", + "period": "2026-06", + "measure": "dollars_outstanding", + "disposition": "diagnostic", + "reason": "Repayment plan: diagnostic only. The SCF records only an income-driven yes/no, the build carries no plan column, and FSA's recipient counts are loan-level (microcosm#1074)." + }, + { + "source_record_id": "ed_fsa.portfolio_by_debt_size.fy2026_q1.dollars_outstanding.debt_80k_to_100k.dollars_outstanding", + "table": "portfolio_by_debt_size", + "period": "2025-12", + "measure": "dollars_outstanding", + "disposition": "other_quarter", + "reason": "Not the reference quarter: every bound table binds at the latest quarter all four publish (2026-03)." + } + ], + "materialization_dropped": [], + "repayment_plan_diagnostic": { + "status": "diagnostic_only", + "period": "2026-06", + "plans": { + "other": { + "label": "Other", + "dollars_outstanding": 9000000000.0, + "share_of_dollars": 0.007282142568168946 + }, + "income_based": { + "label": "Income-Based", + "recipients": 3310000.0, + "dollars_outstanding": 225000000000.0, + "share_of_dollars": 0.18205356420422364 + }, + "level_over_10_years": { + "label": "Level: over 10 years", + "dollars_outstanding": 78500000000.0, + "recipients": 1500000.0, + "share_of_dollars": 0.06351646573347358 + }, + "graduated_10_years_or_less": { + "label": "Graduated: 10 years or less", + "dollars_outstanding": 62000000000.0, + "recipients": 2040000.0, + "share_of_dollars": 0.05016587102516385 + }, + "save": { + "label": "SAVE", + "dollars_outstanding": 354300000000.0, + "recipients": 6520000.0, + "share_of_dollars": 0.2866736791002508 + }, + "level_10_years_or_less": { + "label": "Level: 10 years or less", + "recipients": 11670000.0, + "dollars_outstanding": 265200000000.0, + "share_of_dollars": 0.21458046767537828 + }, + "income_contingent": { + "label": "Income-Contingent", + "dollars_outstanding": 55900000000.0, + "recipients": 1320000.0, + "share_of_dollars": 0.04523019661784934 + }, + "alternative": { + "label": "Alternative", + "recipients": 390000.0, + "dollars_outstanding": 12000000000.0, + "share_of_dollars": 0.00970952342422526 + }, + "pay_as_you_earn": { + "label": "Pay As You Earn", + "dollars_outstanding": 136800000000.0, + "recipients": 1610000.0, + "share_of_dollars": 0.11068856703616797 + }, + "graduated_over_10_years": { + "label": "Graduated: over 10 years", + "dollars_outstanding": 37200000000.0, + "recipients": 650000.0, + "share_of_dollars": 0.03009952261509831 + } + } + } + }, + "headline": [ + { + "label": "Federal balance, own plus Parent PLUS", + "kind": "amount", + "target": 1679069776777.568, + "release": 858421208954.9308, + "a_no_fsa": 886045907243.146, + "b_with_fsa": 1677999786395.3674, + "a_no_fsa_l2": 855750475417.7095, + "b_with_fsa_l2": 1668138297187.8127 + }, + { + "label": "Borrowers (people with a balance)", + "kind": "count", + "target": 44309424.85254373, + "release": 21223403.433088087, + "a_no_fsa": 21447181.90381908, + "b_with_fsa": 43776429.43223714, + "a_no_fsa_l2": 21428887.219970584, + "b_with_fsa_l2": 41948013.12651276 + }, + { + "label": "Parent PLUS balance", + "kind": "amount", + "target": 114840658244.6196, + "release": 143855898994.11102, + "a_no_fsa": 152559120060.60315, + "b_with_fsa": 114878467611.03513, + "a_no_fsa_l2": 143797166880.5973, + "b_with_fsa_l2": 126684266224.09976 + }, + { + "label": "Parent PLUS share of the balance", + "kind": "share", + "target": 0.0683954054994779, + "release": 0.16758194869072, + "a_no_fsa": 0.17217970176655684, + "b_with_fsa": 0.06846155079543476, + "a_no_fsa_l2": 0.1680363271903611, + "b_with_fsa_l2": 0.07594350326808462 + }, + { + "label": "Mean balance per borrower", + "kind": "amount", + "target": 37894.19028491803, + "release": 40446.915673129966, + "a_no_fsa": 41312.929186531896, + "b_with_fsa": 38331.12494916457, + "a_no_fsa_l2": 39934.433675127824, + "b_with_fsa_l2": 39766.80116306832 + }, + { + "label": "Households with federal education debt", + "kind": "share", + "target": NaN, + "release": 0.16413671000206656, + "a_no_fsa": 0.1662222969167077, + "b_with_fsa": 0.3304083903971288, + "a_no_fsa_l2": 0.16563645838046798, + "b_with_fsa_l2": 0.3150829843940598 + } + ], + "fit_by_family": { + "bea/bea.nipa_proprietors_income": { + "release": { + "targets": 1, + "mean_capped_abs_rel_error": 0.11597006907246497, + "mean_abs_rel_error": 0.11597006907246497, + "median_abs_rel_error": 0.11597006907246497, + "max_abs_rel_error": 0.11597006907246497, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.05901850848659409, + "mean_abs_rel_error": 0.05901850848659409, + "median_abs_rel_error": 0.05901850848659409, + "max_abs_rel_error": 0.05901850848659409, + "share_within_5pct": 0.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.07801455668209838, + "mean_abs_rel_error": 0.07801455668209838, + "median_abs_rel_error": 0.07801455668209838, + "max_abs_rel_error": 0.07801455668209838, + "share_within_5pct": 0.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.11240408230436258, + "mean_abs_rel_error": 0.11240408230436258, + "median_abs_rel_error": 0.11240408230436258, + "max_abs_rel_error": 0.11240408230436258, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.09516569921360087, + "mean_abs_rel_error": 0.09516569921360087, + "median_abs_rel_error": 0.09516569921360087, + "max_abs_rel_error": 0.09516569921360087, + "share_within_5pct": 0.0, + "share_within_10pct": 1.0 + } + }, + "bea/bea.nipa_wages_and_salaries": { + "release": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13332695492526814, + "mean_abs_rel_error": 0.13332695492526814, + "median_abs_rel_error": 0.13332695492526814, + "max_abs_rel_error": 0.13332695492526814, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.1363734288665621, + "mean_abs_rel_error": 0.1363734288665621, + "median_abs_rel_error": 0.1363734288665621, + "max_abs_rel_error": 0.1363734288665621, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.1354053104653232, + "mean_abs_rel_error": 0.1354053104653232, + "median_abs_rel_error": 0.1354053104653232, + "max_abs_rel_error": 0.1354053104653232, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13461077210218045, + "mean_abs_rel_error": 0.13461077210218045, + "median_abs_rel_error": 0.13461077210218045, + "max_abs_rel_error": 0.13461077210218045, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13639006919463934, + "mean_abs_rel_error": 0.13639006919463934, + "median_abs_rel_error": 0.13639006919463934, + "max_abs_rel_error": 0.13639006919463934, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + } + }, + "cbo/cbo.cbo": { + "release": { + "targets": 5, + "mean_capped_abs_rel_error": 0.044886494463663405, + "mean_abs_rel_error": 0.044886494463663405, + "median_abs_rel_error": 0.024859653610540784, + "max_abs_rel_error": 0.14751886788196705, + "share_within_5pct": 0.8, + "share_within_10pct": 0.8 + }, + "a_no_fsa": { + "targets": 5, + "mean_capped_abs_rel_error": 0.046322088518647865, + "mean_abs_rel_error": 0.046322088518647865, + "median_abs_rel_error": 0.027402816984955274, + "max_abs_rel_error": 0.15263583510916579, + "share_within_5pct": 0.8, + "share_within_10pct": 0.8 + }, + "b_with_fsa": { + "targets": 5, + "mean_capped_abs_rel_error": 0.04680846449058652, + "mean_abs_rel_error": 0.04680846449058652, + "median_abs_rel_error": 0.03330153761267111, + "max_abs_rel_error": 0.15032721626347514, + "share_within_5pct": 0.8, + "share_within_10pct": 0.8 + }, + "a_no_fsa_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.045544006493019595, + "mean_abs_rel_error": 0.045544006493019595, + "median_abs_rel_error": 0.02636882870152744, + "max_abs_rel_error": 0.1496630113389258, + "share_within_5pct": 0.8, + "share_within_10pct": 0.8 + }, + "b_with_fsa_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.04734627341677039, + "mean_abs_rel_error": 0.04734627341677039, + "median_abs_rel_error": 0.03204361106930028, + "max_abs_rel_error": 0.1513500316122076, + "share_within_5pct": 0.8, + "share_within_10pct": 0.8 + } + }, + "census_pep/census_pep.resident_population": { + "release": { + "targets": 936, + "mean_capped_abs_rel_error": 0.0008166069293017941, + "mean_abs_rel_error": 0.0008166069293017941, + "median_abs_rel_error": 0.000398140836767011, + "max_abs_rel_error": 0.14883727112667133, + "share_within_5pct": 0.9967948717948718, + "share_within_10pct": 0.9989316239316239 + }, + "a_no_fsa": { + "targets": 936, + "mean_capped_abs_rel_error": 0.0010923216362779607, + "mean_abs_rel_error": 0.0010923216362779607, + "median_abs_rel_error": 0.0008963041193611138, + "max_abs_rel_error": 0.007167850517970487, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 936, + "mean_capped_abs_rel_error": 0.001133174484571595, + "mean_abs_rel_error": 0.001133174484571595, + "median_abs_rel_error": 0.0009264695566974037, + "max_abs_rel_error": 0.009516256197220374, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 936, + "mean_capped_abs_rel_error": 0.0013480743818330221, + "mean_abs_rel_error": 0.0013480743818330221, + "median_abs_rel_error": 0.0009814870081182054, + "max_abs_rel_error": 0.11610886026341212, + "share_within_5pct": 0.9978632478632479, + "share_within_10pct": 0.9989316239316239 + }, + "b_with_fsa_l2": { + "targets": 936, + "mean_capped_abs_rel_error": 0.0014561686174450138, + "mean_abs_rel_error": 0.0014561686174450138, + "median_abs_rel_error": 0.0009352787450756984, + "max_abs_rel_error": 0.19922126603575127, + "share_within_5pct": 0.9989316239316239, + "share_within_10pct": 0.9989316239316239 + } + }, + "census_stc/census_stc.individual_income_tax_collections": { + "release": { + "targets": 44, + "mean_capped_abs_rel_error": 0.1387694906239689, + "mean_abs_rel_error": 0.1387694906239689, + "median_abs_rel_error": 0.0817977528572078, + "max_abs_rel_error": 0.9802700376479009, + "share_within_5pct": 0.20454545454545456, + "share_within_10pct": 0.5227272727272727 + }, + "a_no_fsa": { + "targets": 44, + "mean_capped_abs_rel_error": 0.13694536314207992, + "mean_abs_rel_error": 0.13694536314207992, + "median_abs_rel_error": 0.08629711318112472, + "max_abs_rel_error": 0.9582224296340295, + "share_within_5pct": 0.3181818181818182, + "share_within_10pct": 0.5454545454545454 + }, + "b_with_fsa": { + "targets": 44, + "mean_capped_abs_rel_error": 0.1380598476172674, + "mean_abs_rel_error": 0.1380598476172674, + "median_abs_rel_error": 0.09102559609333322, + "max_abs_rel_error": 0.9447100247751683, + "share_within_5pct": 0.29545454545454547, + "share_within_10pct": 0.5681818181818182 + }, + "a_no_fsa_l2": { + "targets": 44, + "mean_capped_abs_rel_error": 0.13935415133342344, + "mean_abs_rel_error": 0.13935415133342344, + "median_abs_rel_error": 0.08674287949365106, + "max_abs_rel_error": 0.9639374765709391, + "share_within_5pct": 0.25, + "share_within_10pct": 0.5454545454545454 + }, + "b_with_fsa_l2": { + "targets": 44, + "mean_capped_abs_rel_error": 0.13929035142498875, + "mean_abs_rel_error": 0.13929035142498875, + "median_abs_rel_error": 0.09218306434301426, + "max_abs_rel_error": 0.9531580685396548, + "share_within_5pct": 0.3409090909090909, + "share_within_10pct": 0.5227272727272727 + } + }, + "cms_aca/cms_aca.cms_aca": { + "release": { + "targets": 102, + "mean_capped_abs_rel_error": 0.01586129128705996, + "mean_abs_rel_error": 0.01586129128705996, + "median_abs_rel_error": 0.0005847636316140955, + "max_abs_rel_error": 0.32418334107435615, + "share_within_5pct": 0.9215686274509803, + "share_within_10pct": 0.9411764705882353 + }, + "a_no_fsa": { + "targets": 102, + "mean_capped_abs_rel_error": 0.002138141454170261, + "mean_abs_rel_error": 0.002138141454170261, + "median_abs_rel_error": 0.0010425762448456977, + "max_abs_rel_error": 0.08696151008224245, + "share_within_5pct": 0.9901960784313726, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 102, + "mean_capped_abs_rel_error": 0.002291227924199962, + "mean_abs_rel_error": 0.002291227924199962, + "median_abs_rel_error": 0.0009774553131484656, + "max_abs_rel_error": 0.09073765071488442, + "share_within_5pct": 0.9901960784313726, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 102, + "mean_capped_abs_rel_error": 0.0068536496628184415, + "mean_abs_rel_error": 0.0068536496628184415, + "median_abs_rel_error": 0.0012764569858142393, + "max_abs_rel_error": 0.21429337109416566, + "share_within_5pct": 0.9607843137254902, + "share_within_10pct": 0.9705882352941176 + }, + "b_with_fsa_l2": { + "targets": 102, + "mean_capped_abs_rel_error": 0.005559325009435521, + "mean_abs_rel_error": 0.005559325009435521, + "median_abs_rel_error": 0.0013207451297442287, + "max_abs_rel_error": 0.1476798543509045, + "share_within_5pct": 0.9705882352941176, + "share_within_10pct": 0.9705882352941176 + } + }, + "cms_medicaid/cms_medicaid.cms_medicaid": { + "release": { + "targets": 135, + "mean_capped_abs_rel_error": 0.03118764716800679, + "mean_abs_rel_error": 26.991128695971362, + "median_abs_rel_error": 0.005565208356549112, + "max_abs_rel_error": 3640.592041588453, + "share_within_5pct": 0.8444444444444444, + "share_within_10pct": 0.9333333333333333 + }, + "a_no_fsa": { + "targets": 135, + "mean_capped_abs_rel_error": 0.02257194371356277, + "mean_abs_rel_error": 49.36865205798679, + "median_abs_rel_error": 0.001224701629756466, + "max_abs_rel_error": 6662.7208154268865, + "share_within_5pct": 0.8740740740740741, + "share_within_10pct": 0.9629629629629629 + }, + "b_with_fsa": { + "targets": 135, + "mean_capped_abs_rel_error": 0.02282889877133944, + "mean_abs_rel_error": 7.9801662199251595, + "median_abs_rel_error": 0.0012307226672145294, + "max_abs_rel_error": 1075.240538355766, + "share_within_5pct": 0.8740740740740741, + "share_within_10pct": 0.9555555555555556 + }, + "a_no_fsa_l2": { + "targets": 135, + "mean_capped_abs_rel_error": 0.023348326560020703, + "mean_abs_rel_error": 42.16681985635679, + "median_abs_rel_error": 0.0014885841411165402, + "max_abs_rel_error": 5690.368656522565, + "share_within_5pct": 0.8666666666666667, + "share_within_10pct": 0.9703703703703703 + }, + "b_with_fsa_l2": { + "targets": 135, + "mean_capped_abs_rel_error": 0.023408833067299507, + "mean_abs_rel_error": 26.831407603328547, + "median_abs_rel_error": 0.0014489893068834305, + "max_abs_rel_error": 3620.079833985269, + "share_within_5pct": 0.8740740740740741, + "share_within_10pct": 0.9629629629629629 + } + }, + "cms_medicare/cms_medicare.cms_medicare": { + "release": { + "targets": 1, + "mean_capped_abs_rel_error": 0.1376839681598146, + "mean_abs_rel_error": 0.1376839681598146, + "median_abs_rel_error": 0.1376839681598146, + "max_abs_rel_error": 0.1376839681598146, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13491446262196688, + "mean_abs_rel_error": 0.13491446262196688, + "median_abs_rel_error": 0.13491446262196688, + "max_abs_rel_error": 0.13491446262196688, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.1363714191917288, + "mean_abs_rel_error": 0.1363714191917288, + "median_abs_rel_error": 0.1363714191917288, + "max_abs_rel_error": 0.1363714191917288, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13494514241175348, + "mean_abs_rel_error": 0.13494514241175348, + "median_abs_rel_error": 0.13494514241175348, + "max_abs_rel_error": 0.13494514241175348, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.1326079491636808, + "mean_abs_rel_error": 0.1326079491636808, + "median_abs_rel_error": 0.1326079491636808, + "max_abs_rel_error": 0.1326079491636808, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + } + }, + "ed_fsa/fsa_age_band_balance": { + "release": { + "targets": 5, + "mean_capped_abs_rel_error": 0.5027113149977934, + "mean_abs_rel_error": 0.5027113149977934, + "median_abs_rel_error": 0.48795902155381776, + "max_abs_rel_error": 0.742708456914705, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 5, + "mean_capped_abs_rel_error": 0.4843173888560764, + "mean_abs_rel_error": 0.4843173888560764, + "median_abs_rel_error": 0.4926200135712781, + "max_abs_rel_error": 0.7499030360623719, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa": { + "targets": 5, + "mean_capped_abs_rel_error": 0.0007812399703597297, + "mean_abs_rel_error": 0.0007812399703597297, + "median_abs_rel_error": 0.0006667083146327732, + "max_abs_rel_error": 0.0012082486346944575, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.5059206435917462, + "mean_abs_rel_error": 0.5059206435917462, + "median_abs_rel_error": 0.49730139600851825, + "max_abs_rel_error": 0.7491084823747293, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.010680234473603608, + "mean_abs_rel_error": 0.010680234473603608, + "median_abs_rel_error": 0.001168374376838517, + "max_abs_rel_error": 0.03466938509805742, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "ed_fsa/fsa_age_band_borrowers": { + "release": { + "targets": 5, + "mean_capped_abs_rel_error": 0.5313538824719207, + "mean_abs_rel_error": 0.5313538824719207, + "median_abs_rel_error": 0.5144848876732757, + "max_abs_rel_error": 0.8269889540129202, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 5, + "mean_capped_abs_rel_error": 0.520704778599222, + "mean_abs_rel_error": 0.520704778599222, + "median_abs_rel_error": 0.455742554485038, + "max_abs_rel_error": 0.8540725426122672, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa": { + "targets": 5, + "mean_capped_abs_rel_error": 0.10701013906711458, + "mean_abs_rel_error": 0.10701013906711458, + "median_abs_rel_error": 0.05121130800722305, + "max_abs_rel_error": 0.39307427600955613, + "share_within_5pct": 0.4, + "share_within_10pct": 0.8 + }, + "a_no_fsa_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.527993577323401, + "mean_abs_rel_error": 0.527993577323401, + "median_abs_rel_error": 0.5042242238499133, + "max_abs_rel_error": 0.8440389529369043, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.09490381544333329, + "mean_abs_rel_error": 0.09490381544333329, + "median_abs_rel_error": 0.013567605299022538, + "max_abs_rel_error": 0.4400383746387212, + "share_within_5pct": 0.8, + "share_within_10pct": 0.8 + } + }, + "ed_fsa/fsa_balance_excluding_parent_plus": { + "release": { + "targets": 1, + "mean_capped_abs_rel_error": 0.5431837308904002, + "mean_abs_rel_error": 0.5431837308904002, + "median_abs_rel_error": 0.5431837308904002, + "max_abs_rel_error": 0.5431837308904002, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.5310873717333312, + "mean_abs_rel_error": 0.5310873717333312, + "median_abs_rel_error": 0.5310873717333312, + "max_abs_rel_error": 0.5310873717333312, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0007082081106215797, + "mean_abs_rel_error": 0.0007082081106215797, + "median_abs_rel_error": 0.0007082081106215797, + "max_abs_rel_error": 0.0007082081106215797, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.5448535639044776, + "mean_abs_rel_error": 0.5448535639044776, + "median_abs_rel_error": 0.5448535639044776, + "max_abs_rel_error": 0.5448535639044776, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.014559943488709056, + "mean_abs_rel_error": 0.014559943488709056, + "median_abs_rel_error": 0.014559943488709056, + "max_abs_rel_error": 0.014559943488709056, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "ed_fsa/fsa_debt_size_band_balance": { + "release": { + "targets": 9, + "mean_capped_abs_rel_error": 0.509717353449814, + "mean_abs_rel_error": 0.509717353449814, + "median_abs_rel_error": 0.5380779566824843, + "max_abs_rel_error": 0.6320492653008579, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 9, + "mean_capped_abs_rel_error": 0.5029451631455618, + "mean_abs_rel_error": 0.5029451631455618, + "median_abs_rel_error": 0.5411088151335061, + "max_abs_rel_error": 0.6431290374698111, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa": { + "targets": 9, + "mean_capped_abs_rel_error": 0.010415626487428034, + "mean_abs_rel_error": 0.010415626487428034, + "median_abs_rel_error": 0.0004695888282652014, + "max_abs_rel_error": 0.09056721997196758, + "share_within_5pct": 0.8888888888888888, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 9, + "mean_capped_abs_rel_error": 0.5106733081644956, + "mean_abs_rel_error": 0.5106733081644956, + "median_abs_rel_error": 0.53811381930416, + "max_abs_rel_error": 0.6304076832701295, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 9, + "mean_capped_abs_rel_error": 0.04824808753011161, + "mean_abs_rel_error": 0.04824808753011161, + "median_abs_rel_error": 0.001126311943641786, + "max_abs_rel_error": 0.2432511475263326, + "share_within_5pct": 0.7777777777777778, + "share_within_10pct": 0.7777777777777778 + } + }, + "ed_fsa/fsa_debt_size_band_borrowers": { + "release": { + "targets": 9, + "mean_capped_abs_rel_error": 0.4957163694066014, + "mean_abs_rel_error": 0.4957163694066014, + "median_abs_rel_error": 0.5151830860843994, + "max_abs_rel_error": 0.6102228786098175, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 9, + "mean_capped_abs_rel_error": 0.4941368595237281, + "mean_abs_rel_error": 0.4941368595237281, + "median_abs_rel_error": 0.5347897255532575, + "max_abs_rel_error": 0.6269123404509859, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa": { + "targets": 9, + "mean_capped_abs_rel_error": 0.03669702510666612, + "mean_abs_rel_error": 0.03669702510666612, + "median_abs_rel_error": 0.021734326809381706, + "max_abs_rel_error": 0.15654638892245973, + "share_within_5pct": 0.7777777777777778, + "share_within_10pct": 0.8888888888888888 + }, + "a_no_fsa_l2": { + "targets": 9, + "mean_capped_abs_rel_error": 0.4991384886190511, + "mean_abs_rel_error": 0.4991384886190511, + "median_abs_rel_error": 0.5440422129049961, + "max_abs_rel_error": 0.6124503314047036, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 9, + "mean_capped_abs_rel_error": 0.06751180422145853, + "mean_abs_rel_error": 0.06751180422145853, + "median_abs_rel_error": 0.032281389493227286, + "max_abs_rel_error": 0.1971794741493009, + "share_within_5pct": 0.6666666666666666, + "share_within_10pct": 0.6666666666666666 + } + }, + "ed_fsa/fsa_parent_plus_balance": { + "release": { + "targets": 1, + "mean_capped_abs_rel_error": 0.25265651723875177, + "mean_abs_rel_error": 0.25265651723875177, + "median_abs_rel_error": 0.25265651723875177, + "max_abs_rel_error": 0.25265651723875177, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.3284417069052361, + "mean_abs_rel_error": 0.3284417069052361, + "median_abs_rel_error": 0.3284417069052361, + "max_abs_rel_error": 0.3284417069052361, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00032923327846958746, + "mean_abs_rel_error": 0.00032923327846958746, + "median_abs_rel_error": 0.00032923327846958746, + "max_abs_rel_error": 0.00032923327846958746, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.2521450945909616, + "mean_abs_rel_error": 0.2521450945909616, + "median_abs_rel_error": 0.2521450945909616, + "max_abs_rel_error": 0.2521450945909616, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.10313079148547102, + "mean_abs_rel_error": 0.10313079148547102, + "median_abs_rel_error": 0.10313079148547102, + "max_abs_rel_error": 0.10313079148547102, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + } + }, + "ed_fsa/fsa_state_balance": { + "release": { + "targets": 51, + "mean_capped_abs_rel_error": 0.47042010551679647, + "mean_abs_rel_error": 0.47042010551679647, + "median_abs_rel_error": 0.49107556607463815, + "max_abs_rel_error": 0.7656073975800927, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 51, + "mean_capped_abs_rel_error": 0.46701767344178086, + "mean_abs_rel_error": 0.46701767344178086, + "median_abs_rel_error": 0.5186134409589465, + "max_abs_rel_error": 0.7908842397953412, + "share_within_5pct": 0.0196078431372549, + "share_within_10pct": 0.0392156862745098 + }, + "b_with_fsa": { + "targets": 51, + "mean_capped_abs_rel_error": 0.0018927911685849197, + "mean_abs_rel_error": 0.0018927911685849197, + "median_abs_rel_error": 0.0008426657191969932, + "max_abs_rel_error": 0.04960252451128392, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.47045480363827946, + "mean_abs_rel_error": 0.47045480363827946, + "median_abs_rel_error": 0.49420621330441966, + "max_abs_rel_error": 0.7444172537466162, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.010866845384784414, + "mean_abs_rel_error": 0.010866845384784414, + "median_abs_rel_error": 0.0014500407936512737, + "max_abs_rel_error": 0.2591371971465698, + "share_within_5pct": 0.9215686274509803, + "share_within_10pct": 0.9803921568627451 + } + }, + "ed_fsa/fsa_state_borrowers": { + "release": { + "targets": 51, + "mean_capped_abs_rel_error": 0.49167653306207315, + "mean_abs_rel_error": 0.49167653306207315, + "median_abs_rel_error": 0.5029010687640784, + "max_abs_rel_error": 0.6950510186026985, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 51, + "mean_capped_abs_rel_error": 0.49795444493869073, + "mean_abs_rel_error": 0.49795444493869073, + "median_abs_rel_error": 0.5220854906069777, + "max_abs_rel_error": 0.7225048699512604, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa": { + "targets": 51, + "mean_capped_abs_rel_error": 0.016892025713315162, + "mean_abs_rel_error": 0.016892025713315162, + "median_abs_rel_error": 0.0008059767551310119, + "max_abs_rel_error": 0.20401493067770368, + "share_within_5pct": 0.9019607843137255, + "share_within_10pct": 0.9019607843137255 + }, + "a_no_fsa_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.4905524236937906, + "mean_abs_rel_error": 0.4905524236937906, + "median_abs_rel_error": 0.47574801306991726, + "max_abs_rel_error": 0.6775462583784345, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.07828464062394395, + "mean_abs_rel_error": 0.07828464062394395, + "median_abs_rel_error": 0.005140573955039584, + "max_abs_rel_error": 0.3366241857766063, + "share_within_5pct": 0.5882352941176471, + "share_within_10pct": 0.6666666666666666 + } + }, + "federal_reserve/federal_reserve.federal_reserve": { + "release": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00020658420256524772, + "mean_abs_rel_error": 0.00020658420256524772, + "median_abs_rel_error": 0.00020658420256524772, + "max_abs_rel_error": 0.00020658420256524772, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00019041353443063037, + "mean_abs_rel_error": 0.00019041353443063037, + "median_abs_rel_error": 0.00019041353443063037, + "max_abs_rel_error": 0.00019041353443063037, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00011734250218389259, + "mean_abs_rel_error": 0.00011734250218389259, + "median_abs_rel_error": 0.00011734250218389259, + "max_abs_rel_error": 0.00011734250218389259, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0005778975601046028, + "mean_abs_rel_error": 0.0005778975601046028, + "median_abs_rel_error": 0.0005778975601046028, + "max_abs_rel_error": 0.0005778975601046028, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0005228304317366926, + "mean_abs_rel_error": 0.0005228304317366926, + "median_abs_rel_error": 0.0005228304317366926, + "max_abs_rel_error": 0.0005228304317366926, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "hhs_acf_liheap/hhs_acf_liheap.hhs_acf_liheap": { + "release": { + "targets": 1, + "mean_capped_abs_rel_error": 3.687217242812956e-05, + "mean_abs_rel_error": 3.687217242812956e-05, + "median_abs_rel_error": 3.687217242812956e-05, + "max_abs_rel_error": 3.687217242812956e-05, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00018143350960117058, + "mean_abs_rel_error": 0.00018143350960117058, + "median_abs_rel_error": 0.00018143350960117058, + "max_abs_rel_error": 0.00018143350960117058, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0003485488072249944, + "mean_abs_rel_error": 0.0003485488072249944, + "median_abs_rel_error": 0.0003485488072249944, + "max_abs_rel_error": 0.0003485488072249944, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.000134645247973753, + "mean_abs_rel_error": 0.000134645247973753, + "median_abs_rel_error": 0.000134645247973753, + "max_abs_rel_error": 0.000134645247973753, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0009127323313964581, + "mean_abs_rel_error": 0.0009127323313964581, + "median_abs_rel_error": 0.0009127323313964581, + "max_abs_rel_error": 0.0009127323313964581, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "hhs_acf_tanf/hhs_acf_tanf.hhs_acf_tanf": { + "release": { + "targets": 30, + "mean_capped_abs_rel_error": 0.2978595794895298, + "mean_abs_rel_error": 0.4375298436206908, + "median_abs_rel_error": 0.016672799716027278, + "max_abs_rel_error": 5.190107923934829, + "share_within_5pct": 0.5666666666666667, + "share_within_10pct": 0.5666666666666667 + }, + "a_no_fsa": { + "targets": 30, + "mean_capped_abs_rel_error": 0.1832076424179612, + "mean_abs_rel_error": 0.4911379873085325, + "median_abs_rel_error": 0.002288565024625105, + "max_abs_rel_error": 10.237910346717138, + "share_within_5pct": 0.7666666666666667, + "share_within_10pct": 0.7666666666666667 + }, + "b_with_fsa": { + "targets": 30, + "mean_capped_abs_rel_error": 0.2048975452542268, + "mean_abs_rel_error": 0.5106710112533749, + "median_abs_rel_error": 0.004942164864870339, + "max_abs_rel_error": 10.173203979974442, + "share_within_5pct": 0.7333333333333333, + "share_within_10pct": 0.7333333333333333 + }, + "a_no_fsa_l2": { + "targets": 30, + "mean_capped_abs_rel_error": 0.22452818376553715, + "mean_abs_rel_error": 0.46108972954731875, + "median_abs_rel_error": 0.003201263884579972, + "max_abs_rel_error": 8.096846373453449, + "share_within_5pct": 0.7333333333333333, + "share_within_10pct": 0.7333333333333333 + }, + "b_with_fsa_l2": { + "targets": 30, + "mean_capped_abs_rel_error": 0.22401562283428264, + "mean_abs_rel_error": 0.5375285632939772, + "median_abs_rel_error": 0.004807280293924578, + "max_abs_rel_error": 10.405388213790834, + "share_within_5pct": 0.7, + "share_within_10pct": 0.7 + } + }, + "irs_soi/irs_soi.adjusted_gross_income": { + "release": { + "targets": 261, + "mean_capped_abs_rel_error": 0.19663707672066658, + "mean_abs_rel_error": 0.20663449906601936, + "median_abs_rel_error": 0.11132067311133242, + "max_abs_rel_error": 2.2503366584396702, + "share_within_5pct": 0.32950191570881227, + "share_within_10pct": 0.4674329501915709 + }, + "a_no_fsa": { + "targets": 261, + "mean_capped_abs_rel_error": 0.00560711171565893, + "mean_abs_rel_error": 0.00560711171565893, + "median_abs_rel_error": 0.0012466062434296217, + "max_abs_rel_error": 0.21057897392214897, + "share_within_5pct": 0.9770114942528736, + "share_within_10pct": 0.9846743295019157 + }, + "b_with_fsa": { + "targets": 261, + "mean_capped_abs_rel_error": 0.007159795119623858, + "mean_abs_rel_error": 0.007159795119623858, + "median_abs_rel_error": 0.001522207753197169, + "max_abs_rel_error": 0.22106183252520367, + "share_within_5pct": 0.9770114942528736, + "share_within_10pct": 0.9846743295019157 + }, + "a_no_fsa_l2": { + "targets": 261, + "mean_capped_abs_rel_error": 0.027700957184308844, + "mean_abs_rel_error": 0.03066478373728214, + "median_abs_rel_error": 0.00222307457067258, + "max_abs_rel_error": 1.4091831670080337, + "share_within_5pct": 0.8812260536398467, + "share_within_10pct": 0.9195402298850575 + }, + "b_with_fsa_l2": { + "targets": 261, + "mean_capped_abs_rel_error": 0.020069554985378688, + "mean_abs_rel_error": 0.020816698946177905, + "median_abs_rel_error": 0.002360064924079156, + "max_abs_rel_error": 1.1235910190389748, + "share_within_5pct": 0.9310344827586207, + "share_within_10pct": 0.9616858237547893 + } + }, + "irs_soi/irs_soi.assigned_aca_ptc": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.00909180172620293, + "mean_abs_rel_error": 0.00909180172620293, + "median_abs_rel_error": 0.00154530852092596, + "max_abs_rel_error": 0.10792354375934472, + "share_within_5pct": 0.9519230769230769, + "share_within_10pct": 0.9903846153846154 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.005985339399899384, + "mean_abs_rel_error": 0.005985339399899384, + "median_abs_rel_error": 0.001650172154851086, + "max_abs_rel_error": 0.06815358371378129, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.016338416774754054, + "mean_abs_rel_error": 0.016338416774754054, + "median_abs_rel_error": 0.004160480212639074, + "max_abs_rel_error": 0.15968577933165629, + "share_within_5pct": 0.8942307692307693, + "share_within_10pct": 0.9807692307692307 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.007477481733709767, + "mean_abs_rel_error": 0.007477481733709767, + "median_abs_rel_error": 0.0017370585943573776, + "max_abs_rel_error": 0.07638780591319803, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.01199434886232972, + "mean_abs_rel_error": 0.01199434886232972, + "median_abs_rel_error": 0.002776013525371028, + "max_abs_rel_error": 0.19690455820774722, + "share_within_5pct": 0.9423076923076923, + "share_within_10pct": 0.9903846153846154 + } + }, + "irs_soi/irs_soi.business_net_profits": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.01262846757916334, + "mean_abs_rel_error": 0.04868417436047841, + "median_abs_rel_error": 0.00038960307456523146, + "max_abs_rel_error": 4.749793505256766, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.010793071183906851, + "mean_abs_rel_error": 0.023757897981115425, + "median_abs_rel_error": 0.0010861997643184665, + "max_abs_rel_error": 2.3483419869096913, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.010851657203982222, + "mean_abs_rel_error": 0.024222606086032723, + "median_abs_rel_error": 0.0009332836546722205, + "max_abs_rel_error": 2.3905786837332523, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.010740991705871564, + "mean_abs_rel_error": 0.029452449223890977, + "median_abs_rel_error": 0.0008826247883481169, + "max_abs_rel_error": 2.945991581874019, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.01070070136296137, + "mean_abs_rel_error": 0.026945940482034192, + "median_abs_rel_error": 0.0008464268277793971, + "max_abs_rel_error": 2.689504868383572, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + } + }, + "irs_soi/irs_soi.capital_gains_gross": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.30064035723865834, + "mean_abs_rel_error": 0.30064035723865834, + "median_abs_rel_error": 0.5122380643529997, + "max_abs_rel_error": 0.6202426419265462, + "share_within_5pct": 0.46153846153846156, + "share_within_10pct": 0.4807692307692308 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.1700647395619795, + "mean_abs_rel_error": 0.1700647395619795, + "median_abs_rel_error": 0.07988232021112178, + "max_abs_rel_error": 0.5710116750196225, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.18522756420709402, + "mean_abs_rel_error": 0.18522756420709402, + "median_abs_rel_error": 0.04989596275243752, + "max_abs_rel_error": 0.5568268128397995, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5096153846153846 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.2599820788706441, + "mean_abs_rel_error": 0.2599820788706441, + "median_abs_rel_error": 0.3301115906440001, + "max_abs_rel_error": 0.6122424569574894, + "share_within_5pct": 0.47115384615384615, + "share_within_10pct": 0.4807692307692308 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.24564380919624795, + "mean_abs_rel_error": 0.24564380919624795, + "median_abs_rel_error": 0.2628992597504457, + "max_abs_rel_error": 0.6061537657814673, + "share_within_5pct": 0.47115384615384615, + "share_within_10pct": 0.4807692307692308 + } + }, + "irs_soi/irs_soi.charitable_deduction": { + "release": { + "targets": 2, + "mean_capped_abs_rel_error": 0.07549810938870608, + "mean_abs_rel_error": 0.07549810938870608, + "median_abs_rel_error": 0.07549810938870608, + "max_abs_rel_error": 0.13579883267800233, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "a_no_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.06836009563478894, + "mean_abs_rel_error": 0.06836009563478894, + "median_abs_rel_error": 0.06836009563478894, + "max_abs_rel_error": 0.1363441478136048, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_with_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.07419494961596709, + "mean_abs_rel_error": 0.07419494961596709, + "median_abs_rel_error": 0.07419494961596709, + "max_abs_rel_error": 0.14812075105760886, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "a_no_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.06178775018808723, + "mean_abs_rel_error": 0.06178775018808723, + "median_abs_rel_error": 0.06178775018808723, + "max_abs_rel_error": 0.12315823694037376, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_with_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.06739155879551381, + "mean_abs_rel_error": 0.06739155879551381, + "median_abs_rel_error": 0.06739155879551381, + "max_abs_rel_error": 0.1346704899923046, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + } + }, + "irs_soi/irs_soi.count": { + "release": { + "targets": 260, + "mean_capped_abs_rel_error": 0.3166848849883814, + "mean_abs_rel_error": 0.40326526038258764, + "median_abs_rel_error": 0.18199437484285094, + "max_abs_rel_error": 2.7227640658310186, + "share_within_5pct": 0.2423076923076923, + "share_within_10pct": 0.36538461538461536 + }, + "a_no_fsa": { + "targets": 260, + "mean_capped_abs_rel_error": 0.20520200909301745, + "mean_abs_rel_error": 0.2773888360862469, + "median_abs_rel_error": 0.015296557988083555, + "max_abs_rel_error": 3.8118562719624336, + "share_within_5pct": 0.5884615384615385, + "share_within_10pct": 0.6615384615384615 + }, + "b_with_fsa": { + "targets": 260, + "mean_capped_abs_rel_error": 0.20888097004359185, + "mean_abs_rel_error": 0.28282182464218525, + "median_abs_rel_error": 0.036321930052794035, + "max_abs_rel_error": 3.7492715826903993, + "share_within_5pct": 0.5615384615384615, + "share_within_10pct": 0.6576923076923077 + }, + "a_no_fsa_l2": { + "targets": 260, + "mean_capped_abs_rel_error": 0.22854349421531497, + "mean_abs_rel_error": 0.31440734053596664, + "median_abs_rel_error": 0.046206254473677835, + "max_abs_rel_error": 4.030512468294826, + "share_within_5pct": 0.5115384615384615, + "share_within_10pct": 0.6423076923076924 + }, + "b_with_fsa_l2": { + "targets": 260, + "mean_capped_abs_rel_error": 0.22063467428469188, + "mean_abs_rel_error": 0.30122533352328473, + "median_abs_rel_error": 0.039690882591894946, + "max_abs_rel_error": 3.826631493021982, + "share_within_5pct": 0.5384615384615384, + "share_within_10pct": 0.6461538461538462 + } + }, + "irs_soi/irs_soi.ctc": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.014883365957134898, + "mean_abs_rel_error": 0.014883365957134898, + "median_abs_rel_error": 0.0009906973193060172, + "max_abs_rel_error": 0.23015638509580028, + "share_within_5pct": 0.8942307692307693, + "share_within_10pct": 0.9711538461538461 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.005908759282159332, + "mean_abs_rel_error": 0.005908759282159332, + "median_abs_rel_error": 0.0010482057217409435, + "max_abs_rel_error": 0.16514834825772237, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9903846153846154 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.012585696149968193, + "mean_abs_rel_error": 0.012585696149968193, + "median_abs_rel_error": 0.0015988195876063217, + "max_abs_rel_error": 0.17347297713758342, + "share_within_5pct": 0.9230769230769231, + "share_within_10pct": 0.9711538461538461 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.01205671562836164, + "mean_abs_rel_error": 0.01205671562836164, + "median_abs_rel_error": 0.0012899958538655192, + "max_abs_rel_error": 0.16617462139688066, + "share_within_5pct": 0.9326923076923077, + "share_within_10pct": 0.9711538461538461 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.013985164521525945, + "mean_abs_rel_error": 0.013985164521525945, + "median_abs_rel_error": 0.0014165893433014296, + "max_abs_rel_error": 0.25324353235112845, + "share_within_5pct": 0.9230769230769231, + "share_within_10pct": 0.9711538461538461 + } + }, + "irs_soi/irs_soi.deductible_mortgage_interest": { + "release": { + "targets": 2, + "mean_capped_abs_rel_error": 0.004212181536801498, + "mean_abs_rel_error": 0.004212181536801498, + "median_abs_rel_error": 0.004212181536801498, + "max_abs_rel_error": 0.008093566400504711, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0003088815087523626, + "mean_abs_rel_error": 0.0003088815087523626, + "median_abs_rel_error": 0.0003088815087523626, + "max_abs_rel_error": 0.0005785441950716589, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.001025505027346955, + "mean_abs_rel_error": 0.001025505027346955, + "median_abs_rel_error": 0.001025505027346955, + "max_abs_rel_error": 0.001593284191615117, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0010364878105201362, + "mean_abs_rel_error": 0.0010364878105201362, + "median_abs_rel_error": 0.0010364878105201362, + "max_abs_rel_error": 0.001079293767505114, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0002606429273915006, + "mean_abs_rel_error": 0.0002606429273915006, + "median_abs_rel_error": 0.0002606429273915006, + "max_abs_rel_error": 0.00047695169370608876, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.eitc": { + "release": { + "targets": 781, + "mean_capped_abs_rel_error": 0.03101466800898182, + "mean_abs_rel_error": 148507.27624598873, + "median_abs_rel_error": 0.0010954134600590925, + "max_abs_rel_error": 112185089.03921935, + "share_within_5pct": 0.8847631241997439, + "share_within_10pct": 0.9270166453265045 + }, + "a_no_fsa": { + "targets": 781, + "mean_capped_abs_rel_error": 0.024646730572943344, + "mean_abs_rel_error": 17885.78116582838, + "median_abs_rel_error": 0.0015665870578707476, + "max_abs_rel_error": 7327317.240634516, + "share_within_5pct": 0.912932138284251, + "share_within_10pct": 0.941101152368758 + }, + "b_with_fsa": { + "targets": 781, + "mean_capped_abs_rel_error": 0.03301648792075358, + "mean_abs_rel_error": 8333.671520777589, + "median_abs_rel_error": 0.0023456296078306813, + "max_abs_rel_error": 5049906.542038025, + "share_within_5pct": 0.8796414852752881, + "share_within_10pct": 0.9295774647887324 + }, + "a_no_fsa_l2": { + "targets": 781, + "mean_capped_abs_rel_error": 0.026654239355800184, + "mean_abs_rel_error": 67582.15087615496, + "median_abs_rel_error": 0.002023205334616561, + "max_abs_rel_error": 48105138.60023324, + "share_within_5pct": 0.9052496798975672, + "share_within_10pct": 0.9436619718309859 + }, + "b_with_fsa_l2": { + "targets": 781, + "mean_capped_abs_rel_error": 0.030970318398673438, + "mean_abs_rel_error": 27233.729956457242, + "median_abs_rel_error": 0.002312922820667099, + "max_abs_rel_error": 16779088.77414457, + "share_within_5pct": 0.8847631241997439, + "share_within_10pct": 0.9244558258642765 + } + }, + "irs_soi/irs_soi.employment_income": { + "release": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0013911471291655777, + "mean_abs_rel_error": 0.0013911471291655777, + "median_abs_rel_error": 0.00042289411827262124, + "max_abs_rel_error": 0.04252057383685228, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 106, + "mean_capped_abs_rel_error": 0.001312591392063708, + "mean_abs_rel_error": 0.001312591392063708, + "median_abs_rel_error": 0.000754015358900607, + "max_abs_rel_error": 0.026540576928519407, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0021586128158928284, + "mean_abs_rel_error": 0.0021586128158928284, + "median_abs_rel_error": 0.0006726520733716729, + "max_abs_rel_error": 0.027626108078658264, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0016811389819555082, + "mean_abs_rel_error": 0.0016811389819555082, + "median_abs_rel_error": 0.0006893492878843807, + "max_abs_rel_error": 0.026342267149062615, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0016444853894649173, + "mean_abs_rel_error": 0.0016444853894649173, + "median_abs_rel_error": 0.0007510545552285972, + "max_abs_rel_error": 0.020504839743647675, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.estate_income": { + "release": { + "targets": 2, + "mean_capped_abs_rel_error": 7.487397009837113e-05, + "mean_abs_rel_error": 7.487397009837113e-05, + "median_abs_rel_error": 7.487397009837113e-05, + "max_abs_rel_error": 0.00012197174495040293, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0011195594211380968, + "mean_abs_rel_error": 0.0011195594211380968, + "median_abs_rel_error": 0.0011195594211380968, + "max_abs_rel_error": 0.001356944195799437, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.00038804355506916833, + "mean_abs_rel_error": 0.00038804355506916833, + "median_abs_rel_error": 0.00038804355506916833, + "max_abs_rel_error": 0.0005412377573520513, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0008330375310934147, + "mean_abs_rel_error": 0.0008330375310934147, + "median_abs_rel_error": 0.0008330375310934147, + "max_abs_rel_error": 0.0013903992717356672, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0014011266828416911, + "mean_abs_rel_error": 0.0014011266828416911, + "median_abs_rel_error": 0.0014011266828416911, + "max_abs_rel_error": 0.0017534928243884583, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.estate_losses": { + "release": { + "targets": 2, + "mean_capped_abs_rel_error": 0.5003557900118631, + "mean_abs_rel_error": 2.4096962606395236, + "median_abs_rel_error": 2.4096962606395236, + "max_abs_rel_error": 4.818680941255321, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "a_no_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.5023233498785507, + "mean_abs_rel_error": 2.847737224874748, + "median_abs_rel_error": 2.847737224874748, + "max_abs_rel_error": 5.690827749992395, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_with_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.5010986960093003, + "mean_abs_rel_error": 2.171073015111326, + "median_abs_rel_error": 2.171073015111326, + "max_abs_rel_error": 4.339948638204052, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "a_no_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.5021547788285446, + "mean_abs_rel_error": 2.279233961516832, + "median_abs_rel_error": 2.279233961516832, + "max_abs_rel_error": 4.5541583653765745, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_with_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.5032288251891964, + "mean_abs_rel_error": 2.267627148305077, + "median_abs_rel_error": 2.267627148305077, + "max_abs_rel_error": 4.528796646231761, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + } + }, + "irs_soi/irs_soi.income_tax": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.00591216773635846, + "mean_abs_rel_error": 0.00591216773635846, + "median_abs_rel_error": 0.001231917007359049, + "max_abs_rel_error": 0.04979244902101185, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.006680512752353824, + "mean_abs_rel_error": 0.006680512752353824, + "median_abs_rel_error": 0.0016412757728019277, + "max_abs_rel_error": 0.06112604309450738, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.008229023472163841, + "mean_abs_rel_error": 0.008229023472163841, + "median_abs_rel_error": 0.001979217230018009, + "max_abs_rel_error": 0.0562560037027235, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.007779930302231824, + "mean_abs_rel_error": 0.007779930302231824, + "median_abs_rel_error": 0.0013392291427244177, + "max_abs_rel_error": 0.08521704507168248, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.00858104190120728, + "mean_abs_rel_error": 0.00858104190120728, + "median_abs_rel_error": 0.001998223453630528, + "max_abs_rel_error": 0.13141620125987813, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9903846153846154 + } + }, + "irs_soi/irs_soi.income_tax_before_credits": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.015753662102975522, + "mean_abs_rel_error": 0.015753662102975522, + "median_abs_rel_error": 0.00610196109833669, + "max_abs_rel_error": 0.05389399243218597, + "share_within_5pct": 0.9615384615384616, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.01627038787699486, + "mean_abs_rel_error": 0.01627038787699486, + "median_abs_rel_error": 0.006901983503721909, + "max_abs_rel_error": 0.08910537186407726, + "share_within_5pct": 0.9519230769230769, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.017733663006239787, + "mean_abs_rel_error": 0.017733663006239787, + "median_abs_rel_error": 0.006993091503211748, + "max_abs_rel_error": 0.0891099964269446, + "share_within_5pct": 0.9423076923076923, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.01925922184222164, + "mean_abs_rel_error": 0.01925922184222164, + "median_abs_rel_error": 0.007048960089457322, + "max_abs_rel_error": 0.08494512637463637, + "share_within_5pct": 0.8942307692307693, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.02003439043644371, + "mean_abs_rel_error": 0.02003439043644371, + "median_abs_rel_error": 0.0066930160650956316, + "max_abs_rel_error": 0.08779991033988786, + "share_within_5pct": 0.9038461538461539, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.interest_deduction": { + "release": { + "targets": 2, + "mean_capped_abs_rel_error": 0.02017258787338146, + "mean_abs_rel_error": 0.02017258787338146, + "median_abs_rel_error": 0.02017258787338146, + "max_abs_rel_error": 0.024832284029232203, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.017397461117208596, + "mean_abs_rel_error": 0.017397461117208596, + "median_abs_rel_error": 0.017397461117208596, + "max_abs_rel_error": 0.025192991873928317, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.012499570381315888, + "mean_abs_rel_error": 0.012499570381315888, + "median_abs_rel_error": 0.012499570381315888, + "max_abs_rel_error": 0.024708547712510805, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.02406619768443205, + "mean_abs_rel_error": 0.02406619768443205, + "median_abs_rel_error": 0.02406619768443205, + "max_abs_rel_error": 0.024186073566146018, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.019765036441991936, + "mean_abs_rel_error": 0.019765036441991936, + "median_abs_rel_error": 0.019765036441991936, + "max_abs_rel_error": 0.02511154064563169, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.ira_distributions": { + "release": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0010455493271411087, + "mean_abs_rel_error": 0.0010455493271411087, + "median_abs_rel_error": 0.000519918058975545, + "max_abs_rel_error": 0.018449562592512434, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0014589689346000206, + "mean_abs_rel_error": 0.0014589689346000206, + "median_abs_rel_error": 0.00097091165317698, + "max_abs_rel_error": 0.018252799279044208, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0014174505869384525, + "mean_abs_rel_error": 0.0014174505869384525, + "median_abs_rel_error": 0.0008623376834452311, + "max_abs_rel_error": 0.01867301945543659, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0014439519266552345, + "mean_abs_rel_error": 0.0014439519266552345, + "median_abs_rel_error": 0.0009070486894192687, + "max_abs_rel_error": 0.018699321276828457, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0015090233715366272, + "mean_abs_rel_error": 0.0015090233715366272, + "median_abs_rel_error": 0.000974013486397568, + "max_abs_rel_error": 0.018729232799307813, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.itemized_taxable_income_deductions": { + "release": { + "targets": 55, + "mean_capped_abs_rel_error": 0.02007493919626953, + "mean_abs_rel_error": 0.02007493919626953, + "median_abs_rel_error": 0.0008678423325651685, + "max_abs_rel_error": 0.558473311147004, + "share_within_5pct": 0.9636363636363636, + "share_within_10pct": 0.9636363636363636 + }, + "a_no_fsa": { + "targets": 55, + "mean_capped_abs_rel_error": 0.022765555175292627, + "mean_abs_rel_error": 0.022765555175292627, + "median_abs_rel_error": 0.0012773491755963587, + "max_abs_rel_error": 0.5327818555736837, + "share_within_5pct": 0.9272727272727272, + "share_within_10pct": 0.9454545454545454 + }, + "b_with_fsa": { + "targets": 55, + "mean_capped_abs_rel_error": 0.023085859023404955, + "mean_abs_rel_error": 0.023085859023404955, + "median_abs_rel_error": 0.0017779278204516362, + "max_abs_rel_error": 0.528200180988138, + "share_within_5pct": 0.9454545454545454, + "share_within_10pct": 0.9454545454545454 + }, + "a_no_fsa_l2": { + "targets": 55, + "mean_capped_abs_rel_error": 0.02527733886148011, + "mean_abs_rel_error": 0.02527733886148011, + "median_abs_rel_error": 0.0015739349924736358, + "max_abs_rel_error": 0.5421771569634773, + "share_within_5pct": 0.9090909090909091, + "share_within_10pct": 0.9454545454545454 + }, + "b_with_fsa_l2": { + "targets": 55, + "mean_capped_abs_rel_error": 0.022978506624876164, + "mean_abs_rel_error": 0.022978506624876164, + "median_abs_rel_error": 0.0013127152067585956, + "max_abs_rel_error": 0.5283942191082257, + "share_within_5pct": 0.9272727272727272, + "share_within_10pct": 0.9636363636363636 + } + }, + "irs_soi/irs_soi.medical_expense_deduction": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.06015916911251376, + "mean_abs_rel_error": 0.19381445136084371, + "median_abs_rel_error": 0.0007900230138132156, + "max_abs_rel_error": 5.246878554163409, + "share_within_5pct": 0.9326923076923077, + "share_within_10pct": 0.9326923076923077 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.06255714766612655, + "mean_abs_rel_error": 0.21915213897963717, + "median_abs_rel_error": 0.0018862982597838817, + "max_abs_rel_error": 6.055044655443635, + "share_within_5pct": 0.9134615384615384, + "share_within_10pct": 0.9230769230769231 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.06347489593161995, + "mean_abs_rel_error": 0.22535627905957156, + "median_abs_rel_error": 0.002150932917911768, + "max_abs_rel_error": 6.408196519461774, + "share_within_5pct": 0.9038461538461539, + "share_within_10pct": 0.9326923076923077 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.06196751488293596, + "mean_abs_rel_error": 0.21903406770609576, + "median_abs_rel_error": 0.0011722964726428847, + "max_abs_rel_error": 5.826701009935935, + "share_within_5pct": 0.9230769230769231, + "share_within_10pct": 0.9230769230769231 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.06437465471037261, + "mean_abs_rel_error": 0.22151765419646757, + "median_abs_rel_error": 0.002052131947741152, + "max_abs_rel_error": 5.956369502677449, + "share_within_5pct": 0.9230769230769231, + "share_within_10pct": 0.9230769230769231 + } + }, + "irs_soi/irs_soi.non_sch_d_capital_gains": { + "release": { + "targets": 2, + "mean_capped_abs_rel_error": 3.481195300880114e-05, + "mean_abs_rel_error": 3.481195300880114e-05, + "median_abs_rel_error": 3.481195300880114e-05, + "max_abs_rel_error": 6.016751449214431e-05, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.00046277584278425136, + "mean_abs_rel_error": 0.00046277584278425136, + "median_abs_rel_error": 0.00046277584278425136, + "max_abs_rel_error": 0.0006878835299126856, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0011860174567384421, + "mean_abs_rel_error": 0.0011860174567384421, + "median_abs_rel_error": 0.0011860174567384421, + "max_abs_rel_error": 0.0014327753451021544, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0007670849671854666, + "mean_abs_rel_error": 0.0007670849671854666, + "median_abs_rel_error": 0.0007670849671854666, + "max_abs_rel_error": 0.0009591411387268395, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0006224976721046795, + "mean_abs_rel_error": 0.0006224976721046795, + "median_abs_rel_error": 0.0006224976721046795, + "max_abs_rel_error": 0.0007231228917723797, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.ordinary_dividend_income": { + "release": { + "targets": 108, + "mean_capped_abs_rel_error": 0.008161402730339133, + "mean_abs_rel_error": 0.008161402730339133, + "median_abs_rel_error": 0.0005953274186073485, + "max_abs_rel_error": 0.18985227259152918, + "share_within_5pct": 0.9444444444444444, + "share_within_10pct": 0.9629629629629629 + }, + "a_no_fsa": { + "targets": 108, + "mean_capped_abs_rel_error": 0.007837376013250854, + "mean_abs_rel_error": 0.007837376013250854, + "median_abs_rel_error": 0.0012309325567304583, + "max_abs_rel_error": 0.21066669820529482, + "share_within_5pct": 0.9629629629629629, + "share_within_10pct": 0.9814814814814815 + }, + "b_with_fsa": { + "targets": 108, + "mean_capped_abs_rel_error": 0.009036170201861959, + "mean_abs_rel_error": 0.009036170201861959, + "median_abs_rel_error": 0.0013830913151203369, + "max_abs_rel_error": 0.16151879498219543, + "share_within_5pct": 0.9444444444444444, + "share_within_10pct": 0.9814814814814815 + }, + "a_no_fsa_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.008462048030127045, + "mean_abs_rel_error": 0.008462048030127045, + "median_abs_rel_error": 0.0011011199008410016, + "max_abs_rel_error": 0.2093145935080321, + "share_within_5pct": 0.9537037037037037, + "share_within_10pct": 0.9814814814814815 + }, + "b_with_fsa_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.007841318664509458, + "mean_abs_rel_error": 0.007841318664509458, + "median_abs_rel_error": 0.0011026623944309795, + "max_abs_rel_error": 0.19679114764273567, + "share_within_5pct": 0.9629629629629629, + "share_within_10pct": 0.9814814814814815 + } + }, + "irs_soi/irs_soi.partnership_and_s_corp_income": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.005986955480571794, + "mean_abs_rel_error": 0.005986955480571794, + "median_abs_rel_error": 0.0007943959849150306, + "max_abs_rel_error": 0.2536978029402277, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.003791101571681395, + "mean_abs_rel_error": 0.003791101571681395, + "median_abs_rel_error": 0.0009258451206316087, + "max_abs_rel_error": 0.2097297011009019, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9903846153846154 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0034180773266881672, + "mean_abs_rel_error": 0.0034180773266881672, + "median_abs_rel_error": 0.0009832478408702758, + "max_abs_rel_error": 0.2339690974387381, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.006425655274376408, + "mean_abs_rel_error": 0.006425655274376408, + "median_abs_rel_error": 0.0013163536718126718, + "max_abs_rel_error": 0.4187035242989705, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9903846153846154 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.005919697549510513, + "mean_abs_rel_error": 0.005919697549510513, + "median_abs_rel_error": 0.0014639016879116622, + "max_abs_rel_error": 0.369747692641723, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + } + }, + "irs_soi/irs_soi.qualified_dividends": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0032877840000221804, + "mean_abs_rel_error": 0.0032877840000221804, + "median_abs_rel_error": 0.0005550933856634234, + "max_abs_rel_error": 0.10353574451953144, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9903846153846154 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.005206923837114242, + "mean_abs_rel_error": 0.005206923837114242, + "median_abs_rel_error": 0.0012518395650151185, + "max_abs_rel_error": 0.10977752647623817, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9903846153846154 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.008630598733085679, + "mean_abs_rel_error": 0.008630598733085679, + "median_abs_rel_error": 0.0016444478863405269, + "max_abs_rel_error": 0.12656044597004126, + "share_within_5pct": 0.9519230769230769, + "share_within_10pct": 0.9807692307692307 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.004640975804753294, + "mean_abs_rel_error": 0.004640975804753294, + "median_abs_rel_error": 0.0013933409854692508, + "max_abs_rel_error": 0.06001458554484444, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.005130274094367244, + "mean_abs_rel_error": 0.005130274094367244, + "median_abs_rel_error": 0.0017065175640684795, + "max_abs_rel_error": 0.09221457536234942, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.real_estate_taxes": { + "release": { + "targets": 106, + "mean_capped_abs_rel_error": 0.06530305356694628, + "mean_abs_rel_error": 0.09219380512831919, + "median_abs_rel_error": 0.0009109996393883125, + "max_abs_rel_error": 1.8381971604151794, + "share_within_5pct": 0.8584905660377359, + "share_within_10pct": 0.9150943396226415 + }, + "a_no_fsa": { + "targets": 106, + "mean_capped_abs_rel_error": 0.05325371776134614, + "mean_abs_rel_error": 0.0738779721711236, + "median_abs_rel_error": 0.0014744687411256323, + "max_abs_rel_error": 1.9273895008890598, + "share_within_5pct": 0.8962264150943396, + "share_within_10pct": 0.9245283018867925 + }, + "b_with_fsa": { + "targets": 106, + "mean_capped_abs_rel_error": 0.06278784876814499, + "mean_abs_rel_error": 0.09017154213368689, + "median_abs_rel_error": 0.0019633948272123718, + "max_abs_rel_error": 1.905198688861855, + "share_within_5pct": 0.8867924528301887, + "share_within_10pct": 0.9056603773584906 + }, + "a_no_fsa_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.06264712014920974, + "mean_abs_rel_error": 0.08429610423278819, + "median_abs_rel_error": 0.0015365545747915823, + "max_abs_rel_error": 1.8211025769578548, + "share_within_5pct": 0.8962264150943396, + "share_within_10pct": 0.9150943396226415 + }, + "b_with_fsa_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0640316106020026, + "mean_abs_rel_error": 0.08896726216036875, + "median_abs_rel_error": 0.0014688730102188452, + "max_abs_rel_error": 1.922210885170449, + "share_within_5pct": 0.8962264150943396, + "share_within_10pct": 0.9056603773584906 + } + }, + "irs_soi/irs_soi.refundable_ctc": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.008139040475283662, + "mean_abs_rel_error": 0.008139040475283662, + "median_abs_rel_error": 0.0008233578397344743, + "max_abs_rel_error": 0.12663746254860164, + "share_within_5pct": 0.9519230769230769, + "share_within_10pct": 0.9807692307692307 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0033094117565394513, + "mean_abs_rel_error": 0.0033094117565394513, + "median_abs_rel_error": 0.001122166874529885, + "max_abs_rel_error": 0.11807714161445394, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.012039485315086241, + "mean_abs_rel_error": 0.012039485315086241, + "median_abs_rel_error": 0.0018533088111052495, + "max_abs_rel_error": 0.24557994228514418, + "share_within_5pct": 0.9230769230769231, + "share_within_10pct": 0.9903846153846154 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.007115012838632084, + "mean_abs_rel_error": 0.007115012838632084, + "median_abs_rel_error": 0.0016434663364857586, + "max_abs_rel_error": 0.07636292293909935, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.013202093573941838, + "mean_abs_rel_error": 0.013202093573941838, + "median_abs_rel_error": 0.0015791615634527262, + "max_abs_rel_error": 0.09861194880742834, + "share_within_5pct": 0.8846153846153846, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.rent_and_royalty_net_income": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.039618566928938045, + "mean_abs_rel_error": 1.8030999836115063, + "median_abs_rel_error": 0.0007176159023661206, + "max_abs_rel_error": 97.38462804815869, + "share_within_5pct": 0.9615384615384616, + "share_within_10pct": 0.9615384615384616 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.03066594390696861, + "mean_abs_rel_error": 1.446877217472869, + "median_abs_rel_error": 0.0011371044924908885, + "max_abs_rel_error": 124.10983338268886, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.03086978809375372, + "mean_abs_rel_error": 1.6889371761797363, + "median_abs_rel_error": 0.0013044516863463533, + "max_abs_rel_error": 158.4004762744762, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.03125273529956563, + "mean_abs_rel_error": 1.6613107808905454, + "median_abs_rel_error": 0.0013871139318421635, + "max_abs_rel_error": 117.59125274511325, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.030684415427154797, + "mean_abs_rel_error": 1.3925362035217999, + "median_abs_rel_error": 0.0012344974263897627, + "max_abs_rel_error": 134.55891550698533, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + } + }, + "irs_soi/irs_soi.salt_deduction": { + "release": { + "targets": 106, + "mean_capped_abs_rel_error": 0.018914635756625123, + "mean_abs_rel_error": 0.018914635756625123, + "median_abs_rel_error": 0.002280995063845683, + "max_abs_rel_error": 0.19976339462746978, + "share_within_5pct": 0.8490566037735849, + "share_within_10pct": 0.9622641509433962 + }, + "a_no_fsa": { + "targets": 106, + "mean_capped_abs_rel_error": 0.01820633523366054, + "mean_abs_rel_error": 0.01820633523366054, + "median_abs_rel_error": 0.0019400854118390722, + "max_abs_rel_error": 0.19762685326308188, + "share_within_5pct": 0.8773584905660378, + "share_within_10pct": 0.9622641509433962 + }, + "b_with_fsa": { + "targets": 106, + "mean_capped_abs_rel_error": 0.023347069174338198, + "mean_abs_rel_error": 0.023347069174338198, + "median_abs_rel_error": 0.0064659739913831464, + "max_abs_rel_error": 0.2632218569331465, + "share_within_5pct": 0.8584905660377359, + "share_within_10pct": 0.9433962264150944 + }, + "a_no_fsa_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.02087703439938497, + "mean_abs_rel_error": 0.02087703439938497, + "median_abs_rel_error": 0.0033282491912103676, + "max_abs_rel_error": 0.2461527557983996, + "share_within_5pct": 0.8679245283018868, + "share_within_10pct": 0.9622641509433962 + }, + "b_with_fsa_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.022850043593459744, + "mean_abs_rel_error": 0.022850043593459744, + "median_abs_rel_error": 0.0029428071538765747, + "max_abs_rel_error": 0.23059183077115925, + "share_within_5pct": 0.8490566037735849, + "share_within_10pct": 0.9433962264150944 + } + }, + "irs_soi/irs_soi.tax_exempt_interest_income": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0010230797937469554, + "mean_abs_rel_error": 0.0010230797937469554, + "median_abs_rel_error": 0.0008028656581808397, + "max_abs_rel_error": 0.005289848949676127, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.007157986053412043, + "mean_abs_rel_error": 0.007157986053412043, + "median_abs_rel_error": 0.0010709043889362922, + "max_abs_rel_error": 0.3406158635952663, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9807692307692307 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.008048590127641633, + "mean_abs_rel_error": 0.008048590127641633, + "median_abs_rel_error": 0.0013094748157970204, + "max_abs_rel_error": 0.36037963648831245, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9807692307692307 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.010196405712620819, + "mean_abs_rel_error": 0.010196405712620819, + "median_abs_rel_error": 0.001047388682693757, + "max_abs_rel_error": 0.3872956647629681, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.009571721087884564, + "mean_abs_rel_error": 0.009571721087884564, + "median_abs_rel_error": 0.001000912987461561, + "max_abs_rel_error": 0.3994656055254415, + "share_within_5pct": 0.9615384615384616, + "share_within_10pct": 0.9807692307692307 + } + }, + "irs_soi/irs_soi.taxable_income": { + "release": { + "targets": 107, + "mean_capped_abs_rel_error": 0.0028796123855853047, + "mean_abs_rel_error": 0.0028796123855853047, + "median_abs_rel_error": 0.001449392590926156, + "max_abs_rel_error": 0.015306031772363558, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 107, + "mean_capped_abs_rel_error": 0.0036495019258125563, + "mean_abs_rel_error": 0.0036495019258125563, + "median_abs_rel_error": 0.0017350205504192123, + "max_abs_rel_error": 0.029707876155350702, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 107, + "mean_capped_abs_rel_error": 0.004736855763510603, + "mean_abs_rel_error": 0.004736855763510603, + "median_abs_rel_error": 0.0015690078654251654, + "max_abs_rel_error": 0.03761555973436072, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 107, + "mean_capped_abs_rel_error": 0.0059890398568411, + "mean_abs_rel_error": 0.0059890398568411, + "median_abs_rel_error": 0.0015632785791814953, + "max_abs_rel_error": 0.041000424140849624, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 107, + "mean_capped_abs_rel_error": 0.005980163161022519, + "mean_abs_rel_error": 0.005980163161022519, + "median_abs_rel_error": 0.001884172254331617, + "max_abs_rel_error": 0.0423725259190398, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.taxable_interest_income": { + "release": { + "targets": 1038, + "mean_capped_abs_rel_error": 0.059861527861838994, + "mean_abs_rel_error": 0.08053300872511363, + "median_abs_rel_error": 0.00104381615042951, + "max_abs_rel_error": 6.944870490104277, + "share_within_5pct": 0.8872832369942196, + "share_within_10pct": 0.9036608863198459 + }, + "a_no_fsa": { + "targets": 1038, + "mean_capped_abs_rel_error": 0.05743217597899222, + "mean_abs_rel_error": 0.08237603798195878, + "median_abs_rel_error": 0.0018662802925159467, + "max_abs_rel_error": 11.32795841407572, + "share_within_5pct": 0.8921001926782274, + "share_within_10pct": 0.9104046242774566 + }, + "b_with_fsa": { + "targets": 1038, + "mean_capped_abs_rel_error": 0.06232934442848569, + "mean_abs_rel_error": 0.07952624300189007, + "median_abs_rel_error": 0.0022632196461989003, + "max_abs_rel_error": 11.47088326193389, + "share_within_5pct": 0.8622350674373795, + "share_within_10pct": 0.8921001926782274 + }, + "a_no_fsa_l2": { + "targets": 1038, + "mean_capped_abs_rel_error": 0.059826440441635514, + "mean_abs_rel_error": 0.08512234275278145, + "median_abs_rel_error": 0.002049171527631015, + "max_abs_rel_error": 9.170798570811668, + "share_within_5pct": 0.882466281310212, + "share_within_10pct": 0.9075144508670521 + }, + "b_with_fsa_l2": { + "targets": 1038, + "mean_capped_abs_rel_error": 0.05898539006402167, + "mean_abs_rel_error": 0.08083360764467823, + "median_abs_rel_error": 0.0021974156171218973, + "max_abs_rel_error": 10.370327794658373, + "share_within_5pct": 0.8766859344894027, + "share_within_10pct": 0.9036608863198459 + } + }, + "irs_soi/irs_soi.taxable_pension_income": { + "release": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0007702053107311273, + "mean_abs_rel_error": 0.0007702053107311273, + "median_abs_rel_error": 0.0005300520540812743, + "max_abs_rel_error": 0.011549613331512092, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0012355022536187433, + "mean_abs_rel_error": 0.0012355022536187433, + "median_abs_rel_error": 0.0009436839594206578, + "max_abs_rel_error": 0.011376805419169666, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0012417924486544491, + "mean_abs_rel_error": 0.0012417924486544491, + "median_abs_rel_error": 0.0007896451725665598, + "max_abs_rel_error": 0.011388983487273576, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0012142279219895882, + "mean_abs_rel_error": 0.0012142279219895882, + "median_abs_rel_error": 0.0008726696048781046, + "max_abs_rel_error": 0.011617196510599547, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.001337226243724447, + "mean_abs_rel_error": 0.001337226243724447, + "median_abs_rel_error": 0.0008984528848749718, + "max_abs_rel_error": 0.01105580187703563, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.taxable_social_security": { + "release": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0032985455804529326, + "mean_abs_rel_error": 0.0032985455804529326, + "median_abs_rel_error": 0.0005862333442026984, + "max_abs_rel_error": 0.10858679373892052, + "share_within_5pct": 0.9907407407407407, + "share_within_10pct": 0.9907407407407407 + }, + "a_no_fsa": { + "targets": 108, + "mean_capped_abs_rel_error": 0.002461165012778316, + "mean_abs_rel_error": 0.002461165012778316, + "median_abs_rel_error": 0.0008284681472116246, + "max_abs_rel_error": 0.11041443069483925, + "share_within_5pct": 0.9814814814814815, + "share_within_10pct": 0.9907407407407407 + }, + "b_with_fsa": { + "targets": 108, + "mean_capped_abs_rel_error": 0.002493923242757945, + "mean_abs_rel_error": 0.002493923242757945, + "median_abs_rel_error": 0.0007823490907014998, + "max_abs_rel_error": 0.11037904508141529, + "share_within_5pct": 0.9814814814814815, + "share_within_10pct": 0.9907407407407407 + }, + "a_no_fsa_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.002666767129625355, + "mean_abs_rel_error": 0.002666767129625355, + "median_abs_rel_error": 0.0010431696210772673, + "max_abs_rel_error": 0.1100913490921742, + "share_within_5pct": 0.9814814814814815, + "share_within_10pct": 0.9907407407407407 + }, + "b_with_fsa_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0031702340815062376, + "mean_abs_rel_error": 0.0031702340815062376, + "median_abs_rel_error": 0.001288155162124622, + "max_abs_rel_error": 0.1099440902581524, + "share_within_5pct": 0.9814814814814815, + "share_within_10pct": 0.9907407407407407 + } + }, + "irs_soi/irs_soi.tip_income": { + "release": { + "targets": 1, + "mean_capped_abs_rel_error": 0.21253556635193796, + "mean_abs_rel_error": 0.21253556635193796, + "median_abs_rel_error": 0.21253556635193796, + "max_abs_rel_error": 0.21253556635193796, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0013406511894002552, + "mean_abs_rel_error": 0.0013406511894002552, + "median_abs_rel_error": 0.0013406511894002552, + "max_abs_rel_error": 0.0013406511894002552, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0017557754397329864, + "mean_abs_rel_error": 0.0017557754397329864, + "median_abs_rel_error": 0.0017557754397329864, + "max_abs_rel_error": 0.0017557754397329864, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.000684443037459516, + "mean_abs_rel_error": 0.000684443037459516, + "median_abs_rel_error": 0.000684443037459516, + "max_abs_rel_error": 0.000684443037459516, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0002400995006703551, + "mean_abs_rel_error": 0.0002400995006703551, + "median_abs_rel_error": 0.0002400995006703551, + "max_abs_rel_error": 0.0002400995006703551, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + } + }, + "irs_soi/irs_soi.unemployment_compensation": { + "release": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0011696769194290445, + "mean_abs_rel_error": 0.0011696769194290445, + "median_abs_rel_error": 0.0008714788178793252, + "max_abs_rel_error": 0.012311829291160554, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0026520198433075555, + "mean_abs_rel_error": 0.0026520198433075555, + "median_abs_rel_error": 0.0011314453752402226, + "max_abs_rel_error": 0.11622417159829035, + "share_within_5pct": 0.9905660377358491, + "share_within_10pct": 0.9905660377358491 + }, + "b_with_fsa": { + "targets": 106, + "mean_capped_abs_rel_error": 0.007140260687639728, + "mean_abs_rel_error": 0.007140260687639728, + "median_abs_rel_error": 0.0015825308630559223, + "max_abs_rel_error": 0.25937563791016527, + "share_within_5pct": 0.9716981132075472, + "share_within_10pct": 0.9811320754716981 + }, + "a_no_fsa_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0021110455963787842, + "mean_abs_rel_error": 0.0021110455963787842, + "median_abs_rel_error": 0.0013036635865510439, + "max_abs_rel_error": 0.026135531312713716, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.006629240837545382, + "mean_abs_rel_error": 0.006629240837545382, + "median_abs_rel_error": 0.0019086897243690685, + "max_abs_rel_error": 0.14801564554852809, + "share_within_5pct": 0.9716981132075472, + "share_within_10pct": 0.9716981132075472 + } + }, + "jct/jct.individual_tax_expenditure_revenue_loss": { + "release": { + "targets": 11, + "mean_capped_abs_rel_error": 0.42341291491724176, + "mean_abs_rel_error": 0.42341291491724176, + "median_abs_rel_error": 0.2857443076502946, + "max_abs_rel_error": 0.9875536544765108, + "share_within_5pct": 0.18181818181818182, + "share_within_10pct": 0.18181818181818182 + }, + "a_no_fsa": { + "targets": 11, + "mean_capped_abs_rel_error": 0.35342414072350636, + "mean_abs_rel_error": 0.35342414072350636, + "median_abs_rel_error": 0.2233080614650183, + "max_abs_rel_error": 0.9851062346652032, + "share_within_5pct": 0.18181818181818182, + "share_within_10pct": 0.18181818181818182 + }, + "b_with_fsa": { + "targets": 11, + "mean_capped_abs_rel_error": 0.3748348088733628, + "mean_abs_rel_error": 0.3748348088733628, + "median_abs_rel_error": 0.28721312005496913, + "max_abs_rel_error": 0.9866145134982859, + "share_within_5pct": 0.18181818181818182, + "share_within_10pct": 0.18181818181818182 + }, + "a_no_fsa_l2": { + "targets": 11, + "mean_capped_abs_rel_error": 0.399370259646669, + "mean_abs_rel_error": 0.399370259646669, + "median_abs_rel_error": 0.2786286584614955, + "max_abs_rel_error": 0.9871458987924335, + "share_within_5pct": 0.18181818181818182, + "share_within_10pct": 0.18181818181818182 + }, + "b_with_fsa_l2": { + "targets": 11, + "mean_capped_abs_rel_error": 0.3930935598718291, + "mean_abs_rel_error": 0.3930935598718291, + "median_abs_rel_error": 0.28498393467119865, + "max_abs_rel_error": 0.9866121891517183, + "share_within_5pct": 0.18181818181818182, + "share_within_10pct": 0.18181818181818182 + } + }, + "ssa/ssa.ssa": { + "release": { + "targets": 6, + "mean_capped_abs_rel_error": 0.0370357134139729, + "mean_abs_rel_error": 0.0370357134139729, + "median_abs_rel_error": 0.0025621271077189076, + "max_abs_rel_error": 0.11069228911324024, + "share_within_5pct": 0.6666666666666666, + "share_within_10pct": 0.6666666666666666 + }, + "a_no_fsa": { + "targets": 6, + "mean_capped_abs_rel_error": 0.0012941915791558967, + "mean_abs_rel_error": 0.0012941915791558967, + "median_abs_rel_error": 0.0002865183255248981, + "max_abs_rel_error": 0.00664828122309669, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 6, + "mean_capped_abs_rel_error": 0.00047537623758243594, + "mean_abs_rel_error": 0.00047537623758243594, + "median_abs_rel_error": 0.00016043321103009994, + "max_abs_rel_error": 0.002129771732592459, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 6, + "mean_capped_abs_rel_error": 0.01441884234732778, + "mean_abs_rel_error": 0.01441884234732778, + "median_abs_rel_error": 0.0014730490770498417, + "max_abs_rel_error": 0.07792793781866521, + "share_within_5pct": 0.8333333333333334, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 6, + "mean_capped_abs_rel_error": 0.010606407005245205, + "mean_abs_rel_error": 0.010606407005245205, + "median_abs_rel_error": 0.00018972281269626643, + "max_abs_rel_error": 0.0610945859414752, + "share_within_5pct": 0.8333333333333334, + "share_within_10pct": 1.0 + } + }, + "ssa/ssa.ssi_federal_payment_recipients": { + "release": { + "targets": 3, + "mean_capped_abs_rel_error": 0.2846428972877239, + "mean_abs_rel_error": 0.2846428972877239, + "median_abs_rel_error": 0.030328275970065644, + "max_abs_rel_error": 0.823348908055483, + "share_within_5pct": 0.6666666666666666, + "share_within_10pct": 0.6666666666666666 + }, + "a_no_fsa": { + "targets": 3, + "mean_capped_abs_rel_error": 0.1563820459217022, + "mean_abs_rel_error": 0.1563820459217022, + "median_abs_rel_error": 0.09899314636699057, + "max_abs_rel_error": 0.3693999247880837, + "share_within_5pct": 0.3333333333333333, + "share_within_10pct": 0.6666666666666666 + }, + "b_with_fsa": { + "targets": 3, + "mean_capped_abs_rel_error": 0.17235307767161576, + "mean_abs_rel_error": 0.17235307767161576, + "median_abs_rel_error": 0.10154552034307894, + "max_abs_rel_error": 0.4141463586217791, + "share_within_5pct": 0.3333333333333333, + "share_within_10pct": 0.3333333333333333 + }, + "a_no_fsa_l2": { + "targets": 3, + "mean_capped_abs_rel_error": 0.24329500380815094, + "mean_abs_rel_error": 0.24329500380815094, + "median_abs_rel_error": 0.1285893328132574, + "max_abs_rel_error": 0.6002182237686193, + "share_within_5pct": 0.3333333333333333, + "share_within_10pct": 0.3333333333333333 + }, + "b_with_fsa_l2": { + "targets": 3, + "mean_capped_abs_rel_error": 0.21646019194231522, + "mean_abs_rel_error": 0.21646019194231522, + "median_abs_rel_error": 0.11811443449564059, + "max_abs_rel_error": 0.5272514081098357, + "share_within_5pct": 0.3333333333333333, + "share_within_10pct": 0.3333333333333333 + } + }, + "ssa/ssa.ssi_payments": { + "release": { + "targets": 51, + "mean_capped_abs_rel_error": 0.03742067946016383, + "mean_abs_rel_error": 0.03742067946016383, + "median_abs_rel_error": 0.0008407150618108651, + "max_abs_rel_error": 0.4642138796401504, + "share_within_5pct": 0.8431372549019608, + "share_within_10pct": 0.8823529411764706 + }, + "a_no_fsa": { + "targets": 51, + "mean_capped_abs_rel_error": 0.004137128260528899, + "mean_abs_rel_error": 0.004137128260528899, + "median_abs_rel_error": 0.0014296317702531217, + "max_abs_rel_error": 0.041593060756080394, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 51, + "mean_capped_abs_rel_error": 0.005919420282833748, + "mean_abs_rel_error": 0.005919420282833748, + "median_abs_rel_error": 0.002531269486878772, + "max_abs_rel_error": 0.051172975011777797, + "share_within_5pct": 0.9803921568627451, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.005446286615921841, + "mean_abs_rel_error": 0.005446286615921841, + "median_abs_rel_error": 0.0011806351556604261, + "max_abs_rel_error": 0.09209266618972992, + "share_within_5pct": 0.9803921568627451, + "share_within_10pct": 1.0 + }, + "b_with_fsa_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.008551616296680341, + "mean_abs_rel_error": 0.008551616296680341, + "median_abs_rel_error": 0.002580344635541191, + "max_abs_rel_error": 0.16077428968803284, + "share_within_5pct": 0.9411764705882353, + "share_within_10pct": 0.9803921568627451 + } + }, + "ssa/ssa.ssi_recipients": { + "release": { + "targets": 51, + "mean_capped_abs_rel_error": 0.047648715574581536, + "mean_abs_rel_error": 0.047648715574581536, + "median_abs_rel_error": 0.0011530111958323558, + "max_abs_rel_error": 0.41677830833980467, + "share_within_5pct": 0.8627450980392157, + "share_within_10pct": 0.8627450980392157 + }, + "a_no_fsa": { + "targets": 51, + "mean_capped_abs_rel_error": 0.006750443130807028, + "mean_abs_rel_error": 0.006750443130807028, + "median_abs_rel_error": 0.0010537814801668786, + "max_abs_rel_error": 0.12089023405432996, + "share_within_5pct": 0.9411764705882353, + "share_within_10pct": 0.9803921568627451 + }, + "b_with_fsa": { + "targets": 51, + "mean_capped_abs_rel_error": 0.007893623208744791, + "mean_abs_rel_error": 0.007893623208744791, + "median_abs_rel_error": 0.0015714313036027617, + "max_abs_rel_error": 0.1253722127595259, + "share_within_5pct": 0.9411764705882353, + "share_within_10pct": 0.9607843137254902 + }, + "a_no_fsa_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.01958193532774297, + "mean_abs_rel_error": 0.01958193532774297, + "median_abs_rel_error": 0.0013722368018263319, + "max_abs_rel_error": 0.22710707330828744, + "share_within_5pct": 0.8823529411764706, + "share_within_10pct": 0.9019607843137255 + }, + "b_with_fsa_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.014781309784482381, + "mean_abs_rel_error": 0.014781309784482381, + "median_abs_rel_error": 0.0016834332433176068, + "max_abs_rel_error": 0.20624776884613172, + "share_within_5pct": 0.9215686274509803, + "share_within_10pct": 0.9215686274509803 + } + }, + "usda_snap/usda_snap.usda_snap": { + "release": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0790716446736785, + "mean_abs_rel_error": 0.0790716446736785, + "median_abs_rel_error": 0.07382797185805293, + "max_abs_rel_error": 0.2735196192840119, + "share_within_5pct": 0.33653846153846156, + "share_within_10pct": 0.6923076923076923 + }, + "a_no_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0011522985653391056, + "mean_abs_rel_error": 0.0011522985653391056, + "median_abs_rel_error": 0.001003735688955348, + "max_abs_rel_error": 0.0036165984263715517, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_with_fsa": { + "targets": 104, + "mean_capped_abs_rel_error": 0.002339601534751349, + "mean_abs_rel_error": 0.002339601534751349, + "median_abs_rel_error": 0.0009791752962835679, + "max_abs_rel_error": 0.04708054748849348, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "a_no_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0064553251606772905, + "mean_abs_rel_error": 0.0064553251606772905, + "median_abs_rel_error": 0.0009322100733563707, + "max_abs_rel_error": 0.12274476114262184, + "share_within_5pct": 0.9615384615384616, + "share_within_10pct": 0.9807692307692307 + }, + "b_with_fsa_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.004929361865803737, + "mean_abs_rel_error": 0.004929361865803737, + "median_abs_rel_error": 0.0013057712841990435, + "max_abs_rel_error": 0.08748050958123087, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 1.0 + } + } + }, + "fit_overall": { + "fsa": { + "release": { + "targets": 132, + "mean_capped_abs_rel_error": 0.48546968415687736, + "mean_abs_rel_error": 0.48546968415687736, + "median_abs_rel_error": 0.4989114893107774, + "max_abs_rel_error": 0.8269889540129202, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "a_no_fsa": { + "targets": 132, + "mean_capped_abs_rel_error": 0.4853936072525964, + "mean_abs_rel_error": 0.4853936072525964, + "median_abs_rel_error": 0.5197799279471509, + "max_abs_rel_error": 0.8540725426122672, + "share_within_5pct": 0.007575757575757576, + "share_within_10pct": 0.015151515151515152 + }, + "b_with_fsa": { + "targets": 132, + "mean_capped_abs_rel_error": 0.014560862590153139, + "mean_abs_rel_error": 0.014560862590153139, + "median_abs_rel_error": 0.0008065543440785428, + "max_abs_rel_error": 0.39307427600955613, + "share_within_5pct": 0.9166666666666666, + "share_within_10pct": 0.946969696969697 + }, + "a_no_fsa_l2": { + "targets": 132, + "mean_capped_abs_rel_error": 0.48535033733377775, + "mean_abs_rel_error": 0.48535033733377775, + "median_abs_rel_error": 0.4948166370556444, + "max_abs_rel_error": 0.8440389529369043, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_with_fsa_l2": { + "targets": 132, + "mean_capped_abs_rel_error": 0.047228604520970774, + "mean_abs_rel_error": 0.047228604520970774, + "median_abs_rel_error": 0.0020612903923379056, + "max_abs_rel_error": 0.4400383746387212, + "share_within_5pct": 0.7575757575757576, + "share_within_10pct": 0.8106060606060606 + } + }, + "non_fsa": { + "release": { + "targets": 6102, + "mean_capped_abs_rel_error": 0.05303823079681869, + "mean_abs_rel_error": 19008.25634962768, + "median_abs_rel_error": 0.0009052117938450134, + "max_abs_rel_error": 112185089.03921935, + "share_within_5pct": 0.8521796132415601, + "share_within_10pct": 0.8897082923631596 + }, + "a_no_fsa": { + "targets": 6102, + "mean_capped_abs_rel_error": 0.03301639302929685, + "mean_abs_rel_error": 2290.3744221021716, + "median_abs_rel_error": 0.001316099434042245, + "max_abs_rel_error": 7327317.240634516, + "share_within_5pct": 0.9200262209111767, + "share_within_10pct": 0.9396919042936742 + }, + "b_with_fsa": { + "targets": 6102, + "mean_capped_abs_rel_error": 0.03659399596595239, + "mean_abs_rel_error": 1066.8817379596671, + "median_abs_rel_error": 0.001563054231302004, + "max_abs_rel_error": 5049906.542038025, + "share_within_5pct": 0.9042936742051786, + "share_within_10pct": 0.9331366764995084 + }, + "a_no_fsa_l2": { + "targets": 6102, + "mean_capped_abs_rel_error": 0.03849863610403729, + "mean_abs_rel_error": 8650.90354190468, + "median_abs_rel_error": 0.0015066302785964449, + "max_abs_rel_error": 48105138.60023324, + "share_within_5pct": 0.9041297935103245, + "share_within_10pct": 0.9334644378892166 + }, + "b_with_fsa_l2": { + "targets": 6102, + "mean_capped_abs_rel_error": 0.03830108231700815, + "mean_abs_rel_error": 3486.330837522983, + "median_abs_rel_error": 0.0016303431644860494, + "max_abs_rel_error": 16779088.77414457, + "share_within_5pct": 0.9026548672566371, + "share_within_10pct": 0.9313339888561127 + } + } + }, + "fsa_targets": [ + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.al.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 26825497232.528435, + "release": 8305673853.103367, + "release_error": -0.6903813643747876, + "a_no_fsa": 7319973386.135882, + "a_no_fsa_error": -0.727126273832504, + "b_with_fsa": 26830170291.67207, + "b_with_fsa_error": 0.00017420214444220154, + "a_no_fsa_l2": 7861824948.321693, + "a_no_fsa_l2_error": -0.7069271491904168, + "b_with_fsa_l2": 26761191885.11807, + "b_with_fsa_l2_error": -0.0023971726172661505, + "label": "Federal student loan balance, Alabama", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ak.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 2476199744.541086, + "release": 1148878706.6359432, + "release_error": -0.5360314897177794, + "a_no_fsa": 1426704301.678284, + "a_no_fsa_error": -0.4238331116770651, + "b_with_fsa": 2475213960.5577884, + "b_with_fsa_error": -0.00039810358008114574, + "a_no_fsa_l2": 1170441303.297184, + "a_no_fsa_l2_error": -0.5273235505829108, + "b_with_fsa_l2": 2250596998.220829, + "b_with_fsa_l2_error": -0.09110846038071461, + "label": "Federal student loan balance, Alaska", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.az.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 35079496380.99872, + "release": 24321650675.30658, + "release_error": -0.30667047180070894, + "a_no_fsa": 14374524481.523855, + "a_no_fsa_error": -0.5902300213947765, + "b_with_fsa": 35053912850.65588, + "b_with_fsa_error": -0.0007293015288752018, + "a_no_fsa_l2": 18549672333.952885, + "a_no_fsa_l2_error": -0.471210414981882, + "b_with_fsa_l2": 35073860168.19914, + "b_with_fsa_l2_error": -0.00016066971824113007, + "label": "Federal student loan balance, Arizona", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ar.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 14960373456.602396, + "release": 5993258429.895809, + "release_error": -0.5993911216667636, + "a_no_fsa": 6094478515.672241, + "a_no_fsa_error": -0.592625242053527, + "b_with_fsa": 14977203966.280058, + "b_with_fsa_error": 0.0011250059850768071, + "a_no_fsa_l2": 6339643300.495238, + "a_no_fsa_l2_error": -0.576237630772687, + "b_with_fsa_l2": 14965158199.127192, + "b_with_fsa_l2_error": 0.0003198277461906476, + "label": "Federal student loan balance, Arkansas", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ca.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 161675208320.66174, + "release": 91288748679.2521, + "release_error": -0.4353571606464688, + "a_no_fsa": 99222917648.94727, + "a_no_fsa_error": -0.3862824196759251, + "b_with_fsa": 161792542112.51398, + "b_with_fsa_error": 0.0007257376877444164, + "a_no_fsa_l2": 96827940890.14378, + "a_no_fsa_l2_error": -0.40109592623441587, + "b_with_fsa_l2": 161645511804.34976, + "b_with_fsa_l2_error": -0.00018368008688804052, + "label": "Federal student loan balance, California", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.co.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 30642971838.695942, + "release": 12246615950.529167, + "release_error": -0.6003450313176171, + "a_no_fsa": 6407928350.978854, + "a_no_fsa_error": -0.7908842397953412, + "b_with_fsa": 30629482868.07709, + "b_with_fsa_error": -0.00044019785971988645, + "a_no_fsa_l2": 9048426195.06542, + "a_no_fsa_l2_error": -0.7047144695137217, + "b_with_fsa_l2": 30579154904.99728, + "b_with_fsa_l2_error": -0.0020825961017943368, + "label": "Federal student loan balance, Colorado", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ct.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 20428647892.46396, + "release": 8221406294.5546875, + "release_error": -0.5975550443753289, + "a_no_fsa": 8137232154.214884, + "a_no_fsa_error": -0.6016754414169195, + "b_with_fsa": 20396188391.97795, + "b_with_fsa_error": -0.0015889206499066374, + "a_no_fsa_l2": 7949052509.370267, + "a_no_fsa_l2_error": -0.6108869979445563, + "b_with_fsa_l2": 20408642242.887592, + "b_with_fsa_l2_error": -0.0009792938662253033, + "label": "Federal student loan balance, Connecticut", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.de.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 5777799403.929201, + "release": 2617801463.3130417, + "release_error": -0.5469206733738797, + "a_no_fsa": 3314536735.821482, + "a_no_fsa_error": -0.426332327569658, + "b_with_fsa": 5767939069.362681, + "b_with_fsa_error": -0.0017065899795368808, + "a_no_fsa_l2": 2922375039.2808175, + "a_no_fsa_l2_error": -0.49420621330441966, + "b_with_fsa_l2": 5443953625.252629, + "b_with_fsa_l2_error": -0.057780783882794465, + "label": "Federal student loan balance, Delaware", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.dc.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 6603199318.77623, + "release": 2599656531.2344103, + "release_error": -0.6063034893036965, + "a_no_fsa": 1487987972.7952225, + "a_no_fsa_error": -0.7746565110394107, + "b_with_fsa": 6612942935.0672245, + "b_with_fsa_error": 0.001475590213260506, + "a_no_fsa_l2": 2503021020.292594, + "a_no_fsa_l2_error": -0.6209381393084348, + "b_with_fsa_l2": 6585928217.061413, + "b_with_fsa_l2_error": -0.0026155657100500637, + "label": "Federal student loan balance, District of Columbia", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.fl.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 116690912961.49869, + "release": 42937210291.70776, + "release_error": -0.6320432396833283, + "a_no_fsa": 43915654739.38336, + "a_no_fsa_error": -0.6236583155890381, + "b_with_fsa": 116681586925.97028, + "b_with_fsa_error": -7.992083780755853e-05, + "a_no_fsa_l2": 42752312555.74102, + "a_no_fsa_l2_error": -0.6336277481191116, + "b_with_fsa_l2": 116775842142.25127, + "b_with_fsa_l2_error": 0.0007278131484034279, + "label": "Federal student loan balance, Florida", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ga.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 76968542059.48543, + "release": 38439192429.426, + "release_error": -0.5005856756424186, + "a_no_fsa": 51937197599.45988, + "a_no_fsa_error": -0.32521526054995276, + "b_with_fsa": 77080708767.22499, + "b_with_fsa_error": 0.00145730586468527, + "a_no_fsa_l2": 33255276564.375557, + "a_no_fsa_l2_error": -0.5679367742385703, + "b_with_fsa_l2": 76833933283.08115, + "b_with_fsa_l2_error": -0.0017488804231246672, + "label": "Federal student loan balance, Georgia", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.hi.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 5055574478.438051, + "release": 3255533576.0909986, + "release_error": -0.356050713924639, + "a_no_fsa": 3234391887.406846, + "a_no_fsa_error": -0.36023257075897536, + "b_with_fsa": 5050783464.205374, + "b_with_fsa_error": -0.0009476695978095196, + "a_no_fsa_l2": 3200088692.978441, + "a_no_fsa_l2_error": -0.36701779261154766, + "b_with_fsa_l2": 5050970397.02766, + "b_with_fsa_l2_error": -0.0009106940131190217, + "label": "Federal student loan balance, Hawaii", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.id.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 7738124201.690894, + "release": 6151169637.166891, + "release_error": -0.2050825914860904, + "a_no_fsa": 6406156014.0019655, + "a_no_fsa_error": -0.17213062920311797, + "b_with_fsa": 7748045151.830318, + "b_with_fsa_error": 0.0012820872191811616, + "a_no_fsa_l2": 6497881632.612452, + "a_no_fsa_l2_error": -0.16027690132027492, + "b_with_fsa_l2": 7720575670.2198715, + "b_with_fsa_l2_error": -0.0022678017325165178, + "label": "Federal student loan balance, Idaho", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.il.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 67373268049.38872, + "release": 34143177599.567707, + "release_error": -0.49322366885129165, + "a_no_fsa": 50419679882.95749, + "a_no_fsa_error": -0.2516367196853686, + "b_with_fsa": 67420274523.826996, + "b_with_fsa_error": 0.0006977021569418243, + "a_no_fsa_l2": 47726306623.922005, + "a_no_fsa_l2_error": -0.29161360275805964, + "b_with_fsa_l2": 67330447819.77848, + "b_with_fsa_l2_error": -0.0006355670557475003, + "label": "Federal student loan balance, Illinois", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.in.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 31984246700.32236, + "release": 25340483538.178738, + "release_error": -0.20771985735329707, + "a_no_fsa": 26440079147.926167, + "a_no_fsa_error": -0.1733405699481525, + "b_with_fsa": 31993509587.3095, + "b_with_fsa_error": 0.00028960778954494797, + "a_no_fsa_l2": 28219572157.449123, + "a_no_fsa_l2_error": -0.11770402405116812, + "b_with_fsa_l2": 31982926101.384842, + "b_with_fsa_l2_error": -4.128904300584211e-05, + "label": "Federal student loan balance, Indiana", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ia.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 13928623563.04361, + "release": 5484448371.887898, + "release_error": -0.6062462060903406, + "a_no_fsa": 6530755163.710199, + "a_no_fsa_error": -0.5311270252835282, + "b_with_fsa": 13955790723.78515, + "b_with_fsa_error": 0.0019504555219384853, + "a_no_fsa_l2": 6063778210.086546, + "a_no_fsa_l2_error": -0.5646534503111001, + "b_with_fsa_l2": 13949562481.389133, + "b_with_fsa_l2_error": 0.0015033013313017105, + "label": "Federal student loan balance, Iowa", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ks.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 13515923605.620094, + "release": 6467831591.838855, + "release_error": -0.5214658072534941, + "a_no_fsa": 6474851658.732163, + "a_no_fsa_error": -0.5209464149353554, + "b_with_fsa": 13510080400.57329, + "b_with_fsa_error": -0.00043232007055550006, + "a_no_fsa_l2": 6860563485.1034975, + "a_no_fsa_l2_error": -0.49240882937139513, + "b_with_fsa_l2": 13291421302.100718, + "b_with_fsa_l2_error": -0.016610208082711107, + "label": "Federal student loan balance, Kansas", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ky.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 22285797700.869774, + "release": 12794424525.133045, + "release_error": -0.42589335607970175, + "a_no_fsa": 20165450643.839813, + "a_no_fsa_error": -0.09514342207939935, + "b_with_fsa": 22286441742.38644, + "b_with_fsa_error": 2.8899190655458413e-05, + "a_no_fsa_l2": 13234531030.02615, + "a_no_fsa_l2_error": -0.4061450611880215, + "b_with_fsa_l2": 22322353217.981754, + "b_with_fsa_l2_error": 0.0016403055256376908, + "label": "Federal student loan balance, Kentucky", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.la.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 25896922328.325527, + "release": 6070047019.202428, + "release_error": -0.7656073975800927, + "a_no_fsa": 8958222549.400795, + "a_no_fsa_error": -0.6540815763422794, + "b_with_fsa": 24612369603.767944, + "b_with_fsa_error": -0.04960252451128392, + "a_no_fsa_l2": 6618806528.184014, + "a_no_fsa_l2_error": -0.7444172537466162, + "b_with_fsa_l2": 19186066461.44083, + "b_with_fsa_l2_error": -0.2591371971465698, + "label": "Federal student loan balance, Louisiana", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.me.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 6912724286.843865, + "release": 4008420739.073031, + "release_error": -0.4201387799160798, + "a_no_fsa": 2704436959.992352, + "a_no_fsa_error": -0.6087740740449648, + "b_with_fsa": 6912642780.972431, + "b_with_fsa_error": -1.1790701907398764e-05, + "a_no_fsa_l2": 3561968557.6793094, + "a_no_fsa_l2_error": -0.48472289507360156, + "b_with_fsa_l2": 6906925593.677034, + "b_with_fsa_l2_error": -0.0008388434032971564, + "label": "Federal student loan balance, Maine", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.md.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 39619195912.65738, + "release": 14358911296.270561, + "release_error": -0.6375769127691147, + "a_no_fsa": 15245264206.901213, + "a_no_fsa_error": -0.615205108137222, + "b_with_fsa": 39609592325.828545, + "b_with_fsa_error": -0.00024239731795683463, + "a_no_fsa_l2": 14409817959.407259, + "a_no_fsa_l2_error": -0.6362920138214196, + "b_with_fsa_l2": 37494325928.837234, + "b_with_fsa_l2_error": -0.05363233490413418, + "label": "Federal student loan balance, Maryland", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ma.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 34460446444.86345, + "release": 19283679885.624725, + "release_error": -0.44041119964947284, + "a_no_fsa": 16452461292.345823, + "a_no_fsa_error": -0.5225696997666677, + "b_with_fsa": 34516532314.100174, + "b_with_fsa_error": 0.0016275433148105606, + "a_no_fsa_l2": 18678869072.789906, + "a_no_fsa_l2_error": -0.45796206956645186, + "b_with_fsa_l2": 34439519461.45089, + "b_with_fsa_l2_error": -0.0006072754584315262, + "label": "Federal student loan balance, Massachusetts", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.mi.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 54889094337.32741, + "release": 33956792514.97786, + "release_error": -0.38135629809644184, + "a_no_fsa": 39511709623.778305, + "a_no_fsa_error": -0.28015373361865964, + "b_with_fsa": 55050004783.91376, + "b_with_fsa_error": 0.0029315558678643036, + "a_no_fsa_l2": 34510018844.80482, + "a_no_fsa_l2_error": -0.3712773136186321, + "b_with_fsa_l2": 54812855209.43429, + "b_with_fsa_l2_error": -0.001388966766778538, + "label": "Federal student loan balance, Michigan", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.mn.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 28373122072.86661, + "release": 20891193585.03671, + "release_error": -0.2636977512948748, + "a_no_fsa": 21535103447.70586, + "a_no_fsa_error": -0.2410033907301301, + "b_with_fsa": 28381086516.784946, + "b_with_fsa_error": 0.00028070382589131447, + "a_no_fsa_l2": 22322137912.622112, + "a_no_fsa_l2_error": -0.21326465747070858, + "b_with_fsa_l2": 28328485182.2255, + "b_with_fsa_l2_error": -0.0015732103970257053, + "label": "Federal student loan balance, Minnesota", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ms.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 18365148105.34639, + "release": 7875869255.9178505, + "release_error": -0.5711513345419165, + "a_no_fsa": 6281546984.528941, + "a_no_fsa_error": -0.6579637175536699, + "b_with_fsa": 18380623786.08274, + "b_with_fsa_error": 0.0008426657191969932, + "a_no_fsa_l2": 7908243445.634271, + "a_no_fsa_l2_error": -0.5693885287354664, + "b_with_fsa_l2": 18362700075.957542, + "b_with_fsa_l2_error": -0.0001332975576785406, + "label": "Federal student loan balance, Mississippi", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.mo.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 31571546742.89885, + "release": 15712567803.619015, + "release_error": -0.502318719713879, + "a_no_fsa": 24720784969.34739, + "a_no_fsa_error": -0.21699164216882566, + "b_with_fsa": 31581525503.522835, + "b_with_fsa_error": 0.00031606815799196594, + "a_no_fsa_l2": 18404881623.790264, + "a_no_fsa_l2_error": -0.4170421305718911, + "b_with_fsa_l2": 31644256754.105305, + "b_with_fsa_l2_error": 0.002303023408975341, + "label": "Federal student loan balance, Missouri", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.mt.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 4642874521.014537, + "release": 3551105188.0317473, + "release_error": -0.23514943771175228, + "a_no_fsa": 3475871560.07846, + "a_no_fsa_error": -0.2513535430806924, + "b_with_fsa": 4648082317.614555, + "b_with_fsa_error": 0.001121675069280253, + "a_no_fsa_l2": 3585865186.445833, + "a_no_fsa_l2_error": -0.22766269684534388, + "b_with_fsa_l2": 4651496416.217322, + "b_with_fsa_l2_error": 0.0018570166313479177, + "label": "Federal student loan balance, Montana", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ne.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 8460349127.182044, + "release": 3864699647.1679335, + "release_error": -0.5431985620131046, + "a_no_fsa": 4310346668.579988, + "a_no_fsa_error": -0.4905237829096931, + "b_with_fsa": 8470319798.704548, + "b_with_fsa_error": 0.0011785177387620249, + "a_no_fsa_l2": 3667358079.716547, + "a_no_fsa_l2_error": -0.5665240258308273, + "b_with_fsa_l2": 8475414881.873652, + "b_with_fsa_l2_error": 0.0017807485796542417, + "label": "Federal student loan balance, Nebraska", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nv.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 13619098594.975973, + "release": 5392235864.376257, + "release_error": -0.6040680793393015, + "a_no_fsa": 6785694659.741217, + "a_no_fsa_error": -0.5017515577540183, + "b_with_fsa": 13611690563.79533, + "b_with_fsa_error": -0.0005439443094549497, + "a_no_fsa_l2": 5999569692.54428, + "a_no_fsa_l2_error": -0.5594738043267052, + "b_with_fsa_l2": 13613416487.260517, + "b_with_fsa_l2_error": -0.0004172161377517389, + "label": "Federal student loan balance, Nevada", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nh.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 7015899276.199744, + "release": 3619803965.920487, + "release_error": -0.4840570219985823, + "a_no_fsa": 2886306850.698022, + "a_no_fsa_error": -0.5886048620325364, + "b_with_fsa": 7029204685.237631, + "b_with_fsa_error": 0.0018964652304834218, + "a_no_fsa_l2": 3093540109.8373485, + "a_no_fsa_l2_error": -0.559067200361376, + "b_with_fsa_l2": 7036638051.617002, + "b_with_fsa_l2_error": 0.0029559682374018835, + "label": "Federal student loan balance, New Hampshire", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nj.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 49936694848.24524, + "release": 22920481793.537766, + "release_error": -0.5410092345279999, + "a_no_fsa": 27529968923.680637, + "a_no_fsa_error": -0.4487026222431693, + "b_with_fsa": 49947281032.0454, + "b_with_fsa_error": 0.0002119920798189403, + "a_no_fsa_l2": 24229367136.491558, + "a_no_fsa_l2_error": -0.5147983419783143, + "b_with_fsa_l2": 49955579711.42538, + "b_with_fsa_l2_error": 0.00037817607347718254, + "label": "Federal student loan balance, New Jersey", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nm.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 8253999148.470287, + "release": 9559916075.590015, + "release_error": 0.1582162662764211, + "a_no_fsa": 4613235872.029221, + "a_no_fsa_error": -0.4410908228789688, + "b_with_fsa": 8234345320.702595, + "b_with_fsa_error": -0.0023811279131686135, + "a_no_fsa_l2": 7389040123.042681, + "a_no_fsa_l2_error": -0.10479272045816837, + "b_with_fsa_l2": 8267933083.133599, + "b_with_fsa_l2_error": 0.0016881434578163645, + "label": "Federal student loan balance, New Mexico", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ny.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 103071814366.5227, + "release": 59048689439.81896, + "release_error": -0.42711118647972757, + "a_no_fsa": 52124200861.321884, + "a_no_fsa_error": -0.4942923903913386, + "b_with_fsa": 103035902213.34421, + "b_with_fsa_error": -0.0003484187544307111, + "a_no_fsa_l2": 54547866012.753494, + "a_no_fsa_l2_error": -0.4707780555915933, + "b_with_fsa_l2": 103182020851.64482, + "b_with_fsa_l2_error": 0.0010692203858003561, + "label": "Federal student loan balance, New York", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nc.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 57571644060.58025, + "release": 30687722220.27408, + "release_error": -0.46696463648002373, + "a_no_fsa": 48480122368.47173, + "a_no_fsa_error": -0.15791665915501543, + "b_with_fsa": 57504644114.678856, + "b_with_fsa_error": -0.0011637664165174168, + "a_no_fsa_l2": 34429068207.71228, + "a_no_fsa_l2_error": -0.40197872113077054, + "b_with_fsa_l2": 57616014873.025154, + "b_with_fsa_l2_error": 0.0007707060162848736, + "label": "Federal student loan balance, North Carolina", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nd.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 2785724712.6087217, + "release": 1474008198.7061641, + "release_error": -0.4708708322704962, + "a_no_fsa": 1597687235.5602472, + "a_no_fsa_error": -0.4264733954762975, + "b_with_fsa": 2780512119.4038277, + "b_with_fsa_error": -0.0018711803005160108, + "a_no_fsa_l2": 1551154935.7272978, + "a_no_fsa_l2_error": -0.4431772354581648, + "b_with_fsa_l2": 2777661037.886443, + "b_with_fsa_l2_error": -0.0028946416297995505, + "label": "Federal student loan balance, North Dakota", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.oh.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 66341518155.82993, + "release": 24944215874.46098, + "release_error": -0.6240029386142569, + "a_no_fsa": 17470121320.51231, + "a_no_fsa_error": -0.7366638297381641, + "b_with_fsa": 66374014986.05406, + "b_with_fsa_error": 0.0004898415219832135, + "a_no_fsa_l2": 22728687525.118156, + "a_no_fsa_l2_error": -0.6573987427943595, + "b_with_fsa_l2": 66245320248.19122, + "b_with_fsa_l2_error": -0.0014500407936512737, + "label": "Federal student loan balance, Ohio", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ok.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 17642923179.85524, + "release": 12680909295.635565, + "release_error": -0.281246697819629, + "a_no_fsa": 10383253867.42241, + "a_no_fsa_error": -0.4114776921276827, + "b_with_fsa": 17660393277.872272, + "b_with_fsa_error": 0.0009902042784485992, + "a_no_fsa_l2": 11886606854.101768, + "a_no_fsa_l2_error": -0.3262677203246034, + "b_with_fsa_l2": 17646734938.82781, + "b_with_fsa_l2_error": 0.00021605030718043332, + "label": "Federal student loan balance, Oklahoma", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.or.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 21460397786.022747, + "release": 9759168192.994923, + "release_error": -0.545247562962178, + "a_no_fsa": 10179588405.868055, + "a_no_fsa_error": -0.525657049446769, + "b_with_fsa": 21454809297.19367, + "b_with_fsa_error": -0.0002604093775334622, + "a_no_fsa_l2": 9771374949.369776, + "a_no_fsa_l2_error": -0.5446787591358667, + "b_with_fsa_l2": 21037724665.36161, + "b_with_fsa_l2_error": -0.019695493293065868, + "label": "Federal student loan balance, Oregon", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.pa.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 71809792591.6915, + "release": 27902007994.1302, + "release_error": -0.6114456401123416, + "a_no_fsa": 19465896307.067608, + "a_no_fsa_error": -0.7289242092962145, + "b_with_fsa": 71744872718.35956, + "b_with_fsa_error": -0.0009040532076324508, + "a_no_fsa_l2": 24605726535.140766, + "a_no_fsa_l2_error": -0.657348592063923, + "b_with_fsa_l2": 71747187581.61797, + "b_with_fsa_l2_error": -0.0008718171688574909, + "label": "Federal student loan balance, Pennsylvania", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ri.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 5261924457.149808, + "release": 2796053711.7570615, + "release_error": -0.4686252654277782, + "a_no_fsa": 2176596415.4936485, + "a_no_fsa_error": -0.5863497408184702, + "b_with_fsa": 5263875034.703326, + "b_with_fsa_error": 0.00037069660908337174, + "a_no_fsa_l2": 2691609349.0524583, + "a_no_fsa_l2_error": -0.48847434603604994, + "b_with_fsa_l2": 5270349409.266033, + "b_with_fsa_l2_error": 0.0016011161286775164, + "label": "Federal student loan balance, Rhode Island", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.sc.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 32396946657.745876, + "release": 17451435371.19304, + "release_error": -0.461324687305971, + "a_no_fsa": 14410561698.18005, + "a_no_fsa_error": -0.5551876585648978, + "b_with_fsa": 32364139555.493538, + "b_with_fsa_error": -0.001012660316384923, + "a_no_fsa_l2": 13308970803.318764, + "a_no_fsa_l2_error": -0.5891905819421818, + "b_with_fsa_l2": 32396998957.20985, + "b_with_fsa_l2_error": 1.6143331199236519e-06, + "label": "Federal student loan balance, South Carolina", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.sd.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 3817474606.1675076, + "release": 2544913149.0658116, + "release_error": -0.3333516495553755, + "a_no_fsa": 1234170472.0986664, + "a_no_fsa_error": -0.6767049949448931, + "b_with_fsa": 3817900702.0681767, + "b_with_fsa_error": 0.00011161721939962557, + "a_no_fsa_l2": 1812007295.3077776, + "a_no_fsa_l2_error": -0.5253387429531815, + "b_with_fsa_l2": 3822040911.749356, + "b_with_fsa_l2_error": 0.0011961587313431834, + "label": "Federal student loan balance, South Dakota", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.tn.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 35698546317.133995, + "release": 30689349951.29, + "release_error": -0.1403193374134611, + "a_no_fsa": 34769605752.49541, + "a_no_fsa_error": -0.026021803699965523, + "b_with_fsa": 35761120320.657234, + "b_with_fsa_error": 0.001752844582727614, + "a_no_fsa_l2": 30871050133.13504, + "a_no_fsa_l2_error": -0.13522948920981506, + "b_with_fsa_l2": 35676481508.929726, + "b_with_fsa_l2_error": -0.0006180870225989877, + "label": "Federal student loan balance, Tennessee", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.tx.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 142691010279.18008, + "release": 69020094508.7879, + "release_error": -0.5162968264521527, + "a_no_fsa": 44790056660.23969, + "a_no_fsa_error": -0.6861045655741989, + "b_with_fsa": 142481713636.5461, + "b_with_fsa_error": -0.0014667822606657264, + "a_no_fsa_l2": 58261434459.065056, + "a_no_fsa_l2_error": -0.5916951296015462, + "b_with_fsa_l2": 142167584382.1322, + "b_with_fsa_l2_error": -0.0036682471868674875, + "label": "Federal student loan balance, Texas", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ut.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 11452423818.502523, + "release": 7082955146.543638, + "release_error": -0.38153221896133255, + "a_no_fsa": 9180081155.553913, + "a_no_fsa_error": -0.19841587239178277, + "b_with_fsa": 11456938901.99899, + "b_with_fsa_error": 0.0003942469793312328, + "a_no_fsa_l2": 8635123417.70071, + "a_no_fsa_l2_error": -0.24600036162215597, + "b_with_fsa_l2": 11421519291.693113, + "b_with_fsa_l2_error": -0.002698514069963144, + "label": "Federal student loan balance, Utah", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.vt.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 2992074691.320479, + "release": 1522891012.1873512, + "release_error": -0.49102506812246033, + "a_no_fsa": 1440344540.0485878, + "a_no_fsa_error": -0.5186134409589465, + "b_with_fsa": 2990443387.9607286, + "b_with_fsa_error": -0.0005452081007477574, + "a_no_fsa_l2": 1557131860.7308598, + "a_no_fsa_l2_error": -0.4795812199314925, + "b_with_fsa_l2": 2990330446.8052197, + "b_with_fsa_l2_error": -0.0005829548708523337, + "label": "Federal student loan balance, Vermont", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.va.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 46944620156.92476, + "release": 23891264239.204063, + "release_error": -0.49107556607463815, + "a_no_fsa": 37926938076.681, + "a_no_fsa_error": -0.1920919170311695, + "b_with_fsa": 46938601529.26032, + "b_with_fsa_error": -0.0001282069733297978, + "a_no_fsa_l2": 30991561331.07694, + "a_no_fsa_l2_error": -0.3398272000608487, + "b_with_fsa_l2": 46930881704.749, + "b_with_fsa_l2_error": -0.0002926523237345188, + "label": "Federal student loan balance, Virginia", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.wa.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 30539796849.34006, + "release": 16049838285.016233, + "release_error": -0.47446152427948923, + "a_no_fsa": 13418678233.62334, + "a_no_fsa_error": -0.5606166504701781, + "b_with_fsa": 30597278433.248566, + "b_with_fsa_error": 0.0018821861910894345, + "a_no_fsa_l2": 15409555058.632631, + "a_no_fsa_l2_error": -0.49542706080686916, + "b_with_fsa_l2": 30536480400.37366, + "b_with_fsa_l2_error": -0.00010859433619552096, + "label": "Federal student loan balance, Washington", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.wv.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 7944474180.402651, + "release": 5630654714.986314, + "release_error": -0.29124891249870805, + "a_no_fsa": 6418732596.49032, + "a_no_fsa_error": -0.1920506693414669, + "b_with_fsa": 7943173613.461434, + "b_with_fsa_error": -0.00016370711411268655, + "a_no_fsa_l2": 5568720614.76688, + "a_no_fsa_l2_error": -0.2990447840457781, + "b_with_fsa_l2": 7950260047.3723955, + "b_with_fsa_l2_error": 0.0007282882212667015, + "label": "Federal student loan balance, West Virginia", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.wi.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 24761997445.410862, + "release": 11622497858.766003, + "release_error": -0.5306316510051979, + "a_no_fsa": 11762946240.28573, + "a_no_fsa_error": -0.5249597183661063, + "b_with_fsa": 24729063748.067917, + "b_with_fsa_error": -0.0013300097221780748, + "a_no_fsa_l2": 11028002346.020483, + "a_no_fsa_l2_error": -0.5546400337722229, + "b_with_fsa_l2": 24721042889.171913, + "b_with_fsa_l2_error": -0.0016539278113260174, + "label": "Federal student loan balance, Wisconsin", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.wy.dollars_outstanding", + "family": "ed_fsa/fsa_state_balance", + "is_fsa": true, + "target": 1857149808.4058146, + "release": 799653010.9431404, + "release_error": -0.5694192211507342, + "a_no_fsa": 494870181.73740697, + "a_no_fsa_error": -0.7335324379877541, + "b_with_fsa": 1852269738.6442573, + "b_with_fsa_error": -0.002627720036083903, + "a_no_fsa_l2": 732630963.4736071, + "a_no_fsa_l2_error": -0.6055078808626103, + "b_with_fsa_l2": 1854019282.720408, + "b_with_fsa_l2_error": -0.0016856613673476033, + "label": "Federal student loan balance, Wyoming", + "measure_mode": "sum", + "target_role": "fsa_state_balance" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.al.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 694296.9494946192, + "release": 299800.0357116474, + "release_error": -0.5681962365960663, + "a_no_fsa": 254906.42582182933, + "a_no_fsa_error": -0.632856768264103, + "b_with_fsa": 694483.5322279758, + "b_with_fsa_error": 0.00026873621365100455, + "a_no_fsa_l2": 299797.76811949065, + "a_no_fsa_l2_error": -0.5681995026224523, + "b_with_fsa_l2": 695397.115952018, + "b_with_fsa_l2_error": 0.0015845762511265662, + "label": "Federal student loan borrowers, Alabama", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ak.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 67443.00187108875, + "release": 42366.78587161263, + "release_error": -0.3718134617941097, + "a_no_fsa": 43515.43716647572, + "a_no_fsa_error": -0.35478202394295, + "b_with_fsa": 67418.91790211126, + "b_with_fsa_error": -0.00035710108253369084, + "a_no_fsa_l2": 41980.073426056544, + "a_no_fsa_l2_error": -0.37754737687539935, + "b_with_fsa_l2": 67404.14819651659, + "b_with_fsa_l2_error": -0.0005760964591467949, + "label": "Federal student loan borrowers, Alaska", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.az.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 957899.7521566575, + "release": 568335.6877031331, + "release_error": -0.40668563028275434, + "a_no_fsa": 475179.7178517244, + "a_no_fsa_error": -0.5039358588600906, + "b_with_fsa": 957725.575255287, + "b_with_fsa_error": -0.00018183207687273148, + "a_no_fsa_l2": 539307.0477905545, + "a_no_fsa_l2_error": -0.436990095700166, + "b_with_fsa_l2": 956166.3825352623, + "b_with_fsa_l2_error": -0.001809552218269882, + "label": "Federal student loan borrowers, Arizona", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ar.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 427034.4490566302, + "release": 179314.5253595886, + "release_error": -0.5800935363511874, + "a_no_fsa": 166817.65069937953, + "a_no_fsa_error": -0.6093578607817249, + "b_with_fsa": 427506.29944752157, + "b_with_fsa_error": 0.001104946900498879, + "a_no_fsa_l2": 181962.19910459197, + "a_no_fsa_l2_error": -0.5738933954706276, + "b_with_fsa_l2": 377427.4133201107, + "b_with_fsa_l2_error": -0.11616635577318721, + "label": "Federal student loan borrowers, Arkansas", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ca.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 4098338.6950966264, + "release": 2198143.2386865313, + "release_error": -0.4636501757855067, + "a_no_fsa": 2308842.9180286005, + "a_no_fsa_error": -0.43663930929111144, + "b_with_fsa": 4098661.6627751878, + "b_with_fsa_error": 7.880453583491016e-05, + "a_no_fsa_l2": 2161774.9670988857, + "a_no_fsa_l2_error": -0.47252408160279746, + "b_with_fsa_l2": 4098919.7877289956, + "b_with_fsa_l2_error": 0.00014178736205096342, + "label": "Federal student loan borrowers, California", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.co.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 799487.119854798, + "release": 376661.08025454415, + "release_error": -0.5288716091849572, + "a_no_fsa": 287576.0942606446, + "a_no_fsa_error": -0.6402992779760182, + "b_with_fsa": 800729.9598281292, + "b_with_fsa_error": 0.0015545465867629232, + "a_no_fsa_l2": 307584.61437521566, + "a_no_fsa_l2_error": -0.61527258321425, + "b_with_fsa_l2": 797681.0886297452, + "b_with_fsa_l2_error": -0.0022589872684637973, + "label": "Federal student loan borrowers, Colorado", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ct.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 538916.6382071185, + "release": 200218.24637007577, + "release_error": -0.6284801170062835, + "a_no_fsa": 215616.38640016262, + "a_no_fsa_error": -0.5999077202042219, + "b_with_fsa": 428969.5976222321, + "b_with_fsa_error": -0.20401493067770368, + "a_no_fsa_l2": 214013.55693806882, + "a_no_fsa_l2_error": -0.6028818897667466, + "b_with_fsa_l2": 357504.2636691813, + "b_with_fsa_l2_error": -0.3366241857766063, + "label": "Federal student loan borrowers, Connecticut", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.de.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 144087.5295788532, + "release": 61556.24919973091, + "release_error": -0.5727857269837936, + "a_no_fsa": 66317.03755649159, + "a_no_fsa_error": -0.5397447804794308, + "b_with_fsa": 120919.65323231184, + "b_with_fsa_error": -0.16079029472056097, + "a_no_fsa_l2": 62406.51832883444, + "a_no_fsa_l2_error": -0.5668846671794597, + "b_with_fsa_l2": 109127.87945469712, + "b_with_fsa_l2_error": -0.24262786811834464, + "label": "Federal student loan borrowers, Delaware", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.dc.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 119828.96146398096, + "release": 56416.39140994997, + "release_error": -0.5291923528277593, + "a_no_fsa": 45141.20927445962, + "a_no_fsa_error": -0.6232863180740451, + "b_with_fsa": 119785.03643302988, + "b_with_fsa_error": -0.000366564396573577, + "a_no_fsa_l2": 54248.57807271926, + "a_no_fsa_l2_error": -0.5472832493084263, + "b_with_fsa_l2": 104429.3575090298, + "b_with_fsa_l2_error": -0.12851320554572349, + "label": "Federal student loan borrowers, District of Columbia", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.fl.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 2873071.879708381, + "release": 1015892.0531917681, + "release_error": -0.6464091064457177, + "a_no_fsa": 1177063.23727762, + "a_no_fsa_error": -0.5903119425619477, + "b_with_fsa": 2871818.5061991876, + "b_with_fsa_error": -0.00043624857353743735, + "a_no_fsa_l2": 1067920.583630461, + "a_no_fsa_l2_error": -0.6283000814658156, + "b_with_fsa_l2": 2788689.6803934164, + "b_with_fsa_l2_error": -0.02937002722101381, + "label": "Federal student loan borrowers, Florida", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ga.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 1780390.6866031447, + "release": 895114.0233474246, + "release_error": -0.49723730297913615, + "a_no_fsa": 949522.3955900257, + "a_no_fsa_error": -0.466677509192297, + "b_with_fsa": 1780386.0188969283, + "b_with_fsa_error": -2.6217314275881128e-06, + "a_no_fsa_l2": 803541.4362151535, + "a_no_fsa_l2_error": -0.5486712875653984, + "b_with_fsa_l2": 1722438.8033466395, + "b_with_fsa_l2_error": -0.03255009346688574, + "label": "Federal student loan borrowers, Georgia", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.hi.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 126520.98025429054, + "release": 70947.39888146677, + "release_error": -0.43924399938356606, + "a_no_fsa": 79599.67642405552, + "a_no_fsa_error": -0.37085789041413814, + "b_with_fsa": 126441.85415750107, + "b_with_fsa_error": -0.000625399017857988, + "a_no_fsa_l2": 66456.86694286321, + "a_no_fsa_l2_error": -0.4747363891008934, + "b_with_fsa_l2": 114039.10884168, + "b_with_fsa_l2_error": -0.09865455822049128, + "label": "Federal student loan borrowers, Hawaii", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.id.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 226378.44814094133, + "release": 158278.29524441322, + "release_error": -0.30082436493305015, + "a_no_fsa": 154003.96623277012, + "a_no_fsa_error": -0.3197057074227819, + "b_with_fsa": 226431.91001201037, + "b_with_fsa_error": 0.00023616148758010818, + "a_no_fsa_l2": 163950.43841553634, + "a_no_fsa_l2_error": -0.27576834384224524, + "b_with_fsa_l2": 225792.91301989416, + "b_with_fsa_l2_error": -0.002586532091971147, + "label": "Federal student loan borrowers, Idaho", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.il.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 1674573.1394813743, + "release": 809565.178167979, + "release_error": -0.5165543032544363, + "a_no_fsa": 991285.9585066349, + "a_no_fsa_error": -0.40803663027006254, + "b_with_fsa": 1673369.8182155013, + "b_with_fsa_error": -0.0007185838811708813, + "a_no_fsa_l2": 949749.5047120877, + "a_no_fsa_l2_error": -0.4328408342879362, + "b_with_fsa_l2": 1672577.1141575286, + "b_with_fsa_l2_error": -0.001191960671520063, + "label": "Federal student loan borrowers, Illinois", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.in.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 939496.7004833062, + "release": 566356.36447689, + "release_error": -0.39717045926234895, + "a_no_fsa": 576460.25054115, + "a_no_fsa_error": -0.3864158860328078, + "b_with_fsa": 939405.2568352494, + "b_with_fsa_error": -9.733259096044103e-05, + "a_no_fsa_l2": 606898.8324807318, + "a_no_fsa_l2_error": -0.3540170687469959, + "b_with_fsa_l2": 939250.7203704601, + "b_with_fsa_l2_error": -0.0002618211567103813, + "label": "Federal student loan borrowers, Indiana", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ia.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 442718.8680964183, + "release": 197218.28895333974, + "release_error": -0.5545292889789639, + "a_no_fsa": 239760.0103233202, + "a_no_fsa_error": -0.4584373343873303, + "b_with_fsa": 442894.4328439084, + "b_with_fsa_error": 0.0003965603459481866, + "a_no_fsa_l2": 237121.82617376346, + "a_no_fsa_l2_error": -0.464396385016684, + "b_with_fsa_l2": 440443.0390136772, + "b_with_fsa_l2_error": -0.005140573955039584, + "label": "Federal student loan borrowers, Iowa", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ks.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 396606.67611944134, + "release": 227691.79277216346, + "release_error": -0.425900252108736, + "a_no_fsa": 222095.53963886944, + "a_no_fsa_error": -0.4400105872852641, + "b_with_fsa": 396315.2545393542, + "b_with_fsa_error": -0.0007347873791196512, + "a_no_fsa_l2": 214203.11757527682, + "a_no_fsa_l2_error": -0.4599104592208937, + "b_with_fsa_l2": 396665.5125893857, + "b_with_fsa_l2_error": 0.00014834967106457526, + "label": "Federal student loan borrowers, Kansas", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ky.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 643688.5573929029, + "release": 292354.62170012423, + "release_error": -0.5458135485828234, + "a_no_fsa": 324504.3166634888, + "a_no_fsa_error": -0.4958675077621216, + "b_with_fsa": 643650.251584436, + "b_with_fsa_error": -5.950984839936741e-05, + "a_no_fsa_l2": 301880.35810546327, + "a_no_fsa_l2_error": -0.5310148756905777, + "b_with_fsa_l2": 494346.29921860946, + "b_with_fsa_l2_error": -0.23201011802845517, + "label": "Federal student loan borrowers, Kentucky", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.la.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 725665.7875741953, + "release": 221291.04275562146, + "release_error": -0.6950510186026985, + "a_no_fsa": 259675.73853040877, + "a_no_fsa_error": -0.6421551863448456, + "b_with_fsa": 725629.7371984279, + "b_with_fsa_error": -4.967903459788707e-05, + "a_no_fsa_l2": 233993.64837005938, + "a_no_fsa_l2_error": -0.6775462583784345, + "b_with_fsa_l2": 608282.6250801478, + "b_with_fsa_l2_error": -0.16175926232714363, + "label": "Federal student loan borrowers, Louisiana", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.me.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 195114.17285496375, + "release": 116910.07783659428, + "release_error": -0.40081196498473604, + "a_no_fsa": 93095.46897704054, + "a_no_fsa_error": -0.5228667009943857, + "b_with_fsa": 163308.59456352112, + "b_with_fsa_error": -0.16301008699703734, + "a_no_fsa_l2": 108179.05777382391, + "a_no_fsa_l2_error": -0.4455602266564317, + "b_with_fsa_l2": 152248.14613778848, + "b_with_fsa_l2_error": -0.2196971449585024, + "label": "Federal student loan borrowers, Maine", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.md.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 880732.4104809002, + "release": 365739.6538204308, + "release_error": -0.5847323778845285, + "a_no_fsa": 361943.6215092178, + "a_no_fsa_error": -0.589042463747203, + "b_with_fsa": 772805.5944849397, + "b_with_fsa_error": -0.12254211916310649, + "a_no_fsa_l2": 333874.00672911014, + "a_no_fsa_l2_error": -0.620913227722814, + "b_with_fsa_l2": 653671.1137734273, + "b_with_fsa_l2_error": -0.2578096298096855, + "label": "Federal student loan borrowers, Maryland", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ma.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 941692.5191488765, + "release": 468114.3448217692, + "release_error": -0.5029010687640784, + "a_no_fsa": 410147.2782270547, + "a_no_fsa_error": -0.5644573256271004, + "b_with_fsa": 942708.519186437, + "b_with_fsa_error": 0.0010789084726708423, + "a_no_fsa_l2": 440759.02930515714, + "a_no_fsa_l2_error": -0.531950163835298, + "b_with_fsa_l2": 927633.8535785641, + "b_with_fsa_l2_error": -0.01492914649361233, + "label": "Federal student loan borrowers, Massachusetts", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.mi.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 1440143.3562333419, + "release": 804634.1665122494, + "release_error": -0.4412818952852378, + "a_no_fsa": 819195.9543555847, + "a_no_fsa_error": -0.43117054923048026, + "b_with_fsa": 1441616.8054106089, + "b_with_fsa_error": 0.0010231267400495452, + "a_no_fsa_l2": 835678.0998844506, + "a_no_fsa_l2_error": -0.41972575419842556, + "b_with_fsa_l2": 1438993.9649621507, + "b_with_fsa_l2_error": -0.0007981089286815077, + "label": "Federal student loan borrowers, Michigan", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.mn.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 807852.1433426848, + "release": 476571.67320094287, + "release_error": -0.4100756219708577, + "a_no_fsa": 489445.0923147265, + "a_no_fsa_error": -0.3941402565455501, + "b_with_fsa": 806822.5739637995, + "b_with_fsa_error": -0.001274452741593567, + "a_no_fsa_l2": 499983.5008711384, + "a_no_fsa_l2_error": -0.3810952845871832, + "b_with_fsa_l2": 769185.2485362334, + "b_with_fsa_l2_error": -0.047863826475049887, + "label": "Federal student loan borrowers, Minnesota", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ms.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 477120.0271903535, + "release": 212626.79934736033, + "release_error": -0.5543536484949729, + "a_no_fsa": 199675.58613336337, + "a_no_fsa_error": -0.5814982085132635, + "b_with_fsa": 476742.88618800946, + "b_with_fsa_error": -0.0007904530953456713, + "a_no_fsa_l2": 225931.32445887162, + "a_no_fsa_l2_error": -0.5264685790086668, + "b_with_fsa_l2": 446336.73504288524, + "b_with_fsa_l2_error": -0.06451896879857202, + "label": "Federal student loan borrowers, Mississippi", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.mo.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 864211.4890923233, + "release": 452444.02663447533, + "release_error": -0.4764660822668826, + "a_no_fsa": 553444.2987194873, + "a_no_fsa_error": -0.359596226496865, + "b_with_fsa": 865513.844392145, + "b_with_fsa_error": 0.001506986792306548, + "a_no_fsa_l2": 473297.66625123104, + "a_no_fsa_l2_error": -0.4523358318826182, + "b_with_fsa_l2": 769359.7836815356, + "b_with_fsa_l2_error": -0.10975520067479079, + "label": "Federal student loan borrowers, Missouri", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.mt.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 132167.37110861426, + "release": 93723.77991366376, + "release_error": -0.2908705142009506, + "a_no_fsa": 86613.87924402698, + "a_no_fsa_error": -0.3446651884083533, + "b_with_fsa": 132178.27686305947, + "b_with_fsa_error": 8.251472624242278e-05, + "a_no_fsa_l2": 94461.3730386145, + "a_no_fsa_l2_error": -0.28528976368163683, + "b_with_fsa_l2": 131896.7122885196, + "b_with_fsa_l2_error": -0.002047849010117872, + "label": "Federal student loan borrowers, Montana", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ne.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 254610.4024125599, + "release": 111990.89588350114, + "release_error": -0.5601479954380031, + "a_no_fsa": 120988.71797550295, + "a_no_fsa_error": -0.5248084256217546, + "b_with_fsa": 255006.2979676402, + "b_with_fsa_error": 0.0015549072281767994, + "a_no_fsa_l2": 105847.61728898739, + "a_no_fsa_l2_error": -0.5842761478477364, + "b_with_fsa_l2": 210698.81449482986, + "b_with_fsa_l2_error": -0.17246580462402933, + "label": "Federal student loan borrowers, Nebraska", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nv.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 384686.5176492024, + "release": 177125.4308876983, + "release_error": -0.5395590363548434, + "a_no_fsa": 213697.41683693312, + "a_no_fsa_error": -0.4444894556148576, + "b_with_fsa": 384138.0826987667, + "b_with_fsa_error": -0.0014256671998465285, + "a_no_fsa_l2": 196577.2597530539, + "a_no_fsa_l2_error": -0.4889936331683095, + "b_with_fsa_l2": 354481.41929885204, + "b_with_fsa_l2_error": -0.07851873399393353, + "label": "Federal student loan borrowers, Nevada", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nh.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 196264.3635845482, + "release": 108023.15640722083, + "release_error": -0.4496038178592426, + "a_no_fsa": 103378.03869667342, + "a_no_fsa_error": -0.47327147522561086, + "b_with_fsa": 196627.96152647337, + "b_with_fsa_error": 0.0018525927747883467, + "a_no_fsa_l2": 109232.75153691879, + "a_no_fsa_l2_error": -0.44344072687519404, + "b_with_fsa_l2": 196425.72703209682, + "b_with_fsa_l2_error": 0.000822173952527579, + "label": "Federal student loan borrowers, New Hampshire", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nj.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 1291873.3149105452, + "release": 447680.0737567185, + "release_error": -0.6534644159069748, + "a_no_fsa": 536509.793996977, + "a_no_fsa_error": -0.5847040202745211, + "b_with_fsa": 1292954.816786841, + "b_with_fsa_error": 0.0008371578418822474, + "a_no_fsa_l2": 483073.4538047429, + "a_no_fsa_l2_error": -0.6260674725383635, + "b_with_fsa_l2": 1074578.4850136566, + "b_with_fsa_l2_error": -0.16820134558777158, + "label": "Federal student loan borrowers, New Jersey", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nm.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 236311.9135328071, + "release": 147762.47310640148, + "release_error": -0.3747142456874581, + "a_no_fsa": 85696.705118071, + "a_no_fsa_error": -0.6373576607420017, + "b_with_fsa": 235941.97409305436, + "b_with_fsa_error": -0.0015654709668346525, + "a_no_fsa_l2": 123886.99020482403, + "a_no_fsa_l2_error": -0.47574801306991726, + "b_with_fsa_l2": 191802.20980418823, + "b_with_fsa_l2_error": -0.18835150146773966, + "label": "Federal student loan borrowers, New Mexico", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ny.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 2568689.587542894, + "release": 1236861.9475659486, + "release_error": -0.5184852410488877, + "a_no_fsa": 1188613.9679541558, + "a_no_fsa_error": -0.5372683512564332, + "b_with_fsa": 2565691.4335756493, + "b_with_fsa_error": -0.0011671920117496428, + "a_no_fsa_l2": 1275810.6740325857, + "a_no_fsa_l2_error": -0.5033223631925976, + "b_with_fsa_l2": 2566339.7670112867, + "b_with_fsa_l2_error": -0.0009147934974326285, + "label": "Federal student loan borrowers, New York", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nc.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 1442234.6121053135, + "release": 763658.810431207, + "release_error": -0.4705030623856337, + "a_no_fsa": 955791.6462242447, + "a_no_fsa_error": -0.3372842128445245, + "b_with_fsa": 1441043.2246505758, + "b_with_fsa_error": -0.0008260704914012146, + "a_no_fsa_l2": 815912.7335369833, + "a_no_fsa_l2_error": -0.43427183990131246, + "b_with_fsa_l2": 1441452.2256166337, + "b_with_fsa_l2_error": -0.000542482119145443, + "label": "Federal student loan borrowers, North Carolina", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.nd.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 92433.5095411511, + "release": 54708.78443065691, + "release_error": -0.408128235071495, + "a_no_fsa": 68206.21058721757, + "a_no_fsa_error": -0.2621051507640485, + "b_with_fsa": 92301.94850124199, + "b_with_fsa_error": -0.0014233046063293604, + "a_no_fsa_l2": 59660.234957100474, + "a_no_fsa_l2_error": -0.35456053488329436, + "b_with_fsa_l2": 92239.67932013402, + "b_with_fsa_l2_error": -0.00209696918335431, + "label": "Federal student loan borrowers, North Dakota", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.oh.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 1851597.9490437824, + "release": 706814.7435384409, + "release_error": -0.6182677001216922, + "a_no_fsa": 520187.16973959334, + "a_no_fsa_error": -0.7190604094111075, + "b_with_fsa": 1609889.715113531, + "b_with_fsa_error": -0.13054034438473877, + "a_no_fsa_l2": 624257.7585592739, + "a_no_fsa_l2_error": -0.6628545852075185, + "b_with_fsa_l2": 1436806.627315834, + "b_with_fsa_l2_error": -0.22401802828857015, + "label": "Federal student loan borrowers, Ohio", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ok.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 534002.1869079849, + "release": 320838.68124943797, + "release_error": -0.3991809600871122, + "a_no_fsa": 276824.98737939657, + "a_no_fsa_error": -0.48160327023698707, + "b_with_fsa": 533733.4956403348, + "b_with_fsa_error": -0.0005031651072552771, + "a_no_fsa_l2": 296473.55681708595, + "a_no_fsa_l2_error": -0.44480834707111044, + "b_with_fsa_l2": 532758.6863892084, + "b_with_fsa_l2_error": -0.002328643120315061, + "label": "Federal student loan borrowers, Oklahoma", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.or.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 550627.6710901603, + "release": 297551.15767216764, + "release_error": -0.4596145938632889, + "a_no_fsa": 322529.2728418437, + "a_no_fsa_error": -0.41425160816330914, + "b_with_fsa": 550760.036233989, + "b_with_fsa_error": 0.00024038956045694063, + "a_no_fsa_l2": 320994.110383276, + "a_no_fsa_l2_error": -0.417039630885684, + "b_with_fsa_l2": 551859.915750035, + "b_with_fsa_l2_error": 0.002237890909904773, + "label": "Federal student loan borrowers, Oregon", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.pa.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 1938489.6305242085, + "release": 698545.2568212012, + "release_error": -0.6396445738880224, + "a_no_fsa": 537921.4321204484, + "a_no_fsa_error": -0.7225048699512604, + "b_with_fsa": 1938329.727568864, + "b_with_fsa_error": -8.248842440359311e-05, + "a_no_fsa_l2": 646670.5828192894, + "a_no_fsa_l2_error": -0.6664049306034121, + "b_with_fsa_l2": 1932296.3638556004, + "b_with_fsa_l2_error": -0.0031948928542544688, + "label": "Federal student loan borrowers, Pennsylvania", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ri.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 156530.50201708506, + "release": 91440.35154731626, + "release_error": -0.41583045879878616, + "a_no_fsa": 67193.49636949998, + "a_no_fsa_error": -0.5707322502411325, + "b_with_fsa": 156676.35780594032, + "b_with_fsa_error": 0.0009318042616341992, + "a_no_fsa_l2": 83389.41659921774, + "a_no_fsa_l2_error": -0.46726410811538877, + "b_with_fsa_l2": 143822.69678447698, + "b_with_fsa_l2_error": -0.0811842105458848, + "label": "Federal student loan borrowers, Rhode Island", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.sc.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 817994.7343217478, + "release": 307285.4899877888, + "release_error": -0.6243429485611799, + "a_no_fsa": 272654.13553604257, + "a_no_fsa_error": -0.666679840228901, + "b_with_fsa": 817209.1264704542, + "b_with_fsa_error": -0.0009604069785914143, + "a_no_fsa_l2": 268421.8042701504, + "a_no_fsa_l2_error": -0.671853872638048, + "b_with_fsa_l2": 704813.5760368434, + "b_with_fsa_l2_error": -0.13836416487295636, + "label": "Federal student loan borrowers, South Carolina", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.sd.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 122024.78012955129, + "release": 49228.630249451584, + "release_error": -0.596568580601526, + "a_no_fsa": 36584.26075481092, + "a_no_fsa_error": -0.7001899063782772, + "b_with_fsa": 122015.55896799649, + "b_with_fsa_error": -7.556794238850849e-05, + "a_no_fsa_l2": 45954.48305721645, + "a_no_fsa_l2_error": -0.6234004027015866, + "b_with_fsa_l2": 82771.49356563347, + "b_with_fsa_l2_error": -0.32168291163682805, + "label": "Federal student loan borrowers, South Dakota", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.tn.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 935732.439913757, + "release": 618646.4720275834, + "release_error": -0.3388639255847518, + "a_no_fsa": 723231.4766187513, + "a_no_fsa_error": -0.2270958601313332, + "b_with_fsa": 935922.0496568226, + "b_with_fsa_error": 0.00020263243527500832, + "a_no_fsa_l2": 671009.0567532815, + "a_no_fsa_l2_error": -0.2829049970575714, + "b_with_fsa_l2": 934369.1426269347, + "b_with_fsa_l2_error": -0.0014569306659369362, + "label": "Federal student loan borrowers, Tennessee", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.tx.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 4130021.2215569983, + "release": 1916757.9539955892, + "release_error": -0.5358963426166172, + "a_no_fsa": 1897197.4901693538, + "a_no_fsa_error": -0.5406325080687795, + "b_with_fsa": 4126692.5204542256, + "b_with_fsa_error": -0.0008059767551310119, + "a_no_fsa_l2": 2041199.1526389704, + "a_no_fsa_l2_error": -0.5057654566071581, + "b_with_fsa_l2": 4120079.529044153, + "b_with_fsa_l2_error": -0.0024071771014041385, + "label": "Federal student loan borrowers, Texas", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.ut.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 327595.23234437377, + "release": 229731.67029358065, + "release_error": -0.29873316943732947, + "a_no_fsa": 277394.9378901126, + "a_no_fsa_error": -0.15323878218560208, + "b_with_fsa": 327687.50281895587, + "b_with_fsa_error": 0.00028166000439560523, + "a_no_fsa_l2": 274030.51342209865, + "a_no_fsa_l2_error": -0.16350884760730267, + "b_with_fsa_l2": 327472.09163601685, + "b_with_fsa_l2_error": -0.0003758928586221714, + "label": "Federal student loan borrowers, Utah", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.vt.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 78212.96961174325, + "release": 49096.742670000946, + "release_error": -0.37226852638735075, + "a_no_fsa": 49036.670480560766, + "a_no_fsa_error": -0.3730365855690745, + "b_with_fsa": 78111.57172707091, + "b_with_fsa_error": -0.0012964331258061412, + "a_no_fsa_l2": 49998.66037156169, + "a_no_fsa_l2_error": -0.3607369644732852, + "b_with_fsa_l2": 78189.04472003297, + "b_with_fsa_l2_error": -0.00030589417367793154, + "label": "Federal student loan borrowers, Vermont", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.va.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 1135029.1245126643, + "release": 491786.82450325566, + "release_error": -0.5667187617635723, + "a_no_fsa": 510461.6787403574, + "a_no_fsa_error": -0.5502655678905781, + "b_with_fsa": 1134113.0062613555, + "b_with_fsa_error": -0.0008071319330260737, + "a_no_fsa_l2": 492104.577104254, + "a_no_fsa_l2_error": -0.5664388107084531, + "b_with_fsa_l2": 949575.3378936852, + "b_with_fsa_l2_error": -0.16339121403479884, + "label": "Federal student loan borrowers, Virginia", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.wa.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 811511.8411186354, + "release": 510863.37442847824, + "release_error": -0.37047945754645517, + "a_no_fsa": 398849.4271570374, + "a_no_fsa_error": -0.5085106501868906, + "b_with_fsa": 812133.6122421519, + "b_with_fsa_error": 0.0007661886025709792, + "a_no_fsa_l2": 467944.96517448215, + "a_no_fsa_l2_error": -0.4233664359974841, + "b_with_fsa_l2": 810895.3765560483, + "b_with_fsa_l2_error": -0.0007596494978278073, + "label": "Federal student loan borrowers, Washington", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.wv.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 238716.85778557463, + "release": 99508.45676311901, + "release_error": -0.5831527874227398, + "a_no_fsa": 111061.67787886404, + "a_no_fsa_error": -0.5347556142070862, + "b_with_fsa": 227133.7313928928, + "b_with_fsa_error": -0.04852244831023314, + "a_no_fsa_l2": 105666.50272157288, + "a_no_fsa_l2_error": -0.5573563438218221, + "b_with_fsa_l2": 160974.66074490198, + "b_with_fsa_l2_error": -0.3256669753524651, + "label": "Federal student loan borrowers, West Virginia", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.wi.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 741454.769407582, + "release": 324174.02055824467, + "release_error": -0.5627865192407383, + "a_no_fsa": 294341.44872453704, + "a_no_fsa_error": -0.6030217069616881, + "b_with_fsa": 740807.4440121755, + "b_with_fsa_error": -0.0008730477193149163, + "a_no_fsa_l2": 318365.06399301125, + "a_no_fsa_l2_error": -0.570621058588128, + "b_with_fsa_l2": 740101.4577246602, + "b_with_fsa_l2_error": -0.0018252113800591267, + "label": "Federal student loan borrowers, Wisconsin", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_location.2026_03_31.wy.borrowers", + "family": "ed_fsa/fsa_state_borrowers", + "is_fsa": true, + "target": 57300.4108920258, + "release": 35036.212167585065, + "release_error": -0.38855216529588843, + "a_no_fsa": 27384.6977594811, + "a_no_fsa_error": -0.5220854906069777, + "b_with_fsa": 57267.86581131417, + "b_with_fsa_error": -0.0005679729028986365, + "a_no_fsa_l2": 31449.305982432343, + "a_no_fsa_l2_error": -0.4511504281933696, + "b_with_fsa_l2": 57299.987248917, + "b_with_fsa_l2_error": -7.393369475091375e-06, + "label": "Federal student loan borrowers, Wyoming", + "measure_mode": "indicator_sum", + "target_role": "fsa_state_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_24_and_younger.dollars_outstanding", + "family": "ed_fsa/fsa_age_band_balance", + "is_fsa": true, + "target": 84895672115.86523, + "release": 21842938479.954216, + "release_error": -0.742708456914705, + "a_no_fsa": 21232149847.622253, + "a_no_fsa_error": -0.7499030360623719, + "b_with_fsa": 84808630393.55034, + "b_with_fsa_error": -0.0010252786761155677, + "a_no_fsa_l2": 21299604016.966805, + "a_no_fsa_l2_error": -0.7491084823747293, + "b_with_fsa_l2": 81952391366.12189, + "b_with_fsa_l2_error": -0.03466938509805742, + "label": "Federal student loan balance, borrower age 24 and Younger", + "measure_mode": "sum", + "target_role": "fsa_age_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_25_to_34.dollars_outstanding", + "family": "ed_fsa/fsa_age_band_balance", + "is_fsa": true, + "target": 461967337284.6965, + "release": 193476903657.1365, + "release_error": -0.5811892139510665, + "a_no_fsa": 192059518681.89603, + "a_no_fsa_error": -0.5842573637115483, + "b_with_fsa": 461409165880.1488, + "b_with_fsa_error": -0.0012082486346944575, + "a_no_fsa_l2": 191936493129.4715, + "a_no_fsa_l2_error": -0.5845236716136344, + "b_with_fsa_l2": 454068712547.75836, + "b_with_fsa_l2_error": -0.01709779912875188, + "label": "Federal student loan balance, borrower age 25 to 34", + "measure_mode": "sum", + "target_role": "fsa_age_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_35_to_49.dollars_outstanding", + "family": "ed_fsa/fsa_age_band_balance", + "is_fsa": true, + "target": 679462908488.0756, + "release": 347912852480.123, + "release_error": -0.48795902155381776, + "a_no_fsa": 344745881287.4997, + "a_no_fsa_error": -0.4926200135712781, + "b_with_fsa": 679022261233.7264, + "b_with_fsa_error": -0.000648522897783543, + "a_no_fsa_l2": 341565055560.9475, + "a_no_fsa_l2_error": -0.49730139600851825, + "b_with_fsa_l2": 679614898831.1836, + "b_with_fsa_l2_error": 0.00022369189135906987, + "label": "Federal student loan balance, borrower age 35 to 49", + "measure_mode": "sum", + "target_role": "fsa_age_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_50_to_61.dollars_outstanding", + "family": "ed_fsa/fsa_age_band_balance", + "is_fsa": true, + "target": 310226241096.29254, + "release": 203769267410.272, + "release_error": -0.3431591515592547, + "a_no_fsa": 236299093486.9287, + "a_no_fsa_error": -0.23830075543615037, + "b_with_fsa": 310337128776.068, + "b_with_fsa_error": 0.00035744132857230707, + "a_no_fsa_l2": 213626720834.2249, + "a_no_fsa_l2_error": -0.3113841044545412, + "b_with_fsa_l2": 310151190582.9893, + "b_with_fsa_l2_error": -0.00024192187301114667, + "label": "Federal student loan balance, borrower age 50 to 61", + "measure_mode": "sum", + "target_role": "fsa_age_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_age.fy2026_q2.dollars_outstanding.age_62_and_older.dollars_outstanding", + "family": "ed_fsa/fsa_age_band_balance", + "is_fsa": true, + "target": 142517617792.63824, + "release": 91419246927.44438, + "release_error": -0.35854073101012324, + "a_no_fsa": 91709263939.19894, + "a_no_fsa_error": -0.3565057754990331, + "b_with_fsa": 142422600111.87424, + "b_with_fsa_error": -0.0006667083146327732, + "a_no_fsa_l2": 87322601876.0972, + "a_no_fsa_l2_error": -0.387285563507308, + "b_with_fsa_l2": 142351103859.76126, + "b_with_fsa_l2_error": -0.001168374376838517, + "label": "Federal student loan balance, borrower age 62 and Older", + "measure_mode": "sum", + "target_role": "fsa_age_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_24_and_younger.borrowers", + "family": "ed_fsa/fsa_age_band_borrowers", + "is_fsa": true, + "target": 6132107.903700248, + "release": 1060922.4025248198, + "release_error": -0.8269889540129202, + "a_no_fsa": 894842.9148141979, + "a_no_fsa_error": -0.8540725426122672, + "b_with_fsa": 3721734.029040796, + "b_with_fsa_error": -0.39307427600955613, + "a_no_fsa_l2": 956369.9693649751, + "a_no_fsa_l2_error": -0.8440389529369043, + "b_with_fsa_l2": 3433745.108646735, + "b_with_fsa_l2_error": -0.4400383746387212, + "label": "Federal student loan borrowers, borrower age 24 and Younger", + "measure_mode": "indicator_sum", + "target_role": "fsa_age_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_25_to_34.borrowers", + "family": "ed_fsa/fsa_age_band_borrowers", + "is_fsa": true, + "target": 13846695.266419914, + "release": 6192543.906443544, + "release_error": -0.5527782053916295, + "a_no_fsa": 6296429.289961355, + "a_no_fsa_error": -0.5452756655061921, + "b_with_fsa": 14850266.951992404, + "b_with_fsa_error": 0.0724773432406132, + "a_no_fsa_l2": 6256775.98734856, + "a_no_fsa_l2_error": -0.5481394031598227, + "b_with_fsa_l2": 13852963.2445308, + "b_with_fsa_l2_error": 0.00045266960746134094, + "label": "Federal student loan borrowers, borrower age 25 to 34", + "measure_mode": "indicator_sum", + "target_role": "fsa_age_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_35_to_49.borrowers", + "family": "ed_fsa/fsa_age_band_borrowers", + "is_fsa": true, + "target": 14835744.92830705, + "release": 8023497.101475692, + "release_error": -0.45917800958099403, + "a_no_fsa": 8074464.636991949, + "a_no_fsa_error": -0.455742554485038, + "b_with_fsa": 15595502.83134718, + "b_with_fsa_error": 0.05121130800722305, + "a_no_fsa_l2": 8186342.309318309, + "a_no_fsa_l2_error": -0.4482014655227376, + "b_with_fsa_l2": 15037030.459811296, + "b_with_fsa_l2_error": 0.013567605299022538, + "label": "Federal student loan borrowers, borrower age 35 to 49", + "measure_mode": "indicator_sum", + "target_role": "fsa_age_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_50_to_61.borrowers", + "family": "ed_fsa/fsa_age_band_borrowers", + "is_fsa": true, + "target": 6329917.836077675, + "release": 4409804.638042973, + "release_error": -0.30333935570078385, + "a_no_fsa": 4440574.673131422, + "a_no_fsa_error": -0.2984783075979043, + "b_with_fsa": 6442255.498218028, + "b_with_fsa_error": 0.01774709641570364, + "a_no_fsa_l2": 4460288.989864899, + "a_no_fsa_l2_error": -0.29536384114762687, + "b_with_fsa_l2": 6459200.128841143, + "b_with_fsa_l2_error": 0.020424008037926992, + "label": "Federal student loan borrowers, borrower age 50 to 61", + "measure_mode": "indicator_sum", + "target_role": "fsa_age_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_age.fy2026_q2.borrowers.age_62_and_older.borrowers", + "family": "ed_fsa/fsa_age_band_borrowers", + "is_fsa": true, + "target": 3164958.9180388376, + "release": 1536635.384601094, + "release_error": -0.5144848876732757, + "a_no_fsa": 1740870.388920138, + "a_no_fsa_error": -0.4499548227947092, + "b_with_fsa": 3166670.121638725, + "b_with_fsa_error": 0.0005406716624769902, + "a_no_fsa_l2": 1569109.9640738436, + "a_no_fsa_l2_error": -0.5042242238499133, + "b_with_fsa_l2": 3165074.184682784, + "b_with_fsa_l2_error": 3.641963353443764e-05, + "label": "Federal student loan borrowers, borrower age 62 and Older", + "measure_mode": "indicator_sum", + "target_role": "fsa_age_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_less_than_5k.dollars_outstanding", + "family": "ed_fsa/fsa_debt_size_band_balance", + "is_fsa": true, + "target": 18708022626.360928, + "release": 6883630670.137676, + "release_error": -0.6320492653008579, + "a_no_fsa": 6676350041.7059765, + "a_no_fsa_error": -0.6431290374698111, + "b_with_fsa": 17013689025.91875, + "b_with_fsa_error": -0.09056721997196758, + "a_no_fsa_l2": 6914341423.911572, + "a_no_fsa_l2_error": -0.6304076832701295, + "b_with_fsa_l2": 14157274654.550037, + "b_with_fsa_l2_error": -0.2432511475263326, + "label": "Federal student loan balance, borrower debt size Less than 5K", + "measure_mode": "sum", + "target_role": "fsa_debt_size_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_5k_to_10k.dollars_outstanding", + "family": "ed_fsa/fsa_debt_size_band_balance", + "is_fsa": true, + "target": 51966729517.669235, + "release": 20408595500.500103, + "release_error": -0.6072757379592079, + "a_no_fsa": 18798236430.658524, + "a_no_fsa_error": -0.6382640084312613, + "b_with_fsa": 51977415379.77266, + "b_with_fsa_error": 0.00020562891301040536, + "a_no_fsa_l2": 19563119039.777695, + "a_no_fsa_l2_error": -0.6235453102137969, + "b_with_fsa_l2": 43104076108.86364, + "b_with_fsa_l2_error": -0.17054475990820628, + "label": "Federal student loan balance, borrower debt size 5K to 10K", + "measure_mode": "sum", + "target_role": "fsa_debt_size_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_10k_to_20k.dollars_outstanding", + "family": "ed_fsa/fsa_debt_size_band_balance", + "is_fsa": true, + "target": 131154126877.92712, + "release": 58568935639.036705, + "release_error": -0.5534342911409088, + "a_no_fsa": 60185472683.14245, + "a_no_fsa_error": -0.5411088151335061, + "b_with_fsa": 131129909269.01414, + "b_with_fsa_error": -0.00018464999531063084, + "a_no_fsa_l2": 60578278746.143364, + "a_no_fsa_l2_error": -0.53811381930416, + "b_with_fsa_l2": 131090191663.75578, + "b_with_fsa_l2_error": -0.0004874815279800476, + "label": "Federal student loan balance, borrower debt size 10K to 20K", + "measure_mode": "sum", + "target_role": "fsa_debt_size_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_20k_to_40k.dollars_outstanding", + "family": "ed_fsa/fsa_debt_size_band_balance", + "is_fsa": true, + "target": 268049340064.47293, + "release": 136469359110.77391, + "release_error": -0.49087970491570904, + "a_no_fsa": 147296248684.5356, + "a_no_fsa_error": -0.4504882994708848, + "b_with_fsa": 268208602636.97992, + "b_with_fsa_error": 0.0005941539437055942, + "a_no_fsa_l2": 142891029210.66406, + "a_no_fsa_l2_error": -0.4669226599241207, + "b_with_fsa_l2": 267493209581.49188, + "b_with_fsa_l2_error": -0.0020747317745579397, + "label": "Federal student loan balance, borrower debt size 20K to 40K", + "measure_mode": "sum", + "target_role": "fsa_debt_size_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_40k_to_60k.dollars_outstanding", + "family": "ed_fsa/fsa_debt_size_band_balance", + "is_fsa": true, + "target": 204303485189.46533, + "release": 111851738434.43323, + "release_error": -0.4525216330465187, + "a_no_fsa": 102895679571.38193, + "a_no_fsa_error": -0.4963586672250874, + "b_with_fsa": 204383005644.22495, + "b_with_fsa_error": 0.0003892271083181376, + "a_no_fsa_l2": 109372817051.39279, + "a_no_fsa_l2_error": -0.4646551577425931, + "b_with_fsa_l2": 204292840783.24, + "b_with_fsa_l2_error": -5.2100952734460077e-05, + "label": "Federal student loan balance, borrower debt size 40K to 60K", + "measure_mode": "sum", + "target_role": "fsa_debt_size_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_60k_to_80k.dollars_outstanding", + "family": "ed_fsa/fsa_debt_size_band_balance", + "is_fsa": true, + "target": 175598053646.37186, + "release": 126845755179.68854, + "release_error": -0.27763575651506445, + "a_no_fsa": 142494050099.33737, + "a_no_fsa_error": -0.18852147196176208, + "b_with_fsa": 175700666825.5031, + "b_with_fsa_error": 0.0005843639892381932, + "a_no_fsa_l2": 132719543311.71623, + "a_no_fsa_l2_error": -0.2441855672330316, + "b_with_fsa_l2": 178397480806.7161, + "b_with_fsa_l2_error": 0.01594224481543437, + "label": "Federal student loan balance, borrower debt size 60K to 80K", + "measure_mode": "sum", + "target_role": "fsa_debt_size_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_80k_to_100k.dollars_outstanding", + "family": "ed_fsa/fsa_debt_size_band_balance", + "is_fsa": true, + "target": 126402883036.31165, + "release": 58388278013.358025, + "release_error": -0.5380779566824843, + "a_no_fsa": 53594580421.09877, + "a_no_fsa_error": -0.5760019144048898, + "b_with_fsa": 126368318497.91405, + "b_with_fsa_error": -0.0002734473895478234, + "a_no_fsa_l2": 55298634527.32333, + "a_no_fsa_l2_error": -0.562520781179985, + "b_with_fsa_l2": 126310711594.85712, + "b_with_fsa_l2_error": -0.0007291878099651478, + "label": "Federal student loan balance, borrower debt size 80K to 100K", + "measure_mode": "sum", + "target_role": "fsa_debt_size_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_100k_to_200k.dollars_outstanding", + "family": "ed_fsa/fsa_debt_size_band_balance", + "is_fsa": true, + "target": 350701186059.2421, + "release": 153438077421.90552, + "release_error": -0.5624820116918965, + "a_no_fsa": 159381293835.21597, + "a_no_fsa_error": -0.5455353441311358, + "b_with_fsa": 350865871418.2749, + "b_with_fsa_error": 0.0004695888282652014, + "a_no_fsa_l2": 149165830562.74597, + "a_no_fsa_l2_error": -0.574664025979233, + "b_with_fsa_l2": 350709890992.9936, + "b_with_fsa_l2_error": 2.4821512151927437e-05, + "label": "Federal student loan balance, borrower debt size 100K to 200K", + "measure_mode": "sum", + "target_role": "fsa_debt_size_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.dollars_outstanding.debt_200k_plus.dollars_outstanding", + "family": "ed_fsa/fsa_debt_size_band_balance", + "is_fsa": true, + "target": 352185949759.74695, + "release": 185566838985.09744, + "release_error": -0.4730998237956772, + "a_no_fsa": 194723995476.0694, + "a_no_fsa_error": -0.447098910081718, + "b_with_fsa": 352352307697.7656, + "b_with_fsa_error": 0.00047235824748875495, + "a_no_fsa_l2": 179246881544.034, + "a_no_fsa_l2_error": -0.49104476863341073, + "b_with_fsa_l2": 352582621001.3442, + "b_with_fsa_l2_error": 0.001126311943641786, + "label": "Federal student loan balance, borrower debt size 200K+", + "measure_mode": "sum", + "target_role": "fsa_debt_size_band_balance" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_less_than_5k.borrowers", + "family": "ed_fsa/fsa_debt_size_band_borrowers", + "is_fsa": true, + "target": 6824442.667021244, + "release": 2660011.61784388, + "release_error": -0.6102228786098175, + "a_no_fsa": 2666405.328149534, + "a_no_fsa_error": -0.6092859947326108, + "b_with_fsa": 6294957.037398813, + "b_with_fsa_error": -0.07758664779779625, + "a_no_fsa_l2": 2751049.904528079, + "a_no_fsa_l2_error": -0.5968828461520556, + "b_with_fsa_l2": 5478802.650575942, + "b_with_fsa_l2_error": -0.1971794741493009, + "label": "Federal student loan borrowers, borrower debt size Less than 5K", + "measure_mode": "indicator_sum", + "target_role": "fsa_debt_size_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_5k_to_10k.borrowers", + "family": "ed_fsa/fsa_debt_size_band_borrowers", + "is_fsa": true, + "target": 7121157.565587386, + "release": 2886637.902069267, + "release_error": -0.5946392316863215, + "a_no_fsa": 2656816.009424752, + "a_no_fsa_error": -0.6269123404509859, + "b_with_fsa": 7113066.670173819, + "b_with_fsa_error": -0.001136176996372781, + "a_no_fsa_l2": 2759802.254558279, + "a_no_fsa_l2_error": -0.6124503314047036, + "b_with_fsa_l2": 5944674.881242196, + "b_with_fsa_l2_error": -0.1652094724080365, + "label": "Federal student loan borrowers, borrower debt size 5K to 10K", + "measure_mode": "indicator_sum", + "target_role": "fsa_debt_size_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_10k_to_20k.borrowers", + "family": "ed_fsa/fsa_debt_size_band_borrowers", + "is_fsa": true, + "target": 9099256.889361657, + "release": 4031816.608781144, + "release_error": -0.5569070466078478, + "a_no_fsa": 4114714.845009719, + "a_no_fsa_error": -0.5477966063557989, + "b_with_fsa": 8845852.695692249, + "b_with_fsa_error": -0.02784888884340375, + "a_no_fsa_l2": 4135943.222839435, + "a_no_fsa_l2_error": -0.5454636270710249, + "b_with_fsa_l2": 8855644.781073565, + "b_with_fsa_l2_error": -0.02677274762655731, + "label": "Federal student loan borrowers, borrower debt size 10K to 20K", + "measure_mode": "indicator_sum", + "target_role": "fsa_debt_size_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_20k_to_40k.borrowers", + "family": "ed_fsa/fsa_debt_size_band_borrowers", + "is_fsa": true, + "target": 9395971.787927799, + "release": 4990277.860182391, + "release_error": -0.4688917790713212, + "a_no_fsa": 5359769.4045512425, + "a_no_fsa_error": -0.4295673161303421, + "b_with_fsa": 9378151.392935265, + "b_with_fsa_error": -0.001896599457166336, + "a_no_fsa_l2": 5210570.48186096, + "a_no_fsa_l2_error": -0.4454463466402014, + "b_with_fsa_l2": 9501277.377082592, + "b_with_fsa_l2_error": 0.011207525047073091, + "label": "Federal student loan borrowers, borrower debt size 20K to 40K", + "measure_mode": "indicator_sum", + "target_role": "fsa_debt_size_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_40k_to_60k.borrowers", + "family": "ed_fsa/fsa_debt_size_band_borrowers", + "is_fsa": true, + "target": 4154008.5799259744, + "release": 2297313.147286536, + "release_error": -0.44696475631076454, + "a_no_fsa": 2118828.9961400456, + "a_no_fsa_error": -0.48993148295861155, + "b_with_fsa": 4154735.48989536, + "b_with_fsa_error": 0.00017499000192211137, + "a_no_fsa_l2": 2257145.529060151, + "a_no_fsa_l2_error": -0.4566343603699601, + "b_with_fsa_l2": 4154349.4023655565, + "b_with_fsa_l2_error": 8.204663833124789e-05, + "label": "Federal student loan borrowers, borrower debt size 40K to 60K", + "measure_mode": "indicator_sum", + "target_role": "fsa_debt_size_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_60k_to_80k.borrowers", + "family": "ed_fsa/fsa_debt_size_band_borrowers", + "is_fsa": true, + "target": 2571529.1209065556, + "release": 1839757.88789356, + "release_error": -0.2845665744415214, + "a_no_fsa": 2082970.9466790836, + "a_no_fsa_error": -0.189987416535745, + "b_with_fsa": 2554216.643483538, + "b_with_fsa_error": -0.006732366856072824, + "a_no_fsa_l2": 1925962.5331750982, + "a_no_fsa_l2_error": -0.2510438565455063, + "b_with_fsa_l2": 2573167.2940243455, + "b_with_fsa_l2_error": 0.0006370424135863533, + "label": "Federal student loan borrowers, borrower debt size 60K to 80K", + "measure_mode": "indicator_sum", + "target_role": "fsa_debt_size_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_80k_to_100k.borrowers", + "family": "ed_fsa/fsa_debt_size_band_borrowers", + "is_fsa": true, + "target": 1384669.5266419915, + "release": 671311.2066995457, + "release_error": -0.5151830860843994, + "a_no_fsa": 609132.1726657285, + "a_no_fsa_error": -0.5600884103061361, + "b_with_fsa": 1435371.7495332821, + "b_with_fsa_error": 0.0366168402754196, + "a_no_fsa_l2": 631350.8532255689, + "a_no_fsa_l2_error": -0.5440422129049961, + "b_with_fsa_l2": 1435291.1169777627, + "b_with_fsa_l2_error": 0.03655860792902356, + "label": "Federal student loan borrowers, borrower debt size 80K to 100K", + "measure_mode": "indicator_sum", + "target_role": "fsa_debt_size_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_100k_to_200k.borrowers", + "family": "ed_fsa/fsa_debt_size_band_borrowers", + "is_fsa": true, + "target": 2571529.1209065556, + "release": 1189524.6536394043, + "release_error": -0.5374251670072262, + "a_no_fsa": 1196301.768084729, + "a_no_fsa_error": -0.5347897255532575, + "b_with_fsa": 2627419.5752201807, + "b_with_fsa_error": 0.021734326809381706, + "a_no_fsa_l2": 1147738.2311298787, + "a_no_fsa_l2_error": -0.5536748070248335, + "b_with_fsa_l2": 2654541.6540517164, + "b_with_fsa_l2_error": 0.032281389493227286, + "label": "Federal student loan borrowers, borrower debt size 100K to 200K", + "measure_mode": "indicator_sum", + "target_role": "fsa_debt_size_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_debt_size.fy2026_q2.borrowers.debt_200k_plus.borrowers", + "family": "ed_fsa/fsa_debt_size_band_borrowers", + "is_fsa": true, + "target": 1186859.594264564, + "release": 656752.548692369, + "release_error": -0.4466468048401927, + "a_no_fsa": 642242.4331142446, + "a_no_fsa_error": -0.4588724426900646, + "b_with_fsa": 1372658.1779046573, + "b_with_fsa_error": 0.15654638892245973, + "a_no_fsa_l2": 609324.2095931433, + "a_no_fsa_l2_error": -0.4866080094581784, + "b_with_fsa_l2": 1350263.9691190727, + "b_with_fsa_l2_error": 0.13767793228799052, + "label": "Federal student loan borrowers, borrower debt size 200K+", + "measure_mode": "indicator_sum", + "target_role": "fsa_debt_size_band_borrowers" + }, + { + "name": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.parent_plus.dollars_outstanding", + "family": "ed_fsa/fsa_parent_plus_balance", + "is_fsa": true, + "target": 114840658244.6196, + "release": 143855898994.11093, + "release_error": 0.25265651723875177, + "a_no_fsa": 152559120060.60333, + "a_no_fsa_error": 0.3284417069052361, + "b_with_fsa": 114878467611.03508, + "b_with_fsa_error": 0.00032923327846958746, + "a_no_fsa_l2": 143797166880.5975, + "a_no_fsa_l2_error": 0.2521450945909616, + "b_with_fsa_l2": 126684266224.0997, + "b_with_fsa_l2_error": 0.10313079148547102, + "label": "Parent PLUS loan balance", + "measure_mode": "sum", + "target_role": "fsa_parent_plus_balance" + }, + { + "name": "ed_fsa.portfolio_by_loan_type.fy2026_q2.dollars_outstanding.excluding_parent_plus.dollars_outstanding", + "family": "ed_fsa/fsa_balance_excluding_parent_plus", + "is_fsa": true, + "target": 1564229118532.9485, + "release": 714565309960.8195, + "release_error": -0.5431837308904002, + "a_no_fsa": 733486787182.5394, + "a_no_fsa_error": -0.5310873717333312, + "b_with_fsa": 1563121318784.333, + "b_with_fsa_error": -0.0007082081106215797, + "a_no_fsa_l2": 711953308537.1119, + "a_no_fsa_l2_error": -0.5448535639044776, + "b_with_fsa_l2": 1541454030963.7156, + "b_with_fsa_l2_error": -0.014559943488709056, + "label": "Federal student loan balance excluding Parent PLUS", + "measure_mode": "sum", + "target_role": "fsa_balance_excluding_parent_plus" + } + ], + "race": { + "households": { + "scf_2025": { + "white_non_hispanic": 0.5758379227655301, + "black_non_hispanic": 0.18584398244937056, + "hispanic": 0.09175505946273715, + "other_or_multiple": 0.14656303532236203 + }, + "release": { + "white_non_hispanic": 0.6075123718771999, + "black_non_hispanic": 0.1735163433550579, + "hispanic": 0.1292075127477179, + "other_or_multiple": 0.08976377202002432 + }, + "a_no_fsa": { + "white_non_hispanic": 0.6003164863520385, + "black_non_hispanic": 0.1638603897490698, + "hispanic": 0.13818749481107956, + "other_or_multiple": 0.09763562908781218 + }, + "b_with_fsa": { + "white_non_hispanic": 0.5789114960854711, + "black_non_hispanic": 0.1898937122343615, + "hispanic": 0.1484731970842785, + "other_or_multiple": 0.08272159459588889 + }, + "a_no_fsa_l2": { + "white_non_hispanic": 0.6207868469201013, + "black_non_hispanic": 0.16785682012915737, + "hispanic": 0.12405637066506622, + "other_or_multiple": 0.08729996228567515 + }, + "b_with_fsa_l2": { + "white_non_hispanic": 0.5997263899263966, + "black_non_hispanic": 0.18988343165182947, + "hispanic": 0.12804095308992025, + "other_or_multiple": 0.08234922533185371 + } + }, + "people": { + "release": { + "borrowers": { + "white_non_hispanic": 0.6154917785803062, + "black_non_hispanic": 0.16435610234005504, + "hispanic": 0.13015144089908207, + "other_or_multiple": 0.0900006781805565 + }, + "balance": { + "white_non_hispanic": 0.6006375021761191, + "black_non_hispanic": 0.17904584458677544, + "hispanic": 0.1140512751186056, + "other_or_multiple": 0.1062653781184998 + }, + "adults": { + "white_non_hispanic": 0.6298230145750681, + "black_non_hispanic": 0.10376617272276237, + "hispanic": 0.17037462685213, + "other_or_multiple": 0.0960361858500396 + }, + "borrower_share_of_adults_by_race": { + "white_non_hispanic": 0.0787430719556842, + "black_non_hispanic": 0.1276258547641487, + "hispanic": 0.06155347148471287, + "other_or_multiple": 0.07551259269063522 + } + }, + "a_no_fsa": { + "borrowers": { + "white_non_hispanic": 0.6089166587917068, + "black_non_hispanic": 0.1566627059769501, + "hispanic": 0.13517257285565665, + "other_or_multiple": 0.09924806237568648 + }, + "balance": { + "white_non_hispanic": 0.6086262933750644, + "black_non_hispanic": 0.2039816924325645, + "hispanic": 0.08700649171876078, + "other_or_multiple": 0.10038552247361046 + }, + "adults": { + "white_non_hispanic": 0.6168043156555436, + "black_non_hispanic": 0.10721981094395315, + "hispanic": 0.17379960783262757, + "other_or_multiple": 0.10217626556787562 + }, + "borrower_share_of_adults_by_race": { + "white_non_hispanic": 0.08030985770075132, + "black_non_hispanic": 0.11886363054154586, + "hispanic": 0.06327005170862247, + "other_or_multiple": 0.07901879691524766 + } + }, + "b_with_fsa": { + "borrowers": { + "white_non_hispanic": 0.5921867134546868, + "black_non_hispanic": 0.1782668448363, + "hispanic": 0.14507355419154938, + "other_or_multiple": 0.08447288751746382 + }, + "balance": { + "white_non_hispanic": 0.570532822664618, + "black_non_hispanic": 0.20825053461596962, + "hispanic": 0.129554716977867, + "other_or_multiple": 0.09166192574154546 + }, + "adults": { + "white_non_hispanic": 0.6162176957287394, + "black_non_hispanic": 0.11300086400506511, + "hispanic": 0.16973490129723393, + "other_or_multiple": 0.10104653896896154 + }, + "borrower_share_of_adults_by_race": { + "white_non_hispanic": 0.15959872251122573, + "black_non_hispanic": 0.2619954391255782, + "hispanic": 0.14194562655051507, + "other_or_multiple": 0.13883559132491619 + } + }, + "a_no_fsa_l2": { + "borrowers": { + "white_non_hispanic": 0.6291529025314854, + "black_non_hispanic": 0.16040853879964695, + "hispanic": 0.1224656641310282, + "other_or_multiple": 0.08797289453783937 + }, + "balance": { + "white_non_hispanic": 0.6150341612588469, + "black_non_hispanic": 0.19512310590430043, + "hispanic": 0.09152157769681851, + "other_or_multiple": 0.09832115514003416 + }, + "adults": { + "white_non_hispanic": 0.6475133294176726, + "black_non_hispanic": 0.10389398500485929, + "hispanic": 0.15270146082119862, + "other_or_multiple": 0.09589122475626961 + }, + "borrower_share_of_adults_by_race": { + "white_non_hispanic": 0.07901202942885216, + "black_non_hispanic": 0.12555175973378563, + "hispanic": 0.06521640523601745, + "other_or_multiple": 0.07460290260231378 + } + }, + "b_with_fsa_l2": { + "borrowers": { + "white_non_hispanic": 0.614283945401807, + "black_non_hispanic": 0.17739190931727847, + "hispanic": 0.125699321505896, + "other_or_multiple": 0.08262482377501867 + }, + "balance": { + "white_non_hispanic": 0.5880910478727771, + "black_non_hispanic": 0.21732843669896443, + "hispanic": 0.10526750455028751, + "other_or_multiple": 0.089313010877971 + }, + "adults": { + "white_non_hispanic": 0.6511496936642174, + "black_non_hispanic": 0.11172347014381202, + "hispanic": 0.1420928915217667, + "other_or_multiple": 0.09503394467020368 + }, + "borrower_share_of_adults_by_race": { + "white_non_hispanic": 0.15011151236625206, + "black_non_hispanic": 0.2526475364300562, + "hispanic": 0.14076226850454934, + "other_or_multiple": 0.13834308806928053 + } + } + } + }, + "support": { + "borrower_records": 9944, + "people": 166321, + "borrower_records_by_age_band": { + "24_and_younger": 561, + "25_to_34": 2887, + "35_to_49": 4051, + "50_to_61": 1816, + "62_and_older": 629 + }, + "people_by_age_band": { + "24_and_younger": 59179, + "25_to_34": 21318, + "35_to_49": 33016, + "50_to_61": 21932, + "62_and_older": 30876 + } + }, + "scf_fit_tables": { + "scf_2025": { + "households": { + "household_weight": 134963690.69015205, + "share_with_federal_education_debt": 0.18154956812200357, + "mean_among_borrowers": 41052.27209260245, + "median_among_borrowers": 25000.0, + "total_household_weight": 134963690.69015205, + "federal_education_debt_total": 1005887392198.3959, + "parent_plus_share_of_total": 0.13750075307389345 + }, + "household_balance_bands": { + "under_5k": 0.09639294713632403, + "5k_to_10k": 0.14003280730185305, + "10k_to_20k": 0.1763887243762958, + "20k_to_40k": 0.23167145676213327, + "40k_to_60k": 0.13228448002879964, + "60k_to_80k": 0.09356242722856564, + "80k_to_100k": 0.04781176224843039, + "100k_to_200k": 0.05847272768581226, + "200k_plus": 0.023382667231785843 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 5853521.0, + "share_with_federal_education_debt": 0.22183897089190358, + "mean_among_borrowers": 23531.319738797185, + "median_among_borrowers": 10000.0 + }, + "25_to_34": { + "household_weight": 20594001.0, + "share_with_federal_education_debt": 0.3615365625657711, + "mean_among_borrowers": 36363.72833498089, + "median_among_borrowers": 24900.0 + }, + "35_to_49": { + "household_weight": 34447794.528511114, + "share_with_federal_education_debt": 0.27186430754586627, + "mean_among_borrowers": 45297.2739464529, + "median_among_borrowers": 25000.0 + }, + "50_to_61": { + "household_weight": 26383416.705058806, + "share_with_federal_education_debt": 0.1666515695303606, + "mean_among_borrowers": 44901.11056030461, + "median_among_borrowers": 28000.0 + }, + "62_and_older": { + "household_weight": 47684957.45658214, + "share_with_federal_education_debt": 0.041870913769168856, + "mean_among_borrowers": 41544.318165395336, + "median_among_borrowers": 26000.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 81838505.71507175, + "share_with_federal_education_debt": 0.17240693757923897, + "mean_among_borrowers": 41150.07823437558, + "median_among_borrowers": 23000.0 + }, + "black_non_hispanic": { + "household_weight": 18706038.359267425, + "share_with_federal_education_debt": 0.24343266231667623, + "mean_among_borrowers": 47375.69026752636, + "median_among_borrowers": 30000.0 + }, + "hispanic": { + "household_weight": 15955872.224651583, + "share_with_federal_education_debt": 0.1409034533516125, + "mean_among_borrowers": 33382.63507234893, + "median_among_borrowers": 23000.0 + }, + "other_or_multiple": { + "household_weight": 18463274.3911613, + "share_with_federal_education_debt": 0.19450371139945485, + "mean_among_borrowers": 37451.352530441625, + "median_among_borrowers": 20000.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 26990442.923403554, + "share_with_federal_education_debt": 0.1144757325207629, + "mean_among_borrowers": 30747.429065421915, + "median_among_borrowers": 19200.0 + }, + "2": { + "household_weight": 26994482.864333212, + "share_with_federal_education_debt": 0.1705804998024808, + "mean_among_borrowers": 41222.638862750704, + "median_among_borrowers": 22000.0 + }, + "3": { + "household_weight": 26997020.193277217, + "share_with_federal_education_debt": 0.17774016899539674, + "mean_among_borrowers": 38756.18543238133, + "median_among_borrowers": 21000.0 + }, + "4": { + "household_weight": 26985790.839470405, + "share_with_federal_education_debt": 0.26595688145561025, + "mean_among_borrowers": 40379.14671664771, + "median_among_borrowers": 28000.0 + }, + "5": { + "household_weight": 26995953.869667668, + "share_with_federal_education_debt": 0.1790121945626286, + "mean_among_borrowers": 50757.93410007803, + "median_among_borrowers": 28000.0 + } + }, + "borrowers": { + "borrower_weight": 27234421.461229563, + "mean_balance": 36934.413812695064, + "median_balance": 21000.0, + "balance_bands": { + "under_5k": 0.11892493269111482, + "5k_to_10k": 0.15531044452506518, + "10k_to_20k": 0.18601428472545406, + "20k_to_40k": 0.22258528435724315, + "40k_to_60k": 0.1281197371592323, + "60k_to_80k": 0.08084824950055876, + "80k_to_100k": 0.03718912377212063, + "100k_to_200k": 0.04910146852901287, + "200k_plus": 0.021906474740198353 + }, + "age_bands": { + "24_and_younger": 0.057262304197073094, + "25_to_34": 0.33134066182556904, + "35_to_49": 0.3807800839788549, + "50_to_61": 0.1615926964748789, + "62_and_older": 0.06902425352362417 + }, + "graduate_share_of_own_original_principal": 0.47738241507384116, + "ibr_new_borrower_share": 0.5915143468879298 + } + }, + "release": { + "households": { + "household_weight": 122537091.8856833, + "share_with_federal_education_debt": 0.16413671000206656, + "mean_among_borrowers": 42680.26879514089, + "median_among_borrowers": 23000.0, + "total_household_weight": 122537091.8856833, + "federal_education_debt_total": 858421208954.9309, + "parent_plus_share_of_total": 0.16758194869071996 + }, + "household_balance_bands": { + "under_5k": 0.1179407532730876, + "5k_to_10k": 0.1324473758996882, + "10k_to_20k": 0.1827494270561508, + "20k_to_40k": 0.23417620772637385, + "40k_to_60k": 0.10433535383061796, + "60k_to_80k": 0.0976346772652531, + "80k_to_100k": 0.0379014108379451, + "100k_to_200k": 0.05781213394341271, + "200k_plus": 0.03500266016747067 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 4363759.075237429, + "share_with_federal_education_debt": 0.21797195752357604, + "mean_among_borrowers": 20475.641978208863, + "median_among_borrowers": 12662.0 + }, + "25_to_34": { + "household_weight": 19671660.332724698, + "share_with_federal_education_debt": 0.28107974022687005, + "mean_among_borrowers": 34573.95711939027, + "median_among_borrowers": 20100.0 + }, + "35_to_49": { + "household_weight": 32403635.225158654, + "share_with_federal_education_debt": 0.24429588401566177, + "mean_among_borrowers": 44478.05328490035, + "median_among_borrowers": 23000.0 + }, + "50_to_61": { + "household_weight": 25738755.87416564, + "share_with_federal_education_debt": 0.16352578267462928, + "mean_among_borrowers": 48394.24067058906, + "median_among_borrowers": 28742.0 + }, + "62_and_older": { + "household_weight": 40359281.378396876, + "share_with_federal_education_debt": 0.037347739302272136, + "mean_among_borrowers": 61031.6733341336, + "median_among_borrowers": 34000.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 79908332.17160814, + "share_with_federal_education_debt": 0.15291016385941802, + "mean_among_borrowers": 42266.19101485241, + "median_among_borrowers": 23000.0 + }, + "black_non_hispanic": { + "household_weight": 14037284.65604804, + "share_with_federal_education_debt": 0.24861685783459786, + "mean_among_borrowers": 45500.64480289935, + "median_among_borrowers": 28000.0 + }, + "hispanic": { + "household_weight": 18783518.810774647, + "share_with_federal_education_debt": 0.13835157436352993, + "mean_among_borrowers": 37031.934121143146, + "median_among_borrowers": 19200.0 + }, + "other_or_multiple": { + "household_weight": 9807956.247252459, + "share_with_federal_education_debt": 0.18407544859054642, + "mean_among_borrowers": 48161.13603160578, + "median_among_borrowers": 18000.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 24515062.61657284, + "share_with_federal_education_debt": 0.14257834053880739, + "mean_among_borrowers": 43328.84042017116, + "median_among_borrowers": 20000.0 + }, + "2": { + "household_weight": 24494456.917873796, + "share_with_federal_education_debt": 0.15791199105287693, + "mean_among_borrowers": 39522.35712436794, + "median_among_borrowers": 20000.0 + }, + "3": { + "household_weight": 24510469.334416572, + "share_with_federal_education_debt": 0.14719109419650156, + "mean_among_borrowers": 38670.33311547162, + "median_among_borrowers": 23000.0 + }, + "4": { + "household_weight": 24509847.230985664, + "share_with_federal_education_debt": 0.23072142160681058, + "mean_among_borrowers": 41126.05793612391, + "median_among_borrowers": 26000.0 + }, + "5": { + "household_weight": 24507255.785834424, + "share_with_federal_education_debt": 0.1422795004455311, + "mean_among_borrowers": 52202.66543686702, + "median_among_borrowers": 23000.0 + } + }, + "borrowers": { + "borrower_weight": 21223403.433088087, + "mean_balance": 40446.915673129966, + "median_balance": 22000.0, + "balance_bands": { + "under_5k": 0.12533388559616318, + "5k_to_10k": 0.13601201669515878, + "10k_to_20k": 0.18997031373843593, + "20k_to_40k": 0.2351308957545589, + "40k_to_60k": 0.10824433293789903, + "60k_to_80k": 0.08668533742450127, + "80k_to_100k": 0.03163070469899026, + "100k_to_200k": 0.05604778033785523, + "200k_plus": 0.03094473281643728 + }, + "age_bands": { + "24_and_younger": 0.049988325664619956, + "25_to_34": 0.2917790224346921, + "35_to_49": 0.3780495021343625, + "50_to_61": 0.20778027670943267, + "62_and_older": 0.07240287305689257 + }, + "graduate_share_of_own_original_principal": 0.4826934460430418, + "ibr_new_borrower_share": 0.6147006160485154 + } + }, + "a_no_fsa": { + "households": { + "household_weight": 122537091.8856833, + "share_with_federal_education_debt": 0.1662222969167077, + "mean_among_borrowers": 43501.01349980745, + "median_among_borrowers": 24105.0, + "total_household_weight": 122537091.8856833, + "federal_education_debt_total": 886045907243.1461, + "parent_plus_share_of_total": 0.1721797017665568 + }, + "household_balance_bands": { + "under_5k": 0.11841969068975977, + "5k_to_10k": 0.12061799917651367, + "10k_to_20k": 0.18275573731202388, + "20k_to_40k": 0.24657242476854863, + "40k_to_60k": 0.09754696416735667, + "60k_to_80k": 0.10896577846277462, + "80k_to_100k": 0.0324338533289015, + "100k_to_200k": 0.06030004073479197, + "200k_plus": 0.032387511359329366 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 3635151.701101098, + "share_with_federal_education_debt": 0.20043023866536372, + "mean_among_borrowers": 21760.449372183906, + "median_among_borrowers": 16000.0 + }, + "25_to_34": { + "household_weight": 20129824.156942412, + "share_with_federal_education_debt": 0.2824461015587112, + "mean_among_borrowers": 33796.12572962709, + "median_among_borrowers": 21619.0 + }, + "35_to_49": { + "household_weight": 32722379.390550684, + "share_with_federal_education_debt": 0.24388267605585381, + "mean_among_borrowers": 43463.91455155131, + "median_among_borrowers": 22000.0 + }, + "50_to_61": { + "household_weight": 25133581.13988513, + "share_with_federal_education_debt": 0.17014380471932578, + "mean_among_borrowers": 56508.98868823854, + "median_among_borrowers": 29000.0 + }, + "62_and_older": { + "household_weight": 40916155.49720397, + "share_with_federal_education_debt": 0.04148648852349596, + "mean_among_borrowers": 52742.91477422361, + "median_among_borrowers": 34000.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 78968318.58011529, + "share_with_federal_education_debt": 0.1548403798120201, + "mean_among_borrowers": 44140.37454733786, + "median_among_borrowers": 25000.0 + }, + "black_non_hispanic": { + "household_weight": 14565930.804472141, + "share_with_federal_education_debt": 0.22913561066603055, + "mean_among_borrowers": 54636.83577767072, + "median_among_borrowers": 30000.0 + }, + "hispanic": { + "household_weight": 18710333.49436463, + "share_with_federal_education_debt": 0.15043332807146526, + "mean_among_borrowers": 27916.18079888531, + "median_among_borrowers": 17000.0 + }, + "other_or_multiple": { + "household_weight": 10292509.006731233, + "share_with_federal_education_debt": 0.193216371312724, + "mean_among_borrowers": 42938.61462233152, + "median_among_borrowers": 16000.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 24509830.709962953, + "share_with_federal_education_debt": 0.15713814350382035, + "mean_among_borrowers": 42800.44936701379, + "median_among_borrowers": 21000.0 + }, + "2": { + "household_weight": 24512390.04446271, + "share_with_federal_education_debt": 0.15676908851029417, + "mean_among_borrowers": 40155.276139348534, + "median_among_borrowers": 22224.0 + }, + "3": { + "household_weight": 24503618.53101112, + "share_with_federal_education_debt": 0.1582885566256086, + "mean_among_borrowers": 37731.592645025084, + "median_among_borrowers": 20000.0 + }, + "4": { + "household_weight": 24506035.805938605, + "share_with_federal_education_debt": 0.220142400639105, + "mean_among_borrowers": 42061.95878397995, + "median_among_borrowers": 28000.0 + }, + "5": { + "household_weight": 24505216.79430791, + "share_with_federal_education_debt": 0.13877545330840255, + "mean_among_borrowers": 56938.18158182969, + "median_among_borrowers": 22000.0 + } + }, + "borrowers": { + "borrower_weight": 21447181.90381908, + "mean_balance": 41312.929186531896, + "median_balance": 22224.0, + "balance_bands": { + "under_5k": 0.12432427440151143, + "5k_to_10k": 0.12387716117387236, + "10k_to_20k": 0.1918534035596076, + "20k_to_40k": 0.2499055320455334, + "40k_to_60k": 0.0987928859671185, + "60k_to_80k": 0.09712096237259826, + "80k_to_100k": 0.028401501670355163, + "100k_to_200k": 0.055778972428620316, + "200k_plus": 0.029945306380782872 + }, + "age_bands": { + "24_and_younger": 0.04172309997775765, + "25_to_34": 0.2935783973017066, + "35_to_49": 0.37648137984758434, + "50_to_61": 0.20704700006953808, + "62_and_older": 0.08117012280341329 + }, + "graduate_share_of_own_original_principal": 0.46015423787755827, + "ibr_new_borrower_share": 0.6219642890649367 + } + }, + "b_with_fsa": { + "households": { + "household_weight": 122537091.8856833, + "share_with_federal_education_debt": 0.3304083903971288, + "mean_among_borrowers": 41445.10695407523, + "median_among_borrowers": 20000.0, + "total_household_weight": 122537091.8856833, + "federal_education_debt_total": 1677999786395.3677, + "parent_plus_share_of_total": 0.06846155079543476 + }, + "household_balance_bands": { + "under_5k": 0.135564676794675, + "5k_to_10k": 0.15761388003444637, + "10k_to_20k": 0.19350342213568403, + "20k_to_40k": 0.2065728877678875, + "40k_to_60k": 0.09191337179261283, + "60k_to_80k": 0.07486999998004787, + "80k_to_100k": 0.03905860701857532, + "100k_to_200k": 0.06424842168964758, + "200k_plus": 0.03665473278642335 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 4658574.061326142, + "share_with_federal_education_debt": 0.689791483762517, + "mean_among_borrowers": 23020.88901034178, + "median_among_borrowers": 12662.0 + }, + "25_to_34": { + "household_weight": 20781207.858254902, + "share_with_federal_education_debt": 0.6286839594078948, + "mean_among_borrowers": 35278.18891892243, + "median_among_borrowers": 21000.0 + }, + "35_to_49": { + "household_weight": 32794797.71451219, + "share_with_federal_education_debt": 0.4624626677924237, + "mean_among_borrowers": 45750.67693336133, + "median_among_borrowers": 19716.0 + }, + "50_to_61": { + "household_weight": 24220618.80222953, + "share_with_federal_education_debt": 0.24408580499907598, + "mean_among_borrowers": 52136.92596716114, + "median_among_borrowers": 28503.0 + }, + "62_and_older": { + "household_weight": 40081893.449360535, + "share_with_federal_education_debt": 0.07810877666193722, + "mean_among_borrowers": 45043.5768845479, + "median_among_borrowers": 34000.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 79018371.30140859, + "share_with_federal_education_debt": 0.2966215749335051, + "mean_among_borrowers": 40901.807990338115, + "median_among_borrowers": 21000.0 + }, + "black_non_hispanic": { + "household_weight": 15776415.72017985, + "share_with_federal_education_debt": 0.48732745506493746, + "mean_among_borrowers": 46409.43511140771, + "median_among_borrowers": 25500.0 + }, + "hispanic": { + "household_weight": 17650587.89945151, + "share_with_federal_education_debt": 0.34057088784493655, + "mean_among_borrowers": 35970.1751113149, + "median_among_borrowers": 18000.0 + }, + "other_or_multiple": { + "household_weight": 10091716.964643355, + "share_with_federal_education_debt": 0.3318734212087308, + "mean_among_borrowers": 43677.99364815788, + "median_among_borrowers": 16000.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 24505888.518620066, + "share_with_federal_education_debt": 0.3852195292718262, + "mean_among_borrowers": 41805.033503133294, + "median_among_borrowers": 19200.0 + }, + "2": { + "household_weight": 24507705.40072792, + "share_with_federal_education_debt": 0.3659441126296723, + "mean_among_borrowers": 37318.761754539475, + "median_among_borrowers": 18000.0 + }, + "3": { + "household_weight": 24503645.411256474, + "share_with_federal_education_debt": 0.2818350832108356, + "mean_among_borrowers": 34824.64353110136, + "median_among_borrowers": 19073.0 + }, + "4": { + "household_weight": 24495966.212403823, + "share_with_federal_education_debt": 0.38308620535630405, + "mean_among_borrowers": 43326.87773015115, + "median_among_borrowers": 25000.0 + }, + "5": { + "household_weight": 24523886.342675015, + "share_with_federal_education_debt": 0.23604057618448832, + "mean_among_borrowers": 52098.97678365572, + "median_among_borrowers": 22645.0 + } + }, + "borrowers": { + "borrower_weight": 43776429.43223714, + "mean_balance": 38331.124949164565, + "median_balance": 19200.0, + "balance_bands": { + "under_5k": 0.14379786380574872, + "5k_to_10k": 0.1624862228927181, + "10k_to_20k": 0.2020688487028159, + "20k_to_40k": 0.2142283305095036, + "40k_to_60k": 0.09490804854988462, + "60k_to_80k": 0.0583468473014065, + "80k_to_100k": 0.032788689442000696, + "100k_to_200k": 0.060019046991652086, + "200k_plus": 0.03135610180426973 + }, + "age_bands": { + "24_and_younger": 0.08501684758922101, + "25_to_34": 0.3392297440562072, + "35_to_49": 0.356253422986174, + "50_to_61": 0.14716265309371995, + "62_and_older": 0.07233733227467784 + }, + "graduate_share_of_own_original_principal": 0.4693255659578221, + "ibr_new_borrower_share": 0.6290114738139596 + } + }, + "a_no_fsa_l2": { + "households": { + "household_weight": 122537091.88568327, + "share_with_federal_education_debt": 0.16563645838046798, + "mean_among_borrowers": 42162.23688501788, + "median_among_borrowers": 23000.0, + "total_household_weight": 122537091.88568327, + "federal_education_debt_total": 855750475417.7095, + "parent_plus_share_of_total": 0.1680363271903611 + }, + "household_balance_bands": { + "under_5k": 0.12261795764358152, + "5k_to_10k": 0.12560119592428387, + "10k_to_20k": 0.1861204725711393, + "20k_to_40k": 0.23801668825522546, + "40k_to_60k": 0.10225754716136082, + "60k_to_80k": 0.10176719684669226, + "80k_to_100k": 0.03572951107099876, + "100k_to_200k": 0.05602102279560625, + "200k_plus": 0.031868407731111735 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 4100474.1851678477, + "share_with_federal_education_debt": 0.20215649870740063, + "mean_among_borrowers": 21919.233422005138, + "median_among_borrowers": 14010.0 + }, + "25_to_34": { + "household_weight": 20004682.19138664, + "share_with_federal_education_debt": 0.2798219378696274, + "mean_among_borrowers": 34031.58155408465, + "median_among_borrowers": 21128.0 + }, + "35_to_49": { + "household_weight": 32659776.029665, + "share_with_federal_education_debt": 0.24833863788543387, + "mean_among_borrowers": 42695.94041080717, + "median_among_borrowers": 21000.0 + }, + "50_to_61": { + "household_weight": 25590562.704523593, + "share_with_federal_education_debt": 0.16554845166192733, + "mean_among_borrowers": 50596.32209593981, + "median_among_borrowers": 28742.0 + }, + "62_and_older": { + "household_weight": 40181596.77494021, + "share_with_federal_education_debt": 0.037896979589947685, + "mean_among_borrowers": 56763.36749516682, + "median_among_borrowers": 30000.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 82380202.74787456, + "share_with_federal_education_debt": 0.15294777210104576, + "mean_among_borrowers": 41812.70340643178, + "median_among_borrowers": 24000.0 + }, + "black_non_hispanic": { + "household_weight": 14048364.94189728, + "share_with_federal_education_debt": 0.2425139448394988, + "mean_among_borrowers": 49957.15583164976, + "median_among_borrowers": 30000.0 + }, + "hispanic": { + "household_weight": 16605141.446937382, + "share_with_federal_education_debt": 0.1516351891098961, + "mean_among_borrowers": 30960.749830908077, + "median_among_borrowers": 17000.0 + }, + "other_or_multiple": { + "household_weight": 9503382.748974059, + "share_with_federal_education_debt": 0.18644869173038747, + "mean_among_borrowers": 45577.717266638196, + "median_among_borrowers": 17055.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 24510291.26347278, + "share_with_federal_education_debt": 0.14873055869877072, + "mean_among_borrowers": 40970.24844805359, + "median_among_borrowers": 20200.0 + }, + "2": { + "household_weight": 24516810.65758673, + "share_with_federal_education_debt": 0.15808689215171848, + "mean_among_borrowers": 40062.008810140185, + "median_among_borrowers": 22000.0 + }, + "3": { + "household_weight": 24492991.83745575, + "share_with_federal_education_debt": 0.15103865042359083, + "mean_among_borrowers": 36573.180954063544, + "median_among_borrowers": 20000.0 + }, + "4": { + "household_weight": 24514296.116864473, + "share_with_federal_education_debt": 0.22358362017490513, + "mean_among_borrowers": 40447.22960054789, + "median_among_borrowers": 26000.0 + }, + "5": { + "household_weight": 24502702.010303557, + "share_with_federal_education_debt": 0.14671894956912873, + "mean_among_borrowers": 54001.25041791122, + "median_among_borrowers": 22000.0 + } + }, + "borrowers": { + "borrower_weight": 21428887.219970584, + "mean_balance": 39934.433675127824, + "median_balance": 22000.0, + "balance_bands": { + "under_5k": 0.12838043694421256, + "5k_to_10k": 0.1287888739265141, + "10k_to_20k": 0.1930078393891098, + "20k_to_40k": 0.24315637244126143, + "40k_to_60k": 0.10533190575367865, + "60k_to_80k": 0.0898769270380128, + "80k_to_100k": 0.0294626056287787, + "100k_to_200k": 0.053560328137816096, + "200k_plus": 0.02843471074061583 + }, + "age_bands": { + "24_and_younger": 0.044629940861963584, + "25_to_34": 0.29197857654118253, + "35_to_49": 0.38202367791123953, + "50_to_61": 0.2081437521267154, + "62_and_older": 0.07322405255889887 + }, + "graduate_share_of_own_original_principal": 0.4589063538453081, + "ibr_new_borrower_share": 0.6155169343113196 + } + }, + "b_with_fsa_l2": { + "households": { + "household_weight": 122537091.88568331, + "share_with_federal_education_debt": 0.3150829843940598, + "mean_among_borrowers": 43205.549547141425, + "median_among_borrowers": 22000.0, + "total_household_weight": 122537091.88568331, + "federal_education_debt_total": 1668138297187.8127, + "parent_plus_share_of_total": 0.07594350326808462 + }, + "household_balance_bands": { + "under_5k": 0.12114583198550095, + "5k_to_10k": 0.13581752216357212, + "10k_to_20k": 0.20256615308015288, + "20k_to_40k": 0.21902133405783172, + "40k_to_60k": 0.09479872344354949, + "60k_to_80k": 0.0774390496803849, + "80k_to_100k": 0.043440252170291044, + "100k_to_200k": 0.06810715084070801, + "200k_plus": 0.0376639825780089 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 4764140.996022275, + "share_with_federal_education_debt": 0.6127978699147862, + "mean_among_borrowers": 24567.251018702387, + "median_among_borrowers": 14010.0 + }, + "25_to_34": { + "household_weight": 20698788.632249083, + "share_with_federal_education_debt": 0.5787236920023119, + "mean_among_borrowers": 38051.561498701936, + "median_among_borrowers": 22224.0 + }, + "35_to_49": { + "household_weight": 32853749.2675365, + "share_with_federal_education_debt": 0.4463390560660761, + "mean_among_borrowers": 46902.73876101873, + "median_among_borrowers": 20000.0 + }, + "50_to_61": { + "household_weight": 24758994.944669947, + "share_with_federal_education_debt": 0.24008811189611548, + "mean_among_borrowers": 51905.60588478955, + "median_among_borrowers": 25000.0 + }, + "62_and_older": { + "household_weight": 39461418.0452055, + "share_with_federal_education_debt": 0.07862783821336401, + "mean_among_borrowers": 46499.814194718885, + "median_among_borrowers": 27000.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 82853219.2100646, + "share_with_federal_education_debt": 0.27947070589580525, + "mean_among_borrowers": 42353.35636970489, + "median_among_borrowers": 23000.0 + }, + "black_non_hispanic": { + "household_weight": 15436089.508440204, + "share_with_federal_education_debt": 0.4749438880548471, + "mean_among_borrowers": 50579.19156548265, + "median_among_borrowers": 27000.0 + }, + "hispanic": { + "household_weight": 14920580.91327152, + "share_with_federal_education_debt": 0.3313261283286711, + "mean_among_borrowers": 35114.923363945636, + "median_among_borrowers": 17300.0 + }, + "other_or_multiple": { + "household_weight": 9327202.253906973, + "share_with_federal_education_debt": 0.34087931101650815, + "mean_among_borrowers": 44989.194440070474, + "median_among_borrowers": 16630.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 24493815.457474664, + "share_with_federal_education_debt": 0.34044059418291056, + "mean_among_borrowers": 46450.77492591306, + "median_among_borrowers": 21000.0 + }, + "2": { + "household_weight": 24528121.501473986, + "share_with_federal_education_debt": 0.33883736871599485, + "mean_among_borrowers": 40172.53617674583, + "median_among_borrowers": 18000.0 + }, + "3": { + "household_weight": 24499770.686659425, + "share_with_federal_education_debt": 0.26582618634930477, + "mean_among_borrowers": 37265.38753939413, + "median_among_borrowers": 20000.0 + }, + "4": { + "household_weight": 24504369.13229914, + "share_with_federal_education_debt": 0.38699872324431855, + "mean_among_borrowers": 42380.620333453466, + "median_among_borrowers": 25347.0 + }, + "5": { + "household_weight": 24511015.10777609, + "share_with_federal_education_debt": 0.2433101677208347, + "mean_among_borrowers": 50693.401524864246, + "median_among_borrowers": 22000.0 + } + }, + "borrowers": { + "borrower_weight": 41948013.12651276, + "mean_balance": 39766.80116306832, + "median_balance": 20000.0, + "balance_bands": { + "under_5k": 0.1306093481484376, + "5k_to_10k": 0.14171529086046122, + "10k_to_20k": 0.2111099935619233, + "20k_to_40k": 0.22650124925886922, + "40k_to_60k": 0.09903566564252482, + "60k_to_80k": 0.06134181579146133, + "80k_to_100k": 0.03421594993424382, + "100k_to_200k": 0.06328170171125325, + "200k_plus": 0.032188985090825545 + }, + "age_bands": { + "24_and_younger": 0.08185715729349942, + "25_to_34": 0.3302412250790301, + "35_to_49": 0.35846824054480203, + "50_to_61": 0.15398107436842312, + "62_and_older": 0.07545230271424547 + }, + "graduate_share_of_own_original_principal": 0.4797743910529097, + "ibr_new_borrower_share": 0.6202572419325227 + } + } + }, + "weights": { + "a_no_fsa": { + "ratio_quantiles": { + "0.01": 0.021093872217825906, + "0.05": 0.02130755277192934, + "0.25": 0.021324127151351926, + "0.5": 0.02142283140750434, + "0.75": 0.04578317512756532, + "0.95": 1.6918602913398573, + "0.99": 4.7574832912510265 + }, + "share_at_cap": 0.0, + "borrower_households_weighted_mean_ratio": 1.0127064013566183, + "other_households_weighted_mean_ratio": 0.9975048707849745, + "borrower_household_weight_share": { + "initial": 0.16413671000206656, + "final": 0.1662222969167077 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 4149.419863864658 + }, + "total_weight": { + "initial": 122537091.8856833, + "final": 122537091.8856833 + } + }, + "b_with_fsa": { + "ratio_quantiles": { + "0.01": 0.0004344253173766719, + "0.05": 0.00043451230012664523, + "0.25": 0.00043496339985952853, + "0.5": 0.0004377489484246026, + "0.75": 0.001979172119977143, + "0.95": 1.9964949657458309, + "0.99": 4.978797918889173 + }, + "share_at_cap": 0.0, + "borrower_households_weighted_mean_ratio": 2.013007269324265, + "other_households_weighted_mean_ratio": 0.8010779006750334, + "borrower_household_weight_share": { + "initial": 0.16413671000206656, + "final": 0.3304083903971288 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 2950.5076688149948 + }, + "total_weight": { + "initial": 122537091.8856833, + "final": 122537091.8856833 + } + }, + "a_no_fsa_l2": { + "ratio_quantiles": { + "0.01": 0.13174878481408442, + "0.05": 0.13309886315863573, + "0.25": 0.13318075990218325, + "0.5": 0.13318284968948124, + "0.75": 0.1332263926427999, + "0.95": 1.2628518482058102, + "0.99": 1.9667972474133708 + }, + "share_at_cap": 5.241090146750524e-05, + "borrower_households_weighted_mean_ratio": 1.0091371904455895, + "other_households_weighted_mean_ratio": 0.9982057491980475, + "borrower_household_weight_share": { + "initial": 0.16413671000206656, + "final": 0.16563645838046798 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 6434.762084227589 + }, + "total_weight": { + "initial": 122537091.8856833, + "final": 122537091.88568327 + } + }, + "b_with_fsa_l2": { + "ratio_quantiles": { + "0.01": 0.0038616930515874615, + "0.05": 0.003861782100952195, + "0.25": 0.0038618235972816537, + "0.5": 0.003862017613440734, + "0.75": 0.004042756844803156, + "0.95": 1.4813982690064946, + "0.99": 2.800846081366575 + }, + "share_at_cap": 0.0, + "borrower_households_weighted_mean_ratio": 1.9196375045539342, + "other_households_weighted_mean_ratio": 0.8194127243076241, + "borrower_household_weight_share": { + "initial": 0.16413671000206656, + "final": 0.3150829843940598 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 4248.393703216165 + }, + "total_weight": { + "initial": 122537091.8856833, + "final": 122537091.88568331 + } + } + }, + "seconds": 794.2393439030001 +} diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/fiscal_targets.py b/packages/microcosm-build/src/microcosm/build/us_runtime/fiscal_targets.py index 8ad5c19839..9b07ef9915 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/fiscal_targets.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/fiscal_targets.py @@ -29,6 +29,11 @@ from microcosm.build.us_runtime.congressional_district_vintage import ( translate_congressional_district_facts_to_current_vintage, ) +from microcosm.build.us_runtime.fsa_student_loan_targets import ( + FSA_SOURCE_NAME, + apply_fsa_student_loan_plan, + plan_fsa_student_loan_targets, +) from microcosm.build.us_runtime.target_aging import ( age_us_dollar_targets, enforce_period_contract, @@ -1011,6 +1016,7 @@ def compile_us_fiscal_target_registry( congressional_district_vintage_crosswalk: object | None = None, age_targets: bool = False, allow_unaged_dollar_targets: bool = False, + student_loan_targets: bool = False, ) -> TargetRegistry: """Resolve US fiscal targets from an external Ledger fact feed. @@ -1032,6 +1038,13 @@ def compile_us_fiscal_target_registry( unless aging transformed it. Set this to record an explicit, auditable waiver instead of raising; every waived target carries ``period_contract_waiver`` metadata in diagnostics. + student_loan_targets: Bind Federal Student Aid's portfolio facts + (``ed_fsa``) to the SCF education-debt stage's person balances + (microcosm#1074; see + :mod:`microcosm.build.us_runtime.fsa_student_loan_targets`). Only + a build that carries those columns can materialize the targets, + so the release tool sets this with ``--scf-education-debt``; + otherwise the facts are inert. """ materialized_facts = tuple(facts) if congressional_district_vintage_crosswalk is not None: @@ -1039,6 +1052,11 @@ def compile_us_fiscal_target_registry( materialized_facts, congressional_district_vintage_crosswalk, ) + student_loan_plan = ( + plan_fsa_student_loan_targets(materialized_facts, target_period=target_period) + if student_loan_targets + else None + ) references = ( *_dynamic_us_fiscal_target_references( materialized_facts, @@ -1048,12 +1066,20 @@ def compile_us_fiscal_target_registry( US_JCT_TAX_EXPENDITURE_TARGET_REFERENCES, target_period=target_period, ), + *(student_loan_plan.references if student_loan_plan is not None else ()), ) registry = compile_ledger_target_references( materialized_facts, references, country="us", ) + if student_loan_plan is not None: + # FSA references resolve at their own reference quarter; the plan + # moves them to the build period at their reconciled values + # (microcosm#1074), before any pass that reads periods or ages. + registry = apply_fsa_student_loan_plan( + registry, student_loan_plan, target_period=target_period + ) registry = _uprate_cross_period_eitc_decompositions(registry) registry = _with_derived_chip_enrollment_targets(registry) registry = _without_m_chip_state_chip_enrollment_targets(registry) @@ -3118,6 +3144,11 @@ def _reference_from_ledger_fact( return _ssa_ssi_reference_from_fact(fact, target_period=target_period) if source_name == "bea": return _bea_reference_from_fact(fact, target_period=target_period) + if source_name == FSA_SOURCE_NAME: + # Federal Student Aid portfolio facts bind only through + # plan_fsa_student_loan_targets, which reconciles the tables to one + # in-scope control at one reference quarter (microcosm#1074). + return None if source_name == "jct": # JCT facts never bind through dynamic dispatch: tax-expenditure rows # compile only as declared SimpleTaxExpenditureReform references diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/fsa_student_loan_targets.py b/packages/microcosm-build/src/microcosm/build/us_runtime/fsa_student_loan_targets.py new file mode 100644 index 0000000000..c685cac601 --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/fsa_student_loan_targets.py @@ -0,0 +1,1054 @@ +"""Federal Student Aid portfolio targets for federal student loan balances. + +microcosm#1074 calibrates the person balances the SCF education-debt stage +imputes (``federal_student_loan_balance`` and +``federal_parent_plus_loan_balance``, microcosm#1073) to Federal Student Aid's +federal student loan portfolio tables, which Chronicle stores as published +(PolicyEngine/chronicle#310). Chronicle keeps each table's own level; the +alignment across tables, the treatment of FSA's "Not Reported" and "Other" +rows and the reference period are Microcosm's, and live here. + +What binds. One person's federal balance is ``own + Parent PLUS``; a borrower +is a person whose federal balance is positive. FSA's borrower tables count a +Parent PLUS borrower as the parent, so the person holding the loan is the one +counted, which is how the stage assigns those balances. + +- **By state** (``portfolio_by_location``): the balance and the borrower count + of each of the 50 states and DC. +- **By borrower age** (``portfolio_by_age``): balance and borrowers in each + age band, on the person's age. +- **By debt size** (``portfolio_by_debt_size``): balance and borrowers in each + band of the person's federal balance (lower edge inclusive, upper exclusive, + as FSA's Definitions sheet states). +- **By loan type** (``portfolio_by_loan_type``): the Parent PLUS balance, and + the balance of every other loan type, against the two person columns. FSA + files a consolidated Parent PLUS loan under "Consolidation", so its Parent + PLUS row is a lower bound on the stage's concept (every loan for a child's + education, consolidated or not). + +Repayment plans, the portfolio summary and the loan-type recipient counts stay +diagnostic only: :data:`FSA_DIAGNOSTIC_TABLES` and the row rules in +:func:`plan_fsa_student_loan_targets` give each reason. + +Reference period. The build's period is the H5's (2024), but the balances are +stocks that the student-debt analysis reads as they stand (its reference year +is 2026), and the stage's SCF draws are 2025 survey-date dollars. So the +targets are FSA's levels at one reference date, unaged: +``period_alignment = stock_at_source_reference_date``, which +:mod:`microcosm.build.us_runtime.target_aging` recognises as a declared +alignment. The reference date is the latest quarter that every bound table +publishes (FY2026 Q2, 31 March 2026, at chronicle#347): the location workbook +publishes only that date, and holding the other tables to it keeps every family +a statement about one portfolio on one day. Later quarters of the age, +debt-size and loan-type tables stay in the receipt. + +One control total. FSA's borrower tables do not agree exactly with one another +or with its recipient tables, and the location table holds rows the host +cannot carry: + +- "Not Reported" (FFEL and Perkins loans whose commercial lenders need not + report an address) is allocated to every reported location in proportion to + its reported balance, or its reported borrowers for the count. +- Puerto Rico and "Other" (an address outside the states and territories the + table lists) are outside the host's universe, which is the 50 states and DC + that the CPS samples. They leave, with their share of "Not Reported". + +The 51 allocated state levels sum to the in-scope control. The age and +debt-size bands, and the two loan-type rows, bind as their table's shares of +that control (``control x row / partition``, the microcosm#940 pattern), so all +four families describe one in-scope total. A table's own "not reported" age row +is in no partition, which allocates it across the reported bands the same way. +""" + +from __future__ import annotations + +import math +from collections.abc import Iterable, Mapping +from dataclasses import dataclass, field, replace +from typing import Any + +import numpy as np +import pandas as pd + +from microcosm.build.ledger_targets import LedgerTargetReference +from microcosm.calibrate import ( + CalibrationHierarchySeed, + HierarchyCategory, + HierarchyNode, + TargetRegistry, + TargetSpec, + calibration_provider_label, + calibration_variable_label, +) +from microcosm.calibrate.geography_constants import US_STATE_FIPS_TO_POSTAL + +__all__ = [ + "FSA_BALANCE_COLUMNS", + "FSA_BALANCE_LOWER_BOUND_KEY", + "FSA_BALANCE_UPPER_BOUND_KEY", + "FSA_BOUND_TABLES", + "FSA_CATEGORY_BY_MEASURE", + "FSA_DIAGNOSTIC_TABLES", + "FSA_MATERIALIZER", + "FSA_MEASURE_KEY", + "FSA_MEASURES", + "FSA_PERIOD_ALIGNMENT", + "FSA_SOURCE_NAME", + "FSA_TARGET_FAMILY", + "FsaTargetPlan", + "apply_fsa_student_loan_plan", + "fsa_student_loan_household_values", + "fsa_student_loan_target_receipt", + "plan_fsa_student_loan_targets", +] + +FSA_SOURCE_NAME = "ed_fsa" +FSA_TARGET_FAMILY = "ed_fsa" +#: The release materializer that reads the stage's stored person columns. +FSA_MATERIALIZER = "fsa_stored_student_loan_balances" +#: Declared in :mod:`microcosm.build.us_runtime.target_aging`: the value is a +#: stock at its source reference date, consumed unaged at the build period. +FSA_PERIOD_ALIGNMENT = "stock_at_source_reference_date" +FSA_OWN_BALANCE_COLUMN = "federal_student_loan_balance" +FSA_PARENT_PLUS_BALANCE_COLUMN = "federal_parent_plus_loan_balance" +FSA_BALANCE_COLUMNS: tuple[str, str] = ( + FSA_OWN_BALANCE_COLUMN, + FSA_PARENT_PLUS_BALANCE_COLUMN, +) + +#: Spec metadata naming what the materializer sums. +FSA_MEASURE_KEY = "fsa_measure" +FSA_TOTAL_BALANCE = "total_balance" +FSA_BORROWERS = "borrowers" +FSA_PARENT_PLUS_BALANCE = "parent_plus_balance" +FSA_BALANCE_EXCLUDING_PARENT_PLUS = "balance_excluding_parent_plus" +#: measure -> (person columns summed, positive-indicator count). +FSA_MEASURES: Mapping[str, tuple[tuple[str, ...], bool]] = { + FSA_TOTAL_BALANCE: (FSA_BALANCE_COLUMNS, False), + FSA_BORROWERS: (FSA_BALANCE_COLUMNS, True), + FSA_PARENT_PLUS_BALANCE: ((FSA_PARENT_PLUS_BALANCE_COLUMN,), False), + FSA_BALANCE_EXCLUDING_PARENT_PLUS: ((FSA_OWN_BALANCE_COLUMN,), False), +} +#: Hierarchy category (under provider ``ed_fsa``) of each measure. +FSA_CATEGORY_BY_MEASURE: Mapping[str, str] = { + FSA_TOTAL_BALANCE: "federal_student_loan_balance", + FSA_BORROWERS: "federal_student_loan_borrowers", + FSA_PARENT_PLUS_BALANCE: "parent_plus_loan_balance", + FSA_BALANCE_EXCLUDING_PARENT_PLUS: "loan_balance_excluding_parent_plus", +} +#: Compiled edges of a debt-size band, on the person's federal balance. +FSA_BALANCE_LOWER_BOUND_KEY = "fsa_balance_lower_bound" +FSA_BALANCE_UPPER_BOUND_KEY = "fsa_balance_upper_bound" +#: Compiled edges of an age band; the names the release's restated-age guard +#: reads (``RESTATED_AGE_BAND_COMPILED_KEYS``), with the same attestation. +_AGE_LOWER_BOUND_KEY = "age_lower_bound" +_AGE_UPPER_BOUND_KEY = "age_upper_bound" +_AGE_BOUND_STAMP_SOURCE_KEY = "age_bound_stamp_source" +_AGE_BOUND_STAMP_FROM_CONSTRAINT_ROWS = "constraint_rows" + +_LOCATION = "portfolio_by_location" +_AGE = "portfolio_by_age" +_DEBT_SIZE = "portfolio_by_debt_size" +_LOAN_TYPE = "portfolio_by_loan_type" +FSA_BOUND_TABLES: tuple[str, ...] = (_LOCATION, _AGE, _DEBT_SIZE, _LOAN_TYPE) +_DOLLARS = "dollars_outstanding" +_BORROWER_COUNT = "borrowers" +_MEASURE_BY_SOURCE_MEASURE = { + _DOLLARS: FSA_TOTAL_BALANCE, + _BORROWER_COUNT: FSA_BORROWERS, +} +_PARENT_PLUS_LOAN_TYPE = "parent_plus" +_NOT_REPORTED_LOCATION = "not_reported" +_OTHER_LOCATION = "other" +_PUERTO_RICO_FIPS = "72" +_AGE_VARIABLE = "age" +_BALANCE_VARIABLE = "federal_student_loan_balance" + +#: Every other FSA record-set table, with why it stays diagnostic only. +FSA_DIAGNOSTIC_TABLES: Mapping[str, str] = { + "portfolio_summary": ( + "Recipient-based totals by loan program (Direct Loan, FFEL, Perkins). " + "The stage's balances do not record the program, and FSA counts the " + "student, not the parent, as the recipient of a Parent PLUS loan; the " + "borrower-based location table sets the level instead." + ), + "dl_by_repayment_plan": ( + "Repayment plan: diagnostic only. The SCF records only an " + "income-driven yes/no, the build carries no plan column, and FSA's " + "recipient counts are loan-level (microcosm#1074)." + ), + "dl_idr_by_partial_financial_hardship": ( + "Income-driven plans by partial financial hardship: no plan or " + "hardship column in the build; diagnostic only." + ), + "ed_held_ffel_by_repayment_plan": ( + "ED-held FFEL by repayment plan: no plan column in the build; diagnostic only." + ), + "ed_held_ffel_idr_by_partial_financial_hardship": ( + "ED-held FFEL IBR by partial financial hardship: no plan or hardship " + "column in the build; diagnostic only." + ), + "federally_managed_by_repayment_plan": ( + "Federally managed portfolio by repayment plan: no plan column in the " + "build; diagnostic only." + ), + "federally_managed_idr_by_partial_financial_hardship": ( + "Federally managed IBR/PAYE by partial financial hardship: no plan or " + "hardship column in the build; diagnostic only." + ), +} + +_REASON_OTHER_QUARTER = ( + "Not the reference quarter: every bound table binds at the latest quarter " + "all four publish ({reference})." +) +_REASON_PUERTO_RICO = ( + "Puerto Rico is outside the host universe (the CPS samples the 50 states " + "and DC). Its rows, with their pro-rata share of Not Reported, leave the " + "in-scope control." +) +_REASON_OTHER_LOCATION = ( + "'Other' is a borrower address outside the states and territories the " + "table lists, outside the host universe; it leaves the in-scope control " + "with its pro-rata share of Not Reported." +) +_REASON_NOT_REPORTED_LOCATION = ( + "'Not Reported' (FFEL and Perkins loans whose commercial lenders need not " + "report an address) has no state; it is allocated to every reported " + "location in proportion to that location's reported value." +) +_REASON_NOT_REPORTED_AGE = ( + "Age not reported: in no partition, so the reported bands, which bind as " + "shares of the in-scope control, absorb it pro rata." +) +_REASON_LOAN_TYPE_RECIPIENTS = ( + "Loan-type recipient counts are loan-level (a borrower with two loan types " + "counts twice), so they are not counts of people." +) +_REASON_LOAN_TYPE_MEMBER = ( + "A member of the balance-excluding-Parent-PLUS target: the build records " + "own and Parent PLUS balances, not loan types." +) +_REASON_STAFFORD_SUBTOTAL = ( + "Stafford (Combined) is a subtotal of rows the loan-type targets already count." +) +_REASON_UNREVIEWED_TABLE = ( + "An FSA table with no reviewed binding: inert until one is added." +) + + +@dataclass(frozen=True) +class FsaTargetPlan: + """The FSA references a feed yields, their reconciled values and receipt. + + ``references`` compile through + :func:`microcosm.build.ledger_targets.compile_ledger_target_references`; + :func:`apply_fsa_student_loan_plan` then sets each compiled spec's value to + ``values[name]`` and stamps ``metadata[name]``. ``dispositions`` names + every FSA fact in the feed once, with what the plan did with it. + """ + + reference_period: str | None + reference_label: str | None + references: tuple[LedgerTargetReference, ...] = () + values: Mapping[str, float] = field(default_factory=dict) + metadata: Mapping[str, Mapping[str, str]] = field(default_factory=dict) + labels: Mapping[str, str] = field(default_factory=dict) + dispositions: tuple[Mapping[str, str], ...] = () + controls: Mapping[str, Mapping[str, float]] = field(default_factory=dict) + status: str = "no_fsa_facts" + + +def plan_fsa_student_loan_targets( + facts: Iterable[object], + *, + target_period: int | str, +) -> FsaTargetPlan: + """Plan the FSA target references and their reconciled values. + + Raises when the feed carries some bound tables but not all of them, when + they share no quarter, or when a reference-quarter table is malformed (a + band partition that is not contiguous, a duplicate row, a state twice), so + a partial or changed FSA table cannot bind silently. + """ + + fsa_facts = tuple(fact for fact in facts if _source_name(fact) == FSA_SOURCE_NAME) + if not fsa_facts: + return FsaTargetPlan(reference_period=None, reference_label=None) + by_table: dict[str, list[object]] = {} + for fact in fsa_facts: + by_table.setdefault(_table(fact), []).append(fact) + missing = [table for table in FSA_BOUND_TABLES if table not in by_table] + if missing: + raise ValueError( + "FSA student loan targets need every bound table; the feed carries " + f"ed_fsa facts but not {missing!r} (microcosm#1074)." + ) + periods = [ + { + _period(fact) + for fact in by_table[table] + if _measure_id(fact) in _MEASURE_BY_SOURCE_MEASURE + } + for table in FSA_BOUND_TABLES + ] + common = set.intersection(*periods) + if not common: + raise ValueError( + "FSA bound tables share no quarter: " + + "; ".join( + f"{table}={sorted(table_periods)}" + for table, table_periods in zip(FSA_BOUND_TABLES, periods, strict=True) + ) + ) + reference = max(common, key=_month_key) + at_reference = { + table: [fact for fact in by_table[table] if _period(fact) == reference] + for table in FSA_BOUND_TABLES + } + reference_label = _location_reference_label(at_reference[_LOCATION]) + dispositions: dict[int, dict[str, str]] = {} + + def dispose(fact: object, disposition: str, reason: str, **extra: str) -> None: + dispositions[id(fact)] = { + "source_record_id": _source_record_id(fact), + "table": _table(fact), + "period": _period(fact), + "measure": _measure_id(fact), + "disposition": disposition, + "reason": reason, + **extra, + } + + for table, table_facts in by_table.items(): + if table not in FSA_BOUND_TABLES: + reason = FSA_DIAGNOSTIC_TABLES.get(table, _REASON_UNREVIEWED_TABLE) + kind = "diagnostic" if table in FSA_DIAGNOSTIC_TABLES else "unreviewed" + for fact in table_facts: + dispose(fact, kind, reason) + continue + for fact in table_facts: + if _period(fact) != reference: + dispose( + fact, + "other_quarter", + _REASON_OTHER_QUARTER.format(reference=reference), + ) + + builder = _PlanBuilder( + target_period=target_period, + reference_period=reference, + reference_label=reference_label, + ) + controls = _plan_locations(at_reference[_LOCATION], builder, dispose) + for table in (_AGE, _DEBT_SIZE): + _plan_bands(table, at_reference[table], controls, builder, dispose) + _plan_loan_types(at_reference[_LOAN_TYPE], controls, builder, dispose) + for fact in fsa_facts: + if id(fact) not in dispositions: + raise AssertionError( + f"FSA fact {_source_record_id(fact)!r} has no disposition." + ) + return FsaTargetPlan( + reference_period=reference, + reference_label=reference_label, + references=tuple(builder.references), + values=dict(builder.values), + metadata={name: dict(meta) for name, meta in builder.metadata.items()}, + labels=dict(builder.labels), + dispositions=tuple(dispositions[id(fact)] for fact in fsa_facts), + controls={ + measure: dict(control) for measure, control in sorted(controls.items()) + }, + status="bound", + ) + + +def apply_fsa_student_loan_plan( + registry: TargetRegistry, + plan: FsaTargetPlan, + *, + target_period: int | str, +) -> TargetRegistry: + """Set each compiled FSA spec to its reconciled value at the build period. + + The compile resolved each reference at its fact's own period (exact); the + spec then moves to the build period, keeps the published value in + metadata, and takes the Microcosm target label, because its value is no + longer the published cell. + """ + + if not plan.values: + return registry + specs: list[TargetSpec] = [] + seen: set[str] = set() + for spec in registry.specs: + if spec.name not in plan.values: + specs.append(spec) + continue + seen.add(spec.name) + hierarchy = spec.hierarchy + if hierarchy is not None: + hierarchy = replace( + hierarchy, + target=HierarchyNode(id=spec.name, label=plan.labels[spec.name]), + ) + # The Chronicle cell's own label describes the published value at its + # own period, which this spec no longer carries. + metadata = { + key: value + for key, value in spec.metadata.items() + if key != "diagnostic_target_label" + } + specs.append( + replace( + spec, + value=float(plan.values[spec.name]), + period=target_period, + metadata={ + **metadata, + **dict(plan.metadata[spec.name]), + "fsa_published_value": _format_float(spec.value), + "target_period": str(target_period), + }, + hierarchy=hierarchy, + ) + ) + missing = sorted(set(plan.values) - seen) + if missing: + raise ValueError( + f"FSA plan references did not compile: {missing[:5]!r} " + f"({len(missing)} in all)." + ) + return TargetRegistry(specs, country=registry.country) + + +def fsa_student_loan_target_receipt( + facts: Iterable[object], + *, + target_period: int | str, + plan: FsaTargetPlan | None = None, +) -> dict[str, Any]: + """Every FSA fact's disposition, the controls and each target's value.""" + + plan = plan or plan_fsa_student_loan_targets(facts, target_period=target_period) + counts: dict[str, int] = {} + for disposition in plan.dispositions: + counts[disposition["disposition"]] = ( + counts.get(disposition["disposition"], 0) + 1 + ) + return { + "schema_version": 1, + "issue": "PolicyEngine/microcosm#1074", + "status": plan.status, + "target_period": str(target_period), + "reference_period": plan.reference_period, + "reference_label": plan.reference_label, + "period_alignment": FSA_PERIOD_ALIGNMENT, + "controls": { + measure: dict(control) for measure, control in plan.controls.items() + }, + "targets": [ + { + "name": name, + "label": plan.labels[name], + "value": plan.values[name], + **dict(plan.metadata[name]), + } + for name in sorted(plan.values) + ], + "disposition_counts": dict(sorted(counts.items())), + "dispositions": [dict(item) for item in plan.dispositions], + } + + +def fsa_student_loan_household_values( + frame: Any, + metadata: Mapping[str, str], +) -> np.ndarray | None: + """One FSA target's household column, from the stage's stored balances. + + Sums ``FSA_MEASURES[metadata["fsa_measure"]]`` over each household's + people (a positive-balance indicator for borrower counts), within the + person's age band and balance band when the spec compiles them, and + zeroes households outside the spec's state. Returns ``None`` when the + frame does not carry both balance columns, so the target is not + materialized and the release reports it dropped. + """ + + person = frame.table("person") + if any(column not in person.columns for column in FSA_BALANCE_COLUMNS): + return None + measure = metadata.get(FSA_MEASURE_KEY, "") + if measure not in FSA_MEASURES: + raise ValueError(f"Unknown FSA measure {measure!r}.") + columns, indicator = FSA_MEASURES[measure] + balances = { + column: pd.to_numeric(person[column], errors="coerce") + .fillna(0.0) + .to_numpy(dtype=np.float64) + for column in FSA_BALANCE_COLUMNS + } + total = balances[FSA_OWN_BALANCE_COLUMN] + balances[FSA_PARENT_PLUS_BALANCE_COLUMN] + values = np.zeros(len(person), dtype=np.float64) + for column in columns: + values = values + balances[column] + if indicator: + values = (values > 0.0).astype(np.float64) + mask = np.ones(len(person), dtype=bool) + if _AGE_LOWER_BOUND_KEY in metadata or _AGE_UPPER_BOUND_KEY in metadata: + age = ( + pd.to_numeric(person[_AGE_VARIABLE], errors="coerce") + .fillna(-1.0) + .to_numpy(dtype=np.float64) + ) + mask &= _band_mask(age, metadata, _AGE_LOWER_BOUND_KEY, _AGE_UPPER_BOUND_KEY) + if ( + FSA_BALANCE_LOWER_BOUND_KEY in metadata + or FSA_BALANCE_UPPER_BOUND_KEY in metadata + ): + mask &= _band_mask( + total, + metadata, + FSA_BALANCE_LOWER_BOUND_KEY, + FSA_BALANCE_UPPER_BOUND_KEY, + ) + household = frame.table("household") + household_ids = household["household_id"].to_numpy() + positions = ( + pd.Series(np.arange(len(household_ids), dtype=np.int64), index=household_ids) + .reindex(person["person_household_id"].to_numpy()) + .to_numpy() + ) + if np.isnan(positions.astype(np.float64)).any(): + raise ValueError("A person's household is missing from the household table.") + out = np.zeros(len(household_ids), dtype=np.float64) + np.add.at(out, positions.astype(np.int64), values * mask) + state_fips = metadata.get("state_fips") + if state_fips: + out = np.where( + household["state_fips"].to_numpy().astype(np.int64) == int(state_fips), + out, + 0.0, + ) + return out + + +class _PlanBuilder: + def __init__( + self, + *, + target_period: int | str, + reference_period: str, + reference_label: str | None, + ) -> None: + self.target_period = target_period + self.reference_period = reference_period + self.reference_label = reference_label + self.references: list[LedgerTargetReference] = [] + self.values: dict[str, float] = {} + self.metadata: dict[str, dict[str, str]] = {} + self.labels: dict[str, str] = {} + + def add( + self, + *, + name: str, + measure: str, + target_role: str, + source_measure_id: str, + value: float, + label: str, + compiled: Mapping[str, str], + reconciliation: Mapping[str, str], + facts: tuple[object, ...], + ) -> None: + if name in self.values: + raise ValueError(f"FSA target {name!r} planned twice.") + if not math.isfinite(value) or value < 0: + raise ValueError(f"FSA target {name!r} reconciled to {value!r}.") + category = FSA_CATEGORY_BY_MEASURE[measure] + _, indicator = FSA_MEASURES[measure] + metadata = { + "materializer": FSA_MATERIALIZER, + FSA_MEASURE_KEY: measure, + "measure_mode": "indicator_sum" if indicator else "sum", + "fsa_columns": ",".join(FSA_MEASURES[measure][0]), + "target_role": target_role, + "source_measure_id": source_measure_id, + "source_period": self.reference_period, + "target_period": str(self.target_period), + "period_alignment": FSA_PERIOD_ALIGNMENT, + "fsa_reference_period": self.reference_period, + **compiled, + } + if self.reference_label: + metadata["fsa_reference_label"] = self.reference_label + hierarchy = _hierarchy_seed(category, target_label=label) + if len(facts) == 1: + reference = LedgerTargetReference( + name=name, + ledger_source_record_id=_source_record_id(facts[0]), + entity="household", + measure=name, + period=self.reference_period, + period_match_policy="exact", + family=FSA_TARGET_FAMILY, + metadata=metadata, + hierarchy=hierarchy, + ) + else: + reference = LedgerTargetReference( + name=name, + ledger_selector={"source_name": FSA_SOURCE_NAME}, + value_operation="linear_combination", + value_operands=tuple( + {"source_record_id": _source_record_id(fact), "weight": 1.0} + for fact in facts + ), + expected_member_count=len(facts), + entity="household", + measure=name, + period=self.reference_period, + period_match_policy="exact", + family=FSA_TARGET_FAMILY, + metadata=metadata, + hierarchy=hierarchy, + ) + self.references.append(reference) + self.values[name] = float(value) + self.metadata[name] = dict(reconciliation) + self.labels[name] = label + + +def _plan_locations( + facts: list[object], + builder: _PlanBuilder, + dispose: Any, +) -> dict[str, dict[str, float]]: + """State targets with Not Reported allocated; returns the in-scope controls.""" + + controls: dict[str, dict[str, float]] = {} + for source_measure, measure in _MEASURE_BY_SOURCE_MEASURE.items(): + rows = [fact for fact in facts if _measure_id(fact) == source_measure] + states: dict[str, object] = {} + out_of_scope: list[tuple[object, str]] = [] + not_reported: list[object] = [] + for fact in rows: + value_id = _str_at(fact, "layout", "groupby_value_id") + fips = _state_fips(fact) + if value_id == _NOT_REPORTED_LOCATION: + not_reported.append(fact) + elif fips is not None and fips != _PUERTO_RICO_FIPS: + if fips in states: + raise ValueError(f"FSA location table repeats state {fips}.") + states[fips] = fact + elif fips == _PUERTO_RICO_FIPS or _geography_id(fact).endswith("US72"): + out_of_scope.append((fact, _REASON_PUERTO_RICO)) + elif value_id == _OTHER_LOCATION: + out_of_scope.append((fact, _REASON_OTHER_LOCATION)) + else: + raise ValueError( + f"FSA location row {_source_record_id(fact)!r} is neither a " + "state nor a reviewed statistical-scope row." + ) + if sorted(states) != sorted(US_STATE_FIPS_TO_POSTAL): + missing = sorted(set(US_STATE_FIPS_TO_POSTAL) - set(states)) + raise ValueError( + f"FSA location table ({source_measure}) is missing states {missing}." + ) + if len(not_reported) > 1: + raise ValueError("FSA location table has more than one Not Reported row.") + state_sum = math.fsum(_value(fact) for fact in states.values()) + out_of_scope_sum = math.fsum(_value(fact) for fact, _ in out_of_scope) + not_reported_value = math.fsum(_value(fact) for fact in not_reported) + reported = state_sum + out_of_scope_sum + if reported <= 0: + raise ValueError("FSA location table reports no positive balance.") + published_total = reported + not_reported_value + allocation = published_total / reported + in_scope = state_sum * allocation + controls[measure] = { + "published_states_and_dc": state_sum, + "published_out_of_scope": out_of_scope_sum, + "published_not_reported": not_reported_value, + "published_total": published_total, + "not_reported_allocation_factor": allocation, + "in_scope_control": in_scope, + "in_scope_share_of_total": in_scope / published_total, + } + for fact in not_reported: + dispose(fact, "allocated", _REASON_NOT_REPORTED_LOCATION) + for fact, reason in out_of_scope: + dispose(fact, "out_of_scope", reason) + for fips, fact in sorted(states.items()): + name = _source_record_id(fact) + state = _str_at(fact, "geography", "name") or US_STATE_FIPS_TO_POSTAL[fips] + builder.add( + name=name, + measure=measure, + target_role=f"fsa_state_{_role_suffix(measure)}", + source_measure_id=source_measure, + value=_value(fact) * allocation, + label=f"{_measure_label(measure)}, {state}", + compiled={"state_fips": fips}, + reconciliation={ + "fsa_reconciliation": "not_reported_allocated_pro_rata", + "fsa_reconciliation_factor": _format_float(allocation), + "fsa_control_value": _format_float(in_scope), + }, + facts=(fact,), + ) + dispose( + fact, + "bound", + "State level, Not Reported allocated pro rata.", + target=name, + ) + if set(controls) != set(_MEASURE_BY_SOURCE_MEASURE.values()): + raise ValueError("FSA location table lacks a balance or a borrower count.") + return controls + + +def _band_lower_bound(band: tuple[float, float, object]) -> float: + """A (lower, upper, fact) band's lower edge, its sort key.""" + + lower, _, _ = band + return lower + + +def _plan_bands( + table: str, + facts: list[object], + controls: Mapping[str, Mapping[str, float]], + builder: _PlanBuilder, + dispose: Any, +) -> None: + variable = _AGE_VARIABLE if table == _AGE else _BALANCE_VARIABLE + for source_measure, measure in _MEASURE_BY_SOURCE_MEASURE.items(): + rows = [fact for fact in facts if _measure_id(fact) == source_measure] + bands: list[tuple[float, float, object]] = [] + for fact in rows: + bounds = _constraint_bounds(fact, variable) + if bounds is None: + if table == _AGE and _has_constraint(fact, "age_reporting_status"): + dispose(fact, "allocated", _REASON_NOT_REPORTED_AGE) + continue + raise ValueError( + f"FSA {table} row {_source_record_id(fact)!r} carries no " + f"{variable} band." + ) + bands.append((*bounds, fact)) + bands.sort(key=_band_lower_bound) + if not bands: + raise ValueError(f"FSA {table} has no {source_measure} bands.") + if bands[0][0] != -math.inf or bands[-1][1] != math.inf: + raise ValueError(f"FSA {table} bands do not cover every {variable}.") + for (_, upper, _), (lower, _, _) in zip(bands, bands[1:], strict=False): + if upper != lower: + raise ValueError( + f"FSA {table} {source_measure} bands are not contiguous at " + f"{upper!r} / {lower!r}." + ) + partition = math.fsum(_value(fact) for _, _, fact in bands) + if partition <= 0: + raise ValueError(f"FSA {table} {source_measure} partition is empty.") + control = controls[measure]["in_scope_control"] + for lower, upper, fact in bands: + name = _source_record_id(fact) + share = _value(fact) / partition + compiled = ( + _age_band_metadata(lower, upper) + if table == _AGE + else _balance_band_metadata(lower, upper) + ) + builder.add( + name=name, + measure=measure, + target_role=( + f"fsa_{'age' if table == _AGE else 'debt_size'}_band_" + f"{_role_suffix(measure)}" + ), + source_measure_id=source_measure, + value=control * share, + label=( + f"{_measure_label(measure)}, " + f"{_str_at(fact, 'layout', 'groupby_dimension_label').lower()} " + f"{_str_at(fact, 'layout', 'groupby_value_label')}" + ), + compiled=compiled, + reconciliation={ + "fsa_reconciliation": "share_of_in_scope_location_control", + "fsa_share": _format_float(share), + "fsa_partition_value": _format_float(partition), + "fsa_control_value": _format_float(control), + }, + facts=(fact,), + ) + dispose(fact, "bound", "Band share of the in-scope control.", target=name) + + +def _plan_loan_types( + facts: list[object], + controls: Mapping[str, Mapping[str, float]], + builder: _PlanBuilder, + dispose: Any, +) -> None: + rows = [] + for fact in facts: + measure = _measure_id(fact) + kind = _str_at(fact, "layout", "table_record_kind") + if measure == _DOLLARS and kind in {"detail", ""}: + rows.append(fact) + elif kind == "subtotal" or measure.startswith("stafford_combined"): + dispose(fact, "excluded", _REASON_STAFFORD_SUBTOTAL) + elif "recipients" in measure: + dispose(fact, "excluded", _REASON_LOAN_TYPE_RECIPIENTS) + else: + raise ValueError( + f"FSA loan-type row {_source_record_id(fact)!r} has no reviewed " + "disposition." + ) + parent_plus = [ + fact + for fact in rows + if _str_at(fact, "layout", "groupby_value_id") == _PARENT_PLUS_LOAN_TYPE + ] + if len(parent_plus) != 1: + raise ValueError("FSA loan-type table needs exactly one Parent PLUS row.") + others = tuple( + sorted( + (fact for fact in rows if fact is not parent_plus[0]), + key=_source_record_id, + ) + ) + if not others: + raise ValueError("FSA loan-type table has no loan type besides Parent PLUS.") + keys = [_str_at(fact, "layout", "groupby_value_id") for fact in rows] + if len(keys) != len(set(keys)): + raise ValueError("FSA loan-type table repeats a loan type.") + partition = math.fsum(_value(fact) for fact in rows) + control = controls[FSA_TOTAL_BALANCE]["in_scope_control"] + record_set = _str_at(parent_plus[0], "layout", "record_set_id") + for measure, members, name in ( + ( + FSA_PARENT_PLUS_BALANCE, + (parent_plus[0],), + _source_record_id(parent_plus[0]), + ), + ( + FSA_BALANCE_EXCLUDING_PARENT_PLUS, + others, + f"{record_set}.excluding_parent_plus.{_DOLLARS}", + ), + ): + published = math.fsum(_value(fact) for fact in members) + share = published / partition + builder.add( + name=name, + measure=measure, + target_role=f"fsa_{measure}", + source_measure_id=_DOLLARS, + value=control * share, + label=_measure_label(measure), + compiled={}, + reconciliation={ + "fsa_reconciliation": "share_of_in_scope_location_control", + "fsa_share": _format_float(share), + "fsa_partition_value": _format_float(partition), + "fsa_control_value": _format_float(control), + }, + facts=members, + ) + for fact in members: + if measure == FSA_PARENT_PLUS_BALANCE: + dispose( + fact, + "bound", + "Parent PLUS share of the in-scope control.", + target=name, + ) + else: + dispose(fact, "bound", _REASON_LOAN_TYPE_MEMBER, target=name) + + +def _hierarchy_seed(category_id: str, *, target_label: str) -> CalibrationHierarchySeed: + provider_label = calibration_provider_label("us", FSA_SOURCE_NAME) + category_label = calibration_variable_label("us", FSA_SOURCE_NAME, category_id) + if provider_label is None or not category_label: + raise ValueError( + f"FSA calibration category {category_id!r} has no declared label." + ) + return CalibrationHierarchySeed( + provider=HierarchyNode(FSA_SOURCE_NAME, provider_label), + category=HierarchyCategory( + f"{FSA_SOURCE_NAME}.{category_id}", category_label, FSA_SOURCE_NAME + ), + target_label=target_label, + ) + + +def _measure_label(measure: str) -> str: + return calibration_variable_label( + "us", FSA_SOURCE_NAME, FSA_CATEGORY_BY_MEASURE[measure] + ) + + +def _role_suffix(measure: str) -> str: + return "borrowers" if measure == FSA_BORROWERS else "balance" + + +def _age_band_metadata(lower: float, upper: float) -> dict[str, str]: + metadata = {_AGE_BOUND_STAMP_SOURCE_KEY: _AGE_BOUND_STAMP_FROM_CONSTRAINT_ROWS} + if lower != -math.inf: + metadata[_AGE_LOWER_BOUND_KEY] = _format_bound(lower) + if upper != math.inf: + metadata[_AGE_UPPER_BOUND_KEY] = _format_bound(upper) + return metadata + + +def _balance_band_metadata(lower: float, upper: float) -> dict[str, str]: + metadata: dict[str, str] = {} + if lower != -math.inf: + metadata[FSA_BALANCE_LOWER_BOUND_KEY] = _format_bound(lower) + if upper != math.inf: + metadata[FSA_BALANCE_UPPER_BOUND_KEY] = _format_bound(upper) + return metadata + + +def _band_mask( + values: np.ndarray, + metadata: Mapping[str, str], + lower_key: str, + upper_key: str, +) -> np.ndarray: + lower = float(metadata[lower_key]) if lower_key in metadata else -math.inf + upper = float(metadata[upper_key]) if upper_key in metadata else math.inf + return (values >= lower) & (values < upper) + + +def _constraint_bounds(fact: object, variable: str) -> tuple[float, float] | None: + """``[lower, upper)`` from a fact's ``>=`` / ``<`` constraints on variable.""" + + lower, upper = -math.inf, math.inf + found = False + for row in _constraint_rows(fact): + if _str_at(row, "variable") != variable: + continue + operator = _str_at(row, "operator") + value = _at(row, "value") + if isinstance(value, bool) or not isinstance(value, int | float): + raise ValueError( + f"FSA fact {_source_record_id(fact)!r} has a non-numeric " + f"{variable} bound {value!r}." + ) + if operator == ">=": + lower = float(value) + elif operator == "<": + upper = float(value) + else: + raise ValueError( + f"FSA fact {_source_record_id(fact)!r} bounds {variable} with " + f"{operator!r}; only >= and < are reviewed." + ) + found = True + return (lower, upper) if found else None + + +def _has_constraint(fact: object, variable: str) -> bool: + return any(_str_at(row, "variable") == variable for row in _constraint_rows(fact)) + + +def _location_reference_label(facts: list[object]) -> str | None: + labels = { + _str_at(fact, "period_coverage", "source_period_label") for fact in facts + } - {""} + return next(iter(labels)) if len(labels) == 1 else None + + +def _table(fact: object) -> str: + parts = _str_at(fact, "layout", "record_set_id").split(".") + return parts[1] if len(parts) > 1 else "" + + +def _month_key(period: str) -> tuple[int, int]: + year, _, month = period.partition("-") + try: + return (int(year), int(month or 0)) + except ValueError: + return (0, 0) + + +def _state_fips(fact: object) -> str | None: + geography = _geography_id(fact) + if _str_at(fact, "geography", "level") != "state": + return None + if not geography.startswith("0400000US"): + return None + return geography.removeprefix("0400000US") + + +def _value(fact: object) -> float: + value = _at(fact, "value") + if isinstance(value, bool) or not isinstance(value, int | float): + raise ValueError( + f"FSA fact {_source_record_id(fact)!r} has a non-numeric value {value!r}." + ) + value = float(value) + if not math.isfinite(value) or value < 0: + raise ValueError(f"FSA fact {_source_record_id(fact)!r} value {value!r}.") + return value + + +def _format_float(value: float) -> str: + return repr(float(value)) + + +def _format_bound(value: float) -> str: + return str(int(value)) if float(value).is_integer() else repr(float(value)) + + +def _source_name(fact: object) -> str: + return _str_at(fact, "observed_measure", "source_name") or _str_at( + fact, "source", "source_name" + ) + + +def _measure_id(fact: object) -> str: + return _str_at(fact, "observed_measure", "source_measure_id") or _str_at( + fact, "layout", "measure_id" + ) + + +def _source_record_id(fact: object) -> str: + return _str_at(fact, "lineage", "source_record_id") + + +def _period(fact: object) -> str: + return _str_at(fact, "period", "value") + + +def _geography_id(fact: object) -> str: + return _str_at(fact, "geography", "id") + + +def _constraint_rows(fact: object) -> tuple[object, ...]: + constraints = _at(fact, "universe_constraints", "constraints") + return tuple(constraints) if isinstance(constraints, list | tuple) else () + + +def _at(obj: object, *path: str) -> Any: + current = obj + for key in path: + if current is None: + return None + if isinstance(current, Mapping): + current = current.get(key) + else: + current = getattr(current, key, None) + return current + + +def _str_at(obj: object, *path: str) -> str: + value = _at(obj, *path) + return "" if value is None else str(value) diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/target_aging.py b/packages/microcosm-build/src/microcosm/build/us_runtime/target_aging.py index a8296fa471..4625f82a38 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/target_aging.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/target_aging.py @@ -46,6 +46,13 @@ 4. **Counts stay raw.** Return/claim counts (``measure_mode == "indicator_sum"``) and population counts are never aged here; a growing nominal aggregate does not imply a growing return count. +5. **Declared stocks stay raw.** A target whose metadata declares + ``period_alignment`` as one of :data:`DECLARED_UNAGED_PERIOD_ALIGNMENTS` + is a stock the build carries at its source reference date (Federal Student + Aid's loan portfolio, microcosm#1074): no income-growth series describes + it, so it is neither aged nor a period-contract violation, and the + declaration is recorded as its ``aging_factor_source``. Only targets that + declare it are affected, so the policy for every other target is unchanged. A target is only aged when both the build-year and the source-year projection facts of the chosen series are present in the feed. Otherwise it is left at @@ -62,6 +69,7 @@ __all__ = [ "AGING_MODEL_ID", "AGING_MODEL_VERSION", + "DECLARED_UNAGED_PERIOD_ALIGNMENTS", "PeriodContractError", "PeriodContractViolation", "age_us_dollar_targets", @@ -75,6 +83,13 @@ AGING_MODEL_ID = "cbo_growth_factor_aging" AGING_MODEL_VERSION = "1.2.0" +#: ``period_alignment`` declarations that keep a dollar target at its source +#: reference date by design (factor policy 5). Each names a stock whose level +#: the build carries as of that date; none is a silent cross-period read. +DECLARED_UNAGED_PERIOD_ALIGNMENTS: frozenset[str] = frozenset( + {"stock_at_source_reference_date"} +) + # CBO income-by-source ``groupby_value_id`` for the AGI projection series. This # is the priority-(b) default growth index for dollar amounts with no @@ -454,6 +469,9 @@ def _not_ageable_reason(spec: TargetSpec) -> str | None: metadata = spec.metadata if metadata.get("measure_mode") != "sum": return "not_dollar_amount" + alignment = metadata.get("period_alignment", "") + if alignment in DECLARED_UNAGED_PERIOD_ALIGNMENTS: + return alignment unit = metadata.get("ledger_measure_unit", "") if unit and unit != "usd": return "not_usd_unit" diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py b/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py index bb7885d11f..c56771717d 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py @@ -4125,7 +4125,7 @@ def test_restated_concept_rules_all_have_a_comparison() -> None: Adding a concept to ``RESTATED_LEDGER_FILTER_CONCEPTS`` without a rule would raise at compile time on the first spec carrying it; this pins the - three rules that exist instead. + four rules that exist instead. """ builder = _load_builder_module() @@ -4134,7 +4134,12 @@ def test_restated_concept_rules_all_have_a_comparison() -> None: "agi_band", "eitc_child_count", "age_band", + "student_loan_balance_band", } + # The FSA debt-size band (microcosm#1074) reads the person's federal balance. + assert builder._restated_ledger_filter_concept( + "ledger_filter_federal_student_loan_balance_lower_bound" + ) == ("federal_student_loan_balance", "lower") assert builder._restated_ledger_filter_concept(_RESTATED_AGE_UPPER) == ( "age", "upper", diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_targets.py b/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_targets.py index a83cee7a9f..9a78a7cb3f 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_targets.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_targets.py @@ -1081,12 +1081,16 @@ def test_target_registry_is_identical_across_artifact_record_counts() -> None: spec.metadata.get("ledger_geography_level") == "congressional_district" for spec in registries["sparse"].specs ) + # No knob reads the artifact's record count. student_loan_targets says + # whether the build carries the SCF education-debt columns the FSA + # family binds (microcosm#1074), which is the same at every scale. assert set(inspect.signature(compile_us_fiscal_target_registry).parameters) == { "facts", "target_period", "congressional_district_vintage_crosswalk", "age_targets", "allow_unaged_dollar_targets", + "student_loan_targets", } diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_fsa_student_loan_targets.py b/packages/microcosm-build/tests/engine_free/us/test_us_fsa_student_loan_targets.py new file mode 100644 index 0000000000..b3b744ee17 --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/us/test_us_fsa_student_loan_targets.py @@ -0,0 +1,543 @@ +"""Federal Student Aid portfolio targets for federal student loan balances. + +The fixture ``us_fsa_portfolio_chronicle_347_facts.jsonl.gz`` holds, byte for +byte, 244 of the 461 rows ``chronicle build-bundle --year 2026`` writes for the +six ``packages/ed_fsa`` source packages of draft PolicyEngine/chronicle#347 +(DTrim99/chronicle ``4448a7c``; the export at ``81e3f98``, after Chronicle +main was merged in and the raw files reached R2, is byte-identical): every +portfolio-summary, location, age, debt-size and loan-type row, and the FY2026 +Q2 Direct Loan repayment-plan dollars. The tests pin the plan's reference quarter, its one in-scope control, +each family's reconciled values, every fact's disposition, the release +materializer and the release's restated-filter guard (microcosm#1074). +""" + +from __future__ import annotations + +import dataclasses +import gzip +import importlib.util +import json +import math +from collections import Counter + +import numpy as np +import pandas as pd +import pytest + +from microcosm.build.us_runtime import compile_us_fiscal_target_registry +from microcosm.build.us_runtime.fsa_student_loan_targets import ( + FSA_MATERIALIZER, + FSA_PERIOD_ALIGNMENT, + FSA_TARGET_FAMILY, + fsa_student_loan_household_values, + fsa_student_loan_target_receipt, + plan_fsa_student_loan_targets, +) +from microcosm.build.us_runtime.target_aging import find_period_contract_violations +from microcosm.calibrate import TargetRegistry +from microcosm.calibrate.geography_constants import US_STATE_FIPS_TO_POSTAL +from microcosm.frame import US_SCHEMA, Frame, WeightKind, Weights +from test_support.microcosm_build.us_fiscal_targets import packaged_reference_facts +from test_support.paths import paths_for + +_TEST_PATHS = paths_for("microcosm-build") +_FIXTURE = ( + _TEST_PATHS.tests / "fixtures" / "us_fsa_portfolio_chronicle_347_facts.jsonl.gz" +) +_BILLION = 1e9 +# Published FY2026 Q2 (31 March 2026) levels in the fixture, from the FSA +# workbooks: location rows in $ billions and thousands of borrowers. +_STATES_AND_DC_DOLLARS = 1_627.4 * _BILLION +_PUERTO_RICO_AND_OTHER_DOLLARS = (11.7 + 5.0) * _BILLION +_NOT_REPORTED_DOLLARS = 52.2 * _BILLION +_STATES_AND_DC_BORROWERS = 42_375_900.0 +_PUERTO_RICO_AND_OTHER_BORROWERS = 336_900.0 + 96_500.0 +_NOT_REPORTED_BORROWERS = 1_953_300.0 + + +def _facts() -> list[dict]: + with gzip.open(_FIXTURE, "rt", encoding="utf-8") as handle: + return [json.loads(line) for line in handle if line.strip()] + + +def _plan(facts: list[dict] | None = None): + return plan_fsa_student_loan_targets( + _facts() if facts is None else facts, target_period=2024 + ) + + +def _registry() -> TargetRegistry: + registry = compile_us_fiscal_target_registry( + [*packaged_reference_facts(), *_facts()], + target_period=2024, + allow_unaged_dollar_targets=True, + student_loan_targets=True, + ) + return TargetRegistry( + tuple(spec for spec in registry.specs if spec.family == FSA_TARGET_FAMILY), + country="us", + ) + + +def _by_role(registry: TargetRegistry) -> dict[str, list]: + roles: dict[str, list] = {} + for spec in registry.specs: + roles.setdefault(spec.metadata["target_role"], []).append(spec) + return roles + + +def _control(dollars: bool) -> float: + if dollars: + states, out, not_reported = ( + _STATES_AND_DC_DOLLARS, + _PUERTO_RICO_AND_OTHER_DOLLARS, + _NOT_REPORTED_DOLLARS, + ) + else: + states, out, not_reported = ( + _STATES_AND_DC_BORROWERS, + _PUERTO_RICO_AND_OTHER_BORROWERS, + _NOT_REPORTED_BORROWERS, + ) + return states * (states + out + not_reported) / (states + out) + + +def test_plan_binds_the_latest_quarter_every_table_publishes() -> None: + plan = _plan() + + assert plan.status == "bound" + assert plan.reference_period == "2026-03" + assert plan.reference_label == "Data as of Mar. 31, 2026" + # 51 states x 2 measures, 5 age and 9 debt-size bands x 2, 2 loan types. + assert len(plan.references) == 51 * 2 + 5 * 2 + 9 * 2 + 2 + for measure, dollars in (("total_balance", True), ("borrowers", False)): + control = plan.controls[measure] + assert control["in_scope_control"] == pytest.approx(_control(dollars)) + assert control["published_total"] == pytest.approx( + (_STATES_AND_DC_DOLLARS + _PUERTO_RICO_AND_OTHER_DOLLARS) + + _NOT_REPORTED_DOLLARS + if dollars + else _STATES_AND_DC_BORROWERS + + _PUERTO_RICO_AND_OTHER_BORROWERS + + _NOT_REPORTED_BORROWERS + ) + assert plan.controls["total_balance"]["in_scope_control"] == pytest.approx( + 1_679.07e9, rel=1e-5 + ) + assert plan.controls["borrowers"]["in_scope_control"] == pytest.approx( + 44_309_425, rel=1e-6 + ) + + +def test_registry_compiles_every_family_onto_one_in_scope_control() -> None: + registry = _registry() + roles = _by_role(registry) + balance = _control(dollars=True) + borrowers = _control(dollars=False) + + assert len(registry) == 132 + assert {role: len(specs) for role, specs in roles.items()} == { + "fsa_state_balance": 51, + "fsa_state_borrowers": 51, + "fsa_age_band_balance": 5, + "fsa_age_band_borrowers": 5, + "fsa_debt_size_band_balance": 9, + "fsa_debt_size_band_borrowers": 9, + "fsa_parent_plus_balance": 1, + "fsa_balance_excluding_parent_plus": 1, + } + for role, total in ( + ("fsa_state_balance", balance), + ("fsa_age_band_balance", balance), + ("fsa_debt_size_band_balance", balance), + ("fsa_state_borrowers", borrowers), + ("fsa_age_band_borrowers", borrowers), + ("fsa_debt_size_band_borrowers", borrowers), + ): + assert math.fsum(spec.value for spec in roles[role]) == pytest.approx(total) + loan_types = ( + roles["fsa_parent_plus_balance"] + roles["fsa_balance_excluding_parent_plus"] + ) + assert math.fsum(spec.value for spec in loan_types) == pytest.approx(balance) + # Parent PLUS is $117.9B of the $1,723.8B the six loan-type rows publish. + assert roles["fsa_parent_plus_balance"][0].value == pytest.approx( + balance * 117.9 / 1_723.8, rel=1e-6 + ) + + +def test_state_rows_allocate_not_reported_pro_rata() -> None: + registry = _registry() + states = { + spec.metadata["state_fips"] + for spec in registry.specs + if "state_fips" in spec.metadata + } + (california,) = ( + spec + for spec in registry.specs + if spec.metadata.get("state_fips") == "06" + and spec.metadata["fsa_measure"] == "total_balance" + ) + factor = ( + _STATES_AND_DC_DOLLARS + _PUERTO_RICO_AND_OTHER_DOLLARS + _NOT_REPORTED_DOLLARS + ) / (_STATES_AND_DC_DOLLARS + _PUERTO_RICO_AND_OTHER_DOLLARS) + + assert states == set(US_STATE_FIPS_TO_POSTAL) + assert "72" not in states + assert california.value == pytest.approx(156.7e9 * factor) + assert float(california.metadata["fsa_published_value"]) == 156.7e9 + assert california.metadata["fsa_reconciliation"] == ( + "not_reported_allocated_pro_rata" + ) + assert float(california.metadata["fsa_reconciliation_factor"]) == pytest.approx( + factor + ) + assert california.hierarchy.geography.label == "California" + assert california.hierarchy.target.label == ( + "Federal student loan balance, California" + ) + + +def test_bands_bind_as_shares_and_compile_their_edges() -> None: + roles = _by_role(_registry()) + age = { + spec.metadata["ledger_layout_groupby_value_id"]: spec + for spec in roles["fsa_age_band_borrowers"] + } + debt = { + spec.metadata["ledger_layout_groupby_value_id"]: spec + for spec in roles["fsa_debt_size_band_balance"] + } + + # Reported age bands publish 44.8M borrowers; "not reported" is 0.1M. + assert age["age_25_to_34"].value == pytest.approx( + _control(dollars=False) * 14.0 / 44.8, rel=1e-9 + ) + assert age["age_25_to_34"].metadata["age_lower_bound"] == "25" + assert age["age_25_to_34"].metadata["age_upper_bound"] == "35" + assert "age_lower_bound" not in age["age_24_and_younger"].metadata + assert age["age_62_and_older"].metadata["age_lower_bound"] == "62" + assert "age_upper_bound" not in age["age_62_and_older"].metadata + assert age["age_25_to_34"].metadata["age_bound_stamp_source"] == ("constraint_rows") + assert debt["debt_80k_to_100k"].metadata["fsa_balance_lower_bound"] == "80000" + assert debt["debt_80k_to_100k"].metadata["fsa_balance_upper_bound"] == "100000" + assert "fsa_balance_lower_bound" not in debt["debt_less_than_5k"].metadata + assert "fsa_balance_upper_bound" not in debt["debt_200k_plus"].metadata + assert debt["debt_200k_plus"].hierarchy.dimensions[0].value_label == "200K+" + + +def test_specs_sit_at_the_build_period_with_a_declared_alignment() -> None: + registry = _registry() + + assert {spec.period for spec in registry.specs} == {2024} + for spec in registry.specs: + metadata = spec.metadata + assert metadata["materializer"] == FSA_MATERIALIZER + assert metadata["source_period"] == "2026-03" + assert metadata["target_period"] == "2024" + assert metadata["period_alignment"] == FSA_PERIOD_ALIGNMENT + assert "period_contract_waiver" not in metadata + assert "diagnostic_target_label" not in metadata + assert spec.hierarchy.provider.id == "ed_fsa" + assert spec.hierarchy.provider.label == "ED · Federal Student Aid" + assert spec.hierarchy.target.id == spec.name + assert find_period_contract_violations(registry, target_period=2024) == () + + +def test_aged_compile_keeps_fsa_dollars_at_the_reference_date() -> None: + from microcosm.build.us_runtime.target_aging import age_us_dollar_targets + + registry = age_us_dollar_targets(_registry(), _facts(), target_period=2024) + + for spec in registry.specs: + if spec.metadata["measure_mode"] == "sum": + assert spec.metadata["aging_factor_source"] == FSA_PERIOD_ALIGNMENT + assert float(spec.metadata["aging_factor"]) == 1.0 + + +def test_compile_without_the_flag_ignores_fsa_facts() -> None: + registry = compile_us_fiscal_target_registry( + [*packaged_reference_facts(), *_facts()], + target_period=2024, + allow_unaged_dollar_targets=True, + ) + + assert not [spec for spec in registry.specs if spec.family == FSA_TARGET_FAMILY] + + +def test_every_fsa_fact_has_one_disposition() -> None: + facts = _facts() + receipt = fsa_student_loan_target_receipt(facts, target_period=2024) + by_id = {item["source_record_id"]: item for item in receipt["dispositions"]} + + assert len(receipt["dispositions"]) == len(facts) == 244 + assert len(by_id) == len(facts) + assert receipt["disposition_counts"] == { + "allocated": 4, + "bound": 136, + "diagnostic": 34, + "excluded": 8, + "other_quarter": 58, + "out_of_scope": 4, + } + location = "ed_fsa.portfolio_by_location.2026_03_31" + assert by_id[f"{location}.pr.dollars_outstanding"]["disposition"] == ( + "out_of_scope" + ) + assert by_id[f"{location}.other.borrowers"]["disposition"] == "out_of_scope" + assert by_id[f"{location}.not_reported.dollars_outstanding"]["disposition"] == ( + "allocated" + ) + loan_type = "ed_fsa.portfolio_by_loan_type.fy2026_q2" + assert by_id[f"{loan_type}.recipients.parent_plus.recipients"]["disposition"] == ( + "excluded" + ) + assert by_id[f"{loan_type}.dollars_outstanding.consolidation.dollars_outstanding"][ + "target" + ] == (f"{loan_type}.dollars_outstanding.excluding_parent_plus.dollars_outstanding") + assert { + item["disposition"] + for item in receipt["dispositions"] + if item["table"] in {"portfolio_summary", "dl_by_repayment_plan"} + } == {"diagnostic"} + assert { + item["period"] + for item in receipt["dispositions"] + if item["disposition"] == "other_quarter" + } == {"2025-12", "2026-06"} + assert len(receipt["targets"]) == 132 + + +def test_a_partial_feed_refuses() -> None: + facts = _facts() + without_age = [ + fact + for fact in facts + if ".portfolio_by_age." not in fact["layout"]["record_set_id"] + ] + with pytest.raises(ValueError, match="portfolio_by_age"): + _plan(without_age) + + only_q1_age = [ + fact + for fact in facts + if not ( + ".portfolio_by_age." in fact["layout"]["record_set_id"] + and fact["period"]["value"] == "2026-03" + ) + ] + with pytest.raises(ValueError, match="share no quarter"): + _plan(only_q1_age) + + without_texas = [fact for fact in facts if fact["geography"]["id"] != "0400000US48"] + with pytest.raises(ValueError, match="missing states"): + _plan(without_texas) + + +def test_a_gapped_band_partition_refuses() -> None: + facts = _facts() + gapped = [ + fact + for fact in facts + if not fact["lineage"]["source_record_id"].endswith( + "fy2026_q2.borrowers.debt_40k_to_60k.borrowers" + ) + ] + with pytest.raises(ValueError, match="not contiguous"): + _plan(gapped) + + +def test_no_fsa_facts_plans_nothing() -> None: + plan = _plan(packaged_reference_facts()) + + assert plan.status == "no_fsa_facts" + assert plan.references == () + + +def _frame() -> Frame: + person = pd.DataFrame( + { + "person_id": [1, 2, 3, 4, 5, 6], + "person_household_id": [10, 10, 20, 20, 30, 30], + "age": [24.0, 52.0, 30.0, 61.0, 40.0, 70.0], + "federal_student_loan_balance": [3_000.0, 0.0, 85_000.0, 0.0, 0.0, 0.0], + "federal_parent_plus_loan_balance": [0.0, 40_000.0, 0.0, 0.0, 0.0, 0.0], + } + ) + household_ids = np.array([10, 20, 30]) + person["person_tax_unit_id"] = person["person_household_id"] + 1_000 + person["person_spm_unit_id"] = person["person_household_id"] + 2_000 + person["person_family_id"] = person["person_household_id"] + 3_000 + person["person_marital_unit_id"] = np.arange(len(person)) + 4_000 + tables = { + "person": person, + "household": pd.DataFrame( + {"household_id": household_ids, "state_fips": [6, 48, 6]} + ), + "tax_unit": pd.DataFrame({"tax_unit_id": household_ids + 1_000}), + "spm_unit": pd.DataFrame({"spm_unit_id": household_ids + 2_000}), + "family": pd.DataFrame({"family_id": household_ids + 3_000}), + "marital_unit": pd.DataFrame( + {"marital_unit_id": np.arange(len(person)) + 4_000} + ), + } + return Frame( + tables, + US_SCHEMA, + { + "household": Weights( + values=np.full(len(household_ids), 1_000.0), kind=WeightKind.DESIGN + ) + }, + ) + + +@pytest.mark.parametrize( + ("metadata", "expected"), + [ + ({"fsa_measure": "total_balance"}, [43_000.0, 85_000.0, 0.0]), + ({"fsa_measure": "borrowers"}, [2.0, 1.0, 0.0]), + ({"fsa_measure": "parent_plus_balance"}, [40_000.0, 0.0, 0.0]), + ({"fsa_measure": "balance_excluding_parent_plus"}, [3_000.0, 85_000.0, 0.0]), + ( + {"fsa_measure": "total_balance", "state_fips": "06"}, + [43_000.0, 0.0, 0.0], + ), + ( + {"fsa_measure": "borrowers", "age_upper_bound": "25"}, + [1.0, 0.0, 0.0], + ), + ( + {"fsa_measure": "total_balance", "age_lower_bound": "50"}, + [40_000.0, 0.0, 0.0], + ), + ( + { + "fsa_measure": "borrowers", + "fsa_balance_lower_bound": "80000", + "fsa_balance_upper_bound": "100000", + }, + [0.0, 1.0, 0.0], + ), + ( + {"fsa_measure": "borrowers", "fsa_balance_upper_bound": "5000"}, + [1.0, 0.0, 0.0], + ), + ], +) +def test_household_values_sum_the_stored_balances( + metadata: dict[str, str], expected: list[float] +) -> None: + np.testing.assert_array_equal( + fsa_student_loan_household_values(_frame(), metadata), expected + ) + + +def test_household_values_need_both_balance_columns() -> None: + frame = _frame() + person = frame.table("person").drop(columns=["federal_parent_plus_loan_balance"]) + tables = {entity: frame.table(entity) for entity in frame.entities} + tables["person"] = person + stripped = Frame(tables, US_SCHEMA, {"household": frame.weights_for("household")}) + + assert ( + fsa_student_loan_household_values(stripped, {"fsa_measure": "borrowers"}) + is None + ) + with pytest.raises(ValueError, match="Unknown FSA measure"): + fsa_student_loan_household_values(frame, {"fsa_measure": "recipients"}) + + +def test_compiled_fsa_targets_round_trip_through_the_materializer() -> None: + registry = _registry() + frame = _frame() + columns = { + spec.measure: fsa_student_loan_household_values(frame, spec.metadata) + for spec in registry.specs + } + weights = frame.weights_for("household").values + total = { + role: math.fsum(float(np.dot(columns[spec.measure], weights)) for spec in specs) + for role, specs in _by_role(registry).items() + } + + # Every family partitions the same people, so each sums to the same level. + assert total["fsa_state_balance"] == total["fsa_age_band_balance"] + assert total["fsa_age_band_balance"] == total["fsa_debt_size_band_balance"] + assert total["fsa_debt_size_band_balance"] == pytest.approx(128_000.0 * 1_000.0) + assert total["fsa_state_borrowers"] == total["fsa_age_band_borrowers"] == 3_000.0 + assert total["fsa_debt_size_band_borrowers"] == 3_000.0 + assert ( + total["fsa_parent_plus_balance"] + total["fsa_balance_excluding_parent_plus"] + == total["fsa_state_balance"] + ) + + +def _load_builder_module(): + path = _TEST_PATHS.repository / "tools" / "build_us_fiscal_refresh_release.py" + spec = importlib.util.spec_from_file_location( + "build_us_fiscal_refresh_release", path + ) + module = importlib.util.module_from_spec(spec) + assert spec.loader is not None + spec.loader.exec_module(module) + return module + + +def test_release_filter_guard_accepts_the_compiled_fsa_bands() -> None: + builder = _load_builder_module() + registry = _registry() + restated = Counter( + key + for spec in registry.specs + for key in spec.metadata + if key.startswith("ledger_filter_") + ) + + assert restated == { + "ledger_filter_age_lower_bound": 8, + "ledger_filter_age_upper_bound": 8, + "ledger_filter_federal_student_loan_balance_lower_bound": 16, + "ledger_filter_federal_student_loan_balance_upper_bound": 16, + } + assert builder._unsupported_ledger_filter_metadata(registry.specs) == {} + + +def test_release_filter_guard_refuses_a_balance_band_it_would_ignore() -> None: + builder = _load_builder_module() + spec = next( + spec + for spec in _registry().specs + if spec.metadata.get("fsa_balance_lower_bound") == "80000" + ) + other_materializer = dataclasses.replace( + spec, metadata={**spec.metadata, "materializer": "policyengine_variable"} + ) + disagreeing = dataclasses.replace( + spec, + name=f"{spec.name}.disagreeing", + hierarchy=None, + metadata={**spec.metadata, "fsa_balance_lower_bound": "60000"}, + ) + + refused = builder._unsupported_ledger_filter_metadata( + (other_materializer, disagreeing) + ) + assert any( + "applies no balance band" in entry for entry in refused[other_materializer.name] + ) + assert any("disagrees with" in entry for entry in refused[disagreeing.name]) + + +def test_release_parity_contract_reads_the_registry_without_fsa_rows() -> None: + builder = _load_builder_module() + registry = compile_us_fiscal_target_registry( + [*packaged_reference_facts(), *_facts()], + target_period=2024, + allow_unaged_dollar_targets=True, + student_loan_targets=True, + ) + + parity = builder._without_opt_in_student_loan_targets(registry) + assert len(parity) == len(registry) - 132 + assert not [spec for spec in parity.specs if spec.family == FSA_TARGET_FAMILY] diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py b/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py index 6c2da362e7..0205835c2c 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py @@ -268,6 +268,10 @@ "engine_lifecycle.py", "exact_k_ladder.py", # Calibration/selection seam; no source treatment. "fiscal_targets.py", + # Federal Student Aid portfolio targets (microcosm#1074): compiles FSA + # facts into target specs and sums the stored person balances for + # them; no population treatment. + "fsa_student_loan_targets.py", "geography_ladder.py", "hours_worked.py", "h5_io.py", # US artifact I/O; no population treatment. diff --git a/packages/microcosm-build/tests/fixtures/us_fsa_portfolio_chronicle_347_facts.jsonl.gz b/packages/microcosm-build/tests/fixtures/us_fsa_portfolio_chronicle_347_facts.jsonl.gz new file mode 100644 index 0000000000000000000000000000000000000000..63a720d113eee17768d745387187abdd6d455521 GIT binary patch literal 50445 zcmagEWmKEpxAyzArA1nt0!52!kmALPyB7;qJb2OIEz$zT-Jw8nf(Hvy+@V;|1P$)) z9QyqCe&79`GtN2ry2iRk?m5=_UDq||O&yN$&)?tEhh2n`D_y@k$M($$8>y?M9LU?n zvix>D%5NE<-zzqctmA`s zjBZhR#G@lgPX6v5Z6znAN=CietzL^xi$+izcLD0fFDHu=1Oftg-e=bWx-t*P6E4nv z5Mv|w{qi})FyrC#RjUb-15QKjPC30%9}d~x+iQsJ?r`yP_cBJU>}@+_oA^(Zb8xI( zukTIu&ZiqR+HWL_i!|L=wC-fLi1{J5VKeyN@R2)&e*Q==E^e=Z-jrbmO z7(VCoTi;I7x1c1v@osnJcD=5?=6I{>qE+Z-$7Z${4!p*l5V#HT_R)6ZtG(2@ej;GKxMR9=P)Pm$ zWPLXqbfs0jD0DqFD?W=dK^!|dUezCF@(hYzs5Rdzz_T}_E?0j0H@BwX?7-&daRu7$ z_hIPuV8xt=4yyrvw{c7wv%PTmD#q~4U zoODAz9br1TBQ~f<3S}*Tqqu%^QMd<5rSDC66}}IhW{dlZLw0f>CP_k?wi#S~?rg4S z5lr{X$G-1P+S(GgSf@$+$L;j|^_q3Wx1p8SF{qroYiw({-UDE^=0Z2Q{(v~Ssa{vz?BvDlU@`}r{LoRu$gHWEo4j=r}|65=*j zYQlMQ?oZv#5$VeymfH6cjqQi#2>xE zVDkice~Tw#xIYM)!kwgMFV8>~mU#?j?;!-hKFM&z52~{5b*T!c#r|QKO=P2Y`9~LP z1*jFBkqZ+KmCq>Q{9zwc+f`UA$csa)wawR}qGEn?>ZZKnzF}P*q1d?Tq&r^>&O=EW z%@2m7p65a(?oRbmtJpacLi-%HMl>t3YBOLv2Qnbin2kq9b$k~_VJsO8ld!xZeZ zKNKjkbWmdDJ!OlVBHh}IpKCEuvc0>;!Zp}aZiIm_NT5}A9CuPHKe1_<$3Af+!w^K2 zpS0F;KkqbCA~}YIoz9R(9Kj};FF#*daaypX$f=xaUf~g{lCOa5GmM*HGgy=<5co1lK66?SEwGo~+ltWDJ(%WH>y~00 zmYbG5?k93Vq;%xnbYqqaG@QuPFR3jq_+MAfGJ3D2jU2QRy&abbWBs=|~yoz^x zD8XcQacwQ4s}-BPRw*a>HgD-usy*BJ+INRI66qHvwijv%t!7p)B)B+Ibkm?fPL+Kb ztA{8)^m3eSbk3b{E@s@-IQ}t1SMI*3b;nf-k_kJO7iyjBG67t_bm8YHzxU+dE2=q} z7r-3}o)T+rJ40l?YBTUpeh~Ic-rD{%Y|^}=GkrbNYDf`nclUL$_~N+E7?kV?luq*i z)K<5_e_Rx{>dE*`FAf?Y5@7FhTVYx69Z3AP?Y3lQD|8V9GCt0EN_H)})G!I(qd7PK zNHe?WIUM>eM0I5UIT5q}eb1oTsknPkiH^Aw%HvF?qu!!`(C)oaQiW>b;70kjQ|;`d zih#5}yWh1SK_naP7vb9X{$m5|{zalcOT)7Z6!)*U?`9`ILIz@N__BqA2S+0Od-M}` zc3c7IZH|@x?&oL2_OpPil6;|?RakjuRraazd!zAiIv>CnUmu6Xr0BC={~IrBzf$op zhsU;Z+l#FR{J7T@PG=^I$olBT^0{88ntDgGEuD7_ph^=;@7cK+PQVx_N7naw4fbszcDE zE?14cuI^2%7ZW^WE8nmFbXjrqp|lN!B9qf31NdzONUhD(uQ48{ zcmYJI*Z4I|U%R~#Yb`+8y*wY=RvY{+J2dis(Y3-4L-f{oV*kzGFeb* zNGNo@4(L{Z;Na-O`bUC&g;%4_#!oiSPTHo%1RVkMZrvyYQ`y zdnNg`eg%3+Y+tumjq%%h;mi;5H{)w=q;-t_F!MTb85c5rwkUj`u@cRls7)zs{sW0v zD1Tw14KMPY*GPA7k-#N(Fp~mBjoyxA((bI6xvbH-%QT*GZQgg&hMx8GSc;cZG|!2y zlydt3qh5IQ7zAiu%z>vPL~pdnwUtbj=8E(ejnE|m-%7;1?K5YT_b7Hb%>=s91k+pU z@o0XL2yA8>Hi@Hh^~Cgw5YoYtNvZYSNHN&gG7adXTf;xb@G|6#rcScnT&cS|w0Qn5 zi{jlJU!N!VM;W+>bCkk!r8TQzZq*=uC5W!JjnyibNYAcuJZR97clzv$#kso7Mwh+~ z%Lys{SR9|I(j1;Huea06A85%zBa}#!jE-^ct^ZiQse}3W(@EX1Eb}8qw4xPGh1d1s zCr`q^%KTo*`BY^vnr~3pZLP>h<{%f|SN-gT9vb^o;wRy~SmB8wd|@}tyK-?BK)3^B z@44xbM8LgE9cV(S&+NzWj(BY8n=)O+18+-^7Os9UyCgA9xSgd22l0)IbD$KVnkpfJ zOeI4#{4B0P#Nch{4OZ?x3Uc<@U79Mfa~?GXqolwwF#qAsdk#^P(fKns3m09AQLd&* z=o!Ja1>9H_wDoxx*|tyZ_JTUE*{jxR5vYcMCkoLj+ZMv;6^V9(?R8rYUpq|*C>+5Z z&#(i&f9RCT$?V5q*^j{~D3ZFs=gU=*_@r^Ia>wWM=r0!`2PCEXEzW1F6-aj`pN(njGsKk) z%;)aj9ETNn;d5lALDSY-^tA%Lj(Ddn4>D?fcHB!!_&JID$pLt0IIrpKM$QCD4Q;)h zaZf^(R))h}YDC_ReOAyU^!{$?cmLa=_vXfh@XL48d(dX47}^m-@DP6_RZ|_KkExD8 zfL}Fm%YrapCSIS}@i*Zj1dyT30C)6!HQey25%2qzk7&x-5^!ce;!Bh%q=ma8uT)O_ z?pv3w{)y;B*{|`#0(a5pHG6q()Qaqo_OeepHLq3#iV|&JF_pLC8NdtX=SR5MQeF>X zSwRc+Eg_mko?8qrIIKX8a$@SeZ~fK0Qk9%NSY1cz>=C3gW!SQ(4_Xz&Uk5%|{(Ki< zjxK!jJn~VfZoGq=nD8801Ga3H2z{A_ zyn0*`w&L|k>>T-a1!3P#&Ca7Q;8y(8k_e@nkoja;`A+YRtnssOO5X)Oj2Sxf648K9 zH8}ai*PH!>t`R^M#R@Z}gVJ003B}MgDYi|rZ9`Ecp3RYdJiw~+BvRwR5RmYx8OjHL zkG184{aw>15$Al(3kU1jw}1|R4y;v{0DQ%9VToiskm3fM_yzMTq8E>Alsw;B-~r>u zyQH!c?DjOS+p5vQJLBm3N#<#nXRDSsm&=kS8IJF2`t>GSgQH~z?@A~m#+u;jRuL0% zRWhQrq>Y>QvnWG?o?#c#+EH@ey>_1BX5e9 zlfP|7(30D`U@6l)`THP?@Yb(y`&6vcKDL^EMJyWOlj%w3Lh*|~^%EtduA>viL(N=F zz0GROGpeWaTy{9Z_S9}S^bj84Q}@poryi7fE6$Hd4SxSF8fbpp;?vT=PK5hIU{Iul zp2MbdC-8#*8}m20uon}QAC7){syF++c2dS=ozyhod#9{IL<^%h;WS@+XRIQ^#Z**< z2El6NOOAA~eC6a5I${ogGW7ndK04RVKQHWVTyI}4l7;AF`1dT&MOo-Pg`Je4!L9ZN z6ZSJmOymeh#{kr$USs;0t)xq~^IMqf)bqn6b&wxxGe(<8ZtK-^@_7i{#tOU`jQAs- z@Ea)<&o8}ho8!pV2+BALgYM?7I)jPiRr(*_AS{)KUiCwBIfHe{M6+s#?;HzLyo7xh1G!;3c4< z3jr3EGNOFn2Qqmuja9vV@T;$RWUs2Zq6h;IzvxqmN(jysFvgBBT z|Ktuk;Qp`=G6!5ot8oB(^?xbalUIkvb#aG7IV}3KG6k$Y{vc&JaMxN(+7NkEHq1Z~ zA_*&p4l_#8>5qPIG=y!D?j>*K|D$?CXjiPg<8+Wx6GWd{WXtp`BV3=IP$ZZ z?Vm%n3bzr+bU`=BwvQv=Tf+Bq<9^eH_G!qE`RuDlg`)j*q+VGxY`F;?>l^9LXy#XM z^pU8;uf%v%DJnkpR(LF?gD<8&dq5f77e4pf6jaP|ZIXS+#b<$EjiKMw7xt%1j&E#O z$dDGzSxzEDHf&x8cY}@)bSRb=pyA zquf~9J`mun4(H+01c<`2Ol(IGoIUS-%sis6LatsSt3AG}B*PV_?hi4tYDea+&yCVq z+^Nfm!&O0@URwnyq`W;#*Y-X zb@-!l6Em{5O2B^N<*#vrUd=SwSQEc&}qD<)lTU^B%k7iD`pR8 zZ}pSJfJY*e_TqS)zkJh;lX8BB;jZ>}F5=mQWxNW5mJ|iU^K3s-Hv#dzlf$9uG{rac z+>DS~`C8vIh@-qsB(gAdj8Uv);$T-3kpBbs|3+kci3%HH*FtM;`L#^`1*otCG{EWu z&m)$1i^g`fafC_M>#LO;3%e-h<#TYiWiogM@&EZBOm_P}n7m%26P-ge=951K^DP`9 zx)D>8RwM=30$8u#zy@D;TG@Dk2@@N0@IG`gcwZnMlgN@C-#CQaiJdRMfg83zFv2avI6h^0* zaa}Yu$7%N#BTsq+-=5N?UhP7~TstYm4%@Ov5b(xeQYt()d?d+egu!%yJw)QBSz>}p zB;MQ4-L>X&Ntn37%T>_erZZ?_W!GJD-Udhd{CT-(^X1Xux`=t4DDtP6s>2sgw};VP zM{<4;WrsUS^Pa>F^VF0iVZRM6<#t+4zLTsWgq!r>Opj& zQ253+EB<47*h>_=VG21=u%?$ElXp*-&zqZKn36TKOIo;lR3HKl-$%a)dSr5xS5Kg>=r#G(?=1!^rOk2@ zQT7RUjj|j9bBNBuKaVhe@|aUz`Jsp1K7Zwpp0*InNYWYNpcHo!nV?(y;iW=~Yvow@ zG-qa^2IKk9z7#oSF>IS})viI|I@|?4*v(1*KSVx~(9E$R*qu2=n-HHSLwn>j+GFB~ zPJL^F((_)+^TPLH536l<0O(oE)$)I=^SELb_%~Ywi(opF z#v_vd#sqE`THYgW6*pI$WDJP~4ZK2)mAa|U+3&Ixh)R%O=8O&IaBRAoS0be^6$N8z z56tOXE>C9sE60gXVGg1np-Z;s=C!7NNrI8iGe%KQr07~51sC>%|AXKVNhy;4xX6)i z$+?s;Wrj5Vu}56f{J{fx4uLLLp3&Hz_1rW3QvqFJupnnoESMrw@Boq-3_-&iJ-DYi zWS=h()Nw8D4@P5p#t4BCNv`|+oJkE$2`|#+8N2PZLOJ<2_DRe$MY&WJVTdbK*!KH@Kt zH}hnol`3Z+Q##%0Q`39fmU&qdsEq1oQd%fd3mCLKQD62T4$m`WP@q_4WWGe8y@2^qbs@pT;B30be zem@hxA@r{yzG-A;mt_PH70OM+m!3_w)^7w8JN+c3KAX;=xhBA4IvSyLS|SiSND=n z_7?BqM(;nQA{;tjK%@lM1zo6BZs-}nE`W5Mm3K$AbpHpI^?zJviy^9PERO62d2EVd zqiEI+XJKdH!k9JsyXq3!Byzq&)<}iyjL7k|e#82!;CI_wT zm3o?ctLG%mmBgCb=HktwPzN2+U)J8$aUMR#9O>^;&OJ@U@`lc0LN|)mlrbVRpjd;h zwFPoHJ88jaCM(Lz>w*@q^?)tnRzYvVKtP|06JTT2(20#iw^XjApy?olt>x>;{r~GydTJ-e2?K|^^0k}m{q60Q z`L-<*lTpu~41*s7%J@qVe)*&E?Ck5jmo0FE>yY~$Y%L0QTS$H?#fkFs5W0>B=zBkp z^z^0u4{a^N^~9x3T2nXF_d|l0Gde1gf_^I|TPw%L>r5RmTqDllW&%km6Vhcjh0_p8 z&-yTfnI+q?M64$LLMA=K{_KM-@0JDXnH#Isdz8~)q0@o?btq1f+C}fm-iopPf`J?i zZ#kQKVp#QZgK0TRub~}_n&M|(O8Zhf((lCUz>&5+A%X?@m<2G6YPF1990xT&D-rl! z=ImTKO?|A$Y1RKV`jMJep<2ere&N@(sZdDOsB4i#DJVy|FMu*T~dv_t}6x;Ds9!Feo|t_ue?xklZ*s@F0Ve%nDyy*Olvot_zE7^+@9;{ z&CMhbwdae9^-yo7j z{al;>Vy_w##u@ssJi4^KeS8w3JCUAzwhu!(k+>J=RDC(pqY;2S=z_m3i_fsev`!n<4PAg;O2bm9lh5KExYivUJ^&VpD_E6Tef5yLcOuy4CY{)P*vGveFlX`(FP=-`$8344>mX=7F*@OgT^LWY8! zw|MhK)6P9L^=O4V%nABB70G1;8*Ec$yX;IqfDUb67uO$mESg6>ZG% zsytt*l_TyHSK)~%_x*eoKAhf~tBSZEmA~vgnFp7OURG$49qnF}jy_B~jrhB^Jrpd4 zBM;zH6{6Jpzi%Sp*g%R`q7Nf>ZTHmH2X3+11tw8hoF20uQ9Jmp2E8kTkdo1EoL%qv zX+^W9vx#S?#^QGz`7Bd77aC#lp980GBxohdt- zj>=cm)<-2?RI`4wm`5A3BLD=<;oo+ zVrwMowz?NW^|;@?x=!R zprMSs#>LBx_mO6Lu*-U5rOZX668~F1s`w40Fd{MQ zB1Yt0ZnrU~zhDyk2o6L!cPCVps($T`BsV@(_363llXJ73$!*@MX|66!D9M(R(z8nR znP^A&C-2fW2`e1%{G8hQmHTg5!v5Ch^Gy7(YSyc6S}`w-5E*|L zDSsD6_bDA3ob(s5qyR-fGUT6Xeb0g>IH~5O=5&FvT<+VZ^z9km4gTZ!-kkD2HCk~@ zE5FDgvZwBg=(@*qLEyTmm{iIj{l9I=M=Ry-V>L_!GB$-$_^@YXOpA5nK`iAWA;M_P z_&?DWXg&zl%o%Zxq2xqs*4BU8Z)BUnruZFE9)p&#IlkqHMt2Wz%hfJt3;M2-z1q?KDR|!vmBHgS8pU8{ z{M_K~Ec?*o1VLha~O-8jA#^A{J=pJZU!G!vJT8Mq~j=8@~c2AU}1~*^1nKY*EEUncDj1 z9&w6CW8Z)sM9%faAclaq41o#1h0$0x5@D?2O)8xI&hCC*{xeKJJFQ?om5BzMh>d*w zLSK&MBeIUt>VU&m5oL^zV&dwJ3&TD&RABg?lfA5BeAG7`O|{I6Pol|m=+v??hOYgV z%2HOk@pwfdw(!!x4-8Ke)m!6J9DCrqewFs={Ghs{l(~n9Evuit>SD~)2~No$@^OzC z2oix6al~1`lJ7rsZ7IlvYm%60Eb<=GO?k)QO}#V(ztGZZxo~;zOis34VltP!Yjk zDDy%&M|pX^5hc;#IN?`tedPQh!d5?+HG2o_pSft{a128a!H69YrA^eW@ieYyA+MVV zwanMVh%NYRj_f_D&5Dv$erGIc&(g30h_=8l7I7SfN&X^;RXjwp9A?#J<-|ntlMRkV z4@mMs(U8v$0xo|0EVb-;jjod@eB@_^^n(1Bd1a&O=xrsR{jErBk#sHru}^i_fYyqh z1q-fOmAs~-yygg91>+QP$;o(x+ZIb5s3y4~q*+l_McJLeptwcb+Ayh#Vwyr>z&uHp zo+b7d8nji`mXdZ%z+qm>aymVKGtZ_w;C~#N$bin~fix8!;7QUS>F=%zZi|8lDGW_o zdCX?17#FKXm{G|fDnDyx<7{Bw!D_5m=vhzx`XKz-H+2+M z&cM7rD7sH>@gV8kLPI;hThX-yvhvSqq*G1Ysh}0_z#ao9C=R*enR9OzvD6( zJV>j1W!M&OcUyjj?SFBINAvOORvqQSbRd2O&NG87Pcrm68m+~IDAb~FbeAx=vlb9X ziQ(=E5<7uD2D3(|odD(jzTGC0Wz(2?&gc{=Op*^PGcukq-=ciPOwhi>#ZMpMO=Hh6 z<^17JTbehu92SVz98EptfN*~c*4Sd{0)kXU^<5S#Ry9R){Cp9NZd$oUF*zZ^<}|z@ zzKPmJUT0(ecPbk-yZYjU#wrSRQ*+_(p3*VfrCuB-vTKSmf4M=iX3Q6e2h;2A=JT5!=N zncDs6n>GC$@nB^Z;=+NhE#fVCL^Y3ekUogLps~9$TvFQkTH*M#l`jORaZuDH*`4^l zl%N4*QfU(~S$0{TSOm^E_llV75A9b7<(L`KY2d4}dJFbixYdn?N$(Sod18@)l%^@? zd_9cQJBag{lH=|Ed;q=W#UsPOUNC<4tWA3V-L^wdqii>q@Icj%<@c``G353M8kN>K zBPP zpAD7pByC|>2BXC}-vB$)xNJ{MvA$C2^va#ft?^>hcJPs$_@(<7E7kJJ!>^uT>IGa zmqUCjJeqvfEv87>%}AyWFsEr-lr|w$U2-2UCnI^!KW2;YVbS0Ht}`Gz z+9Q2--;uEX6KpCsR9#GWzppF@Ms4v7Au1@@r!FQg^|vzS$fcyybU{QT<7eg^&-wHe zQLbn$(*vV*{7gRR_3|JWfL6+DGUX!ZtyI`62Kxgd`wC6vasdY^*D;+YrD=nIqxF-7+--CUiEU!b^h@q3{PHHHWXV3#$fpS7ilFiLq)qWP+NNJv<*ld^r8)H0Jfq@yIr?ahXj2hA#%C}d3b@pS5(ND2U|!U?S7fsVP0B{)dy$$qPTn{EmR8wjH< zfQYtVUWE#}yam87R`|sz;a$k(3dRi+`d%EuwgQW;()Pglg+BglE8z5lw{XP!EfWi* zBNG(b-V(J1-UVucoaGtm_`)XXHRI(~I!x5~_`I;t!u!^q+`bO$KMU(mt%c%{XP5)r ze`%eHM(UX2XJ0>oB z`xQv!lJ+61=j&!HV}xmkBbL80FjB#8ZJfu8P1Z1f*N#l&fK)SO~o_REB(*A|LA z>(O6rMs%Lg+bky=mC+TDWw4CfDFzF{q8Cm$VzQ*Y37Wx=;p>y!4}idqKATJ!qm}?e z&|fDbdPwEzsW7%88@gZRMRn3 zb403w7C0aKaYq>aM=rzRlE#JC=a%}EzPR)?=WU#CT*~iS=@h+oPk%5o?cU2jviatYj{)VQhfWLA^m~!J(rzs1zec|o;j<+e8%d8KFz>` znEZ_SeU9X0ZQ*1kA!bBA)21UdY`zcSqJhSe?Er2b+2;_LMQqRoQ=q7X1_r&jDhhI6 ztHnylJb*M4(*Tj8Tuy1v>zoTrJsWm|>dk|bUb-aoMtUXpY0%1H&I^ZySr%<7q#EXJ zb}>0!ujFjKm=F37URw4XMq|CgDDu(noCdXI^rXhTq4I8ZZ`PP&^B(0=Nb$pN|2nf; zj~RZh2u2sJR3nX)5FyOFGj@+FE6!T3ALW?7Xe~HEWJkBppnV)h(I_wVU>lPo;^86l zo#2h4;EtUe+@fhqqgDo<6yeIRujufc(6jR|S9An-a7NNx(u5>aMQxrezxo#IyF5k) zn|$@Zu$#VT;jC|TcT{PWoXrKZxv6_1Y=qO_Zyl6rg6>g`xvSIrqN-oiEdE{i;?-Ky zL|jP0=}-zQx@}{fpIN+)WL<1-%mG5jgD;(5Qp*0g;Z7AVUD}=?158je=ys0qE=e`- zPj;RNHc8Yz(*`COx`(DX_x8b&Joh6`Ka%3HEsh7G&M?@sg;sJ?oKqU zUb~Y&is*CWDyOD}plVbf&C8)StHx4<<#~+K45p=(+B2;7?&t=VJD%%>V<8SP_~7=J9WMs-Os1Z+VZHjf4nTurBmL9(QGQru&#r&- z?5Dq=rHvnrR(=F6GHTlGMAUigoF@ORs20lpL@ZVTC%@XVMOST3+TpO0TWDy;Zz1Yp z6`M9bR5|cWmG)gR#QJzmiH*N!MoYi839}3x{%j}U?6)^ensJMPHlFdUgrSiq!{t|3 zqn!H!6P2)KO5^$?Q^FG?78HN74$>>Y-jCKz z8h2O;eF(yU3w6H|>7vu{A35vtFK0=2?0DhKT@;?L*4fKl30u7S`?z#S*&<%|V3{LK z`Lk0HLxk?aV=b}rFVYDbbaFYGqVY1N-5x=^xi(}`f7$f_xlv%tQA3vz_I|pzU*}9- zX8;KQ2UWAjQCWgrC>l*NyzOrsmKUd~{#pdH_9Km4c)xlCo zP^PYwE92H(6fd{$m5rAp9sCFstY*1S{u0|K2wKT?Ud z(Q1atGc=!Rd++?=sZF$ygqEqqe{@LCushW8WNUtn#BxH=Xr_8u*-jDiywMkA!+bp- zq9%LuCiEk%CT6?TFBjuh1EkS|@jT35y~#Cw%ds)Qpb}vw(Z!q%@$ibAYdIjF+`r#^ zD|vN`fpWn;aPS=2h9m%)i>o+?!2rM7#!4U3ER=GPw@N|_CPC4xo>!v}UXBQ`(`OO? z@3Hv>CLkOEiTi@`;vw!3?^2_Z1Q{+`26^0nHF{6d`$%T}6sH6D9^J)A4Ww&09hf5b zA&>x5k)ApBXK-7VZQwBx261u!vr9ID_#MJ{SDVs`cHB7Q7w8;@Fwa%sob`S7h_+I9 z(F3(sSk~}nE+qy%W3-V$>|d2_z9#d6UP>ng@hdok!r}3P2Bp2e$o~@Pre_tJSUk9r zvjtfV!(wQKFvbY(qQpNu1o869lDjb}8L2ySafapMTLKQ~uZ8^;cXj3)Ue5uNW!#P% z-K>Y-H`$SI?VoToQTBKWx9XPrixyO~3EVlNHDZE^&4B41kQFe^09_H;M8i($Jr9UHN4?VXc&ySI-@0x1Mi0AD|Cc!9HrIVHb zdB~Q%WS<-R+(Rc8c1gbyAFB4$T#aAMOOYy^0%giYtTBMCG2pd1rOgC9PndBX3d`GA zPf7M!NUbi zxUZQA&%<=bKOtzU)Xe0@W{cMcybtjzL>yN;Z;_$8fw!uGxAgQTY4R4di(1noKBu!7 zeYk7r$Iq?;ZaqSEn@GZR>&Crv7X*`jc1!OY)h|j*HWM5vcCq1Cp#90RZ$1u=B(@oR z_7p&yOir83GkoDts4+D2{ZDcI0KCeSQ8H@; zu}YUarKh@D_Ei>!FFN`iq?gvJXz-+;XWNs{R~o(;C1#z$T;cKCdb zz^hoGGxic2rJF2B-Hs!@qvB?Qd=(UK>D*uT8Ud*g><~>%4pb;Y!@0*rRuX&nyf#90 zX^kuAw!h^0{Cy2YW@UyT6^-ci%qInLwG+Z2;M!H>@?T= z*+EE!ekJkm{xHu+64S3HK9aak>wl0qWR)El?y=uB+l2=tYv~o;)P@~}*<09Ies+*4 zElx004b`L)ZlP5SV`eBj;{)#eshKRKpR&~=?!vmE1*~d#{A=y7>=2f;pGor4g_Ufe z(*PUgYLBgm=gmi)XB6Pgt1+c~QBYbW z6OaY|JX><5uRDY)RRsrvF3lD_f9{C)w|_bb#+saNIR8o6r&*B1x;|t)Bu`pGFp0kX z>@48g!^`)5L2{_hxg%TZTp2uQMe~=2UW2SO+rO>XF~#4z{jzLo<5u{UBBVpKW{osv zLb#op^;PR2!)PdRyx~AtINQw->BkUiZozq1E)H)+ioMW?P*fEUJ8e>^UWbthib$fp zY3Xz~Vs5Eck2zRzip~rZ{0-J&v|KLSu=CMzL_}D<1~^ou1n0G0!AOu#y9m{zHN)(e z>T8f9F}MO(+o2Y)g8z)+#i58vnwsNUN27wxuz&{#0E}yv*t_GU8>&sK^Y4WsoQI0C%{jXf zc`w;}hdF-IA^R_1Gaqn~K|IWfS6a)V1uzDq#}b!Ls+i;C)98fhF_^?S`4dUAL}wb~=SwFLz^_^5 zO6@g`-n6DFd!M)fg|1lR{&!YtfijZcHV=`-zcISN)EW(w`Ht30qc6>ZpC62*Q551q z09rQ|cZA+PS{mD)RHn7RVd?i{SXyJwRsow*A`p(buu(Y-?g3G=gnFJx)h#ThJ2C{U zpgVd(JXrZ=NJOjV4Tm=%v(RPOIuGSKx`3A_;y4JCi6D6VAREc@Cu=X!q0B6f|Jp;( zI)vXyDCqoy&ri`mR3NA1!e1t|GB!=l4h`yoEWoAri)1iaDi+0G%(1!BKL~Jqs#yl& zbM&N{aaStk)g9&4NAk+^=62}|V!u-w83gbCIC0NL%g4@nwNF$#PiW*(9IWRm8+g1q z_4=>!x0hAK>K8M<ZMh#n$2aOK;if4oz|TzMRI7;r<* z4I3$@rN-qoXl25P7}$wf6hH4OIX}*pLaOxWS*Dp-tmAZDI=bBDhl)>Qjnvjws(Fr; zz4&tS@oOUrG$Xf=A$UgaIFG}ED8VfM1#3}&NX z!JNJ4VUsz3S39=1AB9Vh;6u;+C9V4?*zF|04)6HXU~Z=1X{5?r=aI{%sj}MARZ_b1 z!Y-F6G#Cx#ER0l>SErT0gbRl`Gb>HEHq?D*=e4bO793%GQAwqT`)_*MJN#Pf6N_Q# z1SC-925*VFk71=XG=*+8|LYU+72ob|$ug^Tn&M}Ppmor`Z=`uIgxg3wk;ax7pSte3 zhlu1Z%5Ok#Y=Wnj)@KN!MM?RH18U5rnW8fd@&6{Eo@>^;_>q{@^(d}{hS@T}&nZp3 z3C~VF)3V0^wS&`B;5iy?Av541ZY_{O*5Ir!_`av>)HF+o-3MgX_Wl8BW0F{G*-L*=v_9yo-S#d1-pO zuObsx(|(zepT28znou;0;s3lX(4@U$X__+2R*ic^WDo4p^J5IiZ|iJpx0e@<|B4`4 z{?XXPG-RZn+}}kR-?tS5Zr#)eR|^47&_n}Cq>Bw2Ap51)1nN?7?e2y!=Hg0_#8BF3aMQJwE@`^FTv+s#1KBsdaP+kV>6!GluzY|H_6t*GvWKjMT z)mbyrHl)a__Xe27RwKP|A41}GH$+dEG*zGt%g^-5N; zZFc@2v9SR|S5#8we(tZ#8)R2<2EQmG3WRdTV9!kq)d@5-L5VD<+9i(wNU2*ObMjR@ zk2Q;7>wCS1<$?$>gkbZy+Kml-99(=RUr1otugNv}!N>h> zRpJS!2)1Xq!$RCafn{v5Z{6aoyZ^-&W*bacR{rCDY|$-m_{MWBhD``Gk%Qxkx2T7z zL(DZ09dI-Q$1gFihe~sre!N4YXN{ge5u?!vlVfn^!Ky@6X&uSC1(Ef)R zHXgZ>p-pVW9ZdY8W~_v1mwO<_8~xX7{TqEFL}%quEMDv#2_fxz(kuefEY`WxjO{w{ zKvk8#bRxn?!vU((_bzV>Uw?!wbf+w&$PPCC&km=qkfNoP8c|>cpXQHYjrg9bPT+rc zBSM(-;pwKv)|8s;*mkpT%B#ZgOD2jD z=F8wEzsCG|K_tn+hosZ*z}s{S!kGd)jF*Y@3aKRsKs zN@c2T;V-ncY&s1LnQxK+n3le6j#(z1Tp&Vzx5S=8_~MJ63Yie%N2cgEKN;SE2DQ5H z6}s-_Cf1g+xu~LTooB#);<_(ZG5<-g273sf&Hz3#HRGY$D{<=O;xRk;G*D=KWQwg3 z@5gx!AcqZ^GbyfE#kL4gPg4S$DS*6~LqCn1=1P5%rh)E53M5H`cLG;J5jinPZeb!3 zbvs&;7)VParnK50S!3IRy4ocJE5@{wB#SFz>qNX6eCiX7tJ$;&nO+beL3&hPBFMbHEoDdxyp)@Yzb9MjY$83}%5wcu{MdTr>-C~N>F)wr1E&TU*CuMl)-7Eno= zKoT@S_J+w!-hC>MXRg{>U}v+f@9 z%aGAsr{{)Z-*8d@p6m3UhIt9kkG!nu*jyZP$oqV z1#j8rb2Gg%Oe0g6@DOLgZWjMDFI3zh3v94J`WU5kGley8bg#EVnvKr2HFG(a z^?r|y$m$^}j;;zeeV4aFb6q5bnwSu>ICHeV33h|{EY8JGq64=G<3L3!3A?v8uWNLM zON^5NlZ^ZL7iiv4e}e|O3~hZ??q#O;X=uDhpSB6wj-HAD5SabFP;|x_y)@DLZbCd- zJTT}zz3MiY!4BxnX&|xevn9*Dg>2{?nAC*K(7=D_Q3{HF3Gh4MA2tDj<0 z8w!asuQnj1Bw{n@W`-oXGx4w1?dsrG9M`&jn^+8vh^*zB3 zI+ltPGZlF(@SDgvc%ilPgeEQ_uoP58kFXbcptG#=igrUR4o61zF?pdq(>m^K?hbCy z2n)AU(l-my^Wrv`hxOdB=f(?Jn~NQn_xfaNU$b+o76(mz8WnGMe9sJ|risqbiA@k! z!2$myvYR7vqMBr*x-e=jnS1Sk`xYsnqFV#*2hZsv6+}$sd+E=)R~Q2a$M;_o>3L;QL5p0d66CMG{2D3g6HI47uRrR`i5Ix$RBe%gkcaK5;|8xVc_$ziolf zxnnX`srYZV1p<}$WGe|LB%ZypG0iG%=mLJuydsfr(9wWMDzLr)RJfBOE)8uXwUNbU zh`Zyod!V%!MM{I!>;V0`=JCYmp&1*%?}9g^pD^1S!%wFGA8GHaE0qrWFJgP^iHLSj z`2QxK!LzL3u4i5RpSiX&e6Af^unJ$@2rS zQJ!e|1|ckm3h-wgg^8vXzK){Fdq}MgoBPUbr7}ay2hwy07z<+AyVHI=nVdw7{ z!)u6j-`N5}d(9{5Qjq@GJEEs>e>LT#^40xwJM}_lKJwKmT*t=MZo5VM8fwvm33o`- zIIQx0GxYw4$fFf}$rMG~2l{4ufR|w<;(eaCueoe-BV%QyQ$a#ywyYpwNMr#H=- z?w5Q?9o;ugUH_mXo_|*Ca~eqg$B=D0rOr%HC=utlH!12{yvtoG4MSK(K6!raf7j{5 zKf0gM0}y9`U}G~QHq7Uxww(vs+Kq&DVU>vgNkkH7@UJT(ED_Mok{CR5}&k(qNjG-R<2;`2D^ zA?3THphi!DpJc+;c}{LucW_lBJshs6ycRgNDtRWv8kN0U$IMz)*D8-G=jWCmQ@2WG z!8_qH%dQM&Q76kg#~WH9R;@6@TxG0@C`HuGGXPlm(-Lf_$JPnhul7tP4r+J*ROtSB zF+NuhJBQ+JQznASjfY9+k&gl|yM7w^@N1FvB@JrxalrIe>YvQ%P+pq|Alsnw0(O{U z>%_-#*nqXXBk}d{y)BqXb%R>=gIeP~)jc+3t&NtelcnCN>XbM``#`qxsqR*FshaTc zwTsQXtIvz%re4P{!Xs$jfgBeW_ABx9i)oUr66zOgv4w5lHsUl=sID4i_unKp~c~G?G(z?|F6x z?>z~-F6_}`M58nD7J}b=e9E!vKKYJ1H|JenwN3W#SBmq?fEJZZSgi9jxOJj;(+z7$D|}*EooGH)YY6aR`fQPgKn6g~EK*hV&MIZl>RgI9 zS~Nq)W3<2#p)J5bq$*o;@(4q*$tCK%w(JCHp2JQ0SWwzQt)cm3jlwD{pN11tX2gsB zv``_dm?kyzc}J`bR6Z#rBemb5zqJbNiavgKMlz@?v~pn?c>tY#S$MrSfF3roN6V4~ z@&4`4?Bec}pwUXAENjF2mbq({bUew#%)Uia?xIDfGDq1s9JM!k<<_3z&x|DCUV+j{ zhFhS$trx>Q(q)>xyBg4F|wXGJ*SO7Ei z_q<>-6L5ut1y?xEOXfcWs~RL`b^EbaYA<^{XJobEpGi0u9FagjoYX((%>6O{h2Y*X zRFAarlx^gDmwffAedB2i+zZ4J+-_sk|MZ*Z*D$Q+Pq8Jv6(!(XTNRd{v`MvB zC*f~ih5@KqVw=RbaJb=Fj3cVM+8>!QE$XCo?4@x_9KOJEIQe6nfGKEj2Bha8QZ*G+fL&knoH;C~5<3YF+ z*F74jXN_HUxkcFbYC?ZvW*NFaV*S|Za=hSmNqIGfN8auEdM!2V?jyUkHZA=Sa@ZjV z_2^)G2AYr*Xhiy9&-$Kx?UfYj!SG%YV-nEIVP<4%UPC7uukfsV$Wni+w$;1v;C9~T zO#5hd&}?=plwlXrTo_X+pfUq#6K}yeki}Z3$I6PV@nRfn0{xmS%#yq2MhV62Mc#V; z!~e!zTGQDx_9?S|gG4t<-oj)aXeTes=mX%-%7S<+4mq&p$FM4gc0L0pLhWy1;Pu)Y zZD(S%hceEK1%0hJ4k}6xDvt$pErMz->85w(Wn3)tAE?f-HMYk`W;kjQ{B9$Aw(=Io z`1Jd{t5aVX&x+L!mG;CtoryoZRR~T}J7Fmi!0#B3Vvp1S)KE7eZR#*wn*I!4@qQ~= z!NA;`BO=j52Qu}P*=;y4OH%WeDF7bXTxdiJ?qR*N1Q29Uy9z!tS#b9hfT1ma8gT-^pg8K`2dy4~rw@itllX<5fS#|0!;asyMVu{J zOF?E&s>-ZA`1uS(y~I&>4HZp1uK@LhiLow~a-gfPX2Okg;S(@ad)mUrfYfU2!gLFn zwvr?zgT~GKIRIT-(6r1cbIh92XQWvR=^BPc-W4s47zOWtK^CBijMyvAso$7i;w#CR znH-trx!VD?1y9@1Jr?>#>$Wd<-+a)jO8fNG|1xzbF?DFh(*_)*%@c{k&vinb+*2)a zgS|!slwYN@!f<;b`kA74vDN%+xoytoZJYVDKfEjE2@%m-C`IwEe8g<{Do<&^anO1A zi1#4JVIo78C)u!))pWILcyl;2W2!65hD5vp=fTH4iFn$pmNz6n`?7rFggfXK=G-bF zyzPSZ_P0V+$)CUr1tbR7=ZcI59`Csg*lvFX42_`*wdZ+!;|38)K>PwK_RUieXFgLs zVMW=W)WNx6H$E)J4thVwW5DLs@ELxk0ows${E3%C*Ev?+*qFTb-Nyt0lUyxT=Lwg8 z;Lop+6Od}l|B`vZgTn>>P?egy7*JLe)1{1jH_BRY|}bByE$x#gV@k0 zidWzQk?*8(RBI%L>Jx`8catq<_Uf$=$<-`JGq|XS>0;Y7&X!B&Y-rjvrtL1dmKo^t zEjc!hts5)enGesM==Isn{ln#FouN=q9gPN;WRvPy_MX|4JaBq*&xMK%Yocq#xysOt z3e?cvcjC9lLsL)}z*-;eNXNq?6!;kmYxEx5sas+>HG*`M*Ffh{yq0#(N8bK+CK?F` zUCO?UhtQ}_`M%xmEA$`Z$X?d`Q zP|v3Yuax*!y`Jud%_-QA?)F4;N09AEEV20d!#!0evPQ_gK~>HtFf>u$oz}*^kxSA* z+)Et0AU){3_*z-&gu=N-falu~o=TBv>Oe0=oK1vQ&Gk}?ta;^3I9*lRd2cvfTj;dg zDf52j$1Wu{3gr{#4`Jz2ife#=w~0qipFr#KVNB`?Pa;vgB}z-#jgAFWFBoL2avuxV z2p@=gg2Rw$Tg;gm+dLz^CIh{qSe1nCbXYRqTjqiqrQz8vb~`_Bv*2Z^*H7tQSvG{E z*J`R5@V9x>6lkinz|+)ic2NjG@)kqfDe}@avZJx9I?#W>+&{ABd|D5WP3+0eIvrf=oM`|etVgE{AM8gZL2w@IHKH^y|&r1W=FD13eUlY8Yth| z_HL7eUT4{aUVEmu7M|U5CI0rJTpSTgBCgoO!HqSC?8vh0CP&gY2Yh>hgT=G^IU~XC zMO8_w_2QjkRmnxFtVjF%%}+Ch7T_Vfk0=#3LD<0I!|}a;@R;mRxFzOFT;?Aj0*>+y z*bg}lDABt;Uier@Ej8+>-XiJGGcp>YnYDqPJ?wVFP~07htMS&vPXr2rqh51HQ=x#I z3E8b#5~y;YIb~xM8|Zq$5RMuW4RjB_{baCVw21PDARP#@b7x5F1)r)Md^>!^dypj& z#G47yg)F8;<<^+er57xwioScvT5&Ngt0}-*A;7+QzuT`5%7%Qk$U8v)dcFVQ+P@V> z_MK?N!o>jE=j8`a`csq|8DWa1tNS$~6Tv!pM)tnvV})LbTFso{N5Mi|dGrWu)siP} z3iecyk|~oTOjRp44_js+1M`EOYl1;c_9@Gp$nHce=S*VT3TVc!^nbvh=x|Zf9#7W+ zX?f;rhmiQ;lsDvRYI`RZJQjDyX%)4fdc==*L9F|A22RZ?PF_Tj^32`!;)!qzII+xq zcIh0OsB95ma+o-1i>YE{rFas*1J*HpU-xo zWII9;9@k?AX198M0OO=BA1&2ZnDQCg2o(d9aC+}W^&$zE70GJaHysh(0t(Nd12Y^2 zs*lN5;*|{{si>+KXd_45ZI}ke2lya`PY(V!Dvc$)#RXsKHJ=_}*+Rqjd-wjqej+!otY7MKPm2Q;9^0;ARe+0M#|jYZL_^!^$qDuT1NR zVJBooY&GPBd;PF4VFC;1l(vM|*OTZ_kvnUNf`dv5Owe{A7X#jo3)!H){J~6jP4Bp|;ysF8FDiKlKOy)nV zJ=DLtB~DCeJ48w4&{0@q*DS9X=v~8EWu$M5n`Wek8n4^a?55>t!GHF!LoU&V6VZle zip!?=%Xv~Ir)OXHYS4(f2DL=x(}NfBOpg)=6;y{C5UR3U-Q6zHWUI1W|7zJ999#FIszEvCFUUiloa|Nf40{@{2GGt6yGbGS$yw$LR#u5P{i zvE1c#{d`9vae}q9Rd{H?K{@4#&XJfm@+{Bd+k_#NXfH_}r+pM$Y3jzpt5jn3;01Mq zhVRhcgd`1btAe!kG)r*~)hJ%6LlD>7d;&ZiOZRh^f8g)@HC`)IP*|D>Y7jJkiaw1~ zJt1nKb5M}@Sg_PPG}NETQ&ni{wnt2QH}9S}kIZ--Gd*e6_T@8|<1)5d7Mpbsf@hj- zcdDJ_Xa~RKu{l;|@a)^w+^8{dJ&;JksII~`DiPI}-E4RU2-N;b%&Xx3+3g>oWJWd$ zMJz4l%-j1hjz+bus*FoAQIFRtcpJES=}go~d;1}O8v#0$-Qn-A<@Kz*xh1{F0cx#Z zT?6&M)y-jg6t5QrHa-6>M8Z`y{mD1+TT#(3OX391XQqHu-Q=$bqsa$XO9vMA0Wus5 zVB1p3mp#(Tc{|*na7T~&yI_-Nsq$4zuJ1mff3)P-vQ>liOLE^@qsB4amMaAROUSJ4 zv-CVm4$33$g2w|OIAH``dk0**oVxW4th<9=(G z^Q_X-j^EAC99AN6bNBWQVN(Y)b7M#n&QQg39rJ-(()~7{pAQb)-M`zt3W@j4lYj5Q zG!3$y6kF|9&qFC3Kq0~pc5ldje`J(`1U-1xSuabGk==LJT1tad3`_f6Q`SifFs{B7 zL7iSF$-Cb?2ybX_c?ypLzivBEXZH42_Yh^FWI(rWWW@EA)l2S)I@a!+lI3AzW%A%5K$UscH^D@^fp890k2 zO!-5FIy~F%e`i>4)c%PL$jPHn*_!%3pLr(C+Dgrb>A>Fdd9xXb( zizp;9y&GX02a@;ioLGkqhC7^4{r*w+%d%t*@|*j5EcSP_SnVcE&QsO-$H_N@)x>~L zzf<;w#(yMXI$%1jSgteE9zsL1<}J^C{p)V^ANDftmN$h<(meLgbXpqX<->9kNTnQ% z<&tFpU7Ibp0?_)ALsgpND~s1kvNof*riv!$o@OwwMLmq{1p7~~#pYFtpbnxTv*?cC zACnz^49^9ZIa$53ZQ^ck8)5#*1EdEmy`wd2wq35d2fyWfo85-z_s^!{c6cpiOqaT9 z$3UWF@w5pjydY0D9i0H^;Rbd%w;k3|erLovwWYQa|Dc@Sb~cZ$14uHFSaa&^$KLOC zzxyp<+Cras>8{}K38|w^%=KUOGR>za-$r1E+gE}F(_^&4zD?*!Zdc?SOsc$n8VWu(#^8cPw>;7=NhW{l_wzw;T0S=w)CG=)im%s(^>g92p(o+LYzwFK zn8fAThusRveP~2F@Vv_>FdxrgkMvaa4CUa`r6WF95_&OG!%2A_qxWoq7nZ9-FGsDc zo0&gMT>vGtOy}yupQ!5*ui#KJ1}8=l1jo__uI!C0?>#()9Uj2BJv-#p#T1-P5x4Eu z(3-SNA=VSrf27Jl(9V);BVoD4=w*fKSJfsx1;HOOm%nx)164o$?t8+G7_>*T#8l1l ziTKr@4CNuC<4MO+HW#)$(k?3Bmo~>dx7+rkzw6j^VYacnq&m0cdb3tn^)zpg>(Wym zzBdTj>hOx3q^cy+RNO4bz@=LFJVv>nNy^eXok+r^s^Lm4tR?s@IU{D)dxK1iI`!6h z0rTP7V?+m+t*?>&ohf*{h+VOg5m)yv9~Wj{&CNc4w#+pL=dzE>&DEe~R#}=CK=dM? zs-93!RsWGHLsbrWg5tc$C7^O89WTSwE+^NQI!lI3aaE21R}A@r7}}ZoBj(;NkhE?t zt4n-x)4%b&lb1KvhJI^;Cxwp~tqfF_IB2UnNvNLom^BuzNyXY6{z&!qXvdtMg^BQq z*jX0~hy%+&?<`>I-X!q;l~W=jtr`Iinj+{mAguw%d790Pg3NN~SqQca2Ww&=yf99rofA|3T+nh~>4D;_)rFzZ%;0bHJTI8=5)E=2VT2RBO zuFe*sDv%{W0&TiA?cmGb@Yq7|Ho~{I z4o=hGYyWL-dnGdF$T8^Gbi1m4$y~-zQGA$Jy~JD=ojc@q>8TGDIz>i3DthkTT5ICp zUjIw3F7d@64J~N-411XG&elr~s7{K{7dKn!RKbNUUh_rpBBsPi?j@%xLSI9_A~;I6 zMD}GYZ>^8VIBE;yQ8>eqzdvmH5YEr7>1C%9ZXEE2L!?;_m^B#xIxwX6yH}@_)GCO5IPq zEcd`|BgK_xeCr*jaABW|oVK6GvK5lNZ;%1Qe5cHkXq{ljsFrI~rz-CgJS3G&*B{q3 z&S%R!jf+W=uR>9N>{KdoH>g)L`*rHA)E!lQLlzybx59_d>NC~#7WG1NS=)ZvxPole zQ1L$)u8JEk6V_C18xQPRy2qc5g5XEx6dH_zW+8`m*~xBDcHWs)}bKeW2t z>QYRkEp&)YKulZj58qslSI=J_)PW8m-ok!h%>=rxxlYwln+ z$ws{QtYpq7PaAB(y8?1tr|T!x7}wEJXC^){ipX}?OiVi7lKD*B9I&Z7)tqe3l1lD0 zT}iM4{iVIvw_*GIS?B10RVTI*IUV=GvbBW=9sF~OUQCpoz2x0W-7}VwPls(2u=q5+ zyA;u-*>^`DU+G26h|WF?yklC_qtmBTq)3oALA5%tu;pN+sg`N)3fdPvc*F}QCmrAV z)D4N0YpIrtY6c7ERI5Y(XNm$#oN2Qx4*tj|8Rxl};0nDh*Vw;YT%A|OtO3_{oh%e@ z1xJ76XYACG&x*SglA2(0y<;lKJ3z798I)d?s?^KP5dADi?FQp@mYL+hI8at4sCJ!x zz&y^_>Am+ zi^%H*<#EGi?x!C)`w6e8w(8D|?;dw^38^Xy$5QLrnpN;u^{-#=3jWfl<OqPUu`1ZJ^@x*z&*|tlI zK~=%}wfcfie{J6O=J;*z8?t%fPXn=rYEf@NjA}3aIqJ?-K>Dd6Dr#oO5=}Ak7!J< z4~>-k3buTUg)bvt>)qkxp#oc6PDnY&1bHZ)z6Hwqnl1x!jjO!Ap|@`(Mb z^jhDJg%1D1JPZ|Y1Kid@5+H%3C)pk^b1-ox3Nh>K{=$xS=8*k z_D3%nOh)2}QbjX;BwowRwhJziFJi9#kzEpkW`-_}6M)74qO_nBylfcY^}^0hExvy2 zvd?8jkL+ER6?q67_NnPEeCOrlGLBYe_R@bBx4UKi<++BFyxSv}!3UKkYaI7Wf;0N6 znDeuDSF<6OhgOjC2|{xuKwKJw35J!CKh}0uE9SAMu8!9=0tm0AFiY z0x{&7<+MJi9HCkd5Xc|2%`mPbY^-*Nx4XvD~3@r-in0v_95(xR714_WA)`K4pWcp#;Tv-U!}qq;_n} zuMV^SefC4>j=p+Z&aWY&VMrxud0Di#I~iqpk%NfgbK?`R!IV}C2X{eA_$*bz-1Luv z1*hzi+2!eH%_z!Rb^UZP=oc}}X1cwa91=q5k&`0#m*l|#B5pWHaWqNfeg^B03S~BJ1rp}%cQD9pQQ5?3H|d=b9a=aHS-8sDYK zNQ6j)sz`p>%lREIvTD|W1FIxHgSE|~TPhZ&RX9?Mqw3l7a zY&-rO6*w*WMq6TbCzg+;P9z&6fKNe5f@>kxJ4~y+{)t&N8&kgPGp>|7rI%$ zk}7&+iK%_tJibdjg5Y)xDU1h!DWm@Pb0F<)mDrmOyw;P5KP36`tp*Ig#UGOaPME~Y z5yliXJ!%!WTIt~Mj=o_PaPj^5Ro0$>fMzGzmwJzrzc5kFzEf+ z5X*_-)yT}1eNisGrml@b*Y>{|ew~GP9r+%>@iOiZPc~hwV3c5rL8*1jXwlAYHf(vspwZA<6aGnDIg9;4 zgUQ^d%!rBFE&2h_6Vf`jM?nJ@H4Zf=z6bYnP*#sC`QNpMnP6S-T_rbA)3I`4pZy+D zjS8Rn#4uL&yQd!bBzl%cMT1tmGRM^J{Y9ds?wELJA4?oZve%gJ%f64WB2_&qo!u|@ zDt4qq;1`J)oPf03;8&d4f}Pc6!~Niydbup!l%XU5KIkP3?zi_Dv2o5@!@G?Vqb!_zt1l#&Td z!)Eyn=G)Ct*gAQW#g6}rFws!RNRuCUVjIu4EKE-PKXi$}Jt>G=uL2;$t}Tj;WAZI- zpfIq2D*rFLzDM@=wh6>Iw90cLa{(gt zG7X73!@%qv_uB70(PZsMWWLoSzRgLWnp`?{XLMCU9JsHp>2;!(e7ze-nRQ)nS9Wdu z^xD6DKKOjQ_4#&XZ1?H}Q};)EdG7LNLbLeYSjI&x8PxDO>)X_oflI@VrrS~bIzui;dbfASw)vf&~zh#>f9M%J|{#07a&%liJRzm(U@!a~or_k5BiB6Y+ic^lCzhHZLZqxy5S!KZ1Fo=CG zL`jW$LO`}u#M-!?njft4p8w)FIu{f9taqh~{JiT_icXFT%i=OYoO%?xh^2TvrytGzsS$*RxZ zWX9kOix{=+C0-xxA>6nyU5?y#vZ(6|XU5+h-jA8-YWqF#WZIMy)M8slJzLE;-G34T zAPFHna&{3M)=GNiXev0XwH@E@?ZHyjt7XBk9PtC9<|=}jqS4{ zRZB;e4r^jY(SnEi&vZ?`IUefvrVwA%%`_I)D3;r0n%0u&kc{|6(qh|zTpM{sH=L@6 zSYQl$*;)Z_2L)f)l0O}=k|PM|6O#gSswD;}RHTGWT#ep2U;ABHdf!}ZUKAzmy;Y*kCEzu4S^#8ppwm{ zqNtUb%fuauOR^yQ=vvl8kJ{B#F^OU=_(NFWA^|zbK!%9pTXHo?oiN=ZZw1aX`WJGb z2u1kzV<$U5B{?e2aTm#yW!HtF82j8{f)PN4;&WPr6Nf$8;Sp#z4jjX#nP0} zR6`3)jpELUDi$NHx3JM9H;%>OR;({!F2i@|h}4dRBt+K)_5VXvufORrhwKY12y=d^ zt3B5`3;6E|sJ~&-bC;?Trzmz*DU}*75qquf0%AfISZ7Gjc^5yIk=$O4Q6(q3Hd-c| z=^(pBF%CC$3@47KYi%eBkR9)4|e9oxusJ=P@PVxbb0alF&4t>dh?_o4I#!oQf zHwK=2v?2^3Dyhbx(9aXvEbuVDpQoZuwnZe6A|uqzXtw%H@V0aK0o9D z*a`j+fAICe(Q7V6M8K>MawH^OME;Zz*fVTN~(_iM)$=oAHt+7VSbo!6C(h0EoUt_vf`)SG1IjQhb^%Y3z(A=fpLY8eI zD79$ub+B4<(JIcMjxO7d5&}CSi9R32JP|H=x!ubtM%Ro0d87j$bv$jC%YmB5AtCC|t+GHH^>4d$yXtiV z8cjxNZhCQku{{Zq`M&MX-}SajENPX2o_Qp1*}1=f?j~72Ky@gcGhvZxmSC?lnYL5* z6}U@q@dI6{Qg%0jDbAsee02qK@cc0SwaOE3V!9HH65LNnXcSKylD5E}#^D zn_)cy!KKNryDrBFqcNj(H2@lr1>R^i?^@Zce-qf4H_CO>OVrAR5aRTm*3=_l*eGB* zc%HbKmWlqtEJu7m4T*N236S%J8VJKkcgfHnv9EbSr6g-AyBYf?Qk!julCl4_mh&JE zZNj>fg;8`!h(%$oUfDTtf^b?YM{YV0^H+yWejKY{VeYZe1@%m z+63u0uWjP*HY$Dv(Iy)+T`JPI$<<_!^EiA8*2;A#x;I6iezd=yJ67RPL;%_lM15Iakd0> z(4TZKOi7$%Kk*=RhtrNjX#bi&D%Gi;N7mNzJqnB(qvtPGn8EaoQ>I1fo!@xTkq$n9 zzjj!XHIKZHNd_`0ED-JR$1{aHuD?(GOR-3CQ%ZjG$3reh z?C_cUWz+Z&eQHN^bK=uN|Kg#|r(F(xy$#?{#CG%T@|5nz*M8;G9R5wsvk)#sUp#pT z#f@@|&$q7Yx~q7!Uui`TSK?Q9`xzc#4yiScgkOnO=_#8LK;VNHKZt*{`OUEMo?Z?4 zd@5Faep(dh)cWJwR2+r^^qnq^?xq|D-JleqgOdJ@8rR2J98n7Lu3{VD)5e&ljnG({ z0wvwAz4f`>sBR#lC*FOs?^Ft6(Y-XA07R!^$){wa6BJPW_owXN8%XIR;|CF3OHBC16T_>E{O!COd~n)dY`CX|FkK#j zF)C4B+PYH8?8ZN-+^Y86A8gQ6N8@WSf7`BhY0uZVw&rfgPqR8*{E=*c2`lw`xfl<{ z*Pe=hfGursLr;=D^S}r0N9we?v?~)s+?BB~F=E)&a>#e*awx9Nsp654%AMtlC<~p@ ziXH^X;9P&*t$f@qc3t+1bW@p95ya|(C(MgS03EB&eh@+b;Bymn5tFYj2dm)P8qxSw z;1{g=91?Ckz^O(5f!v+5+}$pld!8E{AM89DSP)I!nD-N%<HhEl#h+Za5i7nY)0W&RLYmZ{}4!95`3p?ZQt{ks)^v{g;}0~EpN>;d z57zeE6K$ua{`hUja3VyeOGUsM+3_=&5j_JB2LC@~ITfv^A@bWf5^}psMfF7WC~mM- zI$QzCWNaY!Ysksl-!plBIhtH|Z4UG}3SijClxUS2irLKxp#q#1Nl_Gx~!&@gICs z=55`uK1%53Eca3{7Y@@zp70z$^6RH#le0QH3Mmg8Mx=nOo;wKy4`ZgliEuo+=XQrD zy_wORB-}HIr-mZzE8l+xgBfB~XEgDKxG)lGHefukN$Z$A@94=G=f3@2<1;VDY1re- zA^!7nwjGJ--RKImFfy>h-4ECcT@f%EqvTc93P(|OHfO!FY{ZwJ`iH2{iy6NS7*w*d zYuqS+Bz~v@_l6hHz|@uV@76k4LwkS-wcFKjzK3r(c58@QyrvqPvQZzKGEe;*$1x8) zl0|~a8X3D76YG+vc(puT;V_0+*2o@LcjCes2gV$&GG?6mJzjo)q%oJ-9r-Qd5RykG zLVCRFjP_n)>_tLr{#1d>lm5R4vzy}*Y#ydvN8Hx`jMKT>l&ELQmZDxjOddA~5)@Zl zm3`Q2K+$bfLWxB?R?T#*q114}23HM$vb<-L+aF|@c`!PNF;1}u|8#+<9@c=KMHT;8 zTV^3gf*ATME7U%x#Yb)~H^0lR#-Ph$k>t6D2Z`{pXz-3E^>2Q1Ck~#`#26SC?8WmJ zfjEvZo1EtG{^yH%8N$1Ig|fWQ7P4Y)Jl-?jqxjv?V0#m$wG8W7q4@Tpl@`k(W7#L@ zCO(#@>l+TCSZR>5`Rlf*DGQXqs3kA0!eE5yJTw_9X@42jE@WK}4WEL(nP-=yn%R=2x+C zW|2(jyrN3Ik*$+COiHO{xSFO{PLu;c==DJ=my1CmmA~}E3(&BX$d?kf>EZFdwqaYN zZBCukVZkDMn|^wQKGvmt`)DI~#y|LCGa{8*bBxXsIrdJc{In*tTN9zl3%aw=zDb>s7MgnE;A?vY51{Pzk$j`ugJN|TLMKWp9?_Kwq!)|# z%cof+Tsk~{n;eGNV9wQ6TC!Vp43Jv^=p)stwAP3}uX2UWF>avOgsg3Ue zzq|1DWi*4XFCb4j94YKdsAU6jxgh4p&R;cq>$dM4+GELt+t*uGgjXy>v}z^Pk>@(C zH<=o+3tB^_>}lT!|GL?PJZvJT5rTkIA^euDB#ShcH|BxicZ8MbCFlqEs0R-3lU5+Y zwtaWC1U6O6vM_>QKkgO%z)QSPy!nSUA;SmUVfa6hGP0JBb)b0ym6w0HSQIwKpX6yz zY+kUZ2XpcG;3+|17s}~AlEwV?K3T?x@TH`R_&SE;7VOh!^TR4=uaKCiE=%=j2bzWk zGoP0$w%#YfzYve*PVz8w^7G(32|S}Y=w0fvce-kzRoVIHRUTrIs${zqToEGFJ{>#u z1d3~LKw!g4D(Z(6++O4DIF)+*Ih}i!Lnf{#7he-U=F3tgajorQlP|_Ge)yO_WpYxW zVqCOfF?|%TxmJ~hyD@>i#Jcw!V(WhI$&yz;LJ3QeTnX3LozsZz1YGw_J|$1$!(dk&}fhV}J~c42!ItrKbKm%$)iab27?N$&Vd-^}m`964xtjI|OJJ$QuX;#7~Gn5*%|l)#o=VSQb!* zs1Sc9d1M{!$pAzj#o>KN8x%B)x`=us^DOuh>TnupWp}!A_dh)cBP-@hnRv+>7s?tD zOs60(IWv~vNr-EPx@qLnnJsClTS0*i+;Wi4`#{G<3w#>Z>-I8gWM}uO;h_@b>u#vb zKz~oVzhSCBCYrs65u6Phr;Yi69cxv_5ME1=Xo(B$<6-!Tg}u&I8|!pax$ams>zLK* zpzxCd;ExK|30>5Pz1WQaciLLcR`u@E3U+xlNdDg`uztY$SA-sOFZnm9!I9Ika0BA| z3{J#R+Ugqe%rZ;kHTyT5PbR3ogr9q;Z+>)Um;m)K^nqz;sm^(W0sbz$q5&mIC443h z88x!RU>s@oswVrC5k98;RTo<@Uw8$rZdQe-B{ndeY4Xb=P65R`nt4%{t_AWgWW>h5 zUPq#|BOyBhvDMq5L1I)Bw8*r7O^~DbjbU|Wa?g!U9?mm5WyoOxbutTcm*YdGHO+Tk z>ZSt9m}cox@J9+OJ;|vZt}d2G93%s*>RQL&pcY0>n031&$G)Ah;2Wv)g!pF62U%HOYW7SCnsYroG`Lr=+`sHvn65PG| z0a&V&Qw6vt73@#Dm*=ra5L;g6Gh^wfyb;GcXxBYe|8Lfb0KG?re92o~6UI#=tR>s# z?MM6L80S|D_2T?DCw6XW_J-LfXxix;eOJMQNgyM>4ulZ68MN^N`&jmbW>FTADJ2p* zeY7RG`XAHty|J^@_c-bAWe5HQsR(e?iQlL&T4wIj{U2}VLqHfGjiLON%; zbub^JvE&O`Pys7g z_})7F^PF|kY?Lf-JbQ@?$76z@$)PJc;O+f~3DjeUoB0yar3tpPOK?o^s~&NW3w;fv z2uj#WVpiEjJHJsu!4nZE{2H`-^NIgd7*jSxTstGWU)(H)SD;cPNKHJ(%8 zH9jU!SMxV5;^S6L4y=CUJL7X>UF1+2YrCNFw;=(bCk8sY4ZJ_FooXq@?faT+{dDd_9I1ypIdq*vsdc)dz8y}}?(cw4M7VnXcDxpwG;*!_FL=(EetYbyml+}MChx~4O(h7Y z>AnojH(3HxVv45!52pc8bM zwf&>nuyw|ieAOS2%~-f(sgZ5O$cYyT7Y@~Jp?9Zl7f~z1^(20Os4`0not^!*PNy38 z0f(ks#@gfm?lvsCW*XRoL(wvh-#>Yo+#>N!9GVZ)G^x2RJACthy1T2OI-+)6)C35G z;O_43?(XjH65L&a1b26Lcemhf!QI{6IWy#6`>a*x?5lmZ>#5?R`(i>(nDqO8qkF`= zvh<2*;+y|p&^N@bs%ywYk6*`Qo?*$~IP^cfOLy(IuaG`m6)RWEAUH<6jm49*lvSz>gE3oixE!1Hf1~V)C!WfmH3(xEyzv%P78P zXe5a)(kOSNO#tq>&g=|kk!!4}_6@db%xUDPri0kDJ^2q0mS*WDPLlOvtJXF5x#9WY zdxzQx3!@h}(YB6z{B|shhrZ>PKdn)-JQ)5vDJYu$Lu2gqP=bbEekeTC7c}3SgR}|_ z6B3!NUAtfrQL3po4`LD0mgs*&P)wIRXiSJePOLdb7MKdeKnpE+V6;gc8hUHa9}hVK8VFTJ_WT#q)%^$Ow!Rf07F+?ET_tCs{E^xEniQLTW+kxuB40JMmWhhm z|6A!mX`k*@4pb69jBZc}(@-`{oE$`YRi_qqNn)nW%tHvhR8_sd{mgTibh z{1?*E7Fb_8qVgNoye~k;>|ABByxD4AHZOPd*>HlWX>By>7qmbcip?)#f3Co@r7LWi z(Xzk~&0Aq3+n-aP?Mwc*%3&dvy;2EdRB0SoJGdn9^9llxW`q7mPEUmcK~$&@i3Y5k zoiO`fRY(^PR;AV)upc-~xFBH^LPMF(_n@O0HmHNaEk}E-0TE)oAIV=1#;S#66S&*AEXDklU9yzW?b+2-qwUGr!I$;n1D(h&qSG!GZp34zPoCabZ?~Iao>( ze-6wlfRGv4`Jt{T6X;?D9i6gC6;)xO5W}S>hMPhuoAaYPJD~vHg@3l{wrtm_7Tx@N z0XJ&?eU(>Gn4{8pkic!i$vnhf}CJ@-8^1vt1yRv=AV zU7hqOR!i(>w*sg>PI|Xen(NS~>44*mDzVfnYKav8@zu;P4PM;#YUcqOzYz(Yr z@i%Rh>_d8M1$q%1a+gtDE4SZL#Uj9?@$#(i+V=J4G7*iqdgO1C#$Bu9)zCEn-5g{^ z>%2kZ8>T}d6sVcs3^T6NEKW%miVw&tNUBN_;W>d|{eIbk$H!`?|KT|y;?!vN@j0$g zc>6o9AaEvl4-avcho%ia7CDCkV=gg@h|4zkH;$+ za|4C=qmT+VhobjgO@IP!FuGNshr5tGyMS-&8}tt{35#aGDke&~>H_Rg5#VVCsyrjo ztt3n7hXOihz+?n48-a%N%L`#)-`mk4R&-gh1V z-9=lMjE(f^PTN)d0QGeve9MZZNeXUa{^?HD#~ErGtKVLP-Y?=L*fSGz@TcB~v?Ol| z*_ZdhBBmRft~QfNPjTtjGZLnaH+@Q;L?_9W6=WNdfVPvz{d4=9;a|vhFJ$i);?~MG zuR8~TU3;rBhsK3J23KgiUUqtuWY0qqAH5#8dNb}i=*UPU18n%GP1-qS+B2eXq`z}Y zUC9^PGPZv7%3Sv*t!yOH(&&1mLR}2*y~9KXMQ`<1S4wUPu5v>J=!3)YAd|KwT$Wru zjX}AL-DMqZ0V)uGLhP$|t+g=GRi}d`;!rJv@y24(>>=*G`39D?*P@9x;j1maOxG7= zO-}g|DMCJK5dnrdFb^h7iQNpv+4rdVBg$_NiXGYXo3* zw^M2yi{I5mCMCa8%qRFMoc1y(nLAhOhX=}goU`qpXQ6S!oU`mD!uYlUAxF4X9^$Wr zv3`fh%}9phbb-XsdI@P^a zpu7u38SEQLQJt70Q2iqMhi58L9k~@-eJ>%80?v{d-hxbdv^q%^fn&ifTJGGf$u666TW!3jtX*3MDFuP@joC(|lV1fuPb6fWKeIDkD{uFe%k z`jVe6TRxy*o}QM}1&2rz=_dKb2BJ;I!s!atYU6?MdrhKBd*Na!Ny@puz;fQ@e_<|! zAmtyTGymReLZ6VYO!XvNDi}p3@fL*r&CSPjEvD569-np0*4EdInpG1eJrzIc1BydJ zgW(zDG!|%-rMvRGsTjZz>qIn)sjT2`R^vwx`8Bkh(JO*5PiO)+-L-6%XP3in3A??A z5DfUR?BES3k-8!l;g2I}iK4MwD)M_n7P$hsWU7t9XwC`#x}SRtl)rw?YQ!&F6s-4* zrC{O$A4^{Dy2g@P~fqEoCDO1vg^u zDqSqRz(O=#(O!&DIeMlR=XVH45~mHWfPWj&I25(9j+-;P+C-*06~wk5d${G%VSbB3 zm6#kEv-NbKIm4~F&lu=9`&HRapCHW_QXzo8QLE7s-#Tg;&Sitl#KAY_ABc_u|Ga8^ zi;)<^*Ej|Tl6*(?NQ(#0h=Ic`I5IWpHDfhTTot4&kY_wpIGT`R+0lo?_FJ4KCa2 zIPw!5(<&f@2{Md{mPtKYEco_BjsTu%V$EX#&O8HeA&*6(y0&zlAbQEpKeu)k7smrX zZjT<=aWcQb;zo3@2Rtq{XJn&0s^e%UcK;HrVJZtKkME)9#P?exY!JIx1{baEBl4pb z{PFcE8xKtKo@0{j7>(XHv9Z?0;B1IHH-IkY>^urTx(_;+jmTR$+V!wtGyM?2m0ku3 zgCQGPCv|1TQSG3-J8eIEBIF-k5K@A|nd0Na#7l$fvEkUloAaNK>aE@+N>bIkT}7tC z5VHzY)D1dk?!nT16U+N7KE&m&RWKJeSX)c^#nB-`Y1MBViG-`!4J!{{Hs(w%i% z#glowwwzat-;*wuC-3_&*558K`8LN#SKl|!l6ap=IKy5qciP?$U^l|sy1IPQJi_z$ zQ1e_gyOzdV-X14(9x{ymooPFzBNJKI@+G^xAENFbM#q;6%XE3#4+EuFR@(#KcAM@W zaJ?V*1BK2=yeLbY^#T8I?=*C#7;>|`-<$DHy@CQi?qxT8RxFu0-kaKb-+%Bg5i@$^ z7MzmAxR$o{0#=atRkznce(+L3w12GQ;(mLXk+rlIjj5MvwJSPnAj-PBS?UKeE zjOWYFNo_nqYAX@{dOoN z_-!O3Z&ZI)WMtFf21nZKxBV!P1e)e+GLZP31Pw&t5Ol zO08ms!9z~0Y9Nu7O%Ht;C z21hTM3OK&6Q!!VAf{AvL-3hU73r#vP;2^sJYFbH@q1=Dol}DRyHTO3q0tEmL6of^> z`{cq9kHBfeV{Au4r%a68r%ScyOC?ISq9tuPzs_AxOCC9kSc-HZN0EiOum3dc*DY^G zRX&#UJQ^?`pa$5!6HJ_n+Y8*$5S_OW9-Nomd7$YBj6|BdT;rRtG#L2dj0J48Xao}Y z-Bpmt(rfPO6`7Zt!5H zYsV%0E^^H3t~XJ>rs(qZfXwPU2V(izOt=S`Nez9~7&nHcIE7wn1%?Y3XCE?6Uew^V z^QdVE;Xu<}UG%|qw@A=B5(J@ zo@|St^RXfL-c!i3vx(b%9d+fI53#2#cj1y!3k0hj4K2PJbJXt|}@n zrG`IyzmC_pd3}5KvjL0O9tv=OVrT+oJGFYfVMz_=(I+ZD@%R#OC187H$AyP(nqPGg zA|fKfK6J5>DBD5f=+)+aZ5Zb2j5<$495^)8&NJ`T{P@-=Z+%sX@^p&I&U`ldNRSF! z1>w4bt|GV&>(u3R_++=FMf+YqV=}Osmo6e7=l&wX+WvO4#eW2HVSCvaD2cmdlSyc3E(|fr==%I3DM*M0*$<`-2$}RK(C%8&$8> z>GlsdD_#BLcSTF8_uA%1&uB{A zXwtP;9h&rNA%t~3W*yv)#+ffl3#do6vW?X~ML662?^4SNr9DeL}Y*2Xrm5dmirz zw9px%!!B!^iG+2h03;z@pXjYnO5~Z0v&J3CpOtzpv;dKVZZ|nJ5zBB~+!sXu?hZ4#u z!Qs04tcspD_A_TbNm81e1g)O= z+!!8fH(9S2AW4Td*q9y&-MkMDRBLyxSoGve5&yPf{ zxTUj^HTQ5~ypaB$*6g4yNCKmkDMMhIs)0%XTn>TlPpw}FR2LQ~gfl^emy^h@mkm?08~qLPSo-2l}M1wbdZ1j&w8 z;Vi#&4(?MGoU8*6AT>s|ws46|huE_S z8j0CD*qk=(tkom2e;o|R`m~L_9=+_1Z(}_AzZ%v+`d#m^UlLkw4hFH*q+sEuhBEAU zj=6pe+en8+P0YQg57GGL;N(fiF55eaxTB!6JZ$z6tRXvG?uevlvcMkwcnn$+qR(jLM#N($4c0z;}=%L!TD^6 zYi}O$Et?Xb;u8)eeyf>(O$s4UIJUbb_4rq3aH2j@`ZqpHv*}Iz#ptC5C}DdWi^4l4 z#S7)0_SzhPEw|b&dy82Qw%40puu_Sj1HPbUUl`SueiJS&E1Hp@o2#vnqAq4U9(F@U zI0A&l*{K2*;AMiV3Zk@o@>)T9Vxjth6f_Jc#S*|GK4~0n`$|3N4*SDJb4nx5!IG6y zei@YC&3nY8Kz}4Jh$--KaPd3O8RUeN06ZCm90%a#2oB;L6|p@|MeK_SazAZf;cXA8 zW!RV0U?kNEY1N}&e}TUeSK>t?Tuz4h9n8#Ok`)IbB}C0H^auOsSkPF=xX;13&-pGZ ztBVHW>b`0u$h14i8WDG$#Sh|dPBZRpS+sphu?FO{13e!asCf)n2&%SVdwh+<9LBS{ zB7=(wkrfUN<3|P>{GKsdE_Kp9L;d(i(Gu6$_W)pivZ@ zXmB4+peM!x0Di$oyHwsOt%Oj`yL|tHKeKo zDIPHaU?Ut+kp*7CBu;7|K1_X@=H76cV*a^6R zFzgXtxtahJxmceR1K~GvQyHA^y_^R99!`(-wgDO9HG;M@53%C!w140!R|43*e=GVWEIKaMLmyYL?GdEb(3CYe3 z0Ufv3_Vt+rSP4AeNQCFrN&iC-CNQe3!;62DuJ^T~3(C{eaqj!u4e2&JF}I{F}Q2H{5-vKripd?U`iE64}S-n*IleoHJ1!GqG_Jzk#+> zkmgy(*DX(c)OR28Z-7KrHfZw{RJ%I~o3)i(>N#ycLrM}CcFqCO)Yo^_)Yh zAsNS8<>g8eQLP&5q$m4EDx#~Wwa9R>9Vwn3hC|9cB7hyNdaoMH{_2MkFkL>s!+_cNLIu?FgtO! zo|(v{$bYgEF_B7CB>&d9I6}`}pW~m8Q1RZbeP^27)h9s_?a#=~rl~PBHK@Ivh>Y=1 zgI>MCPECB6imj(G`JvUY-TU_`lvul|SfcKIwMwH6cf#c&BgsK?gx}5hIeB5RMqCPc zAL`q=dYH%ES3 zD9}3pLXvG0U)sEX&Dt{1A~7CGID2!USn(%UDlykmFO`7t^T4 zwdMY?;3`%`Q&j*eDmY zjlbQeJy4mr?g_%_J)t;;!oFC7L8;OAv>0JqCQ>C)4B*<#nLLQnIvw%m5aFmYOsrbV zM5iq9sV7gqN0E9u{2l0*YIpM{{Q_5yo0JxVJ>+q~KN_>@UY8Y;9A%I)i5A|&pa(qn~ZlJhfEAP9)N& zH&56{yzfrJXw%3B*xaJ3Mme0x4xRMPPsxcXahG)0toe85N^O&TUaxQoU9K`H`M2Bm zxjh|CZ1}~TbKPR7PsV8ppc~TDCVRiBzcY0G3;-|gUA1DFrqA{@kdh#TM8O@$Q8F{o zzoeG<=7Rq$@5dgHPI6CJ&ms@L6SiYQcsozgG7~nh&!bJTTDwJwMgf3xjGyhav{$mm>UkSqN$g6{pgRm`J?yUQ<;$v`c@JjaYT;xhr9gs9$IG=FO~iT zOmdwM`gMaN^ZV*cbO&+nnrTABEx0xB#5Z`}h z=B)NDtIFXs2yHLpv3BBHL6T{Cc{fr;Ti!8#RDL0w*yowsUk^ zOs#^Ker1cNt)bkgD7`W(z@17rN(mY*qrgRszK~g1kr0|U09-$q_X6})C^i`j5UUY z$O(bKDE@-AGT`7}2eS%-hA-)>^kAgD>SAUkQ}#CL9S!lr%C!7dbF(2WlC8CYNqeF& zS`Ee)WN-D!{O8>TFiF314|FV+$l@g`CBIQu3=tbBGF1XTH#?q2ST|_*e$(HMHC!qz zJ6JGKVs)kEhOzRGp}pRyw;JG$`GGOPto~KHm12 zPdKR_T1DAA4gJd0#JM2xCq|{>BL_vH7!cWvqa3ZM-=|+R4XP{ZuJrP-IjE|jD*%Jg z3Wl*SjtB!kdC=fam1Lo5L>lPWXBV3pF(L_&cBzqJMzX9tnrBZ?O;~U{Hg2OjgW$415qHO3DgA9C zzo-1kNyP1L96zrqkofctm|hfuj<~qJvw3pwl~OsQp^#4;$5V!fakRXAWzWV@*0!Kj zN@$>}I*q*Z364(Ft+x|XyQGv-+2!X9qHe--_Cl129_*^uGaZJb_VFl2>x@j}<&-Xt z*TYWAQ{#yoZ|Cn+#n;ObC9o^WkAU{TUZF8+P1By-Sam$9H*Ale_OO zT@L(`SnPuP=|+ncDO@x*Rcj5+&SnTnAn2h=P)tu%c|uO5P%`C(a+N=)O)7JoQsDC; z;(A9Q{)Q*l_8=X>gp#X1jJf!lej{_(23tC6XB+>M<0PB?B#WvA*fwpHwr_jql>8fS zt+J@Wxq$r%M*9sWP<)T=S%Xy%4Hs2$du^tRc{(LKxRVWf7Zk!$^O`N`ux~9Sl8r;UvMpkMJJy)66`=eM>mMRj@xj zV$rf*s3s}_aPcO-t|;%zZqVAGEOg`U;)ZF%#p6x_##|u0JoO>tyN^>!@#qJJ123}P z78;(8l_qLiLxw>Y7!nV}Oa{g5n853%L1RX74O5GA1D4^p+WmY7JgRD8dGG zSVWO53ncTD9KjQ)6pcgOl5%mc(_Bb{YuC(C>Ba^WpK<|xF@7{dzgYDx% z5VTSP%%m@j9SC-1W7xQB^RiYv?7>cNf~=1PpQru6J*kjo2L{AELQRGXnq@-#FPd}y z;A<&*6$|w8iV5Qhpg=tX;asQT7C+`&ileWZR=+F{*qk((#XiL7tlfsiGrN-3C6xrY zcmzDxjI)D_0Uk|)gGJmI5%``R&gY|Dl-&`lgzb>vkpZH>;YA0I<0T{Jn$zQ?%@}t< z2)5&jy~#xC*RcRkHMb!Nn#fQG_N3B@)r-_Ymj}3#La)(&J2-%vtFR zYKqYFgTd_-T(YHM(ef@_iQDRBU(ABkj_-yy7rQP*6oOD@*>i4Nv>8mLLvBr4UGul| zr5Y8*aHvDP)A&qLV}e!_6UO%cm7?ILjf*2KSP9E8_OrEIJ++#hZd5j-o5BLR~=&o#V3ED(R+a5vedLn~T! zb*Ww7^3rI>!K?KO$Vy2z3x=1i)(kY%z<>Ub(ri>3MPq!)UmZdPL@b|XeA_FgCSKQ< zJyKpL)0nI(n&S;#-RrfT2U>@y80&U=mzwJdl&rJ6UtAZz^7+xjY#FW5}G{qAjcW}cFnKR`OrmI*NK=dytnO<*X zH#(70BCfkuvG1!uj71qV6&0M(iRP7En&;Lv;U-Y+w?2{rx?e6j++P!Y$RyuiFVQ1Q zMo_6qy$l#yT;Dmwvg?V{ao62Cdr30gXFTqqkPZ^Y~?N(1#OsTMcp;wnFz*{t+9Ne7>go%}? zf4)ha%Q~ofJyp=PWB~=k4BWN2Gs+=jqWEO~+pK@UkQ}vQ^D$ImY9)5(6*)WY*M19{ ze}AhAmE=ShQX#5M+?0Sq-%zI;QzScubiTd_C|jdiIVp zs^7o7v}K*hLe$~N4AqzJ5e#7nxkkbH4-O<}Ccl>{(@n3T^;)$SOQrvfntK#7y_@z{ z@#QDt9Aq>fHGZ>SeW;<_T|a{u7hJ6~1sSwr9L5tgT;hXId6+X58|H;HiPJUn54BvaQlMJYvs0P|1$rM|0YM#5s$^>ES^eU8n1Sq zzAXCtw0NX^4yXVlDtWT4l0-8R-Zn&q^624aYriX{Z|=E^@UswepBjqmo;Nj<992-$ zsTN*iAtuxdS`v&jrJxH3oiDR8CDJH7s^%T3o8; zpc3yfn57seJ@ut!c5dJU==N9F8%3vs(+jN(+AoM>G{g@1j8K4hHT^F{J=qYRPkjru z=uAN?F?4LajZXOTPlIJ$?4}3#ayeJCF#kSk^d*o}GKfJR3RxhR^`i7di-xOP)KcXO zyh8qbTNM<-V$K~JVs@4umj$8|T_>A0i-1iuiw%N0?YsB5GpQX4VoB8BsN=Dvc{f=Gazy5_C9hox=UMUzwAVoQt)BId1&tW ze+{8_T#V}1VLn`oWXnpnUgi#}V&RPgbb%9?0-fJZgol$1A3NWx1K2tBCf<#Q7G~xi z9WDg#6N8<7+(xQd-@Uzlvx1D!7zuQErf33V-Lt&AVM>c+(IL#=bpZ9a;x|9C;Y5cs z&Me#r5fbKM?LOFy7U`h2c4~7!)d+L7L0Tjs2pSpb;GXbky?U>ZHMy#WdESSmr`{WT z!jA_nfVN*jmEm6mwQg|SzBXG{qWWn3U^G0Jm&q#@@9@gQTz`MM%)a$?VRKy(c&E0mEUH}=m|xzzlU9G-Hk0faBj(&V`{qsZsONr1(*$=vHEISH zbvKnF8G;ZEESOD490td}oY?M}=KpiiC{iCm<`E-x*{it4&2cUEwaL(0e1p;_M-ggfrpC!(Y(ray^j`sq->Dx4mNX?(wC)gYHKa3=+wv(b79UuP zmus2hy*0-0Ts9TJM_(#TS^mT;xU8jg^X#tk zEJMhHim(;t7wM*oL)LaJfu!Al?|yf3YcEn))Od1QJ06=mKW|Sof9DI)zK6`xQ5$bL z|K4#XUkTGPj4mVORMerY3bX{Iz;drTc$|D17^Gb90%s2~tYkv%6j^raQyY z9mBD*#u77Bzi=d>cv3?evS+s3|0qgbLTt&E<` z!gqx^l@6<64s-gm=l{PkN`1G1q;j3Kx^Jcp$gTlJ(Vn8}AI6a~8yNHsW=mrlxxWLb zLePYTr27^}@aA4^1+QupATE!{K=UEFq%wLLK#B_T>mWeF9H1&>Pl0%XvhGYMB^2>| zrRtro8ui|U;jaQudtdE5@Ci438t)&RUzxkE+Hre7XeuL!(dX*NTUuH0N>wk^^=QA% zoeNLWaIFq6&w4RMS5B&a+S=xQKYE9wdG}=RyV)N_J<`N6vcFsG($-!b04xE~daZg@ zc1QDmg68((MFoj|zqg{-pj9b-?^;Q6zm>vG^4hf79sjsbdVa9kph?0V!zGfh|I+ty zB^x%^%q!U)-&OCEp_X1&X4%BI{-!#s1K1lzcB6ot+6JoKLMyDQo&KDMGxMV>;E(LQ zCq|J{Yjl|`Lk~^mnGbH%>&Y+XusSd9<>&33xFVfZi-I%rhfA_st|L{R_ZJC`79UG4 z$BRzSC$=Ik9_P9*k4PKnyHyIQbz$I&w)Gs7#2pc6tTHXnsD! zI2#W!7J{Z9E!xwJePzl>VKZ6KZeFHc1QwZk%D_YEn4Co*=ojg|!7nuT5WEfH{t-_4 zaGIodgyGKj=a*^+!3|+;7u_|EL5+E8@U#?^Ca|&b+LDRU_W4vPaT6i-9?B5p2V#|1 zY7OFfRd`BEg86>aC!Kp3<~5FbFw5-tA*G|hl9TOuRX9pr9+uIU$eX6T9nbGcosE`p zq!t}fFu5h5osrOO#-Nw@t_HFN4^u{CvA)HqEA$8J21jajPq=^Zol)()Tx>QWx~<

ue40k$en0WEg@rie7!J|IFpV+jMjy2n8p5D zJEQznk0eNpo#0+Qn+53_<~tEMgNRdn&OCG7>cu;s+-O*1O>%;baRY2Kf$3I4Rf8MP z)%GY)N^j?T18(Ne3#oHOpUdV77z2pFHVI~-pMvG^*3iZiu~5&6*^LsNDYJ=~(8Vfc zpKv==qEe>bhH3X#uuYV>@5Dv0u?0@3|7ZhCZ?bypUsHPl>t;&oOYa$gOe~Q8? z_;5~mGO5`aZ#ACvY4%V`QlONVMP#)%?IE>*T}pC9sTW^GUf zKY2F{g8d~kHOlFjIlgM+XVruGW$EHyytZym4&(fHTI2&-A-N$~Nlgi52LEJ58H~0Z z#7+k$F9DtjT!)*+l^$#$J4re5r4D2ppN=zJlgmHGyGM0nDu_xE|FpG71MsvKP5Ku{ zx|b!26J+_>g!z$0Oms|Lqf;wYO&d$Q?~4u~_ts^Vq%ucPZGHh0OLx)bQQTsEBfHw? zUa+k+=xlD2_(Zu{--+V#FVgu8c#jcT1Iz`aEStr6!#ZUwRZj^9*75Tt0 zkDfE88Y(+gnpB#2aGFSJ<2!Ei<`N^74C!_rB9G_)G2Ne!|5@-QdEX$a)5Y>jKK|x# z%bj{<_W&G>@B9+WweWJIEPb`bkXD^kB~k_Qrzot70(GC4TGy4Xkrz#8ft}h!+V}gS zAllDgJh-Zr&DlxKKPEZe>qGH{2RTQkrur7~Iv(%$2WFYpkC6G_kI#5Plxc`F01#k z!__|=!GUHlh%-<|7{c}maWkL;X|q;<{^dmgO3m0eKuPy#6Xrw7MafkKRGAfcV2tTL zo&Irlz7n5yu(RK9`l0colUJV+kC8vTlAcakN)Iw9-o4BN&!LQZKut1fs(;br%f#F+ z#Do(w3k*$PO_wP4FChU4r&4DF;&4MB)<1b+H27^WC17h-&)Rr5jS(7N>HtrJPqj`J z5?O?XI!wvbe10k|Xm`e+_HM3?H~3_X!Vtj@8wt)!ka%}g%ey+jJ)h1nu<56j7?oE{!;BgOM3Q5AmD*03LvY3X&~si zDnpoA?zNUDi!QCQmUro4L6O|T*EI9;i$jw(@ItV8D~p z!0b@=p|0>wQXo|@1&fuWWTCaCvD%t+#??PP4UIo>d~68AK8;?yKU^p$DJQ8qv0G2= z38yVdjf55EM{-3GMoqd~aCLIhzl7NdZqGtgm#YCTYgTM=xbGMCRt0q)Tqr-3$W_R7YSfnT z`pc-z7|}k?uUtwnCpQNuvtH*tUw19XtIydUwDJ*4V-a&93-S8EqVJdXdI}c>$cfW} zOC(XgsB+7k^2x`YbP`D>YsA1sO{c6DwX+DxDA_lX{Gw2ViZl2zhpfDdTRK!_F%vrc z7cWelG{HtF`B%-HUE*ks$T`%0qffgxJx1RWi4-*qOI%HfgAx~SYU4QJNO;9>f^N#x}P`m^s&A_*iO|v;Xz?ZTynMziCBpW^NLE(=?9%(p#KsU zUf{v_yT6;CMq1o3&fZfA`zSQ<*hs%o_$Yn-GR8w6i+;sS zJ)f_eh~9eR7A5sxA5&*kp2ID+50QqYDqzqMCF(!^d1^OH(V&gD-~-7F$08QTNdW9N cH&4DXNjqVH2w4YB@xjVJh+pu$gb4Ki0A2yp7XSbN literal 0 HcmV?d00001 diff --git a/packages/microcosm-calibrate/src/microcosm/calibrate/provider_labels.py b/packages/microcosm-calibrate/src/microcosm/calibrate/provider_labels.py index 6c2190f17e..25a1fdaf1e 100644 --- a/packages/microcosm-calibrate/src/microcosm/calibrate/provider_labels.py +++ b/packages/microcosm-calibrate/src/microcosm/calibrate/provider_labels.py @@ -32,6 +32,7 @@ "cms_medicaid": "CMS · Medicaid / CHIP", "cms_medicare": "CMS · Medicare", "cms_nhe": "CMS · National Health Expenditure Accounts", + "ed_fsa": "ED · Federal Student Aid", "federal_reserve": "Federal Reserve", "federal_reserve_z1": "Federal Reserve · Financial Accounts (Z.1)", "hhs_acf_liheap": "HHS · LIHEAP", diff --git a/packages/microcosm-calibrate/src/microcosm/calibrate/variable_labels.py b/packages/microcosm-calibrate/src/microcosm/calibrate/variable_labels.py index 32a1425bdf..07b2be9398 100644 --- a/packages/microcosm-calibrate/src/microcosm/calibrate/variable_labels.py +++ b/packages/microcosm-calibrate/src/microcosm/calibrate/variable_labels.py @@ -74,6 +74,14 @@ def _immutable_registry( "cms_medicare": "Medicare", "part_b_premium_income": "Part B premium income", }, + "ed_fsa": { + "federal_student_loan_balance": "Federal student loan balance", + "federal_student_loan_borrowers": "Federal student loan borrowers", + "loan_balance_excluding_parent_plus": ( + "Federal student loan balance excluding Parent PLUS" + ), + "parent_plus_loan_balance": "Parent PLUS loan balance", + }, "federal_reserve_z1": { "federal_reserve.z1.households_nonprofits_net_worth": ( "Households and nonprofit organizations net worth" diff --git a/packages/microcosm-calibrate/tests/engine_free/shared/test_provider_labels.py b/packages/microcosm-calibrate/tests/engine_free/shared/test_provider_labels.py index 5aafb56d06..06593e9b8d 100644 --- a/packages/microcosm-calibrate/tests/engine_free/shared/test_provider_labels.py +++ b/packages/microcosm-calibrate/tests/engine_free/shared/test_provider_labels.py @@ -23,6 +23,7 @@ def test_current_us_providers_have_labels() -> None: "cms_medicaid", "cms_medicare", "cms_nhe", + "ed_fsa", "federal_reserve", "federal_reserve_z1", "hhs_acf_liheap", diff --git a/packages/microcosm-calibrate/tests/engine_free/shared/test_variable_labels.py b/packages/microcosm-calibrate/tests/engine_free/shared/test_variable_labels.py index 41654f1835..b639eccc16 100644 --- a/packages/microcosm-calibrate/tests/engine_free/shared/test_variable_labels.py +++ b/packages/microcosm-calibrate/tests/engine_free/shared/test_variable_labels.py @@ -38,6 +38,10 @@ def _pairs(value: str) -> set[tuple[str, str]]: cms_medicaid|total_medicaid_enrollment cms_medicare|cms_medicare cms_medicare|part_b_premium_income +ed_fsa|federal_student_loan_balance +ed_fsa|federal_student_loan_borrowers +ed_fsa|loan_balance_excluding_parent_plus +ed_fsa|parent_plus_loan_balance federal_reserve|federal_reserve federal_reserve_z1|federal_reserve.z1.households_nonprofits_net_worth hhs_acf_liheap|hhs_acf_liheap diff --git a/tools/build_us_fiscal_refresh_release.py b/tools/build_us_fiscal_refresh_release.py index 3dd560c3c0..fd7f78bd32 100644 --- a/tools/build_us_fiscal_refresh_release.py +++ b/tools/build_us_fiscal_refresh_release.py @@ -258,6 +258,14 @@ AGE_BOUND_STAMP_SOURCE_KEY, SSA_SSI_AGE_BAND_RECIPIENTS_TARGET_ROLE, ) +from microcosm.build.us_runtime.fsa_student_loan_targets import ( + FSA_BALANCE_LOWER_BOUND_KEY, + FSA_BALANCE_UPPER_BOUND_KEY, + FSA_MATERIALIZER, + FSA_TARGET_FAMILY, + fsa_student_loan_household_values, + fsa_student_loan_target_receipt, +) from microcosm.build.us_runtime.h5_io import ( AuthenticatedPoolH5, assert_h5_unchanged, @@ -794,6 +802,7 @@ def _automatic_gc_suspended(): "us:statutes/26/62#adjusted_gross_income": "agi_band", "us.tax.earned_income_credit_qualifying_children": "eitc_child_count", "age": "age_band", + "federal_student_loan_balance": "student_loan_balance_band", } #: Bound-side suffixes a restated constraint key may carry. A key with no @@ -876,7 +885,20 @@ def _automatic_gc_suspended(): #: household-variable measures) never reads an age bound, so a restated age #: bound there would be silently ignored however well it agreed with metadata #: the materializer also ignores; it is refused instead. -RESTATED_AGE_BAND_MATERIALIZERS = frozenset({"population_age", "policyengine_variable"}) +RESTATED_AGE_BAND_MATERIALIZERS = frozenset( + {"population_age", "policyengine_variable", FSA_MATERIALIZER} +) + +#: Compiled edges of a Federal Student Aid debt-size band, by bound side, and +#: the one materializer that slices on them +#: (:func:`microcosm.build.us_runtime.fsa_student_loan_targets.fsa_student_loan_household_values`, +#: ``lower <= balance < upper`` on the person's own plus Parent PLUS balance, +#: microcosm#1074). A restated ``federal_student_loan_balance`` bound on any +#: other materializer would be ignored, so it refuses. +RESTATED_STUDENT_LOAN_BALANCE_BAND_COMPILED_KEYS = { + "lower": FSA_BALANCE_LOWER_BOUND_KEY, + "upper": FSA_BALANCE_UPPER_BOUND_KEY, +} #: The exact-value age key the dimension stamp writes when ``age`` is itself #: a dimension of the fact. @@ -899,6 +921,7 @@ def _automatic_gc_suspended(): "cms_aca": "CMS ACA marketplace enrollment public use files", "cms_medicaid": "CMS Medicaid enrollment and expenditure sources", "cms_medicare": "CMS Medicare Trustees Report Part B premium income", + "ed_fsa": "Federal Student Aid federal student loan portfolio", "hhs_acf_tanf": "HHS ACF TANF administrative data", "irs_soi": "IRS Statistics of Income public tables", "jct": "Joint Committee on Taxation tax expenditure estimates", @@ -5905,6 +5928,32 @@ def _restated_age_band_refusal( ) +def _restated_student_loan_balance_band_refusal( + key: str, + value: str, + metadata: Mapping[str, str], + *, + side: str | None, +) -> str | None: + if side is None: + return ( + f"{key}={value} restates an exact federal student loan balance, but " + "the materializer slices a half-open balance band" + ) + materializer = metadata.get("materializer") + if materializer != FSA_MATERIALIZER: + return ( + f"{key}={value} restates a federal student loan balance bound on a " + f"spec whose materializer ({materializer!r}) applies no balance band" + ) + return _restated_band_edge_refusal( + key, + value, + metadata, + compiled_key=RESTATED_STUDENT_LOAN_BALANCE_BAND_COMPILED_KEYS[side], + ) + + def _restated_eitc_child_count_refusal( key: str, value: str, @@ -6006,6 +6055,10 @@ def _restated_ledger_filter_refusal( return _restated_eitc_child_count_refusal(key, value, metadata, side=side) if rule == "age_band": return _restated_age_band_refusal(key, value, metadata, side=side) + if rule == "student_loan_balance_band": + return _restated_student_loan_balance_band_refusal( + key, value, metadata, side=side + ) raise ValueError( f"RESTATED_LEDGER_FILTER_CONCEPTS maps {concept!r} to rule {rule!r}, " "which has no comparison implemented." @@ -6294,6 +6347,17 @@ def _base_simulation_household_columns( variable="state_income_tax", tax_unit_positions=tax_unit_positions, ) + # Federal Student Aid portfolio targets (microcosm#1074) read the SCF + # education-debt stage's stored person balances, not an engine variable: + # the pinned engine does not define them yet, and a stored input is what + # the engine would read anyway. A frame without the columns materializes + # nothing, so the targets report as dropped. + for spec in target_specs: + if spec.metadata.get("materializer") != FSA_MATERIALIZER: + continue + fsa_values = fsa_student_loan_household_values(frame, spec.metadata) + if fsa_values is not None: + columns[spec.measure] = fsa_values population_age_target_specs = [ spec for spec in target_specs @@ -10081,6 +10145,9 @@ def _artifact_entry(path: str, sha: str, *, kind: str, revision: str) -> dict[st #: reference it by file sha and key; ``present`` stays false until the #: compiler writes the receipt. US_FISCAL_TARGET_EXCLUSION_RECEIPT_KEY = "fiscal_target_exclusion_receipt" +#: us_source_coverage.json key of the FSA portfolio receipt, written only by a +#: build that compiles those targets (``--scf-education-debt``, microcosm#1074). +US_FSA_STUDENT_LOAN_TARGET_RECEIPT_KEY = "fsa_student_loan_target_receipt" def _gate_evidence_artifacts(release_dir: Path, *, revision: str) -> dict[str, dict]: @@ -12483,6 +12550,22 @@ def main(argv: Sequence[str] | None = None) -> None: _ACTIVE_EMITTER.complete() +def _without_opt_in_student_loan_targets(registry: TargetRegistry) -> TargetRegistry: + """The registry the target-parity contract reads: no FSA portfolio rows. + + The parity manifest describes one target surface for every build, but the + FSA family compiles only with ``--scf-education-debt`` (microcosm#1074): + the rows bind columns a default build does not carry. Until that stage is + default the family is outside the contract, and the manifest may declare + it a reviewed exclusion without either build failing the other. + """ + + return TargetRegistry( + tuple(spec for spec in registry.specs if spec.family != FSA_TARGET_FAMILY), + country=registry.country, + ) + + def _check_committed_us_ledger_feed_pin( facts_sha256: str, *, @@ -12822,6 +12905,16 @@ def _main(argv: Sequence[str] | None = None) -> int | None: ), age_targets=args.age_targets, allow_unaged_dollar_targets=args.allow_unaged_dollar_targets, + # FSA's portfolio binds the stage's balances, so only a build that + # imputes them compiles the targets (microcosm#1074). + student_loan_targets=args.scf_education_debt, + ) + # Every FSA fact's disposition (bound, allocated, out of scope, + # diagnostic) and the in-scope controls, for us_source_coverage.json. + fsa_target_receipt = ( + fsa_student_loan_target_receipt(ledger_artifact.facts, target_period=PERIOD) + if args.scf_education_debt + else None ) # The exclusion register's keys do not say which feed facts a compile # dropped or let through by vintage (microcosm#956), so record the concrete @@ -12853,8 +12946,12 @@ def _main(argv: Sequence[str] | None = None) -> int | None: # diagnostic JCT skip — so the gate sees the true family surface, and # hard-fails the build on a silently dropped family or a rotted manifest, # exactly like the release input-coverage gate on the export frame. - assert_target_parity_manifest_current(registry=target_registry) - target_parity_gate = us_release_target_parity_gate(target_registry) + # The FSA portfolio family is opt-in (it binds only the + # --scf-education-debt stage's balances, microcosm#1074), so it stays off + # the one-surface parity contract until that stage is default. + parity_registry = _without_opt_in_student_loan_targets(target_registry) + assert_target_parity_manifest_current(registry=parity_registry) + target_parity_gate = us_release_target_parity_gate(parity_registry) if not target_parity_gate.passed: raise RuntimeError( "Release gates failed: " @@ -16088,6 +16185,8 @@ def _main(argv: Sequence[str] | None = None) -> int | None: ) ] coverage[US_FISCAL_TARGET_EXCLUSION_RECEIPT_KEY] = fiscal_target_exclusion_receipt + if fsa_target_receipt is not None: + coverage[US_FSA_STUDENT_LOAN_TARGET_RECEIPT_KEY] = fsa_target_receipt write_us_source_coverage_diagnostics( coverage, release_dir / "us_source_coverage.json" ) From 3b288659758463226aefb97303389281b1c45656 Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Fri, 23 Oct 2026 16:03:16 -0400 Subject: [PATCH 2/2] Refit the #1074 receipt on #1246's child-loan routing and the merged chronicle#347 (#1074) Modal run 20261023T191527Z-4b6bfce9a at 4b6bfce9a. chronicle#347's export at its merge commit (acbedb5) is byte-identical to the PR head's (sha256 58774e11...), so the candidate feed and the test fixture are unchanged. With loans for a child's education on co-resident adult children, the host gains young borrowers (1,246 borrower records under 25, from 561) and its Parent PLUS share falls from 16.8% to 10.7%, but holds the same borrowers (21.2M) and borrower households (16.4%) at the published weights. Arm B now meets 95% of the FSA targets within 5% (92% before) and every age band; B + L2 78% (76%). Borrower households' share of weight after calibration is 33.7% (B) and 32.3% (B + L2), against 33.0% and 31.5% before and 18.2% of SCF families: the routing moves balances within households, so it does not shrink the doubling. Non-FSA capped error: B 3.62% (3.66%), B + L2 3.85% (3.83%), A unchanged at 3.30%. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../1074-fsa-student-loan-targets.added.md | 4 +- docs/us-fact-to-target.md | 36 +- experiments/1074-fsa-calibration-receipts.md | 424 +- .../receipts/1074-fsa-calibration-fit.json | 4133 +++++++++-------- .../us/test_us_fsa_student_loan_targets.py | 7 +- 5 files changed, 2306 insertions(+), 2298 deletions(-) diff --git a/changelog.d/1074-fsa-student-loan-targets.added.md b/changelog.d/1074-fsa-student-loan-targets.added.md index 5e007c609a..8633359b9d 100644 --- a/changelog.d/1074-fsa-student-loan-targets.added.md +++ b/changelog.d/1074-fsa-student-loan-targets.added.md @@ -1,7 +1,7 @@ The US build can calibrate the SCF-imputed federal student loan balances to Federal Student Aid's portfolio tables (microcosm#1074, the student debt pilot). A new runtime module, `fsa_student_loan_targets`, binds the FSA facts Chronicle stores (PolicyEngine/chronicle#310) to the person columns `federal_student_loan_balance` and `federal_parent_plus_loan_balance`: the balance and borrower count of each state and DC, of five borrower age bands and of nine debt-size bands, and the Parent PLUS balance beside the balance of every other loan type. A borrower is a person whose own plus Parent PLUS balance is positive. Repayment plans, the portfolio summary and the loan-type recipient counts stay diagnostic only, each with its reason in the receipt. -Every family binds at one reference date, the latest quarter every bound table publishes (FY2026 Q2, 31 March 2026, in the draft packages), as a stock unaged at the 2024 build period: target aging gains a declared `stock_at_source_reference_date` alignment, which only these targets carry. FSA's "Not Reported" row is allocated to every reported location in proportion to its reported value; Puerto Rico and "Other" are outside the host universe and leave with their share. The 51 allocated state levels make one in-scope control, and the age, debt-size and loan-type rows bind as their table's shares of it, so every family sums to the same total. +Every family binds at one reference date, the latest quarter every bound table publishes (FY2026 Q2, 31 March 2026), as a stock unaged at the 2024 build period: target aging gains a declared `stock_at_source_reference_date` alignment, which only these targets carry. FSA's "Not Reported" row is allocated to every reported location in proportion to its reported value; Puerto Rico and "Other" are outside the host universe and leave with their share. The 51 allocated state levels make one in-scope control, and the age, debt-size and loan-type rows bind as their table's shares of it, so every family sums to the same total. `compile_us_fiscal_target_registry` binds the facts only with `student_loan_targets`, which the fiscal-refresh release tool sets with `--scf-education-debt`; the release materializes the rows from the stage's stored person columns, accepts their age and balance bands in its restated-filter guard only on that materializer, records every FSA fact's disposition in `us_source_coverage.json`, and keeps the opt-in family off the target-parity contract. Default compiles and releases are unchanged, and the pinned US feed carries no FSA facts until it moves to a Chronicle commit with the packages. The `ED · Federal Student Aid` provider and its four categories join the calibration label registries, so the family shows on the calibration dashboard once a release carries it. -Fit receipts are in `experiments/1074-fsa-calibration-receipts.md`, generated by `experiments/fit_1074_fsa_calibration.py` on Modal through `experiments/modal_1074.py` against a candidate feed (the pinned feed plus the draft chronicle#347 rows). +Fit receipts are in `experiments/1074-fsa-calibration-receipts.md`, generated by `experiments/fit_1074_fsa_calibration.py` on Modal through `experiments/modal_1074.py` against a candidate feed (the pinned feed plus chronicle#347's FSA rows, built at its merge commit on Chronicle main). diff --git a/docs/us-fact-to-target.md b/docs/us-fact-to-target.md index 7c3d4e0fa6..1d153af290 100644 --- a/docs/us-fact-to-target.md +++ b/docs/us-fact-to-target.md @@ -210,9 +210,9 @@ borrower is a person whose federal balance is positive. balances do not record. Loan-type recipient counts: loan-level, so a person with two loan types counts twice. Stafford (Combined): a subtotal. - **The reference date.** The latest quarter every bound table publishes, FY2026 - Q2 (31 March 2026) in the draft packages: the location workbook publishes - only that date, so the age, debt-size and loan-type tables bind at it too, and - every family describes one portfolio on one day. The facts are stocks the + Q2 (31 March 2026) in the chronicle#347 packages: the location workbook + publishes only that date, so the age, debt-size and loan-type tables bind at + it too, and every family describes one portfolio on one day. The facts are stocks the build carries as they stand at that date, unaged at the 2024 build period (`period_alignment = stock_at_source_reference_date`, factor policy 5 in `target_aging`): no income-growth series describes a loan stock, and the @@ -225,7 +225,7 @@ borrower is a person whose federal balance is positive. listed states and territories) are outside the host universe, the 50 states and DC the CPS samples, and leave with their share. The 51 allocated state levels sum to the **in-scope control**: $1,679.1B and 44.31M borrowers at the - draft packages, against $1,696.3B and 44.76M in the table. + chronicle#347 packages, against $1,696.3B and 44.76M in the table. - **One control.** FSA's tables disagree slightly (the borrower tables total $1,696.3B, the recipient-based loan-type table $1,723.8B). The age and debt-size bands and the two loan-type rows bind as their table's share of the @@ -243,25 +243,31 @@ borrower is a person whose federal balance is positive. target-parity contract (`_without_opt_in_student_loan_targets`). - **Known limits, measured.** The receipt (`experiments/1074-fsa-calibration-receipts.md`) refits the published - default with and without the family. The stage gives balances only to - reference persons and spouses (and Parent PLUS to the reference person), so - the host holds about half of FSA's borrowers ($0.86T and 21.2M at the - published weights). Calibration closes that by reweighting: borrower - households' weight doubles and their share of household weight goes from - 16.4% to 33.0%, against 18.2% of SCF families. Borrowers under 25 stay about - 40% short, because the host has few young reference persons with a balance. - FSA's Parent PLUS row counts only unconsolidated Parent PLUS loans (a + default with and without the family. The stage gives balances to reference + persons, spouses and co-resident adult children (a loan for a child's + education is the adult child's own unless only a parent could have borrowed + it), and Parent PLUS to the reference person. The SCF misses independent + adults who live on their own or in someone else's household, so the host + holds about half of FSA's borrowers ($0.86T and 21.2M at the published + weights). Calibration closes that by reweighting: borrower households' + weight doubles and their share of household weight goes from 16.4% to + 33.7%, against 18.2% of SCF families. Routing child loans to adult children + moved balances between people in the same households, not into new ones, so + it did not shrink that doubling; it did give the host young borrowers (1,246 + borrower records under 25, from 561), and the under-25 borrower band now + fits. FSA's Parent PLUS row counts only unconsolidated Parent PLUS loans (a consolidated one sits in "Consolidation"), while the SCF's loans for a child's education include consolidated ones, so that target is a lower bound - on the concept it binds; it pulls the Parent PLUS share from 16.8% to 6.8%. + on the concept it binds; it pulls the Parent PLUS share from 10.7% to 6.8%. - **When the facts reach the pin.** The US pin moves to a Chronicle commit that carries the six `packages/ed_fsa` packages: add their (record set, period) pairs to `us/chronicle_feed_scope.json` (build year 2026), rebuild the feed, re-pin `us/chronicle_feed.json`, and regenerate the two parity resources with the FSA families declared as reviewed exclusions that bind only with `--scf-education-debt`. The fixture - `tests/fixtures/us_fsa_portfolio_chronicle_347_facts.jsonl.gz` is the draft - export the tests pin; refresh it from the merged packages. + `tests/fixtures/us_fsa_portfolio_chronicle_347_facts.jsonl.gz` holds rows of + the chronicle#347 export the tests pin, byte-identical at its merge commit + (`acbedb5`); refresh it if a later Chronicle commit restates the facts. ## 4. Keep the exclusion register honest diff --git a/experiments/1074-fsa-calibration-receipts.md b/experiments/1074-fsa-calibration-receipts.md index ec6a8c1b5f..e98cfe2cba 100644 --- a/experiments/1074-fsa-calibration-receipts.md +++ b/experiments/1074-fsa-calibration-receipts.md @@ -1,8 +1,8 @@ # microcosm#1074 receipts: Federal Student Aid portfolio targets -Generated 2026-10-22 by `experiments/fit_1074_fsa_calibration.py`, commit `c94516ee14b1920a490902288115d66dbc743762`, Modal run `20261022T194252Z-c94516ee1` (`experiments/modal_1074.py`). Machine-readable copy: `experiments/receipts/1074-fsa-calibration-fit.json`. +Generated 2026-10-23 by `experiments/fit_1074_fsa_calibration.py`, commit `4b6bfce9a240cd44c45210fbf508640d8402343d`, Modal run `20261023T191527Z-4b6bfce9a` (`experiments/modal_1074.py`). Machine-readable copy: `experiments/receipts/1074-fsa-calibration-fit.json`. -Host: the published default `populace-us-2024-spm-20260915` (sha256 `6496cc4393d4…`, 57,240 households), with the SCF 2025 education-debt stage run at seed 0. Feed: the pinned `51aa40f` US feed plus the draft chronicle#347 FSA rows (`d8e3d0fd9e21…`, 40,639 rows). Arms: **release** = the published weights; **A** = a dense refit to the `national_state` surface without the FSA family; **B** = the same refit with it. Same epochs (1500), learning rate, 5x weight cap and conserved mass as a release. Not a release: no gate ran and nothing was published. +Host: the published default `populace-us-2024-spm-20260915` (sha256 `6496cc4393d4…`, 57,240 households), with the SCF 2025 education-debt stage run at seed 0. Feed: the pinned `51aa40f` US feed plus the merged chronicle#347 FSA rows (`d8e3d0fd9e21…`, 40,639 rows). Arms: **release** = the published weights; **A** = a dense refit to the `national_state` surface without the FSA family; **B** = the same refit with it. Same epochs (1500), learning rate, 5x weight cap and conserved mass as a release. Not a release: no gate ran and nothing was published. ## FSA targets: the reconciled levels @@ -23,25 +23,25 @@ Mean absolute relative error (share of targets within 5%). | FSA family | Targets | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | |---|---:|---:|---:|---:|---:|---:| -| fsa_age_band_balance | 5 | 50.3% (0%) | 48.4% (0%) | 0.1% (100%) | 50.6% (0%) | 1.1% (100%) | -| fsa_age_band_borrowers | 5 | 53.1% (0%) | 52.1% (0%) | 10.7% (40%) | 52.8% (0%) | 9.5% (80%) | -| fsa_balance_excluding_parent_plus | 1 | 54.3% (0%) | 53.1% (0%) | 0.1% (100%) | 54.5% (0%) | 1.5% (100%) | -| fsa_debt_size_band_balance | 9 | 51.0% (0%) | 50.3% (0%) | 1.0% (89%) | 51.1% (0%) | 4.8% (78%) | -| fsa_debt_size_band_borrowers | 9 | 49.6% (0%) | 49.4% (0%) | 3.7% (78%) | 49.9% (0%) | 6.8% (67%) | -| fsa_parent_plus_balance | 1 | 25.3% (0%) | 32.8% (0%) | 0.0% (100%) | 25.2% (0%) | 10.3% (0%) | -| fsa_state_balance | 51 | 47.0% (0%) | 46.7% (2%) | 0.2% (100%) | 47.0% (0%) | 1.1% (92%) | -| fsa_state_borrowers | 51 | 49.2% (0%) | 49.8% (0%) | 1.7% (90%) | 49.1% (0%) | 7.8% (59%) | +| fsa_age_band_balance | 5 | 47.5% (0%) | 45.0% (0%) | 0.1% (100%) | 47.1% (0%) | 0.3% (100%) | +| fsa_age_band_borrowers | 5 | 54.5% (0%) | 53.7% (0%) | 0.2% (100%) | 54.1% (0%) | 6.5% (40%) | +| fsa_balance_excluding_parent_plus | 1 | 51.0% (0%) | 49.9% (0%) | 0.1% (100%) | 51.2% (0%) | 0.5% (100%) | +| fsa_debt_size_band_balance | 9 | 50.6% (0%) | 49.8% (0%) | 0.4% (100%) | 50.5% (0%) | 3.6% (78%) | +| fsa_debt_size_band_borrowers | 9 | 49.0% (0%) | 49.0% (0%) | 2.7% (89%) | 49.3% (0%) | 5.3% (67%) | +| fsa_parent_plus_balance | 1 | 20.1% (0%) | 10.8% (0%) | 0.0% (100%) | 18.9% (0%) | 0.0% (100%) | +| fsa_state_balance | 51 | 47.0% (0%) | 46.7% (2%) | 0.2% (98%) | 47.0% (0%) | 1.0% (96%) | +| fsa_state_borrowers | 51 | 49.1% (0%) | 49.4% (0%) | 1.1% (92%) | 48.9% (0%) | 6.2% (63%) | ## Headline levels | | FSA target | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | |---|---:|---:|---:|---:|---:|---:| -| Federal balance, own plus Parent PLUS | $1,679.1B | $858.4B | $886.0B | $1,678.0B | $855.8B | $1,668.1B | -| Borrowers (people with a balance) | 44.31M | 21.22M | 21.45M | 43.78M | 21.43M | 41.95M | -| Parent PLUS balance | $114.8B | $143.9B | $152.6B | $114.9B | $143.8B | $126.7B | -| Parent PLUS share of the balance | 6.8% | 16.8% | 17.2% | 6.8% | 16.8% | 7.6% | -| Mean balance per borrower | $37,894 | $40,447 | $41,313 | $38,331 | $39,934 | $39,767 | -| Households with federal education debt | | 16.4% | 16.6% | 33.0% | 16.6% | 31.5% | +| Federal balance, own plus Parent PLUS | $1,679.1B | $858.4B | $886.0B | $1,677.3B | $855.8B | $1,671.2B | +| Borrowers (people with a balance) | 44.31M | 21.18M | 21.59M | 44.26M | 21.42M | 42.67M | +| Parent PLUS balance | $114.8B | $91.8B | $102.5B | $114.8B | $93.2B | $114.8B | +| Parent PLUS share of the balance | 6.8% | 10.7% | 11.6% | 6.8% | 10.9% | 6.9% | +| Mean balance per borrower | $37,894 | $40,535 | $41,040 | $37,897 | $39,951 | $39,162 | +| Households with federal education debt | | 16.4% | 16.6% | 33.7% | 16.6% | 32.3% | ## Every other family: does adding FSA cost the rest of the surface? @@ -49,57 +49,57 @@ Mean absolute relative error over the `national_state` surface's non-FSA targets | Family | Targets | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | B - A (pp) | B+L2 - A+L2 (pp) | |---|---:|---:|---:|---:|---:|---:|---:|---:| -| hhs_acf_tanf/hhs_acf_tanf.hhs_acf_tanf | 30 | 29.8% | 18.3% | 20.5% | 22.5% | 22.4% | +2.17 | -0.05 | -| jct/jct.individual_tax_expenditure_revenue_loss | 11 | 42.3% | 35.3% | 37.5% | 39.9% | 39.3% | +2.14 | -0.63 | -| bea/bea.nipa_proprietors_income | 1 | 11.6% | 5.9% | 7.8% | 11.2% | 9.5% | +1.90 | -1.72 | -| ssa/ssa.ssi_federal_payment_recipients | 3 | 28.5% | 15.6% | 17.2% | 24.3% | 21.6% | +1.60 | -2.68 | -| irs_soi/irs_soi.capital_gains_gross | 104 | 30.1% | 17.0% | 18.5% | 26.0% | 24.6% | +1.52 | -1.43 | -| irs_soi/irs_soi.assigned_aca_ptc | 104 | 0.9% | 0.6% | 1.6% | 0.7% | 1.2% | +1.04 | +0.45 | -| irs_soi/irs_soi.real_estate_taxes | 106 | 6.5% | 5.3% | 6.3% | 6.3% | 6.4% | +0.95 | +0.14 | -| irs_soi/irs_soi.refundable_ctc | 104 | 0.8% | 0.3% | 1.2% | 0.7% | 1.3% | +0.87 | +0.61 | -| irs_soi/irs_soi.eitc | 781 | 3.1% | 2.5% | 3.3% | 2.7% | 3.1% | +0.84 | +0.43 | -| irs_soi/irs_soi.ctc | 104 | 1.5% | 0.6% | 1.3% | 1.2% | 1.4% | +0.67 | +0.19 | -| irs_soi/irs_soi.charitable_deduction | 2 | 7.5% | 6.8% | 7.4% | 6.2% | 6.7% | +0.58 | +0.56 | -| irs_soi/irs_soi.salt_deduction | 106 | 1.9% | 1.8% | 2.3% | 2.1% | 2.3% | +0.51 | +0.20 | -| irs_soi/irs_soi.interest_deduction | 2 | 2.0% | 1.7% | 1.2% | 2.4% | 2.0% | -0.49 | -0.43 | -| irs_soi/irs_soi.taxable_interest_income | 1038 | 6.0% | 5.7% | 6.2% | 6.0% | 5.9% | +0.49 | -0.08 | -| irs_soi/irs_soi.unemployment_compensation | 106 | 0.1% | 0.3% | 0.7% | 0.2% | 0.7% | +0.45 | +0.45 | -| irs_soi/irs_soi.count | 260 | 31.7% | 20.5% | 20.9% | 22.9% | 22.1% | +0.37 | -0.79 | -| irs_soi/irs_soi.qualified_dividends | 104 | 0.3% | 0.5% | 0.9% | 0.5% | 0.5% | +0.34 | +0.05 | -| ssa/ssa.ssi_payments | 51 | 3.7% | 0.4% | 0.6% | 0.5% | 0.9% | +0.18 | +0.31 | -| irs_soi/irs_soi.adjusted_gross_income | 261 | 19.7% | 0.6% | 0.7% | 2.8% | 2.0% | +0.16 | -0.76 | -| irs_soi/irs_soi.income_tax | 104 | 0.6% | 0.7% | 0.8% | 0.8% | 0.9% | +0.15 | +0.08 | -| irs_soi/irs_soi.income_tax_before_credits | 104 | 1.6% | 1.6% | 1.8% | 1.9% | 2.0% | +0.15 | +0.08 | -| cms_medicare/cms_medicare.cms_medicare | 1 | 13.8% | 13.5% | 13.6% | 13.5% | 13.3% | +0.15 | -0.23 | -| irs_soi/irs_soi.estate_losses | 2 | 50.0% | 50.2% | 50.1% | 50.2% | 50.3% | -0.12 | +0.11 | -| irs_soi/irs_soi.ordinary_dividend_income | 108 | 0.8% | 0.8% | 0.9% | 0.8% | 0.8% | +0.12 | -0.06 | -| usda_snap/usda_snap.usda_snap | 104 | 7.9% | 0.1% | 0.2% | 0.6% | 0.5% | +0.12 | -0.15 | -| ssa/ssa.ssi_recipients | 51 | 4.8% | 0.7% | 0.8% | 2.0% | 1.5% | +0.11 | -0.48 | -| census_stc/census_stc.individual_income_tax_collections | 44 | 13.9% | 13.7% | 13.8% | 13.9% | 13.9% | +0.11 | -0.01 | -| irs_soi/irs_soi.taxable_income | 107 | 0.3% | 0.4% | 0.5% | 0.6% | 0.6% | +0.11 | -0.00 | -| bea/bea.nipa_wages_and_salaries | 1 | 13.3% | 13.6% | 13.5% | 13.5% | 13.6% | -0.10 | +0.18 | -| irs_soi/irs_soi.medical_expense_deduction | 104 | 6.0% | 6.3% | 6.3% | 6.2% | 6.4% | +0.09 | +0.24 | -| irs_soi/irs_soi.tax_exempt_interest_income | 104 | 0.1% | 0.7% | 0.8% | 1.0% | 1.0% | +0.09 | -0.06 | -| irs_soi/irs_soi.employment_income | 106 | 0.1% | 0.1% | 0.2% | 0.2% | 0.2% | +0.08 | -0.00 | -| ssa/ssa.ssa | 6 | 3.7% | 0.1% | 0.0% | 1.4% | 1.1% | -0.08 | -0.38 | -| irs_soi/irs_soi.estate_income | 2 | 0.0% | 0.1% | 0.0% | 0.1% | 0.1% | -0.07 | +0.06 | -| irs_soi/irs_soi.non_sch_d_capital_gains | 2 | 0.0% | 0.0% | 0.1% | 0.1% | 0.1% | +0.07 | -0.01 | -| irs_soi/irs_soi.deductible_mortgage_interest | 2 | 0.4% | 0.0% | 0.1% | 0.1% | 0.0% | +0.07 | -0.08 | -| cbo/cbo.cbo | 5 | 4.5% | 4.6% | 4.7% | 4.6% | 4.7% | +0.05 | +0.18 | -| irs_soi/irs_soi.tip_income | 1 | 21.3% | 0.1% | 0.2% | 0.1% | 0.0% | +0.04 | -0.04 | -| irs_soi/irs_soi.partnership_and_s_corp_income | 104 | 0.6% | 0.4% | 0.3% | 0.6% | 0.6% | -0.04 | -0.05 | -| irs_soi/irs_soi.itemized_taxable_income_deductions | 55 | 2.0% | 2.3% | 2.3% | 2.5% | 2.3% | +0.03 | -0.23 | -| cms_medicaid/cms_medicaid.cms_medicaid | 135 | 3.1% | 2.3% | 2.3% | 2.3% | 2.3% | +0.03 | +0.01 | -| irs_soi/irs_soi.rent_and_royalty_net_income | 104 | 4.0% | 3.1% | 3.1% | 3.1% | 3.1% | +0.02 | -0.06 | -| hhs_acf_liheap/hhs_acf_liheap.hhs_acf_liheap | 1 | 0.0% | 0.0% | 0.0% | 0.0% | 0.1% | +0.02 | +0.08 | -| cms_aca/cms_aca.cms_aca | 102 | 1.6% | 0.2% | 0.2% | 0.7% | 0.6% | +0.02 | -0.13 | -| federal_reserve/federal_reserve.federal_reserve | 1 | 0.0% | 0.0% | 0.0% | 0.1% | 0.1% | -0.01 | -0.01 | -| irs_soi/irs_soi.business_net_profits | 104 | 1.3% | 1.1% | 1.1% | 1.1% | 1.1% | +0.01 | -0.00 | -| irs_soi/irs_soi.ira_distributions | 108 | 0.1% | 0.1% | 0.1% | 0.1% | 0.2% | -0.00 | +0.01 | +| hhs_acf_tanf/hhs_acf_tanf.hhs_acf_tanf | 30 | 29.8% | 18.3% | 20.9% | 22.5% | 22.4% | +2.56 | -0.09 | +| ssa/ssa.ssi_federal_payment_recipients | 3 | 28.5% | 15.6% | 17.5% | 24.3% | 23.1% | +1.83 | -1.25 | +| jct/jct.individual_tax_expenditure_revenue_loss | 11 | 42.3% | 35.3% | 37.1% | 39.9% | 39.5% | +1.72 | -0.39 | +| bea/bea.nipa_proprietors_income | 1 | 11.6% | 5.9% | 7.3% | 11.2% | 9.6% | +1.40 | -1.64 | +| irs_soi/irs_soi.capital_gains_gross | 104 | 30.1% | 17.0% | 18.1% | 26.0% | 24.8% | +1.12 | -1.18 | +| irs_soi/irs_soi.real_estate_taxes | 106 | 6.5% | 5.3% | 6.3% | 6.3% | 6.6% | +1.00 | +0.29 | +| irs_soi/irs_soi.assigned_aca_ptc | 104 | 0.9% | 0.6% | 1.5% | 0.7% | 1.1% | +0.91 | +0.37 | +| irs_soi/irs_soi.refundable_ctc | 104 | 0.8% | 0.3% | 1.0% | 0.7% | 1.1% | +0.70 | +0.41 | +| irs_soi/irs_soi.eitc | 781 | 3.1% | 2.5% | 3.1% | 2.7% | 3.1% | +0.67 | +0.39 | +| irs_soi/irs_soi.ctc | 104 | 1.5% | 0.6% | 1.2% | 1.2% | 1.4% | +0.59 | +0.22 | +| irs_soi/irs_soi.salt_deduction | 106 | 1.9% | 1.8% | 2.4% | 2.1% | 2.1% | +0.58 | +0.05 | +| irs_soi/irs_soi.charitable_deduction | 2 | 7.5% | 6.8% | 7.3% | 6.2% | 6.6% | +0.49 | +0.45 | +| irs_soi/irs_soi.interest_deduction | 2 | 2.0% | 1.7% | 1.3% | 2.4% | 2.0% | -0.46 | -0.39 | +| irs_soi/irs_soi.taxable_interest_income | 1038 | 6.0% | 5.7% | 6.2% | 6.0% | 5.9% | +0.45 | -0.05 | +| irs_soi/irs_soi.count | 260 | 31.7% | 20.5% | 21.0% | 22.9% | 22.3% | +0.45 | -0.58 | +| irs_soi/irs_soi.unemployment_compensation | 106 | 0.1% | 0.3% | 0.5% | 0.2% | 0.6% | +0.27 | +0.41 | +| census_stc/census_stc.individual_income_tax_collections | 44 | 13.9% | 13.7% | 14.0% | 13.9% | 14.0% | +0.26 | +0.06 | +| irs_soi/irs_soi.qualified_dividends | 104 | 0.3% | 0.5% | 0.7% | 0.5% | 0.5% | +0.19 | +0.02 | +| irs_soi/irs_soi.income_tax | 104 | 0.6% | 0.7% | 0.8% | 0.8% | 0.9% | +0.14 | +0.09 | +| irs_soi/irs_soi.ordinary_dividend_income | 108 | 0.8% | 0.8% | 0.9% | 0.8% | 0.8% | +0.14 | -0.08 | +| irs_soi/irs_soi.tax_exempt_interest_income | 104 | 0.1% | 0.7% | 0.8% | 1.0% | 1.0% | +0.13 | -0.02 | +| irs_soi/irs_soi.partnership_and_s_corp_income | 104 | 0.6% | 0.4% | 0.5% | 0.6% | 0.6% | +0.11 | -0.05 | +| irs_soi/irs_soi.taxable_income | 107 | 0.3% | 0.4% | 0.5% | 0.6% | 0.6% | +0.10 | +0.02 | +| irs_soi/irs_soi.tip_income | 1 | 21.3% | 0.1% | 0.0% | 0.1% | 0.0% | -0.09 | -0.03 | +| cms_medicare/cms_medicare.cms_medicare | 1 | 13.8% | 13.5% | 13.6% | 13.5% | 13.4% | +0.09 | -0.05 | +| irs_soi/irs_soi.income_tax_before_credits | 104 | 1.6% | 1.6% | 1.7% | 1.9% | 2.0% | +0.09 | +0.07 | +| irs_soi/irs_soi.estate_losses | 2 | 50.0% | 50.2% | 50.1% | 50.2% | 50.0% | -0.08 | -0.18 | +| irs_soi/irs_soi.medical_expense_deduction | 104 | 6.0% | 6.3% | 6.3% | 6.2% | 6.5% | +0.08 | +0.26 | +| ssa/ssa.ssi_recipients | 51 | 4.8% | 0.7% | 0.8% | 2.0% | 1.5% | +0.08 | -0.47 | +| ssa/ssa.ssi_payments | 51 | 3.7% | 0.4% | 0.5% | 0.5% | 1.0% | +0.07 | +0.45 | +| bea/bea.nipa_wages_and_salaries | 1 | 13.3% | 13.6% | 13.6% | 13.5% | 13.5% | -0.07 | +0.06 | +| irs_soi/irs_soi.adjusted_gross_income | 261 | 19.7% | 0.6% | 0.6% | 2.8% | 2.2% | +0.07 | -0.59 | +| usda_snap/usda_snap.usda_snap | 104 | 7.9% | 0.1% | 0.2% | 0.6% | 0.7% | +0.05 | +0.07 | +| irs_soi/irs_soi.employment_income | 106 | 0.1% | 0.1% | 0.2% | 0.2% | 0.2% | +0.05 | +0.02 | +| irs_soi/irs_soi.rent_and_royalty_net_income | 104 | 4.0% | 3.1% | 3.1% | 3.1% | 3.1% | +0.04 | -0.03 | +| irs_soi/irs_soi.estate_income | 2 | 0.0% | 0.1% | 0.1% | 0.1% | 0.1% | -0.03 | +0.01 | +| ssa/ssa.ssa | 6 | 3.7% | 0.1% | 0.1% | 1.4% | 1.3% | -0.02 | -0.10 | +| cms_medicaid/cms_medicaid.cms_medicaid | 135 | 3.1% | 2.3% | 2.3% | 2.3% | 2.3% | +0.02 | -0.00 | +| irs_soi/irs_soi.ira_distributions | 108 | 0.1% | 0.1% | 0.2% | 0.1% | 0.1% | +0.02 | +0.00 | +| irs_soi/irs_soi.non_sch_d_capital_gains | 2 | 0.0% | 0.0% | 0.1% | 0.1% | 0.0% | +0.02 | -0.06 | +| irs_soi/irs_soi.deductible_mortgage_interest | 2 | 0.4% | 0.0% | 0.0% | 0.1% | 0.0% | -0.01 | -0.07 | +| federal_reserve/federal_reserve.federal_reserve | 1 | 0.0% | 0.0% | 0.0% | 0.1% | 0.0% | -0.01 | -0.04 | +| irs_soi/irs_soi.business_net_profits | 104 | 1.3% | 1.1% | 1.1% | 1.1% | 1.1% | -0.01 | +0.02 | +| irs_soi/irs_soi.taxable_social_security | 108 | 0.3% | 0.2% | 0.3% | 0.3% | 0.3% | +0.01 | +0.01 | +| cbo/cbo.cbo | 5 | 4.5% | 4.6% | 4.6% | 4.6% | 4.6% | +0.01 | +0.07 | +| cms_aca/cms_aca.cms_aca | 102 | 1.6% | 0.2% | 0.2% | 0.7% | 0.6% | +0.01 | -0.12 | | census_pep/census_pep.resident_population | 936 | 0.1% | 0.1% | 0.1% | 0.1% | 0.1% | +0.00 | +0.01 | -| irs_soi/irs_soi.taxable_social_security | 108 | 0.3% | 0.2% | 0.2% | 0.3% | 0.3% | +0.00 | +0.05 | -| irs_soi/irs_soi.taxable_pension_income | 108 | 0.1% | 0.1% | 0.1% | 0.1% | 0.1% | +0.00 | +0.01 | -| **all non-FSA targets** | 6102 | 5.3% | 3.3% | 3.7% | 3.8% | 3.8% | +0.36 | -0.02 | +| hhs_acf_liheap/hhs_acf_liheap.hhs_acf_liheap | 1 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | -0.00 | +0.01 | +| irs_soi/irs_soi.taxable_pension_income | 108 | 0.1% | 0.1% | 0.1% | 0.1% | 0.1% | -0.00 | +0.00 | +| irs_soi/irs_soi.itemized_taxable_income_deductions | 55 | 2.0% | 2.3% | 2.3% | 2.5% | 2.4% | -0.00 | -0.16 | +| **all non-FSA targets** | 6102 | 5.3% | 3.3% | 3.6% | 3.8% | 3.9% | +0.31 | +0.00 | ## Racial composition of borrowers, before and after calibration @@ -107,30 +107,30 @@ Borrower households by the reference person's race (the SCF's `racecl4`; the SCF | | SCF 2025 | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | B - release (pp) | |---|---:|---:|---:|---:|---:|---:|---:| -| white_non_hispanic | 57.6% | 60.8% | 60.0% | 57.9% | 62.1% | 60.0% | -2.9 | -| black_non_hispanic | 18.6% | 17.4% | 16.4% | 19.0% | 16.8% | 19.0% | +1.6 | -| hispanic | 9.2% | 12.9% | 13.8% | 14.8% | 12.4% | 12.8% | +1.9 | -| other_or_multiple | 14.7% | 9.0% | 9.8% | 8.3% | 8.7% | 8.2% | -0.7 | +| white_non_hispanic | 57.6% | 60.8% | 60.0% | 57.6% | 62.1% | 59.9% | -3.2 | +| black_non_hispanic | 18.6% | 17.4% | 16.4% | 18.8% | 16.8% | 19.2% | +1.5 | +| hispanic | 9.2% | 12.9% | 13.8% | 14.4% | 12.4% | 12.4% | +1.5 | +| other_or_multiple | 14.7% | 9.0% | 9.8% | 9.2% | 8.7% | 8.5% | +0.2 | Borrowers (people) by their own race, and the share of adults who borrow: | | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | Adults with a balance: release | B | B + L2 | |---|---:|---:|---:|---:|---:|---:|---:|---:| -| white_non_hispanic | 61.5% | 60.9% | 59.2% | 62.9% | 61.4% | 7.9% | 16.0% | 15.0% | -| black_non_hispanic | 16.4% | 15.7% | 17.8% | 16.0% | 17.7% | 12.8% | 26.2% | 25.3% | -| hispanic | 13.0% | 13.5% | 14.5% | 12.2% | 12.6% | 6.2% | 14.2% | 14.1% | -| other_or_multiple | 9.0% | 9.9% | 8.4% | 8.8% | 8.3% | 7.6% | 13.9% | 13.8% | +| white_non_hispanic | 60.2% | 59.3% | 57.2% | 61.4% | 59.4% | 7.7% | 15.7% | 14.9% | +| black_non_hispanic | 16.6% | 16.2% | 18.4% | 16.4% | 18.4% | 12.9% | 26.8% | 26.5% | +| hispanic | 13.5% | 13.9% | 14.7% | 12.6% | 12.7% | 6.4% | 14.8% | 14.6% | +| other_or_multiple | 9.6% | 10.6% | 9.7% | 9.6% | 9.4% | 8.1% | 15.4% | 15.5% | ## Weight movement against the published weights | | A, no FSA | B, with FSA | A + L2 | B + L2 | |---|---:|---:|---:|---:| -| Borrower households' weight ratio | 1.01 | 2.01 | 1.01 | 1.92 | -| Other households' weight ratio | 0.998 | 0.801 | 0.998 | 0.819 | -| Borrower households' share of weight | 16.6% | 33.0% | 16.6% | 31.5% | -| Median household weight ratio | 0.02 | 4.4e-04 | 0.13 | 3.9e-03 | -| 99th percentile weight ratio | 4.76 | 4.98 | 1.97 | 2.80 | -| Effective sample size (release 9,174) | 4,149 | 2,951 | 6,435 | 4,248 | +| Borrower households' weight ratio | 1.01 | 2.05 | 1.01 | 1.97 | +| Other households' weight ratio | 0.998 | 0.793 | 0.998 | 0.810 | +| Borrower households' share of weight | 16.6% | 33.7% | 16.6% | 32.3% | +| Median household weight ratio | 0.02 | 7.0e-04 | 0.13 | 0.01 | +| 99th percentile weight ratio | 4.76 | 4.98 | 1.97 | 2.77 | +| Effective sample size (release 9,174) | 4,149 | 3,045 | 6,435 | 4,424 | ## FSA facts that do not bind @@ -157,135 +157,135 @@ Materialization dropped 0 FSA targets. | Target | FSA (reconciled) | Release | A, no FSA | B, with FSA | A + L2 | B + L2 | |---|---:|---:|---:|---:|---:|---:| -| Federal student loan balance, Alabama | $26.8B | $8.3B (-69.0%) | $7.3B (-72.7%) | $26.8B (+0.0%) | $7.9B (-70.7%) | $26.8B (-0.2%) | -| Federal student loan balance, Alaska | $2.5B | $1.1B (-53.6%) | $1.4B (-42.4%) | $2.5B (-0.0%) | $1.2B (-52.7%) | $2.3B (-9.1%) | -| Federal student loan balance, Arizona | $35.1B | $24.3B (-30.7%) | $14.4B (-59.0%) | $35.1B (-0.1%) | $18.5B (-47.1%) | $35.1B (-0.0%) | -| Federal student loan balance, Arkansas | $15.0B | $6.0B (-59.9%) | $6.1B (-59.3%) | $15.0B (+0.1%) | $6.3B (-57.6%) | $15.0B (+0.0%) | -| Federal student loan balance, California | $161.7B | $91.3B (-43.5%) | $99.2B (-38.6%) | $161.8B (+0.1%) | $96.8B (-40.1%) | $161.6B (-0.0%) | -| Federal student loan balance, Colorado | $30.6B | $12.2B (-60.0%) | $6.4B (-79.1%) | $30.6B (-0.0%) | $9.0B (-70.5%) | $30.6B (-0.2%) | -| Federal student loan balance, Connecticut | $20.4B | $8.2B (-59.8%) | $8.1B (-60.2%) | $20.4B (-0.2%) | $7.9B (-61.1%) | $20.4B (-0.1%) | -| Federal student loan balance, Delaware | $5.8B | $2.6B (-54.7%) | $3.3B (-42.6%) | $5.8B (-0.2%) | $2.9B (-49.4%) | $5.4B (-5.8%) | -| Federal student loan balance, District of Columbia | $6.6B | $2.6B (-60.6%) | $1.5B (-77.5%) | $6.6B (+0.1%) | $2.5B (-62.1%) | $6.6B (-0.3%) | -| Federal student loan balance, Florida | $116.7B | $42.9B (-63.2%) | $43.9B (-62.4%) | $116.7B (-0.0%) | $42.8B (-63.4%) | $116.8B (+0.1%) | -| Federal student loan balance, Georgia | $77.0B | $38.4B (-50.1%) | $51.9B (-32.5%) | $77.1B (+0.1%) | $33.3B (-56.8%) | $76.8B (-0.2%) | -| Federal student loan balance, Hawaii | $5.1B | $3.3B (-35.6%) | $3.2B (-36.0%) | $5.1B (-0.1%) | $3.2B (-36.7%) | $5.1B (-0.1%) | -| Federal student loan balance, Idaho | $7.7B | $6.2B (-20.5%) | $6.4B (-17.2%) | $7.7B (+0.1%) | $6.5B (-16.0%) | $7.7B (-0.2%) | -| Federal student loan balance, Illinois | $67.4B | $34.1B (-49.3%) | $50.4B (-25.2%) | $67.4B (+0.1%) | $47.7B (-29.2%) | $67.3B (-0.1%) | -| Federal student loan balance, Indiana | $32.0B | $25.3B (-20.8%) | $26.4B (-17.3%) | $32.0B (+0.0%) | $28.2B (-11.8%) | $32.0B (-0.0%) | -| Federal student loan balance, Iowa | $13.9B | $5.5B (-60.6%) | $6.5B (-53.1%) | $14.0B (+0.2%) | $6.1B (-56.5%) | $13.9B (+0.2%) | -| Federal student loan balance, Kansas | $13.5B | $6.5B (-52.1%) | $6.5B (-52.1%) | $13.5B (-0.0%) | $6.9B (-49.2%) | $13.3B (-1.7%) | -| Federal student loan balance, Kentucky | $22.3B | $12.8B (-42.6%) | $20.2B (-9.5%) | $22.3B (+0.0%) | $13.2B (-40.6%) | $22.3B (+0.2%) | -| Federal student loan balance, Louisiana | $25.9B | $6.1B (-76.6%) | $9.0B (-65.4%) | $24.6B (-5.0%) | $6.6B (-74.4%) | $19.2B (-25.9%) | -| Federal student loan balance, Maine | $6.9B | $4.0B (-42.0%) | $2.7B (-60.9%) | $6.9B (-0.0%) | $3.6B (-48.5%) | $6.9B (-0.1%) | -| Federal student loan balance, Maryland | $39.6B | $14.4B (-63.8%) | $15.2B (-61.5%) | $39.6B (-0.0%) | $14.4B (-63.6%) | $37.5B (-5.4%) | -| Federal student loan balance, Massachusetts | $34.5B | $19.3B (-44.0%) | $16.5B (-52.3%) | $34.5B (+0.2%) | $18.7B (-45.8%) | $34.4B (-0.1%) | -| Federal student loan balance, Michigan | $54.9B | $34.0B (-38.1%) | $39.5B (-28.0%) | $55.1B (+0.3%) | $34.5B (-37.1%) | $54.8B (-0.1%) | -| Federal student loan balance, Minnesota | $28.4B | $20.9B (-26.4%) | $21.5B (-24.1%) | $28.4B (+0.0%) | $22.3B (-21.3%) | $28.3B (-0.2%) | -| Federal student loan balance, Mississippi | $18.4B | $7.9B (-57.1%) | $6.3B (-65.8%) | $18.4B (+0.1%) | $7.9B (-56.9%) | $18.4B (-0.0%) | -| Federal student loan balance, Missouri | $31.6B | $15.7B (-50.2%) | $24.7B (-21.7%) | $31.6B (+0.0%) | $18.4B (-41.7%) | $31.6B (+0.2%) | -| Federal student loan balance, Montana | $4.6B | $3.6B (-23.5%) | $3.5B (-25.1%) | $4.6B (+0.1%) | $3.6B (-22.8%) | $4.7B (+0.2%) | -| Federal student loan balance, Nebraska | $8.5B | $3.9B (-54.3%) | $4.3B (-49.1%) | $8.5B (+0.1%) | $3.7B (-56.7%) | $8.5B (+0.2%) | -| Federal student loan balance, Nevada | $13.6B | $5.4B (-60.4%) | $6.8B (-50.2%) | $13.6B (-0.1%) | $6.0B (-55.9%) | $13.6B (-0.0%) | -| Federal student loan balance, New Hampshire | $7.0B | $3.6B (-48.4%) | $2.9B (-58.9%) | $7.0B (+0.2%) | $3.1B (-55.9%) | $7.0B (+0.3%) | -| Federal student loan balance, New Jersey | $49.9B | $22.9B (-54.1%) | $27.5B (-44.9%) | $49.9B (+0.0%) | $24.2B (-51.5%) | $50.0B (+0.0%) | -| Federal student loan balance, New Mexico | $8.3B | $9.6B (+15.8%) | $4.6B (-44.1%) | $8.2B (-0.2%) | $7.4B (-10.5%) | $8.3B (+0.2%) | -| Federal student loan balance, New York | $103.1B | $59.0B (-42.7%) | $52.1B (-49.4%) | $103.0B (-0.0%) | $54.5B (-47.1%) | $103.2B (+0.1%) | -| Federal student loan balance, North Carolina | $57.6B | $30.7B (-46.7%) | $48.5B (-15.8%) | $57.5B (-0.1%) | $34.4B (-40.2%) | $57.6B (+0.1%) | -| Federal student loan balance, North Dakota | $2.8B | $1.5B (-47.1%) | $1.6B (-42.6%) | $2.8B (-0.2%) | $1.6B (-44.3%) | $2.8B (-0.3%) | -| Federal student loan balance, Ohio | $66.3B | $24.9B (-62.4%) | $17.5B (-73.7%) | $66.4B (+0.0%) | $22.7B (-65.7%) | $66.2B (-0.1%) | -| Federal student loan balance, Oklahoma | $17.6B | $12.7B (-28.1%) | $10.4B (-41.1%) | $17.7B (+0.1%) | $11.9B (-32.6%) | $17.6B (+0.0%) | -| Federal student loan balance, Oregon | $21.5B | $9.8B (-54.5%) | $10.2B (-52.6%) | $21.5B (-0.0%) | $9.8B (-54.5%) | $21.0B (-2.0%) | -| Federal student loan balance, Pennsylvania | $71.8B | $27.9B (-61.1%) | $19.5B (-72.9%) | $71.7B (-0.1%) | $24.6B (-65.7%) | $71.7B (-0.1%) | -| Federal student loan balance, Rhode Island | $5.3B | $2.8B (-46.9%) | $2.2B (-58.6%) | $5.3B (+0.0%) | $2.7B (-48.8%) | $5.3B (+0.2%) | -| Federal student loan balance, South Carolina | $32.4B | $17.5B (-46.1%) | $14.4B (-55.5%) | $32.4B (-0.1%) | $13.3B (-58.9%) | $32.4B (+0.0%) | -| Federal student loan balance, South Dakota | $3.8B | $2.5B (-33.3%) | $1.2B (-67.7%) | $3.8B (+0.0%) | $1.8B (-52.5%) | $3.8B (+0.1%) | -| Federal student loan balance, Tennessee | $35.7B | $30.7B (-14.0%) | $34.8B (-2.6%) | $35.8B (+0.2%) | $30.9B (-13.5%) | $35.7B (-0.1%) | -| Federal student loan balance, Texas | $142.7B | $69.0B (-51.6%) | $44.8B (-68.6%) | $142.5B (-0.1%) | $58.3B (-59.2%) | $142.2B (-0.4%) | -| Federal student loan balance, Utah | $11.5B | $7.1B (-38.2%) | $9.2B (-19.8%) | $11.5B (+0.0%) | $8.6B (-24.6%) | $11.4B (-0.3%) | -| Federal student loan balance, Vermont | $3.0B | $1.5B (-49.1%) | $1.4B (-51.9%) | $3.0B (-0.1%) | $1.6B (-48.0%) | $3.0B (-0.1%) | -| Federal student loan balance, Virginia | $46.9B | $23.9B (-49.1%) | $37.9B (-19.2%) | $46.9B (-0.0%) | $31.0B (-34.0%) | $46.9B (-0.0%) | -| Federal student loan balance, Washington | $30.5B | $16.0B (-47.4%) | $13.4B (-56.1%) | $30.6B (+0.2%) | $15.4B (-49.5%) | $30.5B (-0.0%) | -| Federal student loan balance, West Virginia | $7.9B | $5.6B (-29.1%) | $6.4B (-19.2%) | $7.9B (-0.0%) | $5.6B (-29.9%) | $8.0B (+0.1%) | -| Federal student loan balance, Wisconsin | $24.8B | $11.6B (-53.1%) | $11.8B (-52.5%) | $24.7B (-0.1%) | $11.0B (-55.5%) | $24.7B (-0.2%) | -| Federal student loan balance, Wyoming | $1.9B | $799,653,011 (-56.9%) | $494,870,182 (-73.4%) | $1.9B (-0.3%) | $732,630,963 (-60.6%) | $1.9B (-0.2%) | -| Federal student loan borrowers, Alabama | 694,297 | 299,800 (-56.8%) | 254,906 (-63.3%) | 694,484 (+0.0%) | 299,798 (-56.8%) | 695,397 (+0.2%) | -| Federal student loan borrowers, Alaska | 67,443 | 42,367 (-37.2%) | 43,515 (-35.5%) | 67,419 (-0.0%) | 41,980 (-37.8%) | 67,404 (-0.1%) | -| Federal student loan borrowers, Arizona | 957,900 | 568,336 (-40.7%) | 475,180 (-50.4%) | 957,726 (-0.0%) | 539,307 (-43.7%) | 956,166 (-0.2%) | -| Federal student loan borrowers, Arkansas | 427,034 | 179,315 (-58.0%) | 166,818 (-60.9%) | 427,506 (+0.1%) | 181,962 (-57.4%) | 377,427 (-11.6%) | -| Federal student loan borrowers, California | 4.10M | 2.20M (-46.4%) | 2.31M (-43.7%) | 4.10M (+0.0%) | 2.16M (-47.3%) | 4.10M (+0.0%) | -| Federal student loan borrowers, Colorado | 799,487 | 376,661 (-52.9%) | 287,576 (-64.0%) | 800,730 (+0.2%) | 307,585 (-61.5%) | 797,681 (-0.2%) | -| Federal student loan borrowers, Connecticut | 538,917 | 200,218 (-62.8%) | 215,616 (-60.0%) | 428,970 (-20.4%) | 214,014 (-60.3%) | 357,504 (-33.7%) | -| Federal student loan borrowers, Delaware | 144,088 | 61,556 (-57.3%) | 66,317 (-54.0%) | 120,920 (-16.1%) | 62,407 (-56.7%) | 109,128 (-24.3%) | -| Federal student loan borrowers, District of Columbia | 119,829 | 56,416 (-52.9%) | 45,141 (-62.3%) | 119,785 (-0.0%) | 54,249 (-54.7%) | 104,429 (-12.9%) | -| Federal student loan borrowers, Florida | 2.87M | 1.02M (-64.6%) | 1.18M (-59.0%) | 2.87M (-0.0%) | 1.07M (-62.8%) | 2.79M (-2.9%) | -| Federal student loan borrowers, Georgia | 1.78M | 895,114 (-49.7%) | 949,522 (-46.7%) | 1.78M (-0.0%) | 803,541 (-54.9%) | 1.72M (-3.3%) | -| Federal student loan borrowers, Hawaii | 126,521 | 70,947 (-43.9%) | 79,600 (-37.1%) | 126,442 (-0.1%) | 66,457 (-47.5%) | 114,039 (-9.9%) | -| Federal student loan borrowers, Idaho | 226,378 | 158,278 (-30.1%) | 154,004 (-32.0%) | 226,432 (+0.0%) | 163,950 (-27.6%) | 225,793 (-0.3%) | -| Federal student loan borrowers, Illinois | 1.67M | 809,565 (-51.7%) | 991,286 (-40.8%) | 1.67M (-0.1%) | 949,750 (-43.3%) | 1.67M (-0.1%) | -| Federal student loan borrowers, Indiana | 939,497 | 566,356 (-39.7%) | 576,460 (-38.6%) | 939,405 (-0.0%) | 606,899 (-35.4%) | 939,251 (-0.0%) | -| Federal student loan borrowers, Iowa | 442,719 | 197,218 (-55.5%) | 239,760 (-45.8%) | 442,894 (+0.0%) | 237,122 (-46.4%) | 440,443 (-0.5%) | -| Federal student loan borrowers, Kansas | 396,607 | 227,692 (-42.6%) | 222,096 (-44.0%) | 396,315 (-0.1%) | 214,203 (-46.0%) | 396,666 (+0.0%) | -| Federal student loan borrowers, Kentucky | 643,689 | 292,355 (-54.6%) | 324,504 (-49.6%) | 643,650 (-0.0%) | 301,880 (-53.1%) | 494,346 (-23.2%) | -| Federal student loan borrowers, Louisiana | 725,666 | 221,291 (-69.5%) | 259,676 (-64.2%) | 725,630 (-0.0%) | 233,994 (-67.8%) | 608,283 (-16.2%) | -| Federal student loan borrowers, Maine | 195,114 | 116,910 (-40.1%) | 93,095 (-52.3%) | 163,309 (-16.3%) | 108,179 (-44.6%) | 152,248 (-22.0%) | -| Federal student loan borrowers, Maryland | 880,732 | 365,740 (-58.5%) | 361,944 (-58.9%) | 772,806 (-12.3%) | 333,874 (-62.1%) | 653,671 (-25.8%) | -| Federal student loan borrowers, Massachusetts | 941,693 | 468,114 (-50.3%) | 410,147 (-56.4%) | 942,709 (+0.1%) | 440,759 (-53.2%) | 927,634 (-1.5%) | -| Federal student loan borrowers, Michigan | 1.44M | 804,634 (-44.1%) | 819,196 (-43.1%) | 1.44M (+0.1%) | 835,678 (-42.0%) | 1.44M (-0.1%) | -| Federal student loan borrowers, Minnesota | 807,852 | 476,572 (-41.0%) | 489,445 (-39.4%) | 806,823 (-0.1%) | 499,984 (-38.1%) | 769,185 (-4.8%) | -| Federal student loan borrowers, Mississippi | 477,120 | 212,627 (-55.4%) | 199,676 (-58.1%) | 476,743 (-0.1%) | 225,931 (-52.6%) | 446,337 (-6.5%) | -| Federal student loan borrowers, Missouri | 864,211 | 452,444 (-47.6%) | 553,444 (-36.0%) | 865,514 (+0.2%) | 473,298 (-45.2%) | 769,360 (-11.0%) | -| Federal student loan borrowers, Montana | 132,167 | 93,724 (-29.1%) | 86,614 (-34.5%) | 132,178 (+0.0%) | 94,461 (-28.5%) | 131,897 (-0.2%) | -| Federal student loan borrowers, Nebraska | 254,610 | 111,991 (-56.0%) | 120,989 (-52.5%) | 255,006 (+0.2%) | 105,848 (-58.4%) | 210,699 (-17.2%) | -| Federal student loan borrowers, Nevada | 384,687 | 177,125 (-54.0%) | 213,697 (-44.4%) | 384,138 (-0.1%) | 196,577 (-48.9%) | 354,481 (-7.9%) | -| Federal student loan borrowers, New Hampshire | 196,264 | 108,023 (-45.0%) | 103,378 (-47.3%) | 196,628 (+0.2%) | 109,233 (-44.3%) | 196,426 (+0.1%) | -| Federal student loan borrowers, New Jersey | 1.29M | 447,680 (-65.3%) | 536,510 (-58.5%) | 1.29M (+0.1%) | 483,073 (-62.6%) | 1.07M (-16.8%) | -| Federal student loan borrowers, New Mexico | 236,312 | 147,762 (-37.5%) | 85,697 (-63.7%) | 235,942 (-0.2%) | 123,887 (-47.6%) | 191,802 (-18.8%) | -| Federal student loan borrowers, New York | 2.57M | 1.24M (-51.8%) | 1.19M (-53.7%) | 2.57M (-0.1%) | 1.28M (-50.3%) | 2.57M (-0.1%) | -| Federal student loan borrowers, North Carolina | 1.44M | 763,659 (-47.1%) | 955,792 (-33.7%) | 1.44M (-0.1%) | 815,913 (-43.4%) | 1.44M (-0.1%) | -| Federal student loan borrowers, North Dakota | 92,434 | 54,709 (-40.8%) | 68,206 (-26.2%) | 92,302 (-0.1%) | 59,660 (-35.5%) | 92,240 (-0.2%) | -| Federal student loan borrowers, Ohio | 1.85M | 706,815 (-61.8%) | 520,187 (-71.9%) | 1.61M (-13.1%) | 624,258 (-66.3%) | 1.44M (-22.4%) | -| Federal student loan borrowers, Oklahoma | 534,002 | 320,839 (-39.9%) | 276,825 (-48.2%) | 533,733 (-0.1%) | 296,474 (-44.5%) | 532,759 (-0.2%) | -| Federal student loan borrowers, Oregon | 550,628 | 297,551 (-46.0%) | 322,529 (-41.4%) | 550,760 (+0.0%) | 320,994 (-41.7%) | 551,860 (+0.2%) | -| Federal student loan borrowers, Pennsylvania | 1.94M | 698,545 (-64.0%) | 537,921 (-72.3%) | 1.94M (-0.0%) | 646,671 (-66.6%) | 1.93M (-0.3%) | -| Federal student loan borrowers, Rhode Island | 156,531 | 91,440 (-41.6%) | 67,193 (-57.1%) | 156,676 (+0.1%) | 83,389 (-46.7%) | 143,823 (-8.1%) | -| Federal student loan borrowers, South Carolina | 817,995 | 307,285 (-62.4%) | 272,654 (-66.7%) | 817,209 (-0.1%) | 268,422 (-67.2%) | 704,814 (-13.8%) | -| Federal student loan borrowers, South Dakota | 122,025 | 49,229 (-59.7%) | 36,584 (-70.0%) | 122,016 (-0.0%) | 45,954 (-62.3%) | 82,771 (-32.2%) | -| Federal student loan borrowers, Tennessee | 935,732 | 618,646 (-33.9%) | 723,231 (-22.7%) | 935,922 (+0.0%) | 671,009 (-28.3%) | 934,369 (-0.1%) | -| Federal student loan borrowers, Texas | 4.13M | 1.92M (-53.6%) | 1.90M (-54.1%) | 4.13M (-0.1%) | 2.04M (-50.6%) | 4.12M (-0.2%) | -| Federal student loan borrowers, Utah | 327,595 | 229,732 (-29.9%) | 277,395 (-15.3%) | 327,688 (+0.0%) | 274,031 (-16.4%) | 327,472 (-0.0%) | -| Federal student loan borrowers, Vermont | 78,213 | 49,097 (-37.2%) | 49,037 (-37.3%) | 78,112 (-0.1%) | 49,999 (-36.1%) | 78,189 (-0.0%) | -| Federal student loan borrowers, Virginia | 1.14M | 491,787 (-56.7%) | 510,462 (-55.0%) | 1.13M (-0.1%) | 492,105 (-56.6%) | 949,575 (-16.3%) | -| Federal student loan borrowers, Washington | 811,512 | 510,863 (-37.0%) | 398,849 (-50.9%) | 812,134 (+0.1%) | 467,945 (-42.3%) | 810,895 (-0.1%) | -| Federal student loan borrowers, West Virginia | 238,717 | 99,508 (-58.3%) | 111,062 (-53.5%) | 227,134 (-4.9%) | 105,667 (-55.7%) | 160,975 (-32.6%) | -| Federal student loan borrowers, Wisconsin | 741,455 | 324,174 (-56.3%) | 294,341 (-60.3%) | 740,807 (-0.1%) | 318,365 (-57.1%) | 740,101 (-0.2%) | -| Federal student loan borrowers, Wyoming | 57,300 | 35,036 (-38.9%) | 27,385 (-52.2%) | 57,268 (-0.1%) | 31,449 (-45.1%) | 57,300 (-0.0%) | -| Federal student loan balance, borrower age 24 and Younger | $84.9B | $21.8B (-74.3%) | $21.2B (-75.0%) | $84.8B (-0.1%) | $21.3B (-74.9%) | $82.0B (-3.5%) | -| Federal student loan balance, borrower age 25 to 34 | $462.0B | $193.5B (-58.1%) | $192.1B (-58.4%) | $461.4B (-0.1%) | $191.9B (-58.5%) | $454.1B (-1.7%) | -| Federal student loan balance, borrower age 35 to 49 | $679.5B | $347.9B (-48.8%) | $344.7B (-49.3%) | $679.0B (-0.1%) | $341.6B (-49.7%) | $679.6B (+0.0%) | -| Federal student loan balance, borrower age 50 to 61 | $310.2B | $203.8B (-34.3%) | $236.3B (-23.8%) | $310.3B (+0.0%) | $213.6B (-31.1%) | $310.2B (-0.0%) | -| Federal student loan balance, borrower age 62 and Older | $142.5B | $91.4B (-35.9%) | $91.7B (-35.7%) | $142.4B (-0.1%) | $87.3B (-38.7%) | $142.4B (-0.1%) | -| Federal student loan borrowers, borrower age 24 and Younger | 6.13M | 1.06M (-82.7%) | 894,843 (-85.4%) | 3.72M (-39.3%) | 956,370 (-84.4%) | 3.43M (-44.0%) | -| Federal student loan borrowers, borrower age 25 to 34 | 13.85M | 6.19M (-55.3%) | 6.30M (-54.5%) | 14.85M (+7.2%) | 6.26M (-54.8%) | 13.85M (+0.0%) | -| Federal student loan borrowers, borrower age 35 to 49 | 14.84M | 8.02M (-45.9%) | 8.07M (-45.6%) | 15.60M (+5.1%) | 8.19M (-44.8%) | 15.04M (+1.4%) | -| Federal student loan borrowers, borrower age 50 to 61 | 6.33M | 4.41M (-30.3%) | 4.44M (-29.8%) | 6.44M (+1.8%) | 4.46M (-29.5%) | 6.46M (+2.0%) | -| Federal student loan borrowers, borrower age 62 and Older | 3.16M | 1.54M (-51.4%) | 1.74M (-45.0%) | 3.17M (+0.1%) | 1.57M (-50.4%) | 3.17M (+0.0%) | -| Federal student loan balance, borrower debt size Less than 5K | $18.7B | $6.9B (-63.2%) | $6.7B (-64.3%) | $17.0B (-9.1%) | $6.9B (-63.0%) | $14.2B (-24.3%) | -| Federal student loan balance, borrower debt size 5K to 10K | $52.0B | $20.4B (-60.7%) | $18.8B (-63.8%) | $52.0B (+0.0%) | $19.6B (-62.4%) | $43.1B (-17.1%) | -| Federal student loan balance, borrower debt size 10K to 20K | $131.2B | $58.6B (-55.3%) | $60.2B (-54.1%) | $131.1B (-0.0%) | $60.6B (-53.8%) | $131.1B (-0.0%) | -| Federal student loan balance, borrower debt size 20K to 40K | $268.0B | $136.5B (-49.1%) | $147.3B (-45.0%) | $268.2B (+0.1%) | $142.9B (-46.7%) | $267.5B (-0.2%) | -| Federal student loan balance, borrower debt size 40K to 60K | $204.3B | $111.9B (-45.3%) | $102.9B (-49.6%) | $204.4B (+0.0%) | $109.4B (-46.5%) | $204.3B (-0.0%) | -| Federal student loan balance, borrower debt size 60K to 80K | $175.6B | $126.8B (-27.8%) | $142.5B (-18.9%) | $175.7B (+0.1%) | $132.7B (-24.4%) | $178.4B (+1.6%) | -| Federal student loan balance, borrower debt size 80K to 100K | $126.4B | $58.4B (-53.8%) | $53.6B (-57.6%) | $126.4B (-0.0%) | $55.3B (-56.3%) | $126.3B (-0.1%) | -| Federal student loan balance, borrower debt size 100K to 200K | $350.7B | $153.4B (-56.2%) | $159.4B (-54.6%) | $350.9B (+0.0%) | $149.2B (-57.5%) | $350.7B (+0.0%) | -| Federal student loan balance, borrower debt size 200K+ | $352.2B | $185.6B (-47.3%) | $194.7B (-44.7%) | $352.4B (+0.0%) | $179.2B (-49.1%) | $352.6B (+0.1%) | -| Federal student loan borrowers, borrower debt size Less than 5K | 6.82M | 2.66M (-61.0%) | 2.67M (-60.9%) | 6.29M (-7.8%) | 2.75M (-59.7%) | 5.48M (-19.7%) | -| Federal student loan borrowers, borrower debt size 5K to 10K | 7.12M | 2.89M (-59.5%) | 2.66M (-62.7%) | 7.11M (-0.1%) | 2.76M (-61.2%) | 5.94M (-16.5%) | -| Federal student loan borrowers, borrower debt size 10K to 20K | 9.10M | 4.03M (-55.7%) | 4.11M (-54.8%) | 8.85M (-2.8%) | 4.14M (-54.5%) | 8.86M (-2.7%) | -| Federal student loan borrowers, borrower debt size 20K to 40K | 9.40M | 4.99M (-46.9%) | 5.36M (-43.0%) | 9.38M (-0.2%) | 5.21M (-44.5%) | 9.50M (+1.1%) | -| Federal student loan borrowers, borrower debt size 40K to 60K | 4.15M | 2.30M (-44.7%) | 2.12M (-49.0%) | 4.15M (+0.0%) | 2.26M (-45.7%) | 4.15M (+0.0%) | -| Federal student loan borrowers, borrower debt size 60K to 80K | 2.57M | 1.84M (-28.5%) | 2.08M (-19.0%) | 2.55M (-0.7%) | 1.93M (-25.1%) | 2.57M (+0.1%) | -| Federal student loan borrowers, borrower debt size 80K to 100K | 1.38M | 671,311 (-51.5%) | 609,132 (-56.0%) | 1.44M (+3.7%) | 631,351 (-54.4%) | 1.44M (+3.7%) | -| Federal student loan borrowers, borrower debt size 100K to 200K | 2.57M | 1.19M (-53.7%) | 1.20M (-53.5%) | 2.63M (+2.2%) | 1.15M (-55.4%) | 2.65M (+3.2%) | -| Federal student loan borrowers, borrower debt size 200K+ | 1.19M | 656,753 (-44.7%) | 642,242 (-45.9%) | 1.37M (+15.7%) | 609,324 (-48.7%) | 1.35M (+13.8%) | -| Parent PLUS loan balance | $114.8B | $143.9B (+25.3%) | $152.6B (+32.8%) | $114.9B (+0.0%) | $143.8B (+25.2%) | $126.7B (+10.3%) | -| Federal student loan balance excluding Parent PLUS | $1,564.2B | $714.6B (-54.3%) | $733.5B (-53.1%) | $1,563.1B (-0.1%) | $712.0B (-54.5%) | $1,541.5B (-1.5%) | +| Federal student loan balance, Alabama | $26.8B | $8.3B (-69.0%) | $7.3B (-72.7%) | $26.8B (-0.1%) | $7.9B (-70.7%) | $26.4B (-1.8%) | +| Federal student loan balance, Alaska | $2.5B | $1.1B (-53.6%) | $1.4B (-42.4%) | $2.5B (-0.2%) | $1.2B (-52.7%) | $2.2B (-11.4%) | +| Federal student loan balance, Arizona | $35.1B | $24.3B (-30.7%) | $14.4B (-59.0%) | $35.1B (-0.0%) | $18.5B (-47.1%) | $35.0B (-0.2%) | +| Federal student loan balance, Arkansas | $15.0B | $6.0B (-59.9%) | $6.1B (-59.3%) | $15.0B (-0.0%) | $6.3B (-57.6%) | $15.0B (+0.0%) | +| Federal student loan balance, California | $161.7B | $91.3B (-43.5%) | $99.2B (-38.6%) | $161.8B (+0.1%) | $96.8B (-40.1%) | $161.4B (-0.2%) | +| Federal student loan balance, Colorado | $30.6B | $12.2B (-60.0%) | $6.4B (-79.1%) | $30.6B (-0.2%) | $9.0B (-70.5%) | $30.6B (-0.2%) | +| Federal student loan balance, Connecticut | $20.4B | $8.2B (-59.8%) | $8.1B (-60.2%) | $20.5B (+0.1%) | $7.9B (-61.1%) | $20.3B (-0.5%) | +| Federal student loan balance, Delaware | $5.8B | $2.6B (-54.7%) | $3.3B (-42.6%) | $5.8B (+0.1%) | $2.9B (-49.4%) | $5.5B (-3.9%) | +| Federal student loan balance, District of Columbia | $6.6B | $2.6B (-60.6%) | $1.5B (-77.5%) | $6.6B (+0.1%) | $2.5B (-62.1%) | $6.6B (-0.2%) | +| Federal student loan balance, Florida | $116.7B | $42.9B (-63.2%) | $43.9B (-62.4%) | $116.7B (+0.0%) | $42.8B (-63.4%) | $116.7B (+0.0%) | +| Federal student loan balance, Georgia | $77.0B | $38.4B (-50.1%) | $51.9B (-32.5%) | $77.0B (+0.0%) | $33.3B (-56.8%) | $76.9B (-0.1%) | +| Federal student loan balance, Hawaii | $5.1B | $3.3B (-35.6%) | $3.2B (-36.0%) | $5.0B (-0.2%) | $3.2B (-36.7%) | $5.1B (+0.1%) | +| Federal student loan balance, Idaho | $7.7B | $6.2B (-20.5%) | $6.4B (-17.2%) | $7.7B (-0.1%) | $6.5B (-16.0%) | $7.7B (-0.2%) | +| Federal student loan balance, Illinois | $67.4B | $34.1B (-49.3%) | $50.4B (-25.2%) | $67.2B (-0.3%) | $47.7B (-29.2%) | $67.5B (+0.2%) | +| Federal student loan balance, Indiana | $32.0B | $25.3B (-20.8%) | $26.4B (-17.3%) | $32.0B (+0.1%) | $28.2B (-11.8%) | $32.0B (+0.1%) | +| Federal student loan balance, Iowa | $13.9B | $5.5B (-60.6%) | $6.5B (-53.1%) | $13.9B (+0.0%) | $6.1B (-56.5%) | $13.9B (-0.1%) | +| Federal student loan balance, Kansas | $13.5B | $6.5B (-52.1%) | $6.5B (-52.1%) | $13.5B (+0.2%) | $6.9B (-49.2%) | $13.5B (-0.2%) | +| Federal student loan balance, Kentucky | $22.3B | $12.8B (-42.6%) | $20.2B (-9.5%) | $22.3B (+0.1%) | $13.2B (-40.6%) | $22.3B (+0.1%) | +| Federal student loan balance, Louisiana | $25.9B | $6.1B (-76.6%) | $9.0B (-65.4%) | $24.0B (-7.3%) | $6.6B (-74.4%) | $20.4B (-21.4%) | +| Federal student loan balance, Maine | $6.9B | $4.0B (-42.0%) | $2.7B (-60.9%) | $6.9B (-0.1%) | $3.6B (-48.5%) | $6.9B (-0.2%) | +| Federal student loan balance, Maryland | $39.6B | $14.4B (-63.8%) | $15.2B (-61.5%) | $39.6B (+0.0%) | $14.4B (-63.6%) | $39.6B (+0.0%) | +| Federal student loan balance, Massachusetts | $34.5B | $19.3B (-44.0%) | $16.5B (-52.3%) | $34.4B (-0.0%) | $18.7B (-45.8%) | $34.4B (-0.0%) | +| Federal student loan balance, Michigan | $54.9B | $34.0B (-38.1%) | $39.5B (-28.0%) | $54.9B (+0.0%) | $34.5B (-37.1%) | $54.9B (+0.0%) | +| Federal student loan balance, Minnesota | $28.4B | $20.9B (-26.4%) | $21.5B (-24.1%) | $28.4B (+0.1%) | $22.3B (-21.3%) | $28.4B (+0.0%) | +| Federal student loan balance, Mississippi | $18.4B | $7.9B (-57.1%) | $6.3B (-65.8%) | $18.4B (+0.0%) | $7.9B (-56.9%) | $18.4B (+0.0%) | +| Federal student loan balance, Missouri | $31.6B | $15.7B (-50.2%) | $24.7B (-21.7%) | $31.6B (+0.1%) | $18.4B (-41.7%) | $31.6B (+0.2%) | +| Federal student loan balance, Montana | $4.6B | $3.6B (-23.5%) | $3.5B (-25.1%) | $4.7B (+0.2%) | $3.6B (-22.8%) | $4.6B (-0.1%) | +| Federal student loan balance, Nebraska | $8.5B | $3.9B (-54.3%) | $4.3B (-49.1%) | $8.5B (-0.1%) | $3.7B (-56.7%) | $8.5B (-0.0%) | +| Federal student loan balance, Nevada | $13.6B | $5.4B (-60.4%) | $6.8B (-50.2%) | $13.6B (-0.1%) | $6.0B (-55.9%) | $13.4B (-1.5%) | +| Federal student loan balance, New Hampshire | $7.0B | $3.6B (-48.4%) | $2.9B (-58.9%) | $7.0B (-0.0%) | $3.1B (-55.9%) | $7.0B (-0.1%) | +| Federal student loan balance, New Jersey | $49.9B | $22.9B (-54.1%) | $27.5B (-44.9%) | $49.9B (+0.0%) | $24.2B (-51.5%) | $50.0B (+0.2%) | +| Federal student loan balance, New Mexico | $8.3B | $9.6B (+15.8%) | $4.6B (-44.1%) | $8.3B (+0.1%) | $7.4B (-10.5%) | $8.3B (+0.1%) | +| Federal student loan balance, New York | $103.1B | $59.0B (-42.7%) | $52.1B (-49.4%) | $103.0B (-0.1%) | $54.5B (-47.1%) | $103.3B (+0.2%) | +| Federal student loan balance, North Carolina | $57.6B | $30.7B (-46.7%) | $48.5B (-15.8%) | $57.7B (+0.2%) | $34.4B (-40.2%) | $57.6B (+0.1%) | +| Federal student loan balance, North Dakota | $2.8B | $1.5B (-47.1%) | $1.6B (-42.6%) | $2.8B (+0.1%) | $1.6B (-44.3%) | $2.8B (-0.4%) | +| Federal student loan balance, Ohio | $66.3B | $24.9B (-62.4%) | $17.5B (-73.7%) | $66.3B (-0.0%) | $22.7B (-65.7%) | $66.2B (-0.2%) | +| Federal student loan balance, Oklahoma | $17.6B | $12.7B (-28.1%) | $10.4B (-41.1%) | $17.7B (+0.2%) | $11.9B (-32.6%) | $17.7B (+0.2%) | +| Federal student loan balance, Oregon | $21.5B | $9.8B (-54.5%) | $10.2B (-52.6%) | $21.4B (-0.1%) | $9.8B (-54.5%) | $20.9B (-2.7%) | +| Federal student loan balance, Pennsylvania | $71.8B | $27.9B (-61.1%) | $19.5B (-72.9%) | $71.9B (+0.1%) | $24.6B (-65.7%) | $71.9B (+0.2%) | +| Federal student loan balance, Rhode Island | $5.3B | $2.8B (-46.9%) | $2.2B (-58.6%) | $5.3B (-0.1%) | $2.7B (-48.8%) | $5.3B (-0.2%) | +| Federal student loan balance, South Carolina | $32.4B | $17.5B (-46.1%) | $14.4B (-55.5%) | $32.4B (+0.1%) | $13.3B (-58.9%) | $32.4B (-0.1%) | +| Federal student loan balance, South Dakota | $3.8B | $2.5B (-33.3%) | $1.2B (-67.7%) | $3.8B (-0.2%) | $1.8B (-52.5%) | $3.8B (+0.0%) | +| Federal student loan balance, Tennessee | $35.7B | $30.7B (-14.0%) | $34.8B (-2.6%) | $35.7B (-0.0%) | $30.9B (-13.5%) | $35.7B (-0.1%) | +| Federal student loan balance, Texas | $142.7B | $69.0B (-51.6%) | $44.8B (-68.6%) | $142.6B (-0.0%) | $58.3B (-59.2%) | $142.3B (-0.2%) | +| Federal student loan balance, Utah | $11.5B | $7.1B (-38.2%) | $9.2B (-19.8%) | $11.4B (-0.0%) | $8.6B (-24.6%) | $11.5B (+0.0%) | +| Federal student loan balance, Vermont | $3.0B | $1.5B (-49.1%) | $1.4B (-51.9%) | $3.0B (-0.2%) | $1.6B (-48.0%) | $3.0B (-0.2%) | +| Federal student loan balance, Virginia | $46.9B | $23.9B (-49.1%) | $37.9B (-19.2%) | $46.9B (-0.2%) | $31.0B (-34.0%) | $47.0B (+0.0%) | +| Federal student loan balance, Washington | $30.5B | $16.0B (-47.4%) | $13.4B (-56.1%) | $30.6B (+0.1%) | $15.4B (-49.5%) | $30.4B (-0.4%) | +| Federal student loan balance, West Virginia | $7.9B | $5.6B (-29.1%) | $6.4B (-19.2%) | $7.9B (-0.1%) | $5.6B (-29.9%) | $7.9B (-0.1%) | +| Federal student loan balance, Wisconsin | $24.8B | $11.6B (-53.1%) | $11.8B (-52.5%) | $24.8B (+0.0%) | $11.0B (-55.5%) | $24.7B (-0.1%) | +| Federal student loan balance, Wyoming | $1.9B | $799,653,011 (-56.9%) | $494,870,182 (-73.4%) | $1.9B (+0.2%) | $732,630,963 (-60.6%) | $1.9B (+0.2%) | +| Federal student loan borrowers, Alabama | 694,297 | 299,661 (-56.8%) | 250,982 (-63.9%) | 693,709 (-0.1%) | 306,411 (-55.9%) | 693,173 (-0.2%) | +| Federal student loan borrowers, Alaska | 67,443 | 42,678 (-36.7%) | 43,211 (-35.9%) | 67,354 (-0.1%) | 41,674 (-38.2%) | 67,485 (+0.1%) | +| Federal student loan borrowers, Arizona | 957,900 | 581,654 (-39.3%) | 478,956 (-50.0%) | 956,836 (-0.1%) | 553,297 (-42.2%) | 957,195 (-0.1%) | +| Federal student loan borrowers, Arkansas | 427,034 | 178,289 (-58.2%) | 163,756 (-61.7%) | 426,375 (-0.2%) | 178,797 (-58.1%) | 380,809 (-10.8%) | +| Federal student loan borrowers, California | 4.10M | 2.28M (-44.4%) | 2.44M (-40.5%) | 4.23M (+3.3%) | 2.28M (-44.4%) | 4.10M (+0.1%) | +| Federal student loan borrowers, Colorado | 799,487 | 334,926 (-58.1%) | 239,763 (-70.0%) | 798,939 (-0.1%) | 263,859 (-67.0%) | 750,791 (-6.1%) | +| Federal student loan borrowers, Connecticut | 538,917 | 209,988 (-61.0%) | 227,777 (-57.7%) | 483,745 (-10.2%) | 221,602 (-58.9%) | 389,148 (-27.8%) | +| Federal student loan borrowers, Delaware | 144,088 | 59,672 (-58.6%) | 65,530 (-54.5%) | 125,864 (-12.6%) | 61,575 (-57.3%) | 113,234 (-21.4%) | +| Federal student loan borrowers, District of Columbia | 119,829 | 54,421 (-54.6%) | 42,781 (-64.3%) | 119,567 (-0.2%) | 52,682 (-56.0%) | 98,909 (-17.5%) | +| Federal student loan borrowers, Florida | 2.87M | 987,744 (-65.6%) | 1.16M (-59.5%) | 2.87M (-0.0%) | 1.05M (-63.6%) | 2.87M (-0.2%) | +| Federal student loan borrowers, Georgia | 1.78M | 917,964 (-48.4%) | 963,914 (-45.9%) | 1.78M (+0.0%) | 823,647 (-53.7%) | 1.78M (-0.0%) | +| Federal student loan borrowers, Hawaii | 126,521 | 67,915 (-46.3%) | 69,764 (-44.9%) | 126,286 (-0.2%) | 64,639 (-48.9%) | 108,157 (-14.5%) | +| Federal student loan borrowers, Idaho | 226,378 | 167,325 (-26.1%) | 169,172 (-25.3%) | 226,231 (-0.1%) | 181,780 (-19.7%) | 226,158 (-0.1%) | +| Federal student loan borrowers, Illinois | 1.67M | 832,380 (-50.3%) | 1.02M (-39.0%) | 1.67M (-0.1%) | 966,614 (-42.3%) | 1.68M (+0.1%) | +| Federal student loan borrowers, Indiana | 939,497 | 516,324 (-45.0%) | 518,545 (-44.8%) | 939,741 (+0.0%) | 554,968 (-40.9%) | 921,590 (-1.9%) | +| Federal student loan borrowers, Iowa | 442,719 | 212,727 (-51.9%) | 250,949 (-43.3%) | 442,914 (+0.0%) | 250,321 (-43.5%) | 443,024 (+0.1%) | +| Federal student loan borrowers, Kansas | 396,607 | 215,828 (-45.6%) | 218,049 (-45.0%) | 397,536 (+0.2%) | 208,432 (-47.4%) | 396,131 (-0.1%) | +| Federal student loan borrowers, Kentucky | 643,689 | 292,355 (-54.6%) | 324,504 (-49.6%) | 612,160 (-4.9%) | 301,880 (-53.1%) | 497,613 (-22.7%) | +| Federal student loan borrowers, Louisiana | 725,666 | 235,996 (-67.5%) | 283,225 (-61.0%) | 726,299 (+0.1%) | 256,063 (-64.7%) | 713,961 (-1.6%) | +| Federal student loan borrowers, Maine | 195,114 | 118,656 (-39.2%) | 99,175 (-49.2%) | 172,283 (-11.7%) | 111,983 (-42.6%) | 154,282 (-20.9%) | +| Federal student loan borrowers, Maryland | 880,732 | 395,480 (-55.1%) | 371,603 (-57.8%) | 880,547 (-0.0%) | 358,898 (-59.3%) | 848,622 (-3.6%) | +| Federal student loan borrowers, Massachusetts | 941,693 | 463,106 (-50.8%) | 403,617 (-57.1%) | 941,438 (-0.0%) | 436,881 (-53.6%) | 940,063 (-0.2%) | +| Federal student loan borrowers, Michigan | 1.44M | 799,647 (-44.5%) | 832,618 (-42.2%) | 1.44M (+0.1%) | 832,371 (-42.2%) | 1.44M (+0.0%) | +| Federal student loan borrowers, Minnesota | 807,852 | 479,454 (-40.7%) | 503,733 (-37.6%) | 809,206 (+0.2%) | 505,119 (-37.5%) | 806,648 (-0.1%) | +| Federal student loan borrowers, Mississippi | 477,120 | 213,185 (-55.3%) | 208,576 (-56.3%) | 477,629 (+0.1%) | 228,615 (-52.1%) | 476,147 (-0.2%) | +| Federal student loan borrowers, Missouri | 864,211 | 472,395 (-45.3%) | 567,763 (-34.3%) | 865,294 (+0.1%) | 479,060 (-44.6%) | 836,071 (-3.3%) | +| Federal student loan borrowers, Montana | 132,167 | 88,576 (-33.0%) | 81,204 (-38.6%) | 132,441 (+0.2%) | 88,555 (-33.0%) | 129,928 (-1.7%) | +| Federal student loan borrowers, Nebraska | 254,610 | 123,018 (-51.7%) | 144,097 (-43.4%) | 254,409 (-0.1%) | 118,509 (-53.5%) | 246,521 (-3.2%) | +| Federal student loan borrowers, Nevada | 384,687 | 176,512 (-54.1%) | 215,537 (-44.0%) | 384,459 (-0.1%) | 196,479 (-48.9%) | 358,894 (-6.7%) | +| Federal student loan borrowers, New Hampshire | 196,264 | 104,938 (-46.5%) | 96,432 (-50.9%) | 196,352 (+0.0%) | 104,241 (-46.9%) | 190,750 (-2.8%) | +| Federal student loan borrowers, New Jersey | 1.29M | 450,356 (-65.1%) | 629,605 (-51.3%) | 1.31M (+1.3%) | 519,952 (-59.8%) | 1.22M (-5.8%) | +| Federal student loan borrowers, New Mexico | 236,312 | 153,772 (-34.9%) | 88,408 (-62.6%) | 236,428 (+0.0%) | 130,651 (-44.7%) | 233,314 (-1.3%) | +| Federal student loan borrowers, New York | 2.57M | 1.22M (-52.5%) | 1.19M (-53.7%) | 2.57M (+0.0%) | 1.25M (-51.3%) | 2.57M (+0.1%) | +| Federal student loan borrowers, North Carolina | 1.44M | 732,861 (-49.2%) | 950,046 (-34.1%) | 1.44M (+0.1%) | 789,713 (-45.2%) | 1.44M (-0.1%) | +| Federal student loan borrowers, North Dakota | 92,434 | 52,351 (-43.4%) | 64,873 (-29.8%) | 92,391 (-0.0%) | 56,986 (-38.3%) | 86,386 (-6.5%) | +| Federal student loan borrowers, Ohio | 1.85M | 699,900 (-62.2%) | 507,458 (-72.6%) | 1.75M (-5.3%) | 613,616 (-66.9%) | 1.57M (-15.2%) | +| Federal student loan borrowers, Oklahoma | 534,002 | 315,480 (-40.9%) | 256,421 (-52.0%) | 534,088 (+0.0%) | 278,947 (-47.8%) | 485,430 (-9.1%) | +| Federal student loan borrowers, Oregon | 550,628 | 312,082 (-43.3%) | 348,077 (-36.8%) | 551,112 (+0.1%) | 332,063 (-39.7%) | 550,033 (-0.1%) | +| Federal student loan borrowers, Pennsylvania | 1.94M | 633,413 (-67.3%) | 491,520 (-74.6%) | 1.96M (+1.2%) | 596,122 (-69.2%) | 1.75M (-9.6%) | +| Federal student loan borrowers, Rhode Island | 156,531 | 91,242 (-41.7%) | 70,034 (-55.3%) | 156,520 (-0.0%) | 85,691 (-45.3%) | 146,908 (-6.1%) | +| Federal student loan borrowers, South Carolina | 817,995 | 307,174 (-62.4%) | 272,651 (-66.7%) | 819,067 (+0.1%) | 268,406 (-67.2%) | 667,053 (-18.5%) | +| Federal student loan borrowers, South Dakota | 122,025 | 49,540 (-59.4%) | 35,772 (-70.7%) | 121,939 (-0.1%) | 44,993 (-63.1%) | 83,721 (-31.4%) | +| Federal student loan borrowers, Tennessee | 935,732 | 645,574 (-31.0%) | 728,891 (-22.1%) | 935,831 (+0.0%) | 686,035 (-26.7%) | 935,468 (-0.0%) | +| Federal student loan borrowers, Texas | 4.13M | 1.80M (-56.4%) | 1.74M (-57.8%) | 4.13M (+0.0%) | 1.90M (-54.0%) | 4.12M (-0.1%) | +| Federal student loan borrowers, Utah | 327,595 | 239,327 (-26.9%) | 276,270 (-15.7%) | 327,597 (+0.0%) | 277,588 (-15.3%) | 328,133 (+0.2%) | +| Federal student loan borrowers, Vermont | 78,213 | 50,912 (-34.9%) | 53,367 (-31.8%) | 78,213 (+0.0%) | 52,194 (-33.3%) | 78,167 (-0.1%) | +| Federal student loan borrowers, Virginia | 1.14M | 542,755 (-52.2%) | 569,480 (-49.8%) | 1.13M (-0.0%) | 542,429 (-52.2%) | 1.02M (-10.2%) | +| Federal student loan borrowers, Washington | 811,512 | 507,889 (-37.4%) | 394,762 (-51.4%) | 811,796 (+0.0%) | 465,433 (-42.6%) | 809,698 (-0.2%) | +| Federal student loan borrowers, West Virginia | 238,717 | 97,733 (-59.1%) | 110,576 (-53.7%) | 234,183 (-1.9%) | 104,567 (-56.2%) | 165,129 (-30.8%) | +| Federal student loan borrowers, Wisconsin | 741,455 | 322,918 (-56.4%) | 325,050 (-56.2%) | 741,856 (+0.1%) | 320,358 (-56.8%) | 740,079 (-0.2%) | +| Federal student loan borrowers, Wyoming | 57,300 | 33,514 (-41.5%) | 25,898 (-54.8%) | 57,400 (+0.2%) | 30,505 (-46.8%) | 56,980 (-0.6%) | +| Federal student loan balance, borrower age 24 and Younger | $84.9B | $52.1B (-38.6%) | $49.2B (-42.0%) | $84.9B (-0.0%) | $51.9B (-38.9%) | $84.8B (-0.1%) | +| Federal student loan balance, borrower age 25 to 34 | $462.0B | $216.2B (-53.2%) | $206.3B (-55.3%) | $461.9B (-0.0%) | $212.5B (-54.0%) | $460.8B (-0.2%) | +| Federal student loan balance, borrower age 35 to 49 | $679.5B | $353.4B (-48.0%) | $349.6B (-48.5%) | $677.9B (-0.2%) | $340.7B (-49.9%) | $672.9B (-1.0%) | +| Federal student loan balance, borrower age 50 to 61 | $310.2B | $168.5B (-45.7%) | $201.0B (-35.2%) | $310.2B (-0.0%) | $180.3B (-41.9%) | $310.1B (-0.0%) | +| Federal student loan balance, borrower age 62 and Older | $142.5B | $68.1B (-52.2%) | $80.0B (-43.9%) | $142.5B (-0.0%) | $70.3B (-50.6%) | $142.5B (-0.0%) | +| Federal student loan borrowers, borrower age 24 and Younger | 6.13M | 2.58M (-57.9%) | 2.57M (-58.2%) | 6.13M (+0.0%) | 2.65M (-56.8%) | 5.52M (-10.0%) | +| Federal student loan borrowers, borrower age 25 to 34 | 13.85M | 6.59M (-52.4%) | 6.72M (-51.5%) | 13.84M (-0.1%) | 6.66M (-51.9%) | 13.83M (-0.1%) | +| Federal student loan borrowers, borrower age 35 to 49 | 14.84M | 7.87M (-46.9%) | 8.08M (-45.5%) | 14.83M (-0.0%) | 8.00M (-46.1%) | 14.84M (+0.0%) | +| Federal student loan borrowers, borrower age 50 to 61 | 6.33M | 2.91M (-54.1%) | 2.98M (-52.9%) | 6.33M (+0.0%) | 2.88M (-54.6%) | 5.73M (-9.4%) | +| Federal student loan borrowers, borrower age 62 and Older | 3.16M | 1.23M (-61.2%) | 1.24M (-60.7%) | 3.13M (-1.1%) | 1.23M (-61.0%) | 2.75M (-13.2%) | +| Federal student loan balance, borrower debt size Less than 5K | $18.7B | $7.2B (-61.5%) | $7.3B (-61.2%) | $18.5B (-1.3%) | $7.4B (-60.2%) | $15.8B (-15.3%) | +| Federal student loan balance, borrower debt size 5K to 10K | $52.0B | $20.4B (-60.7%) | $18.5B (-64.4%) | $50.8B (-2.2%) | $19.5B (-62.6%) | $43.9B (-15.5%) | +| Federal student loan balance, borrower debt size 10K to 20K | $131.2B | $55.2B (-57.9%) | $56.1B (-57.2%) | $131.1B (-0.0%) | $57.0B (-56.5%) | $131.1B (-0.0%) | +| Federal student loan balance, borrower debt size 20K to 40K | $268.0B | $139.9B (-47.8%) | $155.4B (-42.0%) | $268.0B (-0.0%) | $145.5B (-45.7%) | $267.8B (-0.1%) | +| Federal student loan balance, borrower debt size 40K to 60K | $204.3B | $110.4B (-46.0%) | $108.8B (-46.7%) | $204.2B (-0.0%) | $110.9B (-45.7%) | $204.3B (+0.0%) | +| Federal student loan balance, borrower debt size 60K to 80K | $175.6B | $131.5B (-25.1%) | $144.6B (-17.7%) | $175.7B (+0.0%) | $137.1B (-21.9%) | $178.3B (+1.5%) | +| Federal student loan balance, borrower debt size 80K to 100K | $126.4B | $62.9B (-50.3%) | $55.8B (-55.8%) | $126.4B (-0.0%) | $59.6B (-52.9%) | $126.4B (+0.0%) | +| Federal student loan balance, borrower debt size 100K to 200K | $350.7B | $140.7B (-59.9%) | $145.0B (-58.7%) | $350.6B (-0.0%) | $136.2B (-61.2%) | $351.3B (+0.2%) | +| Federal student loan balance, borrower debt size 200K+ | $352.2B | $190.3B (-46.0%) | $194.6B (-44.8%) | $352.0B (-0.0%) | $182.6B (-48.2%) | $352.2B (+0.0%) | +| Federal student loan borrowers, borrower debt size Less than 5K | 6.82M | 2.70M (-60.4%) | 2.81M (-58.9%) | 6.65M (-2.6%) | 2.87M (-58.0%) | 5.96M (-12.7%) | +| Federal student loan borrowers, borrower debt size 5K to 10K | 7.12M | 2.89M (-59.4%) | 2.64M (-62.9%) | 7.12M (-0.0%) | 2.76M (-61.3%) | 6.16M (-13.5%) | +| Federal student loan borrowers, borrower debt size 10K to 20K | 9.10M | 3.82M (-58.0%) | 3.86M (-57.5%) | 8.97M (-1.4%) | 3.92M (-57.0%) | 8.98M (-1.4%) | +| Federal student loan borrowers, borrower debt size 20K to 40K | 9.40M | 5.06M (-46.1%) | 5.56M (-40.8%) | 9.39M (-0.1%) | 5.24M (-44.2%) | 9.39M (-0.0%) | +| Federal student loan borrowers, borrower debt size 40K to 60K | 4.15M | 2.27M (-45.3%) | 2.24M (-46.2%) | 4.19M (+0.9%) | 2.28M (-45.1%) | 4.20M (+1.1%) | +| Federal student loan borrowers, borrower debt size 60K to 80K | 2.57M | 1.91M (-25.8%) | 2.09M (-18.5%) | 2.56M (-0.6%) | 1.98M (-23.0%) | 2.57M (-0.0%) | +| Federal student loan borrowers, borrower debt size 80K to 100K | 1.38M | 728,545 (-47.4%) | 640,771 (-53.7%) | 1.45M (+4.5%) | 688,165 (-50.3%) | 1.45M (+4.9%) | +| Federal student loan borrowers, borrower debt size 100K to 200K | 2.57M | 1.09M (-57.6%) | 1.09M (-57.8%) | 2.58M (+0.3%) | 1.05M (-59.3%) | 2.64M (+2.7%) | +| Federal student loan borrowers, borrower debt size 200K+ | 1.19M | 699,994 (-41.0%) | 656,475 (-44.7%) | 1.36M (+14.3%) | 644,088 (-45.7%) | 1.32M (+11.3%) | +| Parent PLUS loan balance | $114.8B | $91.8B (-20.1%) | $102.5B (-10.8%) | $114.8B (+0.0%) | $93.2B (-18.9%) | $114.8B (-0.0%) | +| Federal student loan balance excluding Parent PLUS | $1,564.2B | $766.6B (-51.0%) | $783.6B (-49.9%) | $1,562.5B (-0.1%) | $762.6B (-51.2%) | $1,556.4B (-0.5%) | diff --git a/experiments/receipts/1074-fsa-calibration-fit.json b/experiments/receipts/1074-fsa-calibration-fit.json index 8061cdc85f..419f6c9fd4 100644 --- a/experiments/receipts/1074-fsa-calibration-fit.json +++ b/experiments/receipts/1074-fsa-calibration-fit.json @@ -1,10 +1,10 @@ { "schema_version": 1, "issue": "PolicyEngine/microcosm#1074", - "generated_at": "2026-10-22", + "generated_at": "2026-10-23", "provenance": { - "commit": "c94516ee14b1920a490902288115d66dbc743762", - "run": "20261022T194252Z-c94516ee1" + "commit": "4b6bfce9a240cd44c45210fbf508640d8402343d", + "run": "20261023T191527Z-4b6bfce9a" }, "host": { "release": "populace-us-2024-spm-20260915", @@ -35,9 +35,9 @@ "path": "consumer_facts_us_51aa40f.jsonl" }, "fsa_packages": { - "repo": "https://github.com/DTrim99/chronicle.git", - "commit": "81e3f986ccc47571a427a4adda8d4b49560d03bf", - "facts_sha256": "763d1eed8cedf1065d19462c90848f3fda23bb6407214d4fd0b1f31995cc9ded", + "repo": "https://github.com/PolicyEngine/chronicle.git", + "commit": "acbedb5fef490137219207cf40945d70c2db34ea", + "facts_sha256": "58774e11cf63754f85be0a082c29b581033c304e5d26dc71b2b23eac0cc3f1d8", "pull_request": "https://github.com/PolicyEngine/chronicle/pull/347", "year": 2026, "packages": [ @@ -49,8 +49,9 @@ "packages/ed_fsa/dl_portfolio_by_repayment_plan_fy2026_q3" ], "rows": 461, - "path": "ed_fsa_81e3f98.jsonl", - "sha256": "58774e11cf63754f85be0a082c29b581033c304e5d26dc71b2b23eac0cc3f1d8" + "path": "ed_fsa_acbedb5.jsonl", + "sha256": "58774e11cf63754f85be0a082c29b581033c304e5d26dc71b2b23eac0cc3f1d8", + "matches_facts_sha256": true }, "rule": "pinned feed rows plus the FSA rows, no shared aggregate_fact_key or source_record_id, sorted by aggregate_fact_key", "rows": 40639, @@ -70,22 +71,22 @@ "a_no_fsa": { "initial": 0.03675158694386482, "final": 0.01565397913686619, - "seconds": 93.02935022699995 + "seconds": 92.772574701 }, "b_with_fsa": { - "initial": 0.055196743458509445, - "final": 0.01691054419252314, - "seconds": 96.23905654400005 + "initial": 0.05507756769657135, + "final": 0.01628154753487812, + "seconds": 88.44137602299998 }, "a_no_fsa_l2": { "initial": 0.03675158694386482, "final": 0.019865802644470798, - "seconds": 93.82711086800009 + "seconds": 87.35640279799998 }, "b_with_fsa_l2": { - "initial": 0.055196743458509445, - "final": 0.019569097800648236, - "seconds": 95.14704152500008 + "initial": 0.05507756769657135, + "final": 0.019343231231045796, + "seconds": 89.61900807300003 } }, "arms": { @@ -4048,51 +4049,51 @@ "label": "Federal balance, own plus Parent PLUS", "kind": "amount", "target": 1679069776777.568, - "release": 858421208954.9308, - "a_no_fsa": 886045907243.146, - "b_with_fsa": 1677999786395.3674, - "a_no_fsa_l2": 855750475417.7095, - "b_with_fsa_l2": 1668138297187.8127 + "release": 858421208954.9309, + "a_no_fsa": 886045907243.1461, + "b_with_fsa": 1677332270434.8613, + "a_no_fsa_l2": 855750475417.7096, + "b_with_fsa_l2": 1671167058305.7954 }, { "label": "Borrowers (people with a balance)", "kind": "count", "target": 44309424.85254373, - "release": 21223403.433088087, - "a_no_fsa": 21447181.90381908, - "b_with_fsa": 43776429.43223714, - "a_no_fsa_l2": 21428887.219970584, - "b_with_fsa_l2": 41948013.12651276 + "release": 21177503.938145176, + "a_no_fsa": 21589996.24192015, + "b_with_fsa": 44260352.59952934, + "a_no_fsa_l2": 21420219.92046372, + "b_with_fsa_l2": 42673022.28692794 }, { "label": "Parent PLUS balance", "kind": "amount", "target": 114840658244.6196, - "release": 143855898994.11102, - "a_no_fsa": 152559120060.60315, - "b_with_fsa": 114878467611.03513, - "a_no_fsa_l2": 143797166880.5973, - "b_with_fsa_l2": 126684266224.09976 + "release": 91774549445.125, + "a_no_fsa": 102454167482.18747, + "b_with_fsa": 114846618687.44533, + "a_no_fsa_l2": 93165691088.92984, + "b_with_fsa_l2": 114810235390.82658 }, { "label": "Parent PLUS share of the balance", "kind": "share", "target": 0.0683954054994779, - "release": 0.16758194869072, - "a_no_fsa": 0.17217970176655684, - "b_with_fsa": 0.06846155079543476, - "a_no_fsa_l2": 0.1680363271903611, - "b_with_fsa_l2": 0.07594350326808462 + "release": 0.10691085971286082, + "a_no_fsa": 0.11563076658292412, + "b_with_fsa": 0.06846980810645852, + "a_no_fsa_l2": 0.10887015989497842, + "b_with_fsa_l2": 0.06870063338085393 }, { "label": "Mean balance per borrower", "kind": "amount", "target": 37894.19028491803, - "release": 40446.915673129966, - "a_no_fsa": 41312.929186531896, - "b_with_fsa": 38331.12494916457, - "a_no_fsa_l2": 39934.433675127824, - "b_with_fsa_l2": 39766.80116306832 + "release": 40534.57912047568, + "a_no_fsa": 41039.650832488696, + "b_with_fsa": 37896.947762966935, + "a_no_fsa_l2": 39950.592411993486, + "b_with_fsa_l2": 39162.14434190018 }, { "label": "Households with federal education debt", @@ -4100,9 +4101,9 @@ "target": NaN, "release": 0.16413671000206656, "a_no_fsa": 0.1662222969167077, - "b_with_fsa": 0.3304083903971288, + "b_with_fsa": 0.33694036417552564, "a_no_fsa_l2": 0.16563645838046798, - "b_with_fsa_l2": 0.3150829843940598 + "b_with_fsa_l2": 0.323233835865687 } ], "fit_by_family": { @@ -4127,10 +4128,10 @@ }, "b_with_fsa": { "targets": 1, - "mean_capped_abs_rel_error": 0.07801455668209838, - "mean_abs_rel_error": 0.07801455668209838, - "median_abs_rel_error": 0.07801455668209838, - "max_abs_rel_error": 0.07801455668209838, + "mean_capped_abs_rel_error": 0.072973775107902, + "mean_abs_rel_error": 0.072973775107902, + "median_abs_rel_error": 0.072973775107902, + "max_abs_rel_error": 0.072973775107902, "share_within_5pct": 0.0, "share_within_10pct": 1.0 }, @@ -4145,10 +4146,10 @@ }, "b_with_fsa_l2": { "targets": 1, - "mean_capped_abs_rel_error": 0.09516569921360087, - "mean_abs_rel_error": 0.09516569921360087, - "median_abs_rel_error": 0.09516569921360087, - "max_abs_rel_error": 0.09516569921360087, + "mean_capped_abs_rel_error": 0.09597858381832397, + "mean_abs_rel_error": 0.09597858381832397, + "median_abs_rel_error": 0.09597858381832397, + "max_abs_rel_error": 0.09597858381832397, "share_within_5pct": 0.0, "share_within_10pct": 1.0 } @@ -4174,10 +4175,10 @@ }, "b_with_fsa": { "targets": 1, - "mean_capped_abs_rel_error": 0.1354053104653232, - "mean_abs_rel_error": 0.1354053104653232, - "median_abs_rel_error": 0.1354053104653232, - "max_abs_rel_error": 0.1354053104653232, + "mean_capped_abs_rel_error": 0.13567592546531304, + "mean_abs_rel_error": 0.13567592546531304, + "median_abs_rel_error": 0.13567592546531304, + "max_abs_rel_error": 0.13567592546531304, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, @@ -4192,10 +4193,10 @@ }, "b_with_fsa_l2": { "targets": 1, - "mean_capped_abs_rel_error": 0.13639006919463934, - "mean_abs_rel_error": 0.13639006919463934, - "median_abs_rel_error": 0.13639006919463934, - "max_abs_rel_error": 0.13639006919463934, + "mean_capped_abs_rel_error": 0.1352312798367748, + "mean_abs_rel_error": 0.1352312798367748, + "median_abs_rel_error": 0.1352312798367748, + "max_abs_rel_error": 0.1352312798367748, "share_within_5pct": 0.0, "share_within_10pct": 0.0 } @@ -4221,10 +4222,10 @@ }, "b_with_fsa": { "targets": 5, - "mean_capped_abs_rel_error": 0.04680846449058652, - "mean_abs_rel_error": 0.04680846449058652, - "median_abs_rel_error": 0.03330153761267111, - "max_abs_rel_error": 0.15032721626347514, + "mean_capped_abs_rel_error": 0.04638769224031864, + "mean_abs_rel_error": 0.04638769224031864, + "median_abs_rel_error": 0.033288489292768265, + "max_abs_rel_error": 0.14787481906251057, "share_within_5pct": 0.8, "share_within_10pct": 0.8 }, @@ -4239,10 +4240,10 @@ }, "b_with_fsa_l2": { "targets": 5, - "mean_capped_abs_rel_error": 0.04734627341677039, - "mean_abs_rel_error": 0.04734627341677039, - "median_abs_rel_error": 0.03204361106930028, - "max_abs_rel_error": 0.1513500316122076, + "mean_capped_abs_rel_error": 0.046211064132730226, + "mean_abs_rel_error": 0.046211064132730226, + "median_abs_rel_error": 0.028917037011657078, + "max_abs_rel_error": 0.15070982513889103, "share_within_5pct": 0.8, "share_within_10pct": 0.8 } @@ -4268,10 +4269,10 @@ }, "b_with_fsa": { "targets": 936, - "mean_capped_abs_rel_error": 0.001133174484571595, - "mean_abs_rel_error": 0.001133174484571595, - "median_abs_rel_error": 0.0009264695566974037, - "max_abs_rel_error": 0.009516256197220374, + "mean_capped_abs_rel_error": 0.0011403047005545, + "mean_abs_rel_error": 0.0011403047005545, + "median_abs_rel_error": 0.0008866943351217389, + "max_abs_rel_error": 0.00722893029690502, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -4286,10 +4287,10 @@ }, "b_with_fsa_l2": { "targets": 936, - "mean_capped_abs_rel_error": 0.0014561686174450138, - "mean_abs_rel_error": 0.0014561686174450138, - "median_abs_rel_error": 0.0009352787450756984, - "max_abs_rel_error": 0.19922126603575127, + "mean_capped_abs_rel_error": 0.0014310287873557706, + "mean_abs_rel_error": 0.0014310287873557706, + "median_abs_rel_error": 0.0009388517805447508, + "max_abs_rel_error": 0.20968513670340985, "share_within_5pct": 0.9989316239316239, "share_within_10pct": 0.9989316239316239 } @@ -4315,12 +4316,12 @@ }, "b_with_fsa": { "targets": 44, - "mean_capped_abs_rel_error": 0.1380598476172674, - "mean_abs_rel_error": 0.1380598476172674, - "median_abs_rel_error": 0.09102559609333322, - "max_abs_rel_error": 0.9447100247751683, + "mean_capped_abs_rel_error": 0.13952878464865884, + "mean_abs_rel_error": 0.13952878464865884, + "median_abs_rel_error": 0.0935089937085738, + "max_abs_rel_error": 0.9535385015273399, "share_within_5pct": 0.29545454545454547, - "share_within_10pct": 0.5681818181818182 + "share_within_10pct": 0.5454545454545454 }, "a_no_fsa_l2": { "targets": 44, @@ -4333,11 +4334,11 @@ }, "b_with_fsa_l2": { "targets": 44, - "mean_capped_abs_rel_error": 0.13929035142498875, - "mean_abs_rel_error": 0.13929035142498875, - "median_abs_rel_error": 0.09218306434301426, - "max_abs_rel_error": 0.9531580685396548, - "share_within_5pct": 0.3409090909090909, + "mean_capped_abs_rel_error": 0.1399691659284497, + "mean_abs_rel_error": 0.1399691659284497, + "median_abs_rel_error": 0.0906741723626813, + "max_abs_rel_error": 0.9587123053633434, + "share_within_5pct": 0.29545454545454547, "share_within_10pct": 0.5227272727272727 } }, @@ -4362,10 +4363,10 @@ }, "b_with_fsa": { "targets": 102, - "mean_capped_abs_rel_error": 0.002291227924199962, - "mean_abs_rel_error": 0.002291227924199962, - "median_abs_rel_error": 0.0009774553131484656, - "max_abs_rel_error": 0.09073765071488442, + "mean_capped_abs_rel_error": 0.002203091741008821, + "mean_abs_rel_error": 0.002203091741008821, + "median_abs_rel_error": 0.0010865212193206415, + "max_abs_rel_error": 0.08791220486942433, "share_within_5pct": 0.9901960784313726, "share_within_10pct": 1.0 }, @@ -4380,10 +4381,10 @@ }, "b_with_fsa_l2": { "targets": 102, - "mean_capped_abs_rel_error": 0.005559325009435521, - "mean_abs_rel_error": 0.005559325009435521, - "median_abs_rel_error": 0.0013207451297442287, - "max_abs_rel_error": 0.1476798543509045, + "mean_capped_abs_rel_error": 0.005627535776596321, + "mean_abs_rel_error": 0.005627535776596321, + "median_abs_rel_error": 0.0015126728676859472, + "max_abs_rel_error": 0.1568814231559175, "share_within_5pct": 0.9705882352941176, "share_within_10pct": 0.9705882352941176 } @@ -4409,12 +4410,12 @@ }, "b_with_fsa": { "targets": 135, - "mean_capped_abs_rel_error": 0.02282889877133944, - "mean_abs_rel_error": 7.9801662199251595, - "median_abs_rel_error": 0.0012307226672145294, - "max_abs_rel_error": 1075.240538355766, - "share_within_5pct": 0.8740740740740741, - "share_within_10pct": 0.9555555555555556 + "mean_capped_abs_rel_error": 0.02280554729969237, + "mean_abs_rel_error": 29.41811785190712, + "median_abs_rel_error": 0.0012239951028114291, + "max_abs_rel_error": 3969.3671611220025, + "share_within_5pct": 0.8666666666666667, + "share_within_10pct": 0.9629629629629629 }, "a_no_fsa_l2": { "targets": 135, @@ -4427,12 +4428,12 @@ }, "b_with_fsa_l2": { "targets": 135, - "mean_capped_abs_rel_error": 0.023408833067299507, - "mean_abs_rel_error": 26.831407603328547, - "median_abs_rel_error": 0.0014489893068834305, - "max_abs_rel_error": 3620.079833985269, + "mean_capped_abs_rel_error": 0.023339581671304226, + "mean_abs_rel_error": 28.96638799139496, + "median_abs_rel_error": 0.001196187357340689, + "max_abs_rel_error": 3908.3115353126927, "share_within_5pct": 0.8740740740740741, - "share_within_10pct": 0.9629629629629629 + "share_within_10pct": 0.9481481481481482 } }, "cms_medicare/cms_medicare.cms_medicare": { @@ -4456,10 +4457,10 @@ }, "b_with_fsa": { "targets": 1, - "mean_capped_abs_rel_error": 0.1363714191917288, - "mean_abs_rel_error": 0.1363714191917288, - "median_abs_rel_error": 0.1363714191917288, - "max_abs_rel_error": 0.1363714191917288, + "mean_capped_abs_rel_error": 0.13577227994033636, + "mean_abs_rel_error": 0.13577227994033636, + "median_abs_rel_error": 0.13577227994033636, + "max_abs_rel_error": 0.13577227994033636, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, @@ -4474,10 +4475,10 @@ }, "b_with_fsa_l2": { "targets": 1, - "mean_capped_abs_rel_error": 0.1326079491636808, - "mean_abs_rel_error": 0.1326079491636808, - "median_abs_rel_error": 0.1326079491636808, - "max_abs_rel_error": 0.1326079491636808, + "mean_capped_abs_rel_error": 0.13449507306603722, + "mean_abs_rel_error": 0.13449507306603722, + "median_abs_rel_error": 0.13449507306603722, + "max_abs_rel_error": 0.13449507306603722, "share_within_5pct": 0.0, "share_within_10pct": 0.0 } @@ -4485,46 +4486,46 @@ "ed_fsa/fsa_age_band_balance": { "release": { "targets": 5, - "mean_capped_abs_rel_error": 0.5027113149977934, - "mean_abs_rel_error": 0.5027113149977934, - "median_abs_rel_error": 0.48795902155381776, - "max_abs_rel_error": 0.742708456914705, + "mean_capped_abs_rel_error": 0.47531703614338827, + "mean_abs_rel_error": 0.47531703614338827, + "median_abs_rel_error": 0.4798408016804903, + "max_abs_rel_error": 0.5319428420236529, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "a_no_fsa": { "targets": 5, - "mean_capped_abs_rel_error": 0.4843173888560764, - "mean_abs_rel_error": 0.4843173888560764, - "median_abs_rel_error": 0.4926200135712781, - "max_abs_rel_error": 0.7499030360623719, + "mean_capped_abs_rel_error": 0.45003409096098557, + "mean_abs_rel_error": 0.45003409096098557, + "median_abs_rel_error": 0.43860336479652445, + "max_abs_rel_error": 0.5534851188359154, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa": { "targets": 5, - "mean_capped_abs_rel_error": 0.0007812399703597297, - "mean_abs_rel_error": 0.0007812399703597297, - "median_abs_rel_error": 0.0006667083146327732, - "max_abs_rel_error": 0.0012082486346944575, + "mean_capped_abs_rel_error": 0.0006237713858470242, + "mean_abs_rel_error": 0.0006237713858470242, + "median_abs_rel_error": 0.00018139662880679364, + "max_abs_rel_error": 0.002313480477636543, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, "a_no_fsa_l2": { "targets": 5, - "mean_capped_abs_rel_error": 0.5059206435917462, - "mean_abs_rel_error": 0.5059206435917462, - "median_abs_rel_error": 0.49730139600851825, - "max_abs_rel_error": 0.7491084823747293, + "mean_capped_abs_rel_error": 0.47052974287952887, + "mean_abs_rel_error": 0.47052974287952887, + "median_abs_rel_error": 0.4985250143422751, + "max_abs_rel_error": 0.5399700682800176, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa_l2": { "targets": 5, - "mean_capped_abs_rel_error": 0.010680234473603608, - "mean_abs_rel_error": 0.010680234473603608, - "median_abs_rel_error": 0.001168374376838517, - "max_abs_rel_error": 0.03466938509805742, + "mean_capped_abs_rel_error": 0.002705832592825113, + "mean_abs_rel_error": 0.002705832592825113, + "median_abs_rel_error": 0.0009443801851267433, + "max_abs_rel_error": 0.009624327084029868, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -4532,93 +4533,93 @@ "ed_fsa/fsa_age_band_borrowers": { "release": { "targets": 5, - "mean_capped_abs_rel_error": 0.5313538824719207, - "mean_abs_rel_error": 0.5313538824719207, - "median_abs_rel_error": 0.5144848876732757, - "max_abs_rel_error": 0.8269889540129202, + "mean_capped_abs_rel_error": 0.5450448270708922, + "mean_abs_rel_error": 0.5450448270708922, + "median_abs_rel_error": 0.5409897880257578, + "max_abs_rel_error": 0.6117632997996701, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "a_no_fsa": { "targets": 5, - "mean_capped_abs_rel_error": 0.520704778599222, - "mean_abs_rel_error": 0.520704778599222, - "median_abs_rel_error": 0.455742554485038, - "max_abs_rel_error": 0.8540725426122672, + "mean_capped_abs_rel_error": 0.5374936021203442, + "mean_abs_rel_error": 0.5374936021203442, + "median_abs_rel_error": 0.5289811646412323, + "max_abs_rel_error": 0.6066612935629189, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa": { "targets": 5, - "mean_capped_abs_rel_error": 0.10701013906711458, - "mean_abs_rel_error": 0.10701013906711458, - "median_abs_rel_error": 0.05121130800722305, - "max_abs_rel_error": 0.39307427600955613, - "share_within_5pct": 0.4, - "share_within_10pct": 0.8 + "mean_capped_abs_rel_error": 0.0024812758545991313, + "mean_abs_rel_error": 0.0024812758545991313, + "median_abs_rel_error": 0.00032439478877849785, + "max_abs_rel_error": 0.010958746894467084, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 }, "a_no_fsa_l2": { "targets": 5, - "mean_capped_abs_rel_error": 0.527993577323401, - "mean_abs_rel_error": 0.527993577323401, - "median_abs_rel_error": 0.5042242238499133, - "max_abs_rel_error": 0.8440389529369043, + "mean_capped_abs_rel_error": 0.5407186017130619, + "mean_abs_rel_error": 0.5407186017130619, + "median_abs_rel_error": 0.5455004381961818, + "max_abs_rel_error": 0.6103985874268487, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa_l2": { "targets": 5, - "mean_capped_abs_rel_error": 0.09490381544333329, - "mean_abs_rel_error": 0.09490381544333329, - "median_abs_rel_error": 0.013567605299022538, - "max_abs_rel_error": 0.4400383746387212, - "share_within_5pct": 0.8, + "mean_capped_abs_rel_error": 0.06544285464979317, + "mean_abs_rel_error": 0.06544285464979317, + "median_abs_rel_error": 0.09421434444832352, + "max_abs_rel_error": 0.1320281770466291, + "share_within_5pct": 0.4, "share_within_10pct": 0.8 } }, "ed_fsa/fsa_balance_excluding_parent_plus": { "release": { "targets": 1, - "mean_capped_abs_rel_error": 0.5431837308904002, - "mean_abs_rel_error": 0.5431837308904002, - "median_abs_rel_error": 0.5431837308904002, - "max_abs_rel_error": 0.5431837308904002, + "mean_capped_abs_rel_error": 0.5098885128613239, + "mean_abs_rel_error": 0.5098885128613239, + "median_abs_rel_error": 0.5098885128613239, + "max_abs_rel_error": 0.5098885128613239, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "a_no_fsa": { "targets": 1, - "mean_capped_abs_rel_error": 0.5310873717333312, - "mean_abs_rel_error": 0.5310873717333312, - "median_abs_rel_error": 0.5310873717333312, - "max_abs_rel_error": 0.5310873717333312, + "mean_capped_abs_rel_error": 0.499055649535622, + "mean_abs_rel_error": 0.499055649535622, + "median_abs_rel_error": 0.499055649535622, + "max_abs_rel_error": 0.499055649535622, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa": { "targets": 1, - "mean_capped_abs_rel_error": 0.0007082081106215797, - "mean_abs_rel_error": 0.0007082081106215797, - "median_abs_rel_error": 0.0007082081106215797, - "max_abs_rel_error": 0.0007082081106215797, + "mean_capped_abs_rel_error": 0.0011145853026752253, + "mean_abs_rel_error": 0.0011145853026752253, + "median_abs_rel_error": 0.0011145853026752253, + "max_abs_rel_error": 0.0011145853026752253, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, "a_no_fsa_l2": { "targets": 1, - "mean_capped_abs_rel_error": 0.5448535639044776, - "mean_abs_rel_error": 0.5448535639044776, - "median_abs_rel_error": 0.5448535639044776, - "max_abs_rel_error": 0.5448535639044776, + "mean_capped_abs_rel_error": 0.5124852393465293, + "mean_abs_rel_error": 0.5124852393465293, + "median_abs_rel_error": 0.5124852393465293, + "max_abs_rel_error": 0.5124852393465293, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa_l2": { "targets": 1, - "mean_capped_abs_rel_error": 0.014559943488709056, - "mean_abs_rel_error": 0.014559943488709056, - "median_abs_rel_error": 0.014559943488709056, - "max_abs_rel_error": 0.014559943488709056, + "mean_capped_abs_rel_error": 0.005032699829398045, + "mean_abs_rel_error": 0.005032699829398045, + "median_abs_rel_error": 0.005032699829398045, + "max_abs_rel_error": 0.005032699829398045, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -4626,46 +4627,46 @@ "ed_fsa/fsa_debt_size_band_balance": { "release": { "targets": 9, - "mean_capped_abs_rel_error": 0.509717353449814, - "mean_abs_rel_error": 0.509717353449814, - "median_abs_rel_error": 0.5380779566824843, - "max_abs_rel_error": 0.6320492653008579, + "mean_capped_abs_rel_error": 0.5057816892076177, + "mean_abs_rel_error": 0.5057816892076177, + "median_abs_rel_error": 0.5027590010397739, + "max_abs_rel_error": 0.6154141407734927, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "a_no_fsa": { "targets": 9, - "mean_capped_abs_rel_error": 0.5029451631455618, - "mean_abs_rel_error": 0.5029451631455618, - "median_abs_rel_error": 0.5411088151335061, - "max_abs_rel_error": 0.6431290374698111, + "mean_capped_abs_rel_error": 0.49830052904007505, + "mean_abs_rel_error": 0.49830052904007505, + "median_abs_rel_error": 0.5582075405461717, + "max_abs_rel_error": 0.6436899300347263, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa": { "targets": 9, - "mean_capped_abs_rel_error": 0.010415626487428034, - "mean_abs_rel_error": 0.010415626487428034, - "median_abs_rel_error": 0.0004695888282652014, - "max_abs_rel_error": 0.09056721997196758, - "share_within_5pct": 0.8888888888888888, + "mean_capped_abs_rel_error": 0.0041365691063925, + "mean_abs_rel_error": 0.0041365691063925, + "median_abs_rel_error": 0.00040707261356366637, + "max_abs_rel_error": 0.021612252699654517, + "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, "a_no_fsa_l2": { "targets": 9, - "mean_capped_abs_rel_error": 0.5106733081644956, - "mean_abs_rel_error": 0.5106733081644956, - "median_abs_rel_error": 0.53811381930416, - "max_abs_rel_error": 0.6304076832701295, + "mean_capped_abs_rel_error": 0.5054057910286176, + "mean_abs_rel_error": 0.5054057910286176, + "median_abs_rel_error": 0.5286566828201376, + "max_abs_rel_error": 0.6256266601373306, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa_l2": { "targets": 9, - "mean_capped_abs_rel_error": 0.04824808753011161, - "mean_abs_rel_error": 0.04824808753011161, - "median_abs_rel_error": 0.001126311943641786, - "max_abs_rel_error": 0.2432511475263326, + "mean_capped_abs_rel_error": 0.03628391110103244, + "mean_abs_rel_error": 0.03628391110103244, + "median_abs_rel_error": 0.0009042930853802697, + "max_abs_rel_error": 0.15525626995155736, "share_within_5pct": 0.7777777777777778, "share_within_10pct": 0.7777777777777778 } @@ -4673,46 +4674,46 @@ "ed_fsa/fsa_debt_size_band_borrowers": { "release": { "targets": 9, - "mean_capped_abs_rel_error": 0.4957163694066014, - "mean_abs_rel_error": 0.4957163694066014, - "median_abs_rel_error": 0.5151830860843994, - "max_abs_rel_error": 0.6102228786098175, + "mean_capped_abs_rel_error": 0.49006224060438847, + "mean_abs_rel_error": 0.49006224060438847, + "median_abs_rel_error": 0.47384912828798875, + "max_abs_rel_error": 0.6041748481877873, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "a_no_fsa": { "targets": 9, - "mean_capped_abs_rel_error": 0.4941368595237281, - "mean_abs_rel_error": 0.4941368595237281, - "median_abs_rel_error": 0.5347897255532575, - "max_abs_rel_error": 0.6269123404509859, + "mean_capped_abs_rel_error": 0.48998971841561356, + "mean_abs_rel_error": 0.48998971841561356, + "median_abs_rel_error": 0.537239004660869, + "max_abs_rel_error": 0.6294021633899607, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa": { "targets": 9, - "mean_capped_abs_rel_error": 0.03669702510666612, - "mean_abs_rel_error": 0.03669702510666612, - "median_abs_rel_error": 0.021734326809381706, - "max_abs_rel_error": 0.15654638892245973, - "share_within_5pct": 0.7777777777777778, + "mean_capped_abs_rel_error": 0.027433691760850153, + "mean_abs_rel_error": 0.027433691760850153, + "median_abs_rel_error": 0.009336531467595615, + "max_abs_rel_error": 0.14264923040127336, + "share_within_5pct": 0.8888888888888888, "share_within_10pct": 0.8888888888888888 }, "a_no_fsa_l2": { "targets": 9, - "mean_capped_abs_rel_error": 0.4991384886190511, - "mean_abs_rel_error": 0.4991384886190511, - "median_abs_rel_error": 0.5440422129049961, - "max_abs_rel_error": 0.6124503314047036, + "mean_capped_abs_rel_error": 0.49319820747613424, + "mean_abs_rel_error": 0.49319820747613424, + "median_abs_rel_error": 0.5030112054538538, + "max_abs_rel_error": 0.6125670629136993, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa_l2": { "targets": 9, - "mean_capped_abs_rel_error": 0.06751180422145853, - "mean_abs_rel_error": 0.06751180422145853, - "median_abs_rel_error": 0.032281389493227286, - "max_abs_rel_error": 0.1971794741493009, + "mean_capped_abs_rel_error": 0.0528427961725171, + "mean_abs_rel_error": 0.0528427961725171, + "median_abs_rel_error": 0.0266176034591858, + "max_abs_rel_error": 0.13493110130471153, "share_within_5pct": 0.6666666666666666, "share_within_10pct": 0.6666666666666666 } @@ -4720,48 +4721,48 @@ "ed_fsa/fsa_parent_plus_balance": { "release": { "targets": 1, - "mean_capped_abs_rel_error": 0.25265651723875177, - "mean_abs_rel_error": 0.25265651723875177, - "median_abs_rel_error": 0.25265651723875177, - "max_abs_rel_error": 0.25265651723875177, + "mean_capped_abs_rel_error": 0.2008531573405126, + "mean_abs_rel_error": 0.2008531573405126, + "median_abs_rel_error": 0.2008531573405126, + "max_abs_rel_error": 0.2008531573405126, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "a_no_fsa": { "targets": 1, - "mean_capped_abs_rel_error": 0.3284417069052361, - "mean_abs_rel_error": 0.3284417069052361, - "median_abs_rel_error": 0.3284417069052361, - "max_abs_rel_error": 0.3284417069052361, + "mean_capped_abs_rel_error": 0.10785806135008236, + "mean_abs_rel_error": 0.10785806135008236, + "median_abs_rel_error": 0.10785806135008236, + "max_abs_rel_error": 0.10785806135008236, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa": { "targets": 1, - "mean_capped_abs_rel_error": 0.00032923327846958746, - "mean_abs_rel_error": 0.00032923327846958746, - "median_abs_rel_error": 0.00032923327846958746, - "max_abs_rel_error": 0.00032923327846958746, + "mean_capped_abs_rel_error": 5.190185180759451e-05, + "mean_abs_rel_error": 5.190185180759451e-05, + "median_abs_rel_error": 5.190185180759451e-05, + "max_abs_rel_error": 5.190185180759451e-05, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, "a_no_fsa_l2": { "targets": 1, - "mean_capped_abs_rel_error": 0.2521450945909616, - "mean_abs_rel_error": 0.2521450945909616, - "median_abs_rel_error": 0.2521450945909616, - "max_abs_rel_error": 0.2521450945909616, + "mean_capped_abs_rel_error": 0.1887394890189531, + "mean_abs_rel_error": 0.1887394890189531, + "median_abs_rel_error": 0.1887394890189531, + "max_abs_rel_error": 0.1887394890189531, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa_l2": { "targets": 1, - "mean_capped_abs_rel_error": 0.10313079148547102, - "mean_abs_rel_error": 0.10313079148547102, - "median_abs_rel_error": 0.10313079148547102, - "max_abs_rel_error": 0.10313079148547102, - "share_within_5pct": 0.0, - "share_within_10pct": 0.0 + "mean_capped_abs_rel_error": 0.00026491361385558705, + "mean_abs_rel_error": 0.00026491361385558705, + "median_abs_rel_error": 0.00026491361385558705, + "max_abs_rel_error": 0.00026491361385558705, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 } }, "ed_fsa/fsa_state_balance": { @@ -4785,11 +4786,11 @@ }, "b_with_fsa": { "targets": 51, - "mean_capped_abs_rel_error": 0.0018927911685849197, - "mean_abs_rel_error": 0.0018927911685849197, - "median_abs_rel_error": 0.0008426657191969932, - "max_abs_rel_error": 0.04960252451128392, - "share_within_5pct": 1.0, + "mean_capped_abs_rel_error": 0.0023877162047448845, + "mean_abs_rel_error": 0.0023877162047448845, + "median_abs_rel_error": 0.0009562334304321907, + "max_abs_rel_error": 0.07347017637112539, + "share_within_5pct": 0.9803921568627451, "share_within_10pct": 1.0 }, "a_no_fsa_l2": { @@ -4803,59 +4804,59 @@ }, "b_with_fsa_l2": { "targets": 51, - "mean_capped_abs_rel_error": 0.010866845384784414, - "mean_abs_rel_error": 0.010866845384784414, - "median_abs_rel_error": 0.0014500407936512737, - "max_abs_rel_error": 0.2591371971465698, - "share_within_5pct": 0.9215686274509803, - "share_within_10pct": 0.9803921568627451 + "mean_capped_abs_rel_error": 0.009652642288365843, + "mean_abs_rel_error": 0.009652642288365843, + "median_abs_rel_error": 0.0016627200908797643, + "max_abs_rel_error": 0.21376478193206117, + "share_within_5pct": 0.9607843137254902, + "share_within_10pct": 0.9607843137254902 } }, "ed_fsa/fsa_state_borrowers": { "release": { "targets": 51, - "mean_capped_abs_rel_error": 0.49167653306207315, - "mean_abs_rel_error": 0.49167653306207315, - "median_abs_rel_error": 0.5029010687640784, - "max_abs_rel_error": 0.6950510186026985, + "mean_capped_abs_rel_error": 0.4909450265178525, + "mean_abs_rel_error": 0.4909450265178525, + "median_abs_rel_error": 0.5029298728760372, + "max_abs_rel_error": 0.674786513275884, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "a_no_fsa": { "targets": 51, - "mean_capped_abs_rel_error": 0.49795444493869073, - "mean_abs_rel_error": 0.49795444493869073, - "median_abs_rel_error": 0.5220854906069777, - "max_abs_rel_error": 0.7225048699512604, + "mean_capped_abs_rel_error": 0.49436590536591424, + "mean_abs_rel_error": 0.49436590536591424, + "median_abs_rel_error": 0.5086634117540434, + "max_abs_rel_error": 0.7464418676869138, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa": { "targets": 51, - "mean_capped_abs_rel_error": 0.016892025713315162, - "mean_abs_rel_error": 0.016892025713315162, - "median_abs_rel_error": 0.0008059767551310119, - "max_abs_rel_error": 0.20401493067770368, - "share_within_5pct": 0.9019607843137255, - "share_within_10pct": 0.9019607843137255 + "mean_capped_abs_rel_error": 0.01093351273326499, + "mean_abs_rel_error": 0.01093351273326499, + "median_abs_rel_error": 0.0008468225319544138, + "max_abs_rel_error": 0.12647648232306657, + "share_within_5pct": 0.9215686274509803, + "share_within_10pct": 0.9411764705882353 }, "a_no_fsa_l2": { "targets": 51, - "mean_capped_abs_rel_error": 0.4905524236937906, - "mean_abs_rel_error": 0.4905524236937906, - "median_abs_rel_error": 0.47574801306991726, - "max_abs_rel_error": 0.6775462583784345, + "mean_capped_abs_rel_error": 0.4886798989395737, + "mean_abs_rel_error": 0.4886798989395737, + "median_abs_rel_error": 0.48910215376855937, + "max_abs_rel_error": 0.6924811961501464, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa_l2": { "targets": 51, - "mean_capped_abs_rel_error": 0.07828464062394395, - "mean_abs_rel_error": 0.07828464062394395, - "median_abs_rel_error": 0.005140573955039584, - "max_abs_rel_error": 0.3366241857766063, - "share_within_5pct": 0.5882352941176471, - "share_within_10pct": 0.6666666666666666 + "mean_capped_abs_rel_error": 0.061612358463562444, + "mean_abs_rel_error": 0.061612358463562444, + "median_abs_rel_error": 0.01613018684177716, + "max_abs_rel_error": 0.3139045998065022, + "share_within_5pct": 0.6274509803921569, + "share_within_10pct": 0.7647058823529411 } }, "federal_reserve/federal_reserve.federal_reserve": { @@ -4879,10 +4880,10 @@ }, "b_with_fsa": { "targets": 1, - "mean_capped_abs_rel_error": 0.00011734250218389259, - "mean_abs_rel_error": 0.00011734250218389259, - "median_abs_rel_error": 0.00011734250218389259, - "max_abs_rel_error": 0.00011734250218389259, + "mean_capped_abs_rel_error": 9.355381930900899e-05, + "mean_abs_rel_error": 9.355381930900899e-05, + "median_abs_rel_error": 9.355381930900899e-05, + "max_abs_rel_error": 9.355381930900899e-05, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -4897,10 +4898,10 @@ }, "b_with_fsa_l2": { "targets": 1, - "mean_capped_abs_rel_error": 0.0005228304317366926, - "mean_abs_rel_error": 0.0005228304317366926, - "median_abs_rel_error": 0.0005228304317366926, - "max_abs_rel_error": 0.0005228304317366926, + "mean_capped_abs_rel_error": 0.00018304890562130473, + "mean_abs_rel_error": 0.00018304890562130473, + "median_abs_rel_error": 0.00018304890562130473, + "max_abs_rel_error": 0.00018304890562130473, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -4926,10 +4927,10 @@ }, "b_with_fsa": { "targets": 1, - "mean_capped_abs_rel_error": 0.0003485488072249944, - "mean_abs_rel_error": 0.0003485488072249944, - "median_abs_rel_error": 0.0003485488072249944, - "max_abs_rel_error": 0.0003485488072249944, + "mean_capped_abs_rel_error": 0.00013881512874296765, + "mean_abs_rel_error": 0.00013881512874296765, + "median_abs_rel_error": 0.00013881512874296765, + "max_abs_rel_error": 0.00013881512874296765, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -4944,10 +4945,10 @@ }, "b_with_fsa_l2": { "targets": 1, - "mean_capped_abs_rel_error": 0.0009127323313964581, - "mean_abs_rel_error": 0.0009127323313964581, - "median_abs_rel_error": 0.0009127323313964581, - "max_abs_rel_error": 0.0009127323313964581, + "mean_capped_abs_rel_error": 0.00024399910708085724, + "mean_abs_rel_error": 0.00024399910708085724, + "median_abs_rel_error": 0.00024399910708085724, + "max_abs_rel_error": 0.00024399910708085724, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -4973,10 +4974,10 @@ }, "b_with_fsa": { "targets": 30, - "mean_capped_abs_rel_error": 0.2048975452542268, - "mean_abs_rel_error": 0.5106710112533749, - "median_abs_rel_error": 0.004942164864870339, - "max_abs_rel_error": 10.173203979974442, + "mean_capped_abs_rel_error": 0.20878676134327898, + "mean_abs_rel_error": 0.5330327171396277, + "median_abs_rel_error": 0.004809468136682763, + "max_abs_rel_error": 10.727378673890463, "share_within_5pct": 0.7333333333333333, "share_within_10pct": 0.7333333333333333 }, @@ -4991,10 +4992,10 @@ }, "b_with_fsa_l2": { "targets": 30, - "mean_capped_abs_rel_error": 0.22401562283428264, - "mean_abs_rel_error": 0.5375285632939772, - "median_abs_rel_error": 0.004807280293924578, - "max_abs_rel_error": 10.405388213790834, + "mean_capped_abs_rel_error": 0.22366553518054724, + "mean_abs_rel_error": 0.5585767600388062, + "median_abs_rel_error": 0.0035582317798861997, + "max_abs_rel_error": 11.047336745747767, "share_within_5pct": 0.7, "share_within_10pct": 0.7 } @@ -5020,11 +5021,11 @@ }, "b_with_fsa": { "targets": 261, - "mean_capped_abs_rel_error": 0.007159795119623858, - "mean_abs_rel_error": 0.007159795119623858, - "median_abs_rel_error": 0.001522207753197169, - "max_abs_rel_error": 0.22106183252520367, - "share_within_5pct": 0.9770114942528736, + "mean_capped_abs_rel_error": 0.006297296057091836, + "mean_abs_rel_error": 0.006297296057091836, + "median_abs_rel_error": 0.0014074985118962583, + "max_abs_rel_error": 0.2465393420144133, + "share_within_5pct": 0.9808429118773946, "share_within_10pct": 0.9846743295019157 }, "a_no_fsa_l2": { @@ -5038,12 +5039,12 @@ }, "b_with_fsa_l2": { "targets": 261, - "mean_capped_abs_rel_error": 0.020069554985378688, - "mean_abs_rel_error": 0.020816698946177905, - "median_abs_rel_error": 0.002360064924079156, - "max_abs_rel_error": 1.1235910190389748, - "share_within_5pct": 0.9310344827586207, - "share_within_10pct": 0.9616858237547893 + "mean_capped_abs_rel_error": 0.02176768362701182, + "mean_abs_rel_error": 0.02260080631057763, + "median_abs_rel_error": 0.0019261297948088589, + "max_abs_rel_error": 1.1373996887967437, + "share_within_5pct": 0.9195402298850575, + "share_within_10pct": 0.9578544061302682 } }, "irs_soi/irs_soi.assigned_aca_ptc": { @@ -5067,12 +5068,12 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.016338416774754054, - "mean_abs_rel_error": 0.016338416774754054, - "median_abs_rel_error": 0.004160480212639074, - "max_abs_rel_error": 0.15968577933165629, - "share_within_5pct": 0.8942307692307693, - "share_within_10pct": 0.9807692307692307 + "mean_capped_abs_rel_error": 0.015041311198050066, + "mean_abs_rel_error": 0.015041311198050066, + "median_abs_rel_error": 0.0034350632651596034, + "max_abs_rel_error": 0.148280800014568, + "share_within_5pct": 0.9134615384615384, + "share_within_10pct": 0.9903846153846154 }, "a_no_fsa_l2": { "targets": 104, @@ -5085,11 +5086,11 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.01199434886232972, - "mean_abs_rel_error": 0.01199434886232972, - "median_abs_rel_error": 0.002776013525371028, - "max_abs_rel_error": 0.19690455820774722, - "share_within_5pct": 0.9423076923076923, + "mean_capped_abs_rel_error": 0.011186366764431226, + "mean_abs_rel_error": 0.011186366764431226, + "median_abs_rel_error": 0.0021983243948999137, + "max_abs_rel_error": 0.18645543892864105, + "share_within_5pct": 0.9711538461538461, "share_within_10pct": 0.9903846153846154 } }, @@ -5114,10 +5115,10 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.010851657203982222, - "mean_abs_rel_error": 0.024222606086032723, - "median_abs_rel_error": 0.0009332836546722205, - "max_abs_rel_error": 2.3905786837332523, + "mean_capped_abs_rel_error": 0.010709555644649303, + "mean_abs_rel_error": 0.023806395123263522, + "median_abs_rel_error": 0.0009399467875366968, + "max_abs_rel_error": 2.362071305775879, "share_within_5pct": 0.9903846153846154, "share_within_10pct": 0.9903846153846154 }, @@ -5132,10 +5133,10 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.01070070136296137, - "mean_abs_rel_error": 0.026945940482034192, - "median_abs_rel_error": 0.0008464268277793971, - "max_abs_rel_error": 2.689504868383572, + "mean_capped_abs_rel_error": 0.010919885321442366, + "mean_abs_rel_error": 0.02853568273375395, + "median_abs_rel_error": 0.0012036572528151815, + "max_abs_rel_error": 2.832042930880405, "share_within_5pct": 0.9903846153846154, "share_within_10pct": 0.9903846153846154 } @@ -5161,12 +5162,12 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.18522756420709402, - "mean_abs_rel_error": 0.18522756420709402, - "median_abs_rel_error": 0.04989596275243752, - "max_abs_rel_error": 0.5568268128397995, + "mean_capped_abs_rel_error": 0.18125545931193726, + "mean_abs_rel_error": 0.18125545931193726, + "median_abs_rel_error": 0.06257047740355261, + "max_abs_rel_error": 0.6408619302557813, "share_within_5pct": 0.5, - "share_within_10pct": 0.5096153846153846 + "share_within_10pct": 0.5 }, "a_no_fsa_l2": { "targets": 104, @@ -5179,10 +5180,10 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.24564380919624795, - "mean_abs_rel_error": 0.24564380919624795, - "median_abs_rel_error": 0.2628992597504457, - "max_abs_rel_error": 0.6061537657814673, + "mean_capped_abs_rel_error": 0.24821079481786507, + "mean_abs_rel_error": 0.24821079481786507, + "median_abs_rel_error": 0.2644502418562126, + "max_abs_rel_error": 0.6391546223634336, "share_within_5pct": 0.47115384615384615, "share_within_10pct": 0.4807692307692308 } @@ -5208,10 +5209,10 @@ }, "b_with_fsa": { "targets": 2, - "mean_capped_abs_rel_error": 0.07419494961596709, - "mean_abs_rel_error": 0.07419494961596709, - "median_abs_rel_error": 0.07419494961596709, - "max_abs_rel_error": 0.14812075105760886, + "mean_capped_abs_rel_error": 0.0732713019645474, + "mean_abs_rel_error": 0.0732713019645474, + "median_abs_rel_error": 0.0732713019645474, + "max_abs_rel_error": 0.14631191266054525, "share_within_5pct": 0.5, "share_within_10pct": 0.5 }, @@ -5226,10 +5227,10 @@ }, "b_with_fsa_l2": { "targets": 2, - "mean_capped_abs_rel_error": 0.06739155879551381, - "mean_abs_rel_error": 0.06739155879551381, - "median_abs_rel_error": 0.06739155879551381, - "max_abs_rel_error": 0.1346704899923046, + "mean_capped_abs_rel_error": 0.06626823798504265, + "mean_abs_rel_error": 0.06626823798504265, + "median_abs_rel_error": 0.06626823798504265, + "max_abs_rel_error": 0.13250464153567054, "share_within_5pct": 0.5, "share_within_10pct": 0.5 } @@ -5255,12 +5256,12 @@ }, "b_with_fsa": { "targets": 260, - "mean_capped_abs_rel_error": 0.20888097004359185, - "mean_abs_rel_error": 0.28282182464218525, - "median_abs_rel_error": 0.036321930052794035, - "max_abs_rel_error": 3.7492715826903993, + "mean_capped_abs_rel_error": 0.20969868570434438, + "mean_abs_rel_error": 0.28266486092124005, + "median_abs_rel_error": 0.03503409643888316, + "max_abs_rel_error": 3.745503433192329, "share_within_5pct": 0.5615384615384615, - "share_within_10pct": 0.6576923076923077 + "share_within_10pct": 0.6423076923076924 }, "a_no_fsa_l2": { "targets": 260, @@ -5273,12 +5274,12 @@ }, "b_with_fsa_l2": { "targets": 260, - "mean_capped_abs_rel_error": 0.22063467428469188, - "mean_abs_rel_error": 0.30122533352328473, - "median_abs_rel_error": 0.039690882591894946, - "max_abs_rel_error": 3.826631493021982, - "share_within_5pct": 0.5384615384615384, - "share_within_10pct": 0.6461538461538462 + "mean_capped_abs_rel_error": 0.22273492020316457, + "mean_abs_rel_error": 0.30434160679866745, + "median_abs_rel_error": 0.041994837452325795, + "max_abs_rel_error": 3.8462248643378336, + "share_within_5pct": 0.5269230769230769, + "share_within_10pct": 0.6384615384615384 } }, "irs_soi/irs_soi.ctc": { @@ -5302,12 +5303,12 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.012585696149968193, - "mean_abs_rel_error": 0.012585696149968193, - "median_abs_rel_error": 0.0015988195876063217, - "max_abs_rel_error": 0.17347297713758342, - "share_within_5pct": 0.9230769230769231, - "share_within_10pct": 0.9711538461538461 + "mean_capped_abs_rel_error": 0.011831195660376194, + "mean_abs_rel_error": 0.011831195660376194, + "median_abs_rel_error": 0.0013480847782112626, + "max_abs_rel_error": 0.17526482480328326, + "share_within_5pct": 0.9326923076923077, + "share_within_10pct": 0.9807692307692307 }, "a_no_fsa_l2": { "targets": 104, @@ -5320,11 +5321,11 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.013985164521525945, - "mean_abs_rel_error": 0.013985164521525945, - "median_abs_rel_error": 0.0014165893433014296, - "max_abs_rel_error": 0.25324353235112845, - "share_within_5pct": 0.9230769230769231, + "mean_capped_abs_rel_error": 0.014289769793436317, + "mean_abs_rel_error": 0.014289769793436317, + "median_abs_rel_error": 0.0012378049901395996, + "max_abs_rel_error": 0.25314319057111284, + "share_within_5pct": 0.9134615384615384, "share_within_10pct": 0.9711538461538461 } }, @@ -5349,10 +5350,10 @@ }, "b_with_fsa": { "targets": 2, - "mean_capped_abs_rel_error": 0.001025505027346955, - "mean_abs_rel_error": 0.001025505027346955, - "median_abs_rel_error": 0.001025505027346955, - "max_abs_rel_error": 0.001593284191615117, + "mean_capped_abs_rel_error": 0.00017634528259281065, + "mean_abs_rel_error": 0.00017634528259281065, + "median_abs_rel_error": 0.00017634528259281065, + "max_abs_rel_error": 0.000190677401266382, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -5367,10 +5368,10 @@ }, "b_with_fsa_l2": { "targets": 2, - "mean_capped_abs_rel_error": 0.0002606429273915006, - "mean_abs_rel_error": 0.0002606429273915006, - "median_abs_rel_error": 0.0002606429273915006, - "max_abs_rel_error": 0.00047695169370608876, + "mean_capped_abs_rel_error": 0.0003306389499027504, + "mean_abs_rel_error": 0.0003306389499027504, + "median_abs_rel_error": 0.0003306389499027504, + "max_abs_rel_error": 0.0004901633205709908, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -5396,12 +5397,12 @@ }, "b_with_fsa": { "targets": 781, - "mean_capped_abs_rel_error": 0.03301648792075358, - "mean_abs_rel_error": 8333.671520777589, - "median_abs_rel_error": 0.0023456296078306813, - "max_abs_rel_error": 5049906.542038025, - "share_within_5pct": 0.8796414852752881, - "share_within_10pct": 0.9295774647887324 + "mean_capped_abs_rel_error": 0.03135064108613714, + "mean_abs_rel_error": 8834.474931803066, + "median_abs_rel_error": 0.002191711516720503, + "max_abs_rel_error": 5656263.079775462, + "share_within_5pct": 0.8950064020486556, + "share_within_10pct": 0.9308578745198464 }, "a_no_fsa_l2": { "targets": 781, @@ -5414,12 +5415,12 @@ }, "b_with_fsa_l2": { "targets": 781, - "mean_capped_abs_rel_error": 0.030970318398673438, - "mean_abs_rel_error": 27233.729956457242, - "median_abs_rel_error": 0.002312922820667099, - "max_abs_rel_error": 16779088.77414457, - "share_within_5pct": 0.8847631241997439, - "share_within_10pct": 0.9244558258642765 + "mean_capped_abs_rel_error": 0.030513863501867654, + "mean_abs_rel_error": 22066.45578104443, + "median_abs_rel_error": 0.002137286994002946, + "max_abs_rel_error": 13148881.339845233, + "share_within_5pct": 0.8809218950064021, + "share_within_10pct": 0.9257362355953905 } }, "irs_soi/irs_soi.employment_income": { @@ -5443,10 +5444,10 @@ }, "b_with_fsa": { "targets": 106, - "mean_capped_abs_rel_error": 0.0021586128158928284, - "mean_abs_rel_error": 0.0021586128158928284, - "median_abs_rel_error": 0.0006726520733716729, - "max_abs_rel_error": 0.027626108078658264, + "mean_capped_abs_rel_error": 0.0017772854137874513, + "mean_abs_rel_error": 0.0017772854137874513, + "median_abs_rel_error": 0.0006142697222231128, + "max_abs_rel_error": 0.028575878229875607, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -5461,10 +5462,10 @@ }, "b_with_fsa_l2": { "targets": 106, - "mean_capped_abs_rel_error": 0.0016444853894649173, - "mean_abs_rel_error": 0.0016444853894649173, - "median_abs_rel_error": 0.0007510545552285972, - "max_abs_rel_error": 0.020504839743647675, + "mean_capped_abs_rel_error": 0.0019257048262869214, + "mean_abs_rel_error": 0.0019257048262869214, + "median_abs_rel_error": 0.000699334136511469, + "max_abs_rel_error": 0.023067038434221743, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -5490,10 +5491,10 @@ }, "b_with_fsa": { "targets": 2, - "mean_capped_abs_rel_error": 0.00038804355506916833, - "mean_abs_rel_error": 0.00038804355506916833, - "median_abs_rel_error": 0.00038804355506916833, - "max_abs_rel_error": 0.0005412377573520513, + "mean_capped_abs_rel_error": 0.0008029280124277604, + "mean_abs_rel_error": 0.0008029280124277604, + "median_abs_rel_error": 0.0008029280124277604, + "max_abs_rel_error": 0.0012715516358064473, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -5508,10 +5509,10 @@ }, "b_with_fsa_l2": { "targets": 2, - "mean_capped_abs_rel_error": 0.0014011266828416911, - "mean_abs_rel_error": 0.0014011266828416911, - "median_abs_rel_error": 0.0014011266828416911, - "max_abs_rel_error": 0.0017534928243884583, + "mean_capped_abs_rel_error": 0.0009747515122147666, + "mean_abs_rel_error": 0.0009747515122147666, + "median_abs_rel_error": 0.0009747515122147666, + "max_abs_rel_error": 0.0015855484807002235, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -5537,10 +5538,10 @@ }, "b_with_fsa": { "targets": 2, - "mean_capped_abs_rel_error": 0.5010986960093003, - "mean_abs_rel_error": 2.171073015111326, - "median_abs_rel_error": 2.171073015111326, - "max_abs_rel_error": 4.339948638204052, + "mean_capped_abs_rel_error": 0.5014992036446648, + "mean_abs_rel_error": 2.8510485449679464, + "median_abs_rel_error": 2.8510485449679464, + "max_abs_rel_error": 5.6990986826465635, "share_within_5pct": 0.5, "share_within_10pct": 0.5 }, @@ -5555,10 +5556,10 @@ }, "b_with_fsa_l2": { "targets": 2, - "mean_capped_abs_rel_error": 0.5032288251891964, - "mean_abs_rel_error": 2.267627148305077, - "median_abs_rel_error": 2.267627148305077, - "max_abs_rel_error": 4.528796646231761, + "mean_capped_abs_rel_error": 0.5004044857228734, + "mean_abs_rel_error": 2.3209561125481355, + "median_abs_rel_error": 2.3209561125481355, + "max_abs_rel_error": 4.641103253650524, "share_within_5pct": 0.5, "share_within_10pct": 0.5 } @@ -5584,10 +5585,10 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.008229023472163841, - "mean_abs_rel_error": 0.008229023472163841, - "median_abs_rel_error": 0.001979217230018009, - "max_abs_rel_error": 0.0562560037027235, + "mean_capped_abs_rel_error": 0.008091273660202802, + "mean_abs_rel_error": 0.008091273660202802, + "median_abs_rel_error": 0.0017067540619252854, + "max_abs_rel_error": 0.054414561822623025, "share_within_5pct": 0.9903846153846154, "share_within_10pct": 1.0 }, @@ -5602,11 +5603,11 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.00858104190120728, - "mean_abs_rel_error": 0.00858104190120728, - "median_abs_rel_error": 0.001998223453630528, - "max_abs_rel_error": 0.13141620125987813, - "share_within_5pct": 0.9807692307692307, + "mean_capped_abs_rel_error": 0.008680344114608505, + "mean_abs_rel_error": 0.008680344114608505, + "median_abs_rel_error": 0.0016779619103704491, + "max_abs_rel_error": 0.12513583231103562, + "share_within_5pct": 0.9711538461538461, "share_within_10pct": 0.9903846153846154 } }, @@ -5631,10 +5632,10 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.017733663006239787, - "mean_abs_rel_error": 0.017733663006239787, - "median_abs_rel_error": 0.006993091503211748, - "max_abs_rel_error": 0.0891099964269446, + "mean_capped_abs_rel_error": 0.017123720339473972, + "mean_abs_rel_error": 0.017123720339473972, + "median_abs_rel_error": 0.007757779093589578, + "max_abs_rel_error": 0.08977190671914732, "share_within_5pct": 0.9423076923076923, "share_within_10pct": 1.0 }, @@ -5649,10 +5650,10 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.02003439043644371, - "mean_abs_rel_error": 0.02003439043644371, - "median_abs_rel_error": 0.0066930160650956316, - "max_abs_rel_error": 0.08779991033988786, + "mean_capped_abs_rel_error": 0.019924574284363603, + "mean_abs_rel_error": 0.019924574284363603, + "median_abs_rel_error": 0.008560981397328391, + "max_abs_rel_error": 0.08710807380894497, "share_within_5pct": 0.9038461538461539, "share_within_10pct": 1.0 } @@ -5678,10 +5679,10 @@ }, "b_with_fsa": { "targets": 2, - "mean_capped_abs_rel_error": 0.012499570381315888, - "mean_abs_rel_error": 0.012499570381315888, - "median_abs_rel_error": 0.012499570381315888, - "max_abs_rel_error": 0.024708547712510805, + "mean_capped_abs_rel_error": 0.01279067946016243, + "mean_abs_rel_error": 0.01279067946016243, + "median_abs_rel_error": 0.01279067946016243, + "max_abs_rel_error": 0.025340640548623006, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -5696,10 +5697,10 @@ }, "b_with_fsa_l2": { "targets": 2, - "mean_capped_abs_rel_error": 0.019765036441991936, - "mean_abs_rel_error": 0.019765036441991936, - "median_abs_rel_error": 0.019765036441991936, - "max_abs_rel_error": 0.02511154064563169, + "mean_capped_abs_rel_error": 0.02015368627140951, + "mean_abs_rel_error": 0.02015368627140951, + "median_abs_rel_error": 0.02015368627140951, + "max_abs_rel_error": 0.024676926211463585, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -5725,10 +5726,10 @@ }, "b_with_fsa": { "targets": 108, - "mean_capped_abs_rel_error": 0.0014174505869384525, - "mean_abs_rel_error": 0.0014174505869384525, - "median_abs_rel_error": 0.0008623376834452311, - "max_abs_rel_error": 0.01867301945543659, + "mean_capped_abs_rel_error": 0.0016716955844113966, + "mean_abs_rel_error": 0.0016716955844113966, + "median_abs_rel_error": 0.001202497376687854, + "max_abs_rel_error": 0.018331244228501766, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -5743,10 +5744,10 @@ }, "b_with_fsa_l2": { "targets": 108, - "mean_capped_abs_rel_error": 0.0015090233715366272, - "mean_abs_rel_error": 0.0015090233715366272, - "median_abs_rel_error": 0.000974013486397568, - "max_abs_rel_error": 0.018729232799307813, + "mean_capped_abs_rel_error": 0.001454700096901229, + "mean_abs_rel_error": 0.001454700096901229, + "median_abs_rel_error": 0.0009587681817742259, + "max_abs_rel_error": 0.018405278301024442, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -5772,10 +5773,10 @@ }, "b_with_fsa": { "targets": 55, - "mean_capped_abs_rel_error": 0.023085859023404955, - "mean_abs_rel_error": 0.023085859023404955, - "median_abs_rel_error": 0.0017779278204516362, - "max_abs_rel_error": 0.528200180988138, + "mean_capped_abs_rel_error": 0.022764546163640636, + "mean_abs_rel_error": 0.022764546163640636, + "median_abs_rel_error": 0.001314923845724305, + "max_abs_rel_error": 0.5418766424703838, "share_within_5pct": 0.9454545454545454, "share_within_10pct": 0.9454545454545454 }, @@ -5790,10 +5791,10 @@ }, "b_with_fsa_l2": { "targets": 55, - "mean_capped_abs_rel_error": 0.022978506624876164, - "mean_abs_rel_error": 0.022978506624876164, - "median_abs_rel_error": 0.0013127152067585956, - "max_abs_rel_error": 0.5283942191082257, + "mean_capped_abs_rel_error": 0.023645446894039388, + "mean_abs_rel_error": 0.023645446894039388, + "median_abs_rel_error": 0.0013086919159114225, + "max_abs_rel_error": 0.5268561285777368, "share_within_5pct": 0.9272727272727272, "share_within_10pct": 0.9636363636363636 } @@ -5819,11 +5820,11 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.06347489593161995, - "mean_abs_rel_error": 0.22535627905957156, - "median_abs_rel_error": 0.002150932917911768, - "max_abs_rel_error": 6.408196519461774, - "share_within_5pct": 0.9038461538461539, + "mean_capped_abs_rel_error": 0.06332869561784696, + "mean_abs_rel_error": 0.22682351132417106, + "median_abs_rel_error": 0.0018603841078285012, + "max_abs_rel_error": 6.829757421312947, + "share_within_5pct": 0.9134615384615384, "share_within_10pct": 0.9326923076923077 }, "a_no_fsa_l2": { @@ -5837,11 +5838,11 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.06437465471037261, - "mean_abs_rel_error": 0.22151765419646757, - "median_abs_rel_error": 0.002052131947741152, - "max_abs_rel_error": 5.956369502677449, - "share_within_5pct": 0.9230769230769231, + "mean_capped_abs_rel_error": 0.06454838693265773, + "mean_abs_rel_error": 0.22646527443051673, + "median_abs_rel_error": 0.0015604065109537432, + "max_abs_rel_error": 6.254428850529265, + "share_within_5pct": 0.9134615384615384, "share_within_10pct": 0.9230769230769231 } }, @@ -5866,10 +5867,10 @@ }, "b_with_fsa": { "targets": 2, - "mean_capped_abs_rel_error": 0.0011860174567384421, - "mean_abs_rel_error": 0.0011860174567384421, - "median_abs_rel_error": 0.0011860174567384421, - "max_abs_rel_error": 0.0014327753451021544, + "mean_capped_abs_rel_error": 0.0006257222499286407, + "mean_abs_rel_error": 0.0006257222499286407, + "median_abs_rel_error": 0.0006257222499286407, + "max_abs_rel_error": 0.0011418640077648435, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -5884,10 +5885,10 @@ }, "b_with_fsa_l2": { "targets": 2, - "mean_capped_abs_rel_error": 0.0006224976721046795, - "mean_abs_rel_error": 0.0006224976721046795, - "median_abs_rel_error": 0.0006224976721046795, - "max_abs_rel_error": 0.0007231228917723797, + "mean_capped_abs_rel_error": 0.00016496188968251208, + "mean_abs_rel_error": 0.00016496188968251208, + "median_abs_rel_error": 0.00016496188968251208, + "max_abs_rel_error": 0.00018239016969446862, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -5913,11 +5914,11 @@ }, "b_with_fsa": { "targets": 108, - "mean_capped_abs_rel_error": 0.009036170201861959, - "mean_abs_rel_error": 0.009036170201861959, - "median_abs_rel_error": 0.0013830913151203369, - "max_abs_rel_error": 0.16151879498219543, - "share_within_5pct": 0.9444444444444444, + "mean_capped_abs_rel_error": 0.009216785537855286, + "mean_abs_rel_error": 0.009216785537855286, + "median_abs_rel_error": 0.001341816246766275, + "max_abs_rel_error": 0.21188323859872704, + "share_within_5pct": 0.9537037037037037, "share_within_10pct": 0.9814814814814815 }, "a_no_fsa_l2": { @@ -5931,10 +5932,10 @@ }, "b_with_fsa_l2": { "targets": 108, - "mean_capped_abs_rel_error": 0.007841318664509458, - "mean_abs_rel_error": 0.007841318664509458, - "median_abs_rel_error": 0.0011026623944309795, - "max_abs_rel_error": 0.19679114764273567, + "mean_capped_abs_rel_error": 0.00765159989288703, + "mean_abs_rel_error": 0.00765159989288703, + "median_abs_rel_error": 0.0012243355436728502, + "max_abs_rel_error": 0.1986799027393836, "share_within_5pct": 0.9629629629629629, "share_within_10pct": 0.9814814814814815 } @@ -5960,10 +5961,10 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.0034180773266881672, - "mean_abs_rel_error": 0.0034180773266881672, - "median_abs_rel_error": 0.0009832478408702758, - "max_abs_rel_error": 0.2339690974387381, + "mean_capped_abs_rel_error": 0.004916336976458922, + "mean_abs_rel_error": 0.004916336976458922, + "median_abs_rel_error": 0.0011355031715880907, + "max_abs_rel_error": 0.3415042221048066, "share_within_5pct": 0.9903846153846154, "share_within_10pct": 0.9903846153846154 }, @@ -5978,10 +5979,10 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.005919697549510513, - "mean_abs_rel_error": 0.005919697549510513, - "median_abs_rel_error": 0.0014639016879116622, - "max_abs_rel_error": 0.369747692641723, + "mean_capped_abs_rel_error": 0.005880995408295681, + "mean_abs_rel_error": 0.005880995408295681, + "median_abs_rel_error": 0.001390300841369094, + "max_abs_rel_error": 0.3816121914761583, "share_within_5pct": 0.9903846153846154, "share_within_10pct": 0.9903846153846154 } @@ -6007,12 +6008,12 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.008630598733085679, - "mean_abs_rel_error": 0.008630598733085679, - "median_abs_rel_error": 0.0016444478863405269, - "max_abs_rel_error": 0.12656044597004126, - "share_within_5pct": 0.9519230769230769, - "share_within_10pct": 0.9807692307692307 + "mean_capped_abs_rel_error": 0.007125985921611428, + "mean_abs_rel_error": 0.007125985921611428, + "median_abs_rel_error": 0.0014603020581961841, + "max_abs_rel_error": 0.14108491904410003, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9903846153846154 }, "a_no_fsa_l2": { "targets": 104, @@ -6025,11 +6026,11 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.005130274094367244, - "mean_abs_rel_error": 0.005130274094367244, - "median_abs_rel_error": 0.0017065175640684795, - "max_abs_rel_error": 0.09221457536234942, - "share_within_5pct": 0.9903846153846154, + "mean_capped_abs_rel_error": 0.004858882621875776, + "mean_abs_rel_error": 0.004858882621875776, + "median_abs_rel_error": 0.0012625258881575254, + "max_abs_rel_error": 0.09974601527867168, + "share_within_5pct": 0.9807692307692307, "share_within_10pct": 1.0 } }, @@ -6054,12 +6055,12 @@ }, "b_with_fsa": { "targets": 106, - "mean_capped_abs_rel_error": 0.06278784876814499, - "mean_abs_rel_error": 0.09017154213368689, - "median_abs_rel_error": 0.0019633948272123718, - "max_abs_rel_error": 1.905198688861855, - "share_within_5pct": 0.8867924528301887, - "share_within_10pct": 0.9056603773584906 + "mean_capped_abs_rel_error": 0.06322719672388397, + "mean_abs_rel_error": 0.09168356156278071, + "median_abs_rel_error": 0.0023487196394437367, + "max_abs_rel_error": 2.310141244857711, + "share_within_5pct": 0.8773584905660378, + "share_within_10pct": 0.9150943396226415 }, "a_no_fsa_l2": { "targets": 106, @@ -6072,11 +6073,11 @@ }, "b_with_fsa_l2": { "targets": 106, - "mean_capped_abs_rel_error": 0.0640316106020026, - "mean_abs_rel_error": 0.08896726216036875, - "median_abs_rel_error": 0.0014688730102188452, - "max_abs_rel_error": 1.922210885170449, - "share_within_5pct": 0.8962264150943396, + "mean_capped_abs_rel_error": 0.06555904390465889, + "mean_abs_rel_error": 0.09052502187658329, + "median_abs_rel_error": 0.0015619785905789765, + "max_abs_rel_error": 1.997451072133554, + "share_within_5pct": 0.8679245283018868, "share_within_10pct": 0.9056603773584906 } }, @@ -6101,12 +6102,12 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.012039485315086241, - "mean_abs_rel_error": 0.012039485315086241, - "median_abs_rel_error": 0.0018533088111052495, - "max_abs_rel_error": 0.24557994228514418, - "share_within_5pct": 0.9230769230769231, - "share_within_10pct": 0.9903846153846154 + "mean_capped_abs_rel_error": 0.01027086993187906, + "mean_abs_rel_error": 0.01027086993187906, + "median_abs_rel_error": 0.0017072033605070977, + "max_abs_rel_error": 0.07547486645524604, + "share_within_5pct": 0.9326923076923077, + "share_within_10pct": 1.0 }, "a_no_fsa_l2": { "targets": 104, @@ -6119,11 +6120,11 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.013202093573941838, - "mean_abs_rel_error": 0.013202093573941838, - "median_abs_rel_error": 0.0015791615634527262, - "max_abs_rel_error": 0.09861194880742834, - "share_within_5pct": 0.8846153846153846, + "mean_capped_abs_rel_error": 0.011233836379507572, + "mean_abs_rel_error": 0.011233836379507572, + "median_abs_rel_error": 0.0013264100824115156, + "max_abs_rel_error": 0.09794567039691594, + "share_within_5pct": 0.9230769230769231, "share_within_10pct": 1.0 } }, @@ -6148,10 +6149,10 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.03086978809375372, - "mean_abs_rel_error": 1.6889371761797363, - "median_abs_rel_error": 0.0013044516863463533, - "max_abs_rel_error": 158.4004762744762, + "mean_capped_abs_rel_error": 0.031039928237652052, + "mean_abs_rel_error": 1.7523792804316058, + "median_abs_rel_error": 0.0015571620230278925, + "max_abs_rel_error": 171.11203601712717, "share_within_5pct": 0.9711538461538461, "share_within_10pct": 0.9711538461538461 }, @@ -6166,10 +6167,10 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.030684415427154797, - "mean_abs_rel_error": 1.3925362035217999, - "median_abs_rel_error": 0.0012344974263897627, - "max_abs_rel_error": 134.55891550698533, + "mean_capped_abs_rel_error": 0.030944860064104122, + "mean_abs_rel_error": 1.6769302354353437, + "median_abs_rel_error": 0.0010064273312434795, + "max_abs_rel_error": 133.7718828948195, "share_within_5pct": 0.9711538461538461, "share_within_10pct": 0.9711538461538461 } @@ -6195,12 +6196,12 @@ }, "b_with_fsa": { "targets": 106, - "mean_capped_abs_rel_error": 0.023347069174338198, - "mean_abs_rel_error": 0.023347069174338198, - "median_abs_rel_error": 0.0064659739913831464, - "max_abs_rel_error": 0.2632218569331465, - "share_within_5pct": 0.8584905660377359, - "share_within_10pct": 0.9433962264150944 + "mean_capped_abs_rel_error": 0.024003804714745787, + "mean_abs_rel_error": 0.024003804714745787, + "median_abs_rel_error": 0.006425492566295503, + "max_abs_rel_error": 0.26177314686305, + "share_within_5pct": 0.8679245283018868, + "share_within_10pct": 0.9528301886792453 }, "a_no_fsa_l2": { "targets": 106, @@ -6213,12 +6214,12 @@ }, "b_with_fsa_l2": { "targets": 106, - "mean_capped_abs_rel_error": 0.022850043593459744, - "mean_abs_rel_error": 0.022850043593459744, - "median_abs_rel_error": 0.0029428071538765747, - "max_abs_rel_error": 0.23059183077115925, - "share_within_5pct": 0.8490566037735849, - "share_within_10pct": 0.9433962264150944 + "mean_capped_abs_rel_error": 0.0213399101103332, + "mean_abs_rel_error": 0.0213399101103332, + "median_abs_rel_error": 0.004087402025151453, + "max_abs_rel_error": 0.23738595964118808, + "share_within_5pct": 0.8679245283018868, + "share_within_10pct": 0.9716981132075472 } }, "irs_soi/irs_soi.tax_exempt_interest_income": { @@ -6242,10 +6243,10 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.008048590127641633, - "mean_abs_rel_error": 0.008048590127641633, - "median_abs_rel_error": 0.0013094748157970204, - "max_abs_rel_error": 0.36037963648831245, + "mean_capped_abs_rel_error": 0.008476714009436103, + "mean_abs_rel_error": 0.008476714009436103, + "median_abs_rel_error": 0.001326595098523722, + "max_abs_rel_error": 0.381143802863377, "share_within_5pct": 0.9807692307692307, "share_within_10pct": 0.9807692307692307 }, @@ -6260,10 +6261,10 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.009571721087884564, - "mean_abs_rel_error": 0.009571721087884564, - "median_abs_rel_error": 0.001000912987461561, - "max_abs_rel_error": 0.3994656055254415, + "mean_capped_abs_rel_error": 0.00994683810792408, + "mean_abs_rel_error": 0.00994683810792408, + "median_abs_rel_error": 0.0013561242422237638, + "max_abs_rel_error": 0.4032943862793465, "share_within_5pct": 0.9615384615384616, "share_within_10pct": 0.9807692307692307 } @@ -6289,10 +6290,10 @@ }, "b_with_fsa": { "targets": 107, - "mean_capped_abs_rel_error": 0.004736855763510603, - "mean_abs_rel_error": 0.004736855763510603, - "median_abs_rel_error": 0.0015690078654251654, - "max_abs_rel_error": 0.03761555973436072, + "mean_capped_abs_rel_error": 0.004690154555384832, + "mean_abs_rel_error": 0.004690154555384832, + "median_abs_rel_error": 0.0019646415145805423, + "max_abs_rel_error": 0.03985183043937748, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -6307,10 +6308,10 @@ }, "b_with_fsa_l2": { "targets": 107, - "mean_capped_abs_rel_error": 0.005980163161022519, - "mean_abs_rel_error": 0.005980163161022519, - "median_abs_rel_error": 0.001884172254331617, - "max_abs_rel_error": 0.0423725259190398, + "mean_capped_abs_rel_error": 0.006142543742870245, + "mean_abs_rel_error": 0.006142543742870245, + "median_abs_rel_error": 0.002315088948380751, + "max_abs_rel_error": 0.04425997571847816, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -6336,12 +6337,12 @@ }, "b_with_fsa": { "targets": 1038, - "mean_capped_abs_rel_error": 0.06232934442848569, - "mean_abs_rel_error": 0.07952624300189007, - "median_abs_rel_error": 0.0022632196461989003, - "max_abs_rel_error": 11.47088326193389, - "share_within_5pct": 0.8622350674373795, - "share_within_10pct": 0.8921001926782274 + "mean_capped_abs_rel_error": 0.06194858041067646, + "mean_abs_rel_error": 0.0791206838089129, + "median_abs_rel_error": 0.0023553203966199575, + "max_abs_rel_error": 11.400209646536714, + "share_within_5pct": 0.869942196531792, + "share_within_10pct": 0.8988439306358381 }, "a_no_fsa_l2": { "targets": 1038, @@ -6354,12 +6355,12 @@ }, "b_with_fsa_l2": { "targets": 1038, - "mean_capped_abs_rel_error": 0.05898539006402167, - "mean_abs_rel_error": 0.08083360764467823, - "median_abs_rel_error": 0.0021974156171218973, - "max_abs_rel_error": 10.370327794658373, - "share_within_5pct": 0.8766859344894027, - "share_within_10pct": 0.9036608863198459 + "mean_capped_abs_rel_error": 0.059342730943852055, + "mean_abs_rel_error": 0.08108749133815571, + "median_abs_rel_error": 0.002027108689994185, + "max_abs_rel_error": 10.139970087449136, + "share_within_5pct": 0.873795761078998, + "share_within_10pct": 0.9007707129094412 } }, "irs_soi/irs_soi.taxable_pension_income": { @@ -6383,10 +6384,10 @@ }, "b_with_fsa": { "targets": 108, - "mean_capped_abs_rel_error": 0.0012417924486544491, - "mean_abs_rel_error": 0.0012417924486544491, - "median_abs_rel_error": 0.0007896451725665598, - "max_abs_rel_error": 0.011388983487273576, + "mean_capped_abs_rel_error": 0.0012078536915383102, + "mean_abs_rel_error": 0.0012078536915383102, + "median_abs_rel_error": 0.0007961076569292685, + "max_abs_rel_error": 0.011491231771221204, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -6401,10 +6402,10 @@ }, "b_with_fsa_l2": { "targets": 108, - "mean_capped_abs_rel_error": 0.001337226243724447, - "mean_abs_rel_error": 0.001337226243724447, - "median_abs_rel_error": 0.0008984528848749718, - "max_abs_rel_error": 0.01105580187703563, + "mean_capped_abs_rel_error": 0.0012311815891408156, + "mean_abs_rel_error": 0.0012311815891408156, + "median_abs_rel_error": 0.0007921485302220244, + "max_abs_rel_error": 0.01111146110858599, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -6430,10 +6431,10 @@ }, "b_with_fsa": { "targets": 108, - "mean_capped_abs_rel_error": 0.002493923242757945, - "mean_abs_rel_error": 0.002493923242757945, - "median_abs_rel_error": 0.0007823490907014998, - "max_abs_rel_error": 0.11037904508141529, + "mean_capped_abs_rel_error": 0.0025410773934886445, + "mean_abs_rel_error": 0.0025410773934886445, + "median_abs_rel_error": 0.0008587694854825479, + "max_abs_rel_error": 0.1108729300561391, "share_within_5pct": 0.9814814814814815, "share_within_10pct": 0.9907407407407407 }, @@ -6448,10 +6449,10 @@ }, "b_with_fsa_l2": { "targets": 108, - "mean_capped_abs_rel_error": 0.0031702340815062376, - "mean_abs_rel_error": 0.0031702340815062376, - "median_abs_rel_error": 0.001288155162124622, - "max_abs_rel_error": 0.1099440902581524, + "mean_capped_abs_rel_error": 0.002803911234913741, + "mean_abs_rel_error": 0.002803911234913741, + "median_abs_rel_error": 0.000890129205524575, + "max_abs_rel_error": 0.10991972483801984, "share_within_5pct": 0.9814814814814815, "share_within_10pct": 0.9907407407407407 } @@ -6477,10 +6478,10 @@ }, "b_with_fsa": { "targets": 1, - "mean_capped_abs_rel_error": 0.0017557754397329864, - "mean_abs_rel_error": 0.0017557754397329864, - "median_abs_rel_error": 0.0017557754397329864, - "max_abs_rel_error": 0.0017557754397329864, + "mean_capped_abs_rel_error": 0.0004249800895334228, + "mean_abs_rel_error": 0.0004249800895334228, + "median_abs_rel_error": 0.0004249800895334228, + "max_abs_rel_error": 0.0004249800895334228, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -6495,10 +6496,10 @@ }, "b_with_fsa_l2": { "targets": 1, - "mean_capped_abs_rel_error": 0.0002400995006703551, - "mean_abs_rel_error": 0.0002400995006703551, - "median_abs_rel_error": 0.0002400995006703551, - "max_abs_rel_error": 0.0002400995006703551, + "mean_capped_abs_rel_error": 0.0004279212081868519, + "mean_abs_rel_error": 0.0004279212081868519, + "median_abs_rel_error": 0.0004279212081868519, + "max_abs_rel_error": 0.0004279212081868519, "share_within_5pct": 1.0, "share_within_10pct": 1.0 } @@ -6524,12 +6525,12 @@ }, "b_with_fsa": { "targets": 106, - "mean_capped_abs_rel_error": 0.007140260687639728, - "mean_abs_rel_error": 0.007140260687639728, - "median_abs_rel_error": 0.0015825308630559223, - "max_abs_rel_error": 0.25937563791016527, + "mean_capped_abs_rel_error": 0.005318217807061679, + "mean_abs_rel_error": 0.005318217807061679, + "median_abs_rel_error": 0.001480907092962697, + "max_abs_rel_error": 0.12714237492620808, "share_within_5pct": 0.9716981132075472, - "share_within_10pct": 0.9811320754716981 + "share_within_10pct": 0.9905660377358491 }, "a_no_fsa_l2": { "targets": 106, @@ -6542,12 +6543,12 @@ }, "b_with_fsa_l2": { "targets": 106, - "mean_capped_abs_rel_error": 0.006629240837545382, - "mean_abs_rel_error": 0.006629240837545382, - "median_abs_rel_error": 0.0019086897243690685, - "max_abs_rel_error": 0.14801564554852809, - "share_within_5pct": 0.9716981132075472, - "share_within_10pct": 0.9716981132075472 + "mean_capped_abs_rel_error": 0.006211229937105544, + "mean_abs_rel_error": 0.006211229937105544, + "median_abs_rel_error": 0.0019753424166971314, + "max_abs_rel_error": 0.1918390627335188, + "share_within_5pct": 0.9811320754716981, + "share_within_10pct": 0.9905660377358491 } }, "jct/jct.individual_tax_expenditure_revenue_loss": { @@ -6571,10 +6572,10 @@ }, "b_with_fsa": { "targets": 11, - "mean_capped_abs_rel_error": 0.3748348088733628, - "mean_abs_rel_error": 0.3748348088733628, - "median_abs_rel_error": 0.28721312005496913, - "max_abs_rel_error": 0.9866145134982859, + "mean_capped_abs_rel_error": 0.37059879736157997, + "mean_abs_rel_error": 0.37059879736157997, + "median_abs_rel_error": 0.29105517691437327, + "max_abs_rel_error": 0.9852218073808154, "share_within_5pct": 0.18181818181818182, "share_within_10pct": 0.18181818181818182 }, @@ -6589,10 +6590,10 @@ }, "b_with_fsa_l2": { "targets": 11, - "mean_capped_abs_rel_error": 0.3930935598718291, - "mean_abs_rel_error": 0.3930935598718291, - "median_abs_rel_error": 0.28498393467119865, - "max_abs_rel_error": 0.9866121891517183, + "mean_capped_abs_rel_error": 0.395465125473867, + "mean_abs_rel_error": 0.395465125473867, + "median_abs_rel_error": 0.29684037252180884, + "max_abs_rel_error": 0.9864107613017746, "share_within_5pct": 0.18181818181818182, "share_within_10pct": 0.18181818181818182 } @@ -6618,10 +6619,10 @@ }, "b_with_fsa": { "targets": 6, - "mean_capped_abs_rel_error": 0.00047537623758243594, - "mean_abs_rel_error": 0.00047537623758243594, - "median_abs_rel_error": 0.00016043321103009994, - "max_abs_rel_error": 0.002129771732592459, + "mean_capped_abs_rel_error": 0.0010460386853023674, + "mean_abs_rel_error": 0.0010460386853023674, + "median_abs_rel_error": 0.0003024384337507281, + "max_abs_rel_error": 0.004797406177845936, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -6636,10 +6637,10 @@ }, "b_with_fsa_l2": { "targets": 6, - "mean_capped_abs_rel_error": 0.010606407005245205, - "mean_abs_rel_error": 0.010606407005245205, - "median_abs_rel_error": 0.00018972281269626643, - "max_abs_rel_error": 0.0610945859414752, + "mean_capped_abs_rel_error": 0.013448456185682245, + "mean_abs_rel_error": 0.013448456185682245, + "median_abs_rel_error": 0.0007061472649063775, + "max_abs_rel_error": 0.07676604316413718, "share_within_5pct": 0.8333333333333334, "share_within_10pct": 1.0 } @@ -6665,10 +6666,10 @@ }, "b_with_fsa": { "targets": 3, - "mean_capped_abs_rel_error": 0.17235307767161576, - "mean_abs_rel_error": 0.17235307767161576, - "median_abs_rel_error": 0.10154552034307894, - "max_abs_rel_error": 0.4141463586217791, + "mean_capped_abs_rel_error": 0.17472961959413977, + "mean_abs_rel_error": 0.17472961959413977, + "median_abs_rel_error": 0.10994109619409498, + "max_abs_rel_error": 0.41396174998780266, "share_within_5pct": 0.3333333333333333, "share_within_10pct": 0.3333333333333333 }, @@ -6683,10 +6684,10 @@ }, "b_with_fsa_l2": { "targets": 3, - "mean_capped_abs_rel_error": 0.21646019194231522, - "mean_abs_rel_error": 0.21646019194231522, - "median_abs_rel_error": 0.11811443449564059, - "max_abs_rel_error": 0.5272514081098357, + "mean_capped_abs_rel_error": 0.2307956389283372, + "mean_abs_rel_error": 0.2307956389283372, + "median_abs_rel_error": 0.12824130514234397, + "max_abs_rel_error": 0.5638665903843211, "share_within_5pct": 0.3333333333333333, "share_within_10pct": 0.3333333333333333 } @@ -6712,11 +6713,11 @@ }, "b_with_fsa": { "targets": 51, - "mean_capped_abs_rel_error": 0.005919420282833748, - "mean_abs_rel_error": 0.005919420282833748, - "median_abs_rel_error": 0.002531269486878772, - "max_abs_rel_error": 0.051172975011777797, - "share_within_5pct": 0.9803921568627451, + "mean_capped_abs_rel_error": 0.004862481410245844, + "mean_abs_rel_error": 0.004862481410245844, + "median_abs_rel_error": 0.001859045982017068, + "max_abs_rel_error": 0.039543337137987654, + "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, "a_no_fsa_l2": { @@ -6730,10 +6731,10 @@ }, "b_with_fsa_l2": { "targets": 51, - "mean_capped_abs_rel_error": 0.008551616296680341, - "mean_abs_rel_error": 0.008551616296680341, - "median_abs_rel_error": 0.002580344635541191, - "max_abs_rel_error": 0.16077428968803284, + "mean_capped_abs_rel_error": 0.009986175814523308, + "mean_abs_rel_error": 0.009986175814523308, + "median_abs_rel_error": 0.002128603989170507, + "max_abs_rel_error": 0.20590318868760393, "share_within_5pct": 0.9411764705882353, "share_within_10pct": 0.9803921568627451 } @@ -6759,10 +6760,10 @@ }, "b_with_fsa": { "targets": 51, - "mean_capped_abs_rel_error": 0.007893623208744791, - "mean_abs_rel_error": 0.007893623208744791, - "median_abs_rel_error": 0.0015714313036027617, - "max_abs_rel_error": 0.1253722127595259, + "mean_capped_abs_rel_error": 0.0075157476131071325, + "mean_abs_rel_error": 0.0075157476131071325, + "median_abs_rel_error": 0.0013143411030510869, + "max_abs_rel_error": 0.11651946375749414, "share_within_5pct": 0.9411764705882353, "share_within_10pct": 0.9607843137254902 }, @@ -6777,12 +6778,12 @@ }, "b_with_fsa_l2": { "targets": 51, - "mean_capped_abs_rel_error": 0.014781309784482381, - "mean_abs_rel_error": 0.014781309784482381, - "median_abs_rel_error": 0.0016834332433176068, - "max_abs_rel_error": 0.20624776884613172, + "mean_capped_abs_rel_error": 0.014847141211575057, + "mean_abs_rel_error": 0.014847141211575057, + "median_abs_rel_error": 0.001727654400499628, + "max_abs_rel_error": 0.20130109720584488, "share_within_5pct": 0.9215686274509803, - "share_within_10pct": 0.9215686274509803 + "share_within_10pct": 0.9607843137254902 } }, "usda_snap/usda_snap.usda_snap": { @@ -6806,10 +6807,10 @@ }, "b_with_fsa": { "targets": 104, - "mean_capped_abs_rel_error": 0.002339601534751349, - "mean_abs_rel_error": 0.002339601534751349, - "median_abs_rel_error": 0.0009791752962835679, - "max_abs_rel_error": 0.04708054748849348, + "mean_capped_abs_rel_error": 0.0016954531883470229, + "mean_abs_rel_error": 0.0016954531883470229, + "median_abs_rel_error": 0.001013748047395984, + "max_abs_rel_error": 0.022970948543976445, "share_within_5pct": 1.0, "share_within_10pct": 1.0 }, @@ -6824,12 +6825,12 @@ }, "b_with_fsa_l2": { "targets": 104, - "mean_capped_abs_rel_error": 0.004929361865803737, - "mean_abs_rel_error": 0.004929361865803737, - "median_abs_rel_error": 0.0013057712841990435, - "max_abs_rel_error": 0.08748050958123087, - "share_within_5pct": 0.9711538461538461, - "share_within_10pct": 1.0 + "mean_capped_abs_rel_error": 0.007195575669485662, + "mean_abs_rel_error": 0.007195575669485662, + "median_abs_rel_error": 0.0010392136198712778, + "max_abs_rel_error": 0.10964947177182012, + "share_within_5pct": 0.9519230769230769, + "share_within_10pct": 0.9903846153846154 } } }, @@ -6837,48 +6838,48 @@ "fsa": { "release": { "targets": 132, - "mean_capped_abs_rel_error": 0.48546968415687736, - "mean_abs_rel_error": 0.48546968415687736, - "median_abs_rel_error": 0.4989114893107774, - "max_abs_rel_error": 0.8269889540129202, + "mean_capped_abs_rel_error": 0.4833694552147605, + "mean_abs_rel_error": 0.4833694552147605, + "median_abs_rel_error": 0.49690467224685514, + "max_abs_rel_error": 0.7656073975800927, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "a_no_fsa": { "targets": 132, - "mean_capped_abs_rel_error": 0.4853936072525964, - "mean_abs_rel_error": 0.4853936072525964, - "median_abs_rel_error": 0.5197799279471509, - "max_abs_rel_error": 0.8540725426122672, + "mean_capped_abs_rel_error": 0.48083126456504544, + "mean_abs_rel_error": 0.48083126456504544, + "median_abs_rel_error": 0.5106527185986347, + "max_abs_rel_error": 0.7908842397953412, "share_within_5pct": 0.007575757575757576, "share_within_10pct": 0.015151515151515152 }, "b_with_fsa": { "targets": 132, - "mean_capped_abs_rel_error": 0.014560862590153139, - "mean_abs_rel_error": 0.014560862590153139, - "median_abs_rel_error": 0.0008065543440785428, - "max_abs_rel_error": 0.39307427600955613, - "share_within_5pct": 0.9166666666666666, - "share_within_10pct": 0.946969696969697 + "mean_capped_abs_rel_error": 0.007425808689396977, + "mean_abs_rel_error": 0.007425808689396977, + "median_abs_rel_error": 0.0008426317888582139, + "max_abs_rel_error": 0.14264923040127336, + "share_within_5pct": 0.9545454545454546, + "share_within_10pct": 0.9696969696969697 }, "a_no_fsa_l2": { "targets": 132, - "mean_capped_abs_rel_error": 0.48535033733377775, - "mean_abs_rel_error": 0.48535033733377775, - "median_abs_rel_error": 0.4948166370556444, - "max_abs_rel_error": 0.8440389529369043, + "mean_capped_abs_rel_error": 0.48227857779804323, + "mean_abs_rel_error": 0.48227857779804323, + "median_abs_rel_error": 0.4969760375745721, + "max_abs_rel_error": 0.7444172537466162, "share_within_5pct": 0.0, "share_within_10pct": 0.0 }, "b_with_fsa_l2": { "targets": 132, - "mean_capped_abs_rel_error": 0.047228604520970774, - "mean_abs_rel_error": 0.047228604520970774, - "median_abs_rel_error": 0.0020612903923379056, - "max_abs_rel_error": 0.4400383746387212, - "share_within_5pct": 0.7575757575757576, - "share_within_10pct": 0.8106060606060606 + "mean_capped_abs_rel_error": 0.036232548889898734, + "mean_abs_rel_error": 0.036232548889898734, + "median_abs_rel_error": 0.0018792706842900696, + "max_abs_rel_error": 0.3139045998065022, + "share_within_5pct": 0.7803030303030303, + "share_within_10pct": 0.8484848484848485 } }, "non_fsa": { @@ -6902,12 +6903,12 @@ }, "b_with_fsa": { "targets": 6102, - "mean_capped_abs_rel_error": 0.03659399596595239, - "mean_abs_rel_error": 1066.8817379596671, - "median_abs_rel_error": 0.001563054231302004, - "max_abs_rel_error": 5049906.542038025, - "share_within_5pct": 0.9042936742051786, - "share_within_10pct": 0.9331366764995084 + "mean_capped_abs_rel_error": 0.0361566212336172, + "mean_abs_rel_error": 1131.4554335098455, + "median_abs_rel_error": 0.0015093544537426909, + "max_abs_rel_error": 5656263.079775462, + "share_within_5pct": 0.909210095050803, + "share_within_10pct": 0.9347754834480498 }, "a_no_fsa_l2": { "targets": 6102, @@ -6920,12 +6921,12 @@ }, "b_with_fsa_l2": { "targets": 6102, - "mean_capped_abs_rel_error": 0.03830108231700815, - "mean_abs_rel_error": 3486.330837522983, - "median_abs_rel_error": 0.0016303431644860494, - "max_abs_rel_error": 16779088.77414457, - "share_within_5pct": 0.9026548672566371, - "share_within_10pct": 0.9313339888561127 + "mean_capped_abs_rel_error": 0.03853532531745583, + "mean_abs_rel_error": 2825.0197939553364, + "median_abs_rel_error": 0.0015422785494759086, + "max_abs_rel_error": 13148881.339845233, + "share_within_5pct": 0.9005244182235332, + "share_within_10pct": 0.9311701081612586 } } }, @@ -6939,12 +6940,12 @@ "release_error": -0.6903813643747876, "a_no_fsa": 7319973386.135882, "a_no_fsa_error": -0.727126273832504, - "b_with_fsa": 26830170291.67207, - "b_with_fsa_error": 0.00017420214444220154, + "b_with_fsa": 26808967189.14933, + "b_with_fsa_error": -0.0006162064112295516, "a_no_fsa_l2": 7861824948.321693, "a_no_fsa_l2_error": -0.7069271491904168, - "b_with_fsa_l2": 26761191885.11807, - "b_with_fsa_l2_error": -0.0023971726172661505, + "b_with_fsa_l2": 26353710219.39588, + "b_with_fsa_l2_error": -0.017587260696158395, "label": "Federal student loan balance, Alabama", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -6958,12 +6959,12 @@ "release_error": -0.5360314897177794, "a_no_fsa": 1426704301.678284, "a_no_fsa_error": -0.4238331116770651, - "b_with_fsa": 2475213960.5577884, - "b_with_fsa_error": -0.00039810358008114574, + "b_with_fsa": 2471464575.901251, + "b_with_fsa_error": -0.0019122724853979523, "a_no_fsa_l2": 1170441303.297184, "a_no_fsa_l2_error": -0.5273235505829108, - "b_with_fsa_l2": 2250596998.220829, - "b_with_fsa_l2_error": -0.09110846038071461, + "b_with_fsa_l2": 2193760665.995848, + "b_with_fsa_l2_error": -0.11406150863551696, "label": "Federal student loan balance, Alaska", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -6977,12 +6978,12 @@ "release_error": -0.30667047180070894, "a_no_fsa": 14374524481.523855, "a_no_fsa_error": -0.5902300213947765, - "b_with_fsa": 35053912850.65588, - "b_with_fsa_error": -0.0007293015288752018, + "b_with_fsa": 35066330519.24732, + "b_with_fsa_error": -0.0003753150161678959, "a_no_fsa_l2": 18549672333.952885, "a_no_fsa_l2_error": -0.471210414981882, - "b_with_fsa_l2": 35073860168.19914, - "b_with_fsa_l2_error": -0.00016066971824113007, + "b_with_fsa_l2": 34993185254.43467, + "b_with_fsa_l2_error": -0.0024604437197906968, "label": "Federal student loan balance, Arizona", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -6996,12 +6997,12 @@ "release_error": -0.5993911216667636, "a_no_fsa": 6094478515.672241, "a_no_fsa_error": -0.592625242053527, - "b_with_fsa": 14977203966.280058, - "b_with_fsa_error": 0.0011250059850768071, + "b_with_fsa": 14959718370.46382, + "b_with_fsa_error": -4.378808727447918e-05, "a_no_fsa_l2": 6339643300.495238, "a_no_fsa_l2_error": -0.576237630772687, - "b_with_fsa_l2": 14965158199.127192, - "b_with_fsa_l2_error": 0.0003198277461906476, + "b_with_fsa_l2": 14962322112.92789, + "b_with_fsa_l2_error": 0.00013025452413654648, "label": "Federal student loan balance, Arkansas", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7015,12 +7016,12 @@ "release_error": -0.4353571606464688, "a_no_fsa": 99222917648.94727, "a_no_fsa_error": -0.3862824196759251, - "b_with_fsa": 161792542112.51398, - "b_with_fsa_error": 0.0007257376877444164, + "b_with_fsa": 161788395432.2775, + "b_with_fsa_error": 0.000700089474394004, "a_no_fsa_l2": 96827940890.14378, "a_no_fsa_l2_error": -0.40109592623441587, - "b_with_fsa_l2": 161645511804.34976, - "b_with_fsa_l2_error": -0.00018368008688804052, + "b_with_fsa_l2": 161410968339.90344, + "b_with_fsa_l2_error": -0.001634387754950129, "label": "Federal student loan balance, California", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7034,12 +7035,12 @@ "release_error": -0.6003450313176171, "a_no_fsa": 6407928350.978854, "a_no_fsa_error": -0.7908842397953412, - "b_with_fsa": 30629482868.07709, - "b_with_fsa_error": -0.00044019785971988645, + "b_with_fsa": 30589718126.402794, + "b_with_fsa_error": -0.0017378768800061116, "a_no_fsa_l2": 9048426195.06542, "a_no_fsa_l2_error": -0.7047144695137217, - "b_with_fsa_l2": 30579154904.99728, - "b_with_fsa_l2_error": -0.0020825961017943368, + "b_with_fsa_l2": 30581391897.20246, + "b_with_fsa_l2_error": -0.0020095942984132346, "label": "Federal student loan balance, Colorado", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7053,12 +7054,12 @@ "release_error": -0.5975550443753289, "a_no_fsa": 8137232154.214884, "a_no_fsa_error": -0.6016754414169195, - "b_with_fsa": 20396188391.97795, - "b_with_fsa_error": -0.0015889206499066374, + "b_with_fsa": 20456257970.291992, + "b_with_fsa_error": 0.0013515372125151115, "a_no_fsa_l2": 7949052509.370267, "a_no_fsa_l2_error": -0.6108869979445563, - "b_with_fsa_l2": 20408642242.887592, - "b_with_fsa_l2_error": -0.0009792938662253033, + "b_with_fsa_l2": 20335708773.23733, + "b_with_fsa_l2_error": -0.004549450346193112, "label": "Federal student loan balance, Connecticut", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7072,12 +7073,12 @@ "release_error": -0.5469206733738797, "a_no_fsa": 3314536735.821482, "a_no_fsa_error": -0.426332327569658, - "b_with_fsa": 5767939069.362681, - "b_with_fsa_error": -0.0017065899795368808, + "b_with_fsa": 5784345717.216734, + "b_with_fsa_error": 0.0011330115204555174, "a_no_fsa_l2": 2922375039.2808175, "a_no_fsa_l2_error": -0.49420621330441966, - "b_with_fsa_l2": 5443953625.252629, - "b_with_fsa_l2_error": -0.057780783882794465, + "b_with_fsa_l2": 5549913630.703793, + "b_with_fsa_l2_error": -0.039441620813355775, "label": "Federal student loan balance, Delaware", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7091,12 +7092,12 @@ "release_error": -0.6063034893036965, "a_no_fsa": 1487987972.7952225, "a_no_fsa_error": -0.7746565110394107, - "b_with_fsa": 6612942935.0672245, - "b_with_fsa_error": 0.001475590213260506, + "b_with_fsa": 6612600807.761501, + "b_with_fsa_error": 0.0014237778584902433, "a_no_fsa_l2": 2503021020.292594, "a_no_fsa_l2_error": -0.6209381393084348, - "b_with_fsa_l2": 6585928217.061413, - "b_with_fsa_l2_error": -0.0026155657100500637, + "b_with_fsa_l2": 6591845017.209323, + "b_with_fsa_l2_error": -0.0017195151954024644, "label": "Federal student loan balance, District of Columbia", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7110,12 +7111,12 @@ "release_error": -0.6320432396833283, "a_no_fsa": 43915654739.38336, "a_no_fsa_error": -0.6236583155890381, - "b_with_fsa": 116681586925.97028, - "b_with_fsa_error": -7.992083780755853e-05, + "b_with_fsa": 116736175665.97353, + "b_with_fsa_error": 0.0003878854259180606, "a_no_fsa_l2": 42752312555.74102, "a_no_fsa_l2_error": -0.6336277481191116, - "b_with_fsa_l2": 116775842142.25127, - "b_with_fsa_l2_error": 0.0007278131484034279, + "b_with_fsa_l2": 116748160709.34915, + "b_with_fsa_l2_error": 0.0004905930238916919, "label": "Federal student loan balance, Florida", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7129,12 +7130,12 @@ "release_error": -0.5005856756424186, "a_no_fsa": 51937197599.45988, "a_no_fsa_error": -0.32521526054995276, - "b_with_fsa": 77080708767.22499, - "b_with_fsa_error": 0.00145730586468527, + "b_with_fsa": 76973691089.3685, + "b_with_fsa_error": 6.689784872230596e-05, "a_no_fsa_l2": 33255276564.375557, "a_no_fsa_l2_error": -0.5679367742385703, - "b_with_fsa_l2": 76833933283.08115, - "b_with_fsa_l2_error": -0.0017488804231246672, + "b_with_fsa_l2": 76919467646.1718, + "b_with_fsa_l2_error": -0.0006375905272533525, "label": "Federal student loan balance, Georgia", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7148,12 +7149,12 @@ "release_error": -0.356050713924639, "a_no_fsa": 3234391887.406846, "a_no_fsa_error": -0.36023257075897536, - "b_with_fsa": 5050783464.205374, - "b_with_fsa_error": -0.0009476695978095196, + "b_with_fsa": 5047210422.285864, + "b_with_fsa_error": -0.0016544224969605177, "a_no_fsa_l2": 3200088692.978441, "a_no_fsa_l2_error": -0.36701779261154766, - "b_with_fsa_l2": 5050970397.02766, - "b_with_fsa_l2_error": -0.0009106940131190217, + "b_with_fsa_l2": 5060810899.190743, + "b_with_fsa_l2_error": 0.0010357716566189417, "label": "Federal student loan balance, Hawaii", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7167,12 +7168,12 @@ "release_error": -0.2050825914860904, "a_no_fsa": 6406156014.0019655, "a_no_fsa_error": -0.17213062920311797, - "b_with_fsa": 7748045151.830318, - "b_with_fsa_error": 0.0012820872191811616, + "b_with_fsa": 7730724748.640401, + "b_with_fsa_error": -0.0009562334304321907, "a_no_fsa_l2": 6497881632.612452, "a_no_fsa_l2_error": -0.16027690132027492, - "b_with_fsa_l2": 7720575670.2198715, - "b_with_fsa_l2_error": -0.0022678017325165178, + "b_with_fsa_l2": 7725209256.315255, + "b_with_fsa_l2_error": -0.0016690020784128608, "label": "Federal student loan balance, Idaho", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7186,12 +7187,12 @@ "release_error": -0.49322366885129165, "a_no_fsa": 50419679882.95749, "a_no_fsa_error": -0.2516367196853686, - "b_with_fsa": 67420274523.826996, - "b_with_fsa_error": 0.0006977021569418243, + "b_with_fsa": 67191288568.98292, + "b_with_fsa_error": -0.002701063577209848, "a_no_fsa_l2": 47726306623.922005, "a_no_fsa_l2_error": -0.29161360275805964, - "b_with_fsa_l2": 67330447819.77848, - "b_with_fsa_l2_error": -0.0006355670557475003, + "b_with_fsa_l2": 67488438950.88707, + "b_with_fsa_l2_error": 0.001709445078631554, "label": "Federal student loan balance, Illinois", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7205,12 +7206,12 @@ "release_error": -0.20771985735329707, "a_no_fsa": 26440079147.926167, "a_no_fsa_error": -0.1733405699481525, - "b_with_fsa": 31993509587.3095, - "b_with_fsa_error": 0.00028960778954494797, + "b_with_fsa": 32011624817.368282, + "b_with_fsa_error": 0.000855987552323544, "a_no_fsa_l2": 28219572157.449123, "a_no_fsa_l2_error": -0.11770402405116812, - "b_with_fsa_l2": 31982926101.384842, - "b_with_fsa_l2_error": -4.128904300584211e-05, + "b_with_fsa_l2": 32007473057.553585, + "b_with_fsa_l2_error": 0.0007261811556434114, "label": "Federal student loan balance, Indiana", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7224,12 +7225,12 @@ "release_error": -0.6062462060903406, "a_no_fsa": 6530755163.710199, "a_no_fsa_error": -0.5311270252835282, - "b_with_fsa": 13955790723.78515, - "b_with_fsa_error": 0.0019504555219384853, + "b_with_fsa": 13935031027.771067, + "b_with_fsa_error": 0.000460021386783528, "a_no_fsa_l2": 6063778210.086546, "a_no_fsa_l2_error": -0.5646534503111001, - "b_with_fsa_l2": 13949562481.389133, - "b_with_fsa_l2_error": 0.0015033013313017105, + "b_with_fsa_l2": 13915981654.154667, + "b_with_fsa_l2_error": -0.0009076208307104449, "label": "Federal student loan balance, Iowa", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7243,12 +7244,12 @@ "release_error": -0.5214658072534941, "a_no_fsa": 6474851658.732163, "a_no_fsa_error": -0.5209464149353554, - "b_with_fsa": 13510080400.57329, - "b_with_fsa_error": -0.00043232007055550006, + "b_with_fsa": 13543824212.236744, + "b_with_fsa_error": 0.0020642767324497305, "a_no_fsa_l2": 6860563485.1034975, "a_no_fsa_l2_error": -0.49240882937139513, - "b_with_fsa_l2": 13291421302.100718, - "b_with_fsa_l2_error": -0.016610208082711107, + "b_with_fsa_l2": 13493450407.894234, + "b_with_fsa_l2_error": -0.0016627200908797643, "label": "Federal student loan balance, Kansas", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7262,12 +7263,12 @@ "release_error": -0.42589335607970175, "a_no_fsa": 20165450643.839813, "a_no_fsa_error": -0.09514342207939935, - "b_with_fsa": 22286441742.38644, - "b_with_fsa_error": 2.8899190655458413e-05, + "b_with_fsa": 22314459080.32409, + "b_with_fsa_error": 0.0012860827258248237, "a_no_fsa_l2": 13234531030.02615, "a_no_fsa_l2_error": -0.4061450611880215, - "b_with_fsa_l2": 22322353217.981754, - "b_with_fsa_l2_error": 0.0016403055256376908, + "b_with_fsa_l2": 22306388021.44704, + "b_with_fsa_l2_error": 0.0009239211830619413, "label": "Federal student loan balance, Kentucky", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7281,12 +7282,12 @@ "release_error": -0.7656073975800927, "a_no_fsa": 8958222549.400795, "a_no_fsa_error": -0.6540815763422794, - "b_with_fsa": 24612369603.767944, - "b_with_fsa_error": -0.04960252451128392, + "b_with_fsa": 23994270877.394115, + "b_with_fsa_error": -0.07347017637112539, "a_no_fsa_l2": 6618806528.184014, "a_no_fsa_l2_error": -0.7444172537466162, - "b_with_fsa_l2": 19186066461.44083, - "b_with_fsa_l2_error": -0.2591371971465698, + "b_with_fsa_l2": 20361072374.099495, + "b_with_fsa_l2_error": -0.21376478193206117, "label": "Federal student loan balance, Louisiana", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7300,12 +7301,12 @@ "release_error": -0.4201387799160798, "a_no_fsa": 2704436959.992352, "a_no_fsa_error": -0.6087740740449648, - "b_with_fsa": 6912642780.972431, - "b_with_fsa_error": -1.1790701907398764e-05, + "b_with_fsa": 6909087919.380033, + "b_with_fsa_error": -0.0005260397077825749, "a_no_fsa_l2": 3561968557.6793094, "a_no_fsa_l2_error": -0.48472289507360156, - "b_with_fsa_l2": 6906925593.677034, - "b_with_fsa_l2_error": -0.0008388434032971564, + "b_with_fsa_l2": 6895979624.073615, + "b_with_fsa_l2_error": -0.002422295765812383, "label": "Federal student loan balance, Maine", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7319,12 +7320,12 @@ "release_error": -0.6375769127691147, "a_no_fsa": 15245264206.901213, "a_no_fsa_error": -0.615205108137222, - "b_with_fsa": 39609592325.828545, - "b_with_fsa_error": -0.00024239731795683463, + "b_with_fsa": 39619892919.91679, + "b_with_fsa_error": 1.7592665458017697e-05, "a_no_fsa_l2": 14409817959.407259, "a_no_fsa_l2_error": -0.6362920138214196, - "b_with_fsa_l2": 37494325928.837234, - "b_with_fsa_l2_error": -0.05363233490413418, + "b_with_fsa_l2": 39622977525.34854, + "b_with_fsa_l2_error": 9.54490015269082e-05, "label": "Federal student loan balance, Maryland", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7338,12 +7339,12 @@ "release_error": -0.44041119964947284, "a_no_fsa": 16452461292.345823, "a_no_fsa_error": -0.5225696997666677, - "b_with_fsa": 34516532314.100174, - "b_with_fsa_error": 0.0016275433148105606, + "b_with_fsa": 34446011780.137344, + "b_with_fsa_error": -0.0004188763122729745, "a_no_fsa_l2": 18678869072.789906, "a_no_fsa_l2_error": -0.45796206956645186, - "b_with_fsa_l2": 34439519461.45089, - "b_with_fsa_l2_error": -0.0006072754584315262, + "b_with_fsa_l2": 34444639896.7352, + "b_with_fsa_l2_error": -0.0004586866903637051, "label": "Federal student loan balance, Massachusetts", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7357,12 +7358,12 @@ "release_error": -0.38135629809644184, "a_no_fsa": 39511709623.778305, "a_no_fsa_error": -0.28015373361865964, - "b_with_fsa": 55050004783.91376, - "b_with_fsa_error": 0.0029315558678643036, + "b_with_fsa": 54914105943.04848, + "b_with_fsa_error": 0.00045567532171978574, "a_no_fsa_l2": 34510018844.80482, "a_no_fsa_l2_error": -0.3712773136186321, - "b_with_fsa_l2": 54812855209.43429, - "b_with_fsa_l2_error": -0.001388966766778538, + "b_with_fsa_l2": 54900432574.57148, + "b_with_fsa_l2_error": 0.00020656630212171994, "label": "Federal student loan balance, Michigan", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7376,12 +7377,12 @@ "release_error": -0.2636977512948748, "a_no_fsa": 21535103447.70586, "a_no_fsa_error": -0.2410033907301301, - "b_with_fsa": 28381086516.784946, - "b_with_fsa_error": 0.00028070382589131447, + "b_with_fsa": 28405829193.08943, + "b_with_fsa_error": 0.0011527501322844658, "a_no_fsa_l2": 22322137912.622112, "a_no_fsa_l2_error": -0.21326465747070858, - "b_with_fsa_l2": 28328485182.2255, - "b_with_fsa_l2_error": -0.0015732103970257053, + "b_with_fsa_l2": 28385924880.019043, + "b_with_fsa_l2_error": 0.00045123011558445623, "label": "Federal student loan balance, Minnesota", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7395,12 +7396,12 @@ "release_error": -0.5711513345419165, "a_no_fsa": 6281546984.528941, "a_no_fsa_error": -0.6579637175536699, - "b_with_fsa": 18380623786.08274, - "b_with_fsa_error": 0.0008426657191969932, + "b_with_fsa": 18371620725.737057, + "b_with_fsa_error": 0.00035244041341450866, "a_no_fsa_l2": 7908243445.634271, "a_no_fsa_l2_error": -0.5693885287354664, - "b_with_fsa_l2": 18362700075.957542, - "b_with_fsa_l2_error": -0.0001332975576785406, + "b_with_fsa_l2": 18373143044.25435, + "b_with_fsa_l2_error": 0.0004353321226759685, "label": "Federal student loan balance, Mississippi", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7414,12 +7415,12 @@ "release_error": -0.502318719713879, "a_no_fsa": 24720784969.34739, "a_no_fsa_error": -0.21699164216882566, - "b_with_fsa": 31581525503.522835, - "b_with_fsa_error": 0.00031606815799196594, + "b_with_fsa": 31603786446.852547, + "b_with_fsa_error": 0.0010211632713544084, "a_no_fsa_l2": 18404881623.790264, "a_no_fsa_l2_error": -0.4170421305718911, - "b_with_fsa_l2": 31644256754.105305, - "b_with_fsa_l2_error": 0.002303023408975341, + "b_with_fsa_l2": 31631620273.969486, + "b_with_fsa_l2_error": 0.0019027744050629587, "label": "Federal student loan balance, Missouri", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7433,12 +7434,12 @@ "release_error": -0.23514943771175228, "a_no_fsa": 3475871560.07846, "a_no_fsa_error": -0.2513535430806924, - "b_with_fsa": 4648082317.614555, - "b_with_fsa_error": 0.001121675069280253, + "b_with_fsa": 4650965679.018977, + "b_with_fsa_error": 0.0017427044318811937, "a_no_fsa_l2": 3585865186.445833, "a_no_fsa_l2_error": -0.22766269684534388, - "b_with_fsa_l2": 4651496416.217322, - "b_with_fsa_l2_error": 0.0018570166313479177, + "b_with_fsa_l2": 4639144960.137013, + "b_with_fsa_l2_error": -0.0008032870284653866, "label": "Federal student loan balance, Montana", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7452,12 +7453,12 @@ "release_error": -0.5431985620131046, "a_no_fsa": 4310346668.579988, "a_no_fsa_error": -0.4905237829096931, - "b_with_fsa": 8470319798.704548, - "b_with_fsa_error": 0.0011785177387620249, + "b_with_fsa": 8452616131.9912815, + "b_with_fsa_error": -0.0009140279052926283, "a_no_fsa_l2": 3667358079.716547, "a_no_fsa_l2_error": -0.5665240258308273, - "b_with_fsa_l2": 8475414881.873652, - "b_with_fsa_l2_error": 0.0017807485796542417, + "b_with_fsa_l2": 8457702479.336823, + "b_with_fsa_l2_error": -0.0003128296250467037, "label": "Federal student loan balance, Nebraska", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7471,12 +7472,12 @@ "release_error": -0.6040680793393015, "a_no_fsa": 6785694659.741217, "a_no_fsa_error": -0.5017515577540183, - "b_with_fsa": 13611690563.79533, - "b_with_fsa_error": -0.0005439443094549497, + "b_with_fsa": 13612057110.47988, + "b_with_fsa_error": -0.0005170301431470159, "a_no_fsa_l2": 5999569692.54428, "a_no_fsa_l2_error": -0.5594738043267052, - "b_with_fsa_l2": 13613416487.260517, - "b_with_fsa_l2_error": -0.0004172161377517389, + "b_with_fsa_l2": 13418323624.602032, + "b_with_fsa_l2_error": -0.014742162924645134, "label": "Federal student loan balance, Nevada", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7490,12 +7491,12 @@ "release_error": -0.4840570219985823, "a_no_fsa": 2886306850.698022, "a_no_fsa_error": -0.5886048620325364, - "b_with_fsa": 7029204685.237631, - "b_with_fsa_error": 0.0018964652304834218, + "b_with_fsa": 7014849769.041722, + "b_with_fsa_error": -0.00014958982686399204, "a_no_fsa_l2": 3093540109.8373485, "a_no_fsa_l2_error": -0.559067200361376, - "b_with_fsa_l2": 7036638051.617002, - "b_with_fsa_l2_error": 0.0029559682374018835, + "b_with_fsa_l2": 7006948933.132424, + "b_with_fsa_l2_error": -0.0012757228567522913, "label": "Federal student loan balance, New Hampshire", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7509,12 +7510,12 @@ "release_error": -0.5410092345279999, "a_no_fsa": 27529968923.680637, "a_no_fsa_error": -0.4487026222431693, - "b_with_fsa": 49947281032.0454, - "b_with_fsa_error": 0.0002119920798189403, + "b_with_fsa": 49946310516.94556, + "b_with_fsa_error": 0.00019255717122526532, "a_no_fsa_l2": 24229367136.491558, "a_no_fsa_l2_error": -0.5147983419783143, - "b_with_fsa_l2": 49955579711.42538, - "b_with_fsa_l2_error": 0.00037817607347718254, + "b_with_fsa_l2": 50020774343.13383, + "b_with_fsa_l2_error": 0.0016837216628793861, "label": "Federal student loan balance, New Jersey", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7528,12 +7529,12 @@ "release_error": 0.1582162662764211, "a_no_fsa": 4613235872.029221, "a_no_fsa_error": -0.4410908228789688, - "b_with_fsa": 8234345320.702595, - "b_with_fsa_error": -0.0023811279131686135, + "b_with_fsa": 8262377704.333782, + "b_with_fsa_error": 0.001015090468606078, "a_no_fsa_l2": 7389040123.042681, "a_no_fsa_l2_error": -0.10479272045816837, - "b_with_fsa_l2": 8267933083.133599, - "b_with_fsa_l2_error": 0.0016881434578163645, + "b_with_fsa_l2": 8264644910.2367735, + "b_with_fsa_l2_error": 0.0012897701556534745, "label": "Federal student loan balance, New Mexico", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7547,12 +7548,12 @@ "release_error": -0.42711118647972757, "a_no_fsa": 52124200861.321884, "a_no_fsa_error": -0.4942923903913386, - "b_with_fsa": 103035902213.34421, - "b_with_fsa_error": -0.0003484187544307111, + "b_with_fsa": 103017536248.83508, + "b_with_fsa_error": -0.0005266048533366206, "a_no_fsa_l2": 54547866012.753494, "a_no_fsa_l2_error": -0.4707780555915933, - "b_with_fsa_l2": 103182020851.64482, - "b_with_fsa_l2_error": 0.0010692203858003561, + "b_with_fsa_l2": 103282353514.36382, + "b_with_fsa_l2_error": 0.0020426452094113178, "label": "Federal student loan balance, New York", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7566,12 +7567,12 @@ "release_error": -0.46696463648002373, "a_no_fsa": 48480122368.47173, "a_no_fsa_error": -0.15791665915501543, - "b_with_fsa": 57504644114.678856, - "b_with_fsa_error": -0.0011637664165174168, + "b_with_fsa": 57671195685.94808, + "b_with_fsa_error": 0.0017291780874465618, "a_no_fsa_l2": 34429068207.71228, "a_no_fsa_l2_error": -0.40197872113077054, - "b_with_fsa_l2": 57616014873.025154, - "b_with_fsa_l2_error": 0.0007707060162848736, + "b_with_fsa_l2": 57612832761.76091, + "b_with_fsa_l2_error": 0.0007154338190744608, "label": "Federal student loan balance, North Carolina", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7585,12 +7586,12 @@ "release_error": -0.4708708322704962, "a_no_fsa": 1597687235.5602472, "a_no_fsa_error": -0.4264733954762975, - "b_with_fsa": 2780512119.4038277, - "b_with_fsa_error": -0.0018711803005160108, + "b_with_fsa": 2788981149.9050393, + "b_with_fsa_error": 0.00116897311553375, "a_no_fsa_l2": 1551154935.7272978, "a_no_fsa_l2_error": -0.4431772354581648, - "b_with_fsa_l2": 2777661037.886443, - "b_with_fsa_l2_error": -0.0028946416297995505, + "b_with_fsa_l2": 2773979205.15262, + "b_with_fsa_l2_error": -0.004216320228247783, "label": "Federal student loan balance, North Dakota", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7604,12 +7605,12 @@ "release_error": -0.6240029386142569, "a_no_fsa": 17470121320.51231, "a_no_fsa_error": -0.7366638297381641, - "b_with_fsa": 66374014986.05406, - "b_with_fsa_error": 0.0004898415219832135, + "b_with_fsa": 66331341091.249405, + "b_with_fsa_error": -0.00015340415569965252, "a_no_fsa_l2": 22728687525.118156, "a_no_fsa_l2_error": -0.6573987427943595, - "b_with_fsa_l2": 66245320248.19122, - "b_with_fsa_l2_error": -0.0014500407936512737, + "b_with_fsa_l2": 66180873311.48443, + "b_with_fsa_l2_error": -0.0024214827880206973, "label": "Federal student loan balance, Ohio", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7623,12 +7624,12 @@ "release_error": -0.281246697819629, "a_no_fsa": 10383253867.42241, "a_no_fsa_error": -0.4114776921276827, - "b_with_fsa": 17660393277.872272, - "b_with_fsa_error": 0.0009902042784485992, + "b_with_fsa": 17674474115.221878, + "b_with_fsa_error": 0.001788305432438949, "a_no_fsa_l2": 11886606854.101768, "a_no_fsa_l2_error": -0.3262677203246034, - "b_with_fsa_l2": 17646734938.82781, - "b_with_fsa_l2_error": 0.00021605030718043332, + "b_with_fsa_l2": 17679924781.40679, + "b_with_fsa_l2_error": 0.00209724891812715, "label": "Federal student loan balance, Oklahoma", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7642,12 +7643,12 @@ "release_error": -0.545247562962178, "a_no_fsa": 10179588405.868055, "a_no_fsa_error": -0.525657049446769, - "b_with_fsa": 21454809297.19367, - "b_with_fsa_error": -0.0002604093775334622, + "b_with_fsa": 21436642432.949627, + "b_with_fsa_error": -0.001106939084260222, "a_no_fsa_l2": 9771374949.369776, "a_no_fsa_l2_error": -0.5446787591358667, - "b_with_fsa_l2": 21037724665.36161, - "b_with_fsa_l2_error": -0.019695493293065868, + "b_with_fsa_l2": 20871817608.87927, + "b_with_fsa_l2_error": -0.02742634050925297, "label": "Federal student loan balance, Oregon", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7661,12 +7662,12 @@ "release_error": -0.6114456401123416, "a_no_fsa": 19465896307.067608, "a_no_fsa_error": -0.7289242092962145, - "b_with_fsa": 71744872718.35956, - "b_with_fsa_error": -0.0009040532076324508, + "b_with_fsa": 71906924907.07704, + "b_with_fsa_error": 0.001352633281338598, "a_no_fsa_l2": 24605726535.140766, "a_no_fsa_l2_error": -0.657348592063923, - "b_with_fsa_l2": 71747187581.61797, - "b_with_fsa_l2_error": -0.0008718171688574909, + "b_with_fsa_l2": 71929208123.99995, + "b_with_fsa_l2_error": 0.0016629421698437406, "label": "Federal student loan balance, Pennsylvania", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7680,12 +7681,12 @@ "release_error": -0.4686252654277782, "a_no_fsa": 2176596415.4936485, "a_no_fsa_error": -0.5863497408184702, - "b_with_fsa": 5263875034.703326, - "b_with_fsa_error": 0.00037069660908337174, + "b_with_fsa": 5257512643.705235, + "b_with_fsa_error": -0.000838441045762014, "a_no_fsa_l2": 2691609349.0524583, "a_no_fsa_l2_error": -0.48847434603604994, - "b_with_fsa_l2": 5270349409.266033, - "b_with_fsa_l2_error": 0.0016011161286775164, + "b_with_fsa_l2": 5250623074.7391815, + "b_with_fsa_l2_error": -0.0021477659937269335, "label": "Federal student loan balance, Rhode Island", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7699,12 +7700,12 @@ "release_error": -0.461324687305971, "a_no_fsa": 14410561698.18005, "a_no_fsa_error": -0.5551876585648978, - "b_with_fsa": 32364139555.493538, - "b_with_fsa_error": -0.001012660316384923, + "b_with_fsa": 32428590461.096027, + "b_with_fsa_error": 0.0009767526453788589, "a_no_fsa_l2": 13308970803.318764, "a_no_fsa_l2_error": -0.5891905819421818, - "b_with_fsa_l2": 32396998957.20985, - "b_with_fsa_l2_error": 1.6143331199236519e-06, + "b_with_fsa_l2": 32368038792.552895, + "b_with_fsa_l2_error": -0.0008923021511371368, "label": "Federal student loan balance, South Carolina", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7718,12 +7719,12 @@ "release_error": -0.3333516495553755, "a_no_fsa": 1234170472.0986664, "a_no_fsa_error": -0.6767049949448931, - "b_with_fsa": 3817900702.0681767, - "b_with_fsa_error": 0.00011161721939962557, + "b_with_fsa": 3811497142.4410176, + "b_with_fsa_error": -0.001565816238000074, "a_no_fsa_l2": 1812007295.3077776, "a_no_fsa_l2_error": -0.5253387429531815, - "b_with_fsa_l2": 3822040911.749356, - "b_with_fsa_l2_error": 0.0011961587313431834, + "b_with_fsa_l2": 3817731449.3101583, + "b_with_fsa_l2_error": 6.728090403945288e-05, "label": "Federal student loan balance, South Dakota", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7737,12 +7738,12 @@ "release_error": -0.1403193374134611, "a_no_fsa": 34769605752.49541, "a_no_fsa_error": -0.026021803699965523, - "b_with_fsa": 35761120320.657234, - "b_with_fsa_error": 0.001752844582727614, + "b_with_fsa": 35692589708.45849, + "b_with_fsa_error": -0.0001668585780101538, "a_no_fsa_l2": 30871050133.13504, "a_no_fsa_l2_error": -0.13522948920981506, - "b_with_fsa_l2": 35676481508.929726, - "b_with_fsa_l2_error": -0.0006180870225989877, + "b_with_fsa_l2": 35653549416.682495, + "b_with_fsa_l2_error": -0.0012604687051333257, "label": "Federal student loan balance, Tennessee", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7756,12 +7757,12 @@ "release_error": -0.5162968264521527, "a_no_fsa": 44790056660.23969, "a_no_fsa_error": -0.6861045655741989, - "b_with_fsa": 142481713636.5461, - "b_with_fsa_error": -0.0014667822606657264, + "b_with_fsa": 142643010143.84976, + "b_with_fsa_error": -0.00033639214717457166, "a_no_fsa_l2": 58261434459.065056, "a_no_fsa_l2_error": -0.5916951296015462, - "b_with_fsa_l2": 142167584382.1322, - "b_with_fsa_l2_error": -0.0036682471868674875, + "b_with_fsa_l2": 142349128171.56534, + "b_with_fsa_l2_error": -0.0023959610836438924, "label": "Federal student loan balance, Texas", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7775,12 +7776,12 @@ "release_error": -0.38153221896133255, "a_no_fsa": 9180081155.553913, "a_no_fsa_error": -0.19841587239178277, - "b_with_fsa": 11456938901.99899, - "b_with_fsa_error": 0.0003942469793312328, + "b_with_fsa": 11449743822.685226, + "b_with_fsa_error": -0.00023401123288566944, "a_no_fsa_l2": 8635123417.70071, "a_no_fsa_l2_error": -0.24600036162215597, - "b_with_fsa_l2": 11421519291.693113, - "b_with_fsa_l2_error": -0.002698514069963144, + "b_with_fsa_l2": 11454315620.398739, + "b_with_fsa_l2_error": 0.0001651879048659591, "label": "Federal student loan balance, Utah", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7794,12 +7795,12 @@ "release_error": -0.49102506812246033, "a_no_fsa": 1440344540.0485878, "a_no_fsa_error": -0.5186134409589465, - "b_with_fsa": 2990443387.9607286, - "b_with_fsa_error": -0.0005452081007477574, + "b_with_fsa": 2985727800.6757474, + "b_with_fsa_error": -0.002121234026390724, "a_no_fsa_l2": 1557131860.7308598, "a_no_fsa_l2_error": -0.4795812199314925, - "b_with_fsa_l2": 2990330446.8052197, - "b_with_fsa_l2_error": -0.0005829548708523337, + "b_with_fsa_l2": 2985063414.2230296, + "b_with_fsa_l2_error": -0.0023432827789319145, "label": "Federal student loan balance, Vermont", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7813,12 +7814,12 @@ "release_error": -0.49107556607463815, "a_no_fsa": 37926938076.681, "a_no_fsa_error": -0.1920919170311695, - "b_with_fsa": 46938601529.26032, - "b_with_fsa_error": -0.0001282069733297978, + "b_with_fsa": 46864783860.98283, + "b_with_fsa_error": -0.001700648459292222, "a_no_fsa_l2": 30991561331.07694, "a_no_fsa_l2_error": -0.3398272000608487, - "b_with_fsa_l2": 46930881704.749, - "b_with_fsa_l2_error": -0.0002926523237345188, + "b_with_fsa_l2": 46963712141.06357, + "b_with_fsa_l2_error": 0.00040669163101094905, "label": "Federal student loan balance, Virginia", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7832,12 +7833,12 @@ "release_error": -0.47446152427948923, "a_no_fsa": 13418678233.62334, "a_no_fsa_error": -0.5606166504701781, - "b_with_fsa": 30597278433.248566, - "b_with_fsa_error": 0.0018821861910894345, + "b_with_fsa": 30573816068.2637, + "b_with_fsa_error": 0.0011139307537460753, "a_no_fsa_l2": 15409555058.632631, "a_no_fsa_l2_error": -0.49542706080686916, - "b_with_fsa_l2": 30536480400.37366, - "b_with_fsa_l2_error": -0.00010859433619552096, + "b_with_fsa_l2": 30405225413.811913, + "b_with_fsa_l2_error": -0.004406428641029307, "label": "Federal student loan balance, Washington", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7851,12 +7852,12 @@ "release_error": -0.29124891249870805, "a_no_fsa": 6418732596.49032, "a_no_fsa_error": -0.1920506693414669, - "b_with_fsa": 7943173613.461434, - "b_with_fsa_error": -0.00016370711411268655, + "b_with_fsa": 7939686656.872319, + "b_with_fsa_error": -0.0006026230838714822, "a_no_fsa_l2": 5568720614.76688, "a_no_fsa_l2_error": -0.2990447840457781, - "b_with_fsa_l2": 7950260047.3723955, - "b_with_fsa_l2_error": 0.0007282882212667015, + "b_with_fsa_l2": 7934008237.551141, + "b_with_fsa_l2_error": -0.0013173864769209435, "label": "Federal student loan balance, West Virginia", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7870,12 +7871,12 @@ "release_error": -0.5306316510051979, "a_no_fsa": 11762946240.28573, "a_no_fsa_error": -0.5249597183661063, - "b_with_fsa": 24729063748.067917, - "b_with_fsa_error": -0.0013300097221780748, + "b_with_fsa": 24771289952.861736, + "b_with_fsa_error": 0.00037527293472023633, "a_no_fsa_l2": 11028002346.020483, "a_no_fsa_l2_error": -0.5546400337722229, - "b_with_fsa_l2": 24721042889.171913, - "b_with_fsa_l2_error": -0.0016539278113260174, + "b_with_fsa_l2": 24732468542.733322, + "b_with_fsa_l2_error": -0.0011925089138159334, "label": "Federal student loan balance, Wisconsin", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7889,12 +7890,12 @@ "release_error": -0.5694192211507342, "a_no_fsa": 494870181.73740697, "a_no_fsa_error": -0.7335324379877541, - "b_with_fsa": 1852269738.6442573, - "b_with_fsa_error": -0.002627720036083903, + "b_with_fsa": 1861315482.7524452, + "b_with_fsa_error": 0.002243047021718946, "a_no_fsa_l2": 732630963.4736071, "a_no_fsa_l2_error": -0.6055078808626103, - "b_with_fsa_l2": 1854019282.720408, - "b_with_fsa_l2_error": -0.0016856613673476033, + "b_with_fsa_l2": 1860688766.491437, + "b_with_fsa_l2_error": 0.0019055856827512301, "label": "Federal student loan balance, Wyoming", "measure_mode": "sum", "target_role": "fsa_state_balance" @@ -7904,16 +7905,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 694296.9494946192, - "release": 299800.0357116474, - "release_error": -0.5681962365960663, - "a_no_fsa": 254906.42582182933, - "a_no_fsa_error": -0.632856768264103, - "b_with_fsa": 694483.5322279758, - "b_with_fsa_error": 0.00026873621365100455, - "a_no_fsa_l2": 299797.76811949065, - "a_no_fsa_l2_error": -0.5681995026224523, - "b_with_fsa_l2": 695397.115952018, - "b_with_fsa_l2_error": 0.0015845762511265662, + "release": 299660.64127607393, + "release_error": -0.5683970072255138, + "a_no_fsa": 250982.05458416019, + "a_no_fsa_error": -0.6385090633527184, + "b_with_fsa": 693709.0031939199, + "b_with_fsa_error": -0.0008468225319544138, + "a_no_fsa_l2": 306410.7511279846, + "a_no_fsa_l2_error": -0.558674784109275, + "b_with_fsa_l2": 693173.0057164396, + "b_with_fsa_l2_error": -0.0016188228667830212, "label": "Federal student loan borrowers, Alabama", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -7923,16 +7924,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 67443.00187108875, - "release": 42366.78587161263, - "release_error": -0.3718134617941097, - "a_no_fsa": 43515.43716647572, - "a_no_fsa_error": -0.35478202394295, - "b_with_fsa": 67418.91790211126, - "b_with_fsa_error": -0.00035710108253369084, - "a_no_fsa_l2": 41980.073426056544, - "a_no_fsa_l2_error": -0.37754737687539935, - "b_with_fsa_l2": 67404.14819651659, - "b_with_fsa_l2_error": -0.0005760964591467949, + "release": 42677.70625471767, + "release_error": -0.3672033410331842, + "a_no_fsa": 43210.73486786064, + "a_no_fsa_error": -0.3592999470804386, + "b_with_fsa": 67353.68128777898, + "b_with_fsa_error": -0.0013243862347720346, + "a_no_fsa_l2": 41673.647670228405, + "a_no_fsa_l2_error": -0.38209085429080036, + "b_with_fsa_l2": 67484.5392917599, + "b_with_fsa_l2_error": 0.000615889262321645, "label": "Federal student loan borrowers, Alaska", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -7942,16 +7943,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 957899.7521566575, - "release": 568335.6877031331, - "release_error": -0.40668563028275434, - "a_no_fsa": 475179.7178517244, - "a_no_fsa_error": -0.5039358588600906, - "b_with_fsa": 957725.575255287, - "b_with_fsa_error": -0.00018183207687273148, - "a_no_fsa_l2": 539307.0477905545, - "a_no_fsa_l2_error": -0.436990095700166, - "b_with_fsa_l2": 956166.3825352623, - "b_with_fsa_l2_error": -0.001809552218269882, + "release": 581654.414915702, + "release_error": -0.39278153730999543, + "a_no_fsa": 478956.37498008594, + "a_no_fsa_error": -0.49999321546775377, + "b_with_fsa": 956836.4002164718, + "b_with_fsa_error": -0.0011100868726520554, + "a_no_fsa_l2": 553297.2019080565, + "a_no_fsa_l2_error": -0.4223850662218683, + "b_with_fsa_l2": 957195.2962106836, + "b_with_fsa_l2_error": -0.0007354171920264345, "label": "Federal student loan borrowers, Arizona", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -7961,16 +7962,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 427034.4490566302, - "release": 179314.5253595886, - "release_error": -0.5800935363511874, - "a_no_fsa": 166817.65069937953, - "a_no_fsa_error": -0.6093578607817249, - "b_with_fsa": 427506.29944752157, - "b_with_fsa_error": 0.001104946900498879, - "a_no_fsa_l2": 181962.19910459197, - "a_no_fsa_l2_error": -0.5738933954706276, - "b_with_fsa_l2": 377427.4133201107, - "b_with_fsa_l2_error": -0.11616635577318721, + "release": 178289.27660903882, + "release_error": -0.582494393595409, + "a_no_fsa": 163755.74244653623, + "a_no_fsa_error": -0.6165280276373671, + "b_with_fsa": 426374.9395311766, + "b_with_fsa_error": -0.001544394197963533, + "a_no_fsa_l2": 178797.31678355482, + "a_no_fsa_l2_error": -0.5813046999403928, + "b_with_fsa_l2": 380809.2839234371, + "b_with_fsa_l2_error": -0.10824692301829503, "label": "Federal student loan borrowers, Arkansas", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -7980,16 +7981,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 4098338.6950966264, - "release": 2198143.2386865313, - "release_error": -0.4636501757855067, - "a_no_fsa": 2308842.9180286005, - "a_no_fsa_error": -0.43663930929111144, - "b_with_fsa": 4098661.6627751878, - "b_with_fsa_error": 7.880453583491016e-05, - "a_no_fsa_l2": 2161774.9670988857, - "a_no_fsa_l2_error": -0.47252408160279746, - "b_with_fsa_l2": 4098919.7877289956, - "b_with_fsa_l2_error": 0.00014178736205096342, + "release": 2277884.264727672, + "release_error": -0.4441932611736067, + "a_no_fsa": 2437748.7945147986, + "a_no_fsa_error": -0.4051861068897519, + "b_with_fsa": 4232292.789984276, + "b_with_fsa_error": 0.032684974291635735, + "a_no_fsa_l2": 2278339.2428186936, + "a_no_fsa_l2_error": -0.44408224592453377, + "b_with_fsa_l2": 4100983.927414996, + "b_with_fsa_l2_error": 0.00064544014420636, "label": "Federal student loan borrowers, California", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -7999,16 +8000,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 799487.119854798, - "release": 376661.08025454415, - "release_error": -0.5288716091849572, - "a_no_fsa": 287576.0942606446, - "a_no_fsa_error": -0.6402992779760182, - "b_with_fsa": 800729.9598281292, - "b_with_fsa_error": 0.0015545465867629232, - "a_no_fsa_l2": 307584.61437521566, - "a_no_fsa_l2_error": -0.61527258321425, - "b_with_fsa_l2": 797681.0886297452, - "b_with_fsa_l2_error": -0.0022589872684637973, + "release": 334925.6516082026, + "release_error": -0.5810743621873089, + "a_no_fsa": 239763.35545284307, + "a_no_fsa_error": -0.7001035420102969, + "b_with_fsa": 798939.3602070913, + "b_with_fsa_error": -0.0006851388022437729, + "a_no_fsa_l2": 263858.74193744484, + "a_no_fsa_l2_error": -0.6699649870715032, + "b_with_fsa_l2": 750790.6724185708, + "b_with_fsa_l2_error": -0.06090960845632049, "label": "Federal student loan borrowers, Colorado", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8018,16 +8019,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 538916.6382071185, - "release": 200218.24637007577, - "release_error": -0.6284801170062835, - "a_no_fsa": 215616.38640016262, - "a_no_fsa_error": -0.5999077202042219, - "b_with_fsa": 428969.5976222321, - "b_with_fsa_error": -0.20401493067770368, - "a_no_fsa_l2": 214013.55693806882, - "a_no_fsa_l2_error": -0.6028818897667466, - "b_with_fsa_l2": 357504.2636691813, - "b_with_fsa_l2_error": -0.3366241857766063, + "release": 209988.21377416077, + "release_error": -0.6103512141084475, + "a_no_fsa": 227777.42947049078, + "a_no_fsa_error": -0.5773419981460092, + "b_with_fsa": 483745.09216988576, + "b_with_fsa_error": -0.10237491687170548, + "a_no_fsa_l2": 221601.9564159015, + "a_no_fsa_l2_error": -0.5888010487983215, + "b_with_fsa_l2": 389147.53606122656, + "b_with_fsa_l2_error": -0.27790773475494757, "label": "Federal student loan borrowers, Connecticut", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8037,16 +8038,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 144087.5295788532, - "release": 61556.24919973091, - "release_error": -0.5727857269837936, - "a_no_fsa": 66317.03755649159, - "a_no_fsa_error": -0.5397447804794308, - "b_with_fsa": 120919.65323231184, - "b_with_fsa_error": -0.16079029472056097, - "a_no_fsa_l2": 62406.51832883444, - "a_no_fsa_l2_error": -0.5668846671794597, - "b_with_fsa_l2": 109127.87945469712, - "b_with_fsa_l2_error": -0.24262786811834464, + "release": 59671.684939128034, + "release_error": -0.585865028614623, + "a_no_fsa": 65530.429421826695, + "a_no_fsa_error": -0.5452040186033963, + "b_with_fsa": 125863.84569109904, + "b_with_fsa_error": -0.12647648232306657, + "a_no_fsa_l2": 61574.655783796465, + "a_no_fsa_l2_error": -0.5726579811329253, + "b_with_fsa_l2": 113234.4637678388, + "b_with_fsa_l2_error": -0.2141272454402779, "label": "Federal student loan borrowers, Delaware", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8056,16 +8057,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 119828.96146398096, - "release": 56416.39140994997, - "release_error": -0.5291923528277593, - "a_no_fsa": 45141.20927445962, - "a_no_fsa_error": -0.6232863180740451, - "b_with_fsa": 119785.03643302988, - "b_with_fsa_error": -0.000366564396573577, - "a_no_fsa_l2": 54248.57807271926, - "a_no_fsa_l2_error": -0.5472832493084263, - "b_with_fsa_l2": 104429.3575090298, - "b_with_fsa_l2_error": -0.12851320554572349, + "release": 54420.929383690665, + "release_error": -0.5458449383286286, + "a_no_fsa": 42780.832924046605, + "a_no_fsa_error": -0.6429841967969824, + "b_with_fsa": 119567.18203007248, + "b_with_fsa_error": -0.002184609052020925, + "a_no_fsa_l2": 52681.97575140314, + "a_no_fsa_l2_error": -0.5603569028073513, + "b_with_fsa_l2": 98909.04836098025, + "b_with_fsa_l2_error": -0.1745814438130549, "label": "Federal student loan borrowers, District of Columbia", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8075,16 +8076,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 2873071.879708381, - "release": 1015892.0531917681, - "release_error": -0.6464091064457177, - "a_no_fsa": 1177063.23727762, - "a_no_fsa_error": -0.5903119425619477, - "b_with_fsa": 2871818.5061991876, - "b_with_fsa_error": -0.00043624857353743735, - "a_no_fsa_l2": 1067920.583630461, - "a_no_fsa_l2_error": -0.6283000814658156, - "b_with_fsa_l2": 2788689.6803934164, - "b_with_fsa_l2_error": -0.02937002722101381, + "release": 987744.0907100096, + "release_error": -0.6562062725662589, + "a_no_fsa": 1164590.8908740266, + "a_no_fsa_error": -0.5946530613803392, + "b_with_fsa": 2872497.143069222, + "b_with_fsa_error": -0.00020004255487584129, + "a_no_fsa_l2": 1045248.8027810063, + "a_no_fsa_l2_error": -0.6361912104729173, + "b_with_fsa_l2": 2868153.6444381108, + "b_with_fsa_l2_error": -0.0017118385742473491, "label": "Federal student loan borrowers, Florida", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8094,16 +8095,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 1780390.6866031447, - "release": 895114.0233474246, - "release_error": -0.49723730297913615, - "a_no_fsa": 949522.3955900257, - "a_no_fsa_error": -0.466677509192297, - "b_with_fsa": 1780386.0188969283, - "b_with_fsa_error": -2.6217314275881128e-06, - "a_no_fsa_l2": 803541.4362151535, - "a_no_fsa_l2_error": -0.5486712875653984, - "b_with_fsa_l2": 1722438.8033466395, - "b_with_fsa_l2_error": -0.03255009346688574, + "release": 917964.2046790165, + "release_error": -0.4844029394298703, + "a_no_fsa": 963914.0926440267, + "a_no_fsa_error": -0.4585940603390235, + "b_with_fsa": 1780834.4401829597, + "b_with_fsa_error": 0.0002492450579269024, + "a_no_fsa_l2": 823647.3652123755, + "a_no_fsa_l2_error": -0.5373783004988447, + "b_with_fsa_l2": 1780071.9035046534, + "b_with_fsa_l2_error": -0.00017905232873330137, "label": "Federal student loan borrowers, Georgia", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8113,16 +8114,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 126520.98025429054, - "release": 70947.39888146677, - "release_error": -0.43924399938356606, - "a_no_fsa": 79599.67642405552, - "a_no_fsa_error": -0.37085789041413814, - "b_with_fsa": 126441.85415750107, - "b_with_fsa_error": -0.000625399017857988, - "a_no_fsa_l2": 66456.86694286321, - "a_no_fsa_l2_error": -0.4747363891008934, - "b_with_fsa_l2": 114039.10884168, - "b_with_fsa_l2_error": -0.09865455822049128, + "release": 67915.06417929725, + "release_error": -0.4632110497184191, + "a_no_fsa": 69764.40658714753, + "a_no_fsa_error": -0.44859416638307537, + "b_with_fsa": 126285.89632417394, + "b_with_fsa_error": -0.0018580628259764517, + "a_no_fsa_l2": 64639.29631500766, + "a_no_fsa_l2_error": -0.48910215376855937, + "b_with_fsa_l2": 108157.30000517103, + "b_with_fsa_l2_error": -0.14514336050994017, "label": "Federal student loan borrowers, Hawaii", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8132,16 +8133,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 226378.44814094133, - "release": 158278.29524441322, - "release_error": -0.30082436493305015, - "a_no_fsa": 154003.96623277012, - "a_no_fsa_error": -0.3197057074227819, - "b_with_fsa": 226431.91001201037, - "b_with_fsa_error": 0.00023616148758010818, - "a_no_fsa_l2": 163950.43841553634, - "a_no_fsa_l2_error": -0.27576834384224524, - "b_with_fsa_l2": 225792.91301989416, - "b_with_fsa_l2_error": -0.002586532091971147, + "release": 167324.7579832254, + "release_error": -0.26086268654403705, + "a_no_fsa": 169172.3709292193, + "a_no_fsa_error": -0.25270107504273553, + "b_with_fsa": 226231.21690869075, + "b_with_fsa_error": -0.0006503765418469078, + "a_no_fsa_l2": 181779.86312882614, + "a_no_fsa_l2_error": -0.19700897050212343, + "b_with_fsa_l2": 226157.62599715297, + "b_with_fsa_l2_error": -0.0009754556831791697, "label": "Federal student loan borrowers, Idaho", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8151,16 +8152,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 1674573.1394813743, - "release": 809565.178167979, - "release_error": -0.5165543032544363, - "a_no_fsa": 991285.9585066349, - "a_no_fsa_error": -0.40803663027006254, - "b_with_fsa": 1673369.8182155013, - "b_with_fsa_error": -0.0007185838811708813, - "a_no_fsa_l2": 949749.5047120877, - "a_no_fsa_l2_error": -0.4328408342879362, - "b_with_fsa_l2": 1672577.1141575286, - "b_with_fsa_l2_error": -0.001191960671520063, + "release": 832380.2833203801, + "release_error": -0.5029298728760372, + "a_no_fsa": 1021910.9786881235, + "a_no_fsa_error": -0.3897483755146009, + "b_with_fsa": 1673352.8668219256, + "b_with_fsa_error": -0.0007287066958607732, + "a_no_fsa_l2": 966613.6534238599, + "a_no_fsa_l2_error": -0.4227701193611489, + "b_with_fsa_l2": 1676404.375512981, + "b_with_fsa_l2_error": 0.0010935539263301085, "label": "Federal student loan borrowers, Illinois", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8170,16 +8171,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 939496.7004833062, - "release": 566356.36447689, - "release_error": -0.39717045926234895, - "a_no_fsa": 576460.25054115, - "a_no_fsa_error": -0.3864158860328078, - "b_with_fsa": 939405.2568352494, - "b_with_fsa_error": -9.733259096044103e-05, - "a_no_fsa_l2": 606898.8324807318, - "a_no_fsa_l2_error": -0.3540170687469959, - "b_with_fsa_l2": 939250.7203704601, - "b_with_fsa_l2_error": -0.0002618211567103813, + "release": 516324.2498256706, + "release_error": -0.4504246267602032, + "a_no_fsa": 518545.3688982778, + "a_no_fsa_error": -0.44806046830018453, + "b_with_fsa": 939740.9813176465, + "b_with_fsa_error": 0.0002600124451896339, + "a_no_fsa_l2": 554967.514634506, + "a_no_fsa_l2_error": -0.409292747543431, + "b_with_fsa_l2": 921590.4708778339, + "b_with_fsa_l2_error": -0.019059385303067885, "label": "Federal student loan borrowers, Indiana", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8189,16 +8190,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 442718.8680964183, - "release": 197218.28895333974, - "release_error": -0.5545292889789639, - "a_no_fsa": 239760.0103233202, - "a_no_fsa_error": -0.4584373343873303, - "b_with_fsa": 442894.4328439084, - "b_with_fsa_error": 0.0003965603459481866, - "a_no_fsa_l2": 237121.82617376346, - "a_no_fsa_l2_error": -0.464396385016684, - "b_with_fsa_l2": 440443.0390136772, - "b_with_fsa_l2_error": -0.005140573955039584, + "release": 212727.3081598001, + "release_error": -0.5194979850882007, + "a_no_fsa": 250949.0594575115, + "a_no_fsa_error": -0.43316384834346355, + "b_with_fsa": 442913.8595813111, + "b_with_fsa_error": 0.0004404408733046794, + "a_no_fsa_l2": 250320.72003549684, + "a_no_fsa_l2_error": -0.43458312244107855, + "b_with_fsa_l2": 443023.81875494606, + "b_with_fsa_l2_error": 0.0006888133316725294, "label": "Federal student loan borrowers, Iowa", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8208,16 +8209,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 396606.67611944134, - "release": 227691.79277216346, - "release_error": -0.425900252108736, - "a_no_fsa": 222095.53963886944, - "a_no_fsa_error": -0.4400105872852641, - "b_with_fsa": 396315.2545393542, - "b_with_fsa_error": -0.0007347873791196512, - "a_no_fsa_l2": 214203.11757527682, - "a_no_fsa_l2_error": -0.4599104592208937, - "b_with_fsa_l2": 396665.5125893857, - "b_with_fsa_l2_error": 0.00014834967106457526, + "release": 215827.92380567404, + "release_error": -0.45581368947839973, + "a_no_fsa": 218049.09400753595, + "a_no_fsa_error": -0.4502132537429383, + "b_with_fsa": 397535.9239759612, + "b_with_fsa_error": 0.002342996002013927, + "a_no_fsa_l2": 208432.05794180025, + "a_no_fsa_l2_error": -0.4744615497117118, + "b_with_fsa_l2": 396130.97749439033, + "b_with_fsa_l2_error": -0.0011994216277583499, "label": "Federal student loan borrowers, Kansas", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8227,16 +8228,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 643688.5573929029, - "release": 292354.62170012423, - "release_error": -0.5458135485828234, - "a_no_fsa": 324504.3166634888, - "a_no_fsa_error": -0.4958675077621216, - "b_with_fsa": 643650.251584436, - "b_with_fsa_error": -5.950984839936741e-05, - "a_no_fsa_l2": 301880.35810546327, - "a_no_fsa_l2_error": -0.5310148756905777, - "b_with_fsa_l2": 494346.29921860946, - "b_with_fsa_l2_error": -0.23201011802845517, + "release": 292354.8541871355, + "release_error": -0.5458131874034787, + "a_no_fsa": 324504.32223128254, + "a_no_fsa_error": -0.495867499112296, + "b_with_fsa": 612160.1736984606, + "b_with_fsa_error": -0.048980804975219776, + "a_no_fsa_l2": 301880.3890553895, + "a_no_fsa_l2_error": -0.5310148276084332, + "b_with_fsa_l2": 497613.0939798198, + "b_with_fsa_l2_error": -0.2269350009960169, "label": "Federal student loan borrowers, Kentucky", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8246,16 +8247,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 725665.7875741953, - "release": 221291.04275562146, - "release_error": -0.6950510186026985, - "a_no_fsa": 259675.73853040877, - "a_no_fsa_error": -0.6421551863448456, - "b_with_fsa": 725629.7371984279, - "b_with_fsa_error": -4.967903459788707e-05, - "a_no_fsa_l2": 233993.64837005938, - "a_no_fsa_l2_error": -0.6775462583784345, - "b_with_fsa_l2": 608282.6250801478, - "b_with_fsa_l2_error": -0.16175926232714363, + "release": 235996.30097340568, + "release_error": -0.674786513275884, + "a_no_fsa": 283225.0747135389, + "a_no_fsa_error": -0.6097031449418018, + "b_with_fsa": 726299.4927637369, + "b_with_fsa_error": 0.0008732741716540846, + "a_no_fsa_l2": 256063.0052924232, + "a_no_fsa_l2_error": -0.6471336947709663, + "b_with_fsa_l2": 713960.6628359382, + "b_with_fsa_l2_error": -0.01613018684177716, "label": "Federal student loan borrowers, Louisiana", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8265,16 +8266,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 195114.17285496375, - "release": 116910.07783659428, - "release_error": -0.40081196498473604, - "a_no_fsa": 93095.46897704054, - "a_no_fsa_error": -0.5228667009943857, - "b_with_fsa": 163308.59456352112, - "b_with_fsa_error": -0.16301008699703734, - "a_no_fsa_l2": 108179.05777382391, - "a_no_fsa_l2_error": -0.4455602266564317, - "b_with_fsa_l2": 152248.14613778848, - "b_with_fsa_l2_error": -0.2196971449585024, + "release": 118655.57825833226, + "release_error": -0.3918659186970813, + "a_no_fsa": 99175.02384050503, + "a_no_fsa_error": -0.49170774019463037, + "b_with_fsa": 172282.76233563243, + "b_with_fsa_error": -0.11701564363703515, + "a_no_fsa_l2": 111982.83873640902, + "a_no_fsa_l2_error": -0.42606507206603395, + "b_with_fsa_l2": 154282.30177404144, + "b_with_fsa_l2_error": -0.20927168172080607, "label": "Federal student loan borrowers, Maine", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8284,16 +8285,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 880732.4104809002, - "release": 365739.6538204308, - "release_error": -0.5847323778845285, - "a_no_fsa": 361943.6215092178, - "a_no_fsa_error": -0.589042463747203, - "b_with_fsa": 772805.5944849397, - "b_with_fsa_error": -0.12254211916310649, - "a_no_fsa_l2": 333874.00672911014, - "a_no_fsa_l2_error": -0.620913227722814, - "b_with_fsa_l2": 653671.1137734273, - "b_with_fsa_l2_error": -0.2578096298096855, + "release": 395479.93680944823, + "release_error": -0.5509647060751324, + "a_no_fsa": 371602.51136750274, + "a_no_fsa_error": -0.578075580113375, + "b_with_fsa": 880547.3761768811, + "b_with_fsa_error": -0.00021009139872351322, + "a_no_fsa_l2": 358897.6696648419, + "a_no_fsa_l2_error": -0.592500894262679, + "b_with_fsa_l2": 848621.9960669217, + "b_with_fsa_l2_error": -0.0364587632200857, "label": "Federal student loan borrowers, Maryland", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8303,16 +8304,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 941692.5191488765, - "release": 468114.3448217692, - "release_error": -0.5029010687640784, - "a_no_fsa": 410147.2782270547, - "a_no_fsa_error": -0.5644573256271004, - "b_with_fsa": 942708.519186437, - "b_with_fsa_error": 0.0010789084726708423, - "a_no_fsa_l2": 440759.02930515714, - "a_no_fsa_l2_error": -0.531950163835298, - "b_with_fsa_l2": 927633.8535785641, - "b_with_fsa_l2_error": -0.01492914649361233, + "release": 463105.9838920997, + "release_error": -0.5082195361277102, + "a_no_fsa": 403616.63225615665, + "a_no_fsa_error": -0.5713923344947514, + "b_with_fsa": 941438.1084340219, + "b_with_fsa_error": -0.00027016325358997754, + "a_no_fsa_l2": 436880.7444723716, + "a_no_fsa_l2_error": -0.5360685833341498, + "b_with_fsa_l2": 940062.6926380761, + "b_with_fsa_l2_error": -0.00173074169928999, "label": "Federal student loan borrowers, Massachusetts", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8322,16 +8323,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 1440143.3562333419, - "release": 804634.1665122494, - "release_error": -0.4412818952852378, - "a_no_fsa": 819195.9543555847, - "a_no_fsa_error": -0.43117054923048026, - "b_with_fsa": 1441616.8054106089, - "b_with_fsa_error": 0.0010231267400495452, - "a_no_fsa_l2": 835678.0998844506, - "a_no_fsa_l2_error": -0.41972575419842556, - "b_with_fsa_l2": 1438993.9649621507, - "b_with_fsa_l2_error": -0.0007981089286815077, + "release": 799646.8920924211, + "release_error": -0.4447449355431691, + "a_no_fsa": 832618.072858017, + "a_no_fsa_error": -0.42185056143597516, + "b_with_fsa": 1441530.8788826521, + "b_with_fsa_error": 0.0009634614799316413, + "a_no_fsa_l2": 832371.4172312273, + "a_no_fsa_l2_error": -0.42202183301510104, + "b_with_fsa_l2": 1440443.418412031, + "b_with_fsa_l2_error": 0.00020835577054902375, "label": "Federal student loan borrowers, Michigan", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8341,16 +8342,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 807852.1433426848, - "release": 476571.67320094287, - "release_error": -0.4100756219708577, - "a_no_fsa": 489445.0923147265, - "a_no_fsa_error": -0.3941402565455501, - "b_with_fsa": 806822.5739637995, - "b_with_fsa_error": -0.001274452741593567, - "a_no_fsa_l2": 499983.5008711384, - "a_no_fsa_l2_error": -0.3810952845871832, - "b_with_fsa_l2": 769185.2485362334, - "b_with_fsa_l2_error": -0.047863826475049887, + "release": 479453.95315025107, + "release_error": -0.40650779093511635, + "a_no_fsa": 503733.00094023114, + "a_no_fsa_error": -0.3764539648853152, + "b_with_fsa": 809206.1325902689, + "b_with_fsa_error": 0.0016760359661627646, + "a_no_fsa_l2": 505119.2336902238, + "a_no_fsa_l2_error": -0.374738016290741, + "b_with_fsa_l2": 806647.7374346799, + "b_with_fsa_l2_error": -0.0014908741877213327, "label": "Federal student loan borrowers, Minnesota", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8360,16 +8361,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 477120.0271903535, - "release": 212626.79934736033, - "release_error": -0.5543536484949729, - "a_no_fsa": 199675.58613336337, - "a_no_fsa_error": -0.5814982085132635, - "b_with_fsa": 476742.88618800946, - "b_with_fsa_error": -0.0007904530953456713, - "a_no_fsa_l2": 225931.32445887162, - "a_no_fsa_l2_error": -0.5264685790086668, - "b_with_fsa_l2": 446336.73504288524, - "b_with_fsa_l2_error": -0.06451896879857202, + "release": 213184.86340196797, + "release_error": -0.553183997206399, + "a_no_fsa": 208576.32997598476, + "a_no_fsa_error": -0.562843062354265, + "b_with_fsa": 477628.8449341006, + "b_with_fsa_error": 0.0010664355188429093, + "a_no_fsa_l2": 228614.74849744348, + "a_no_fsa_l2_error": -0.5208443673100427, + "b_with_fsa_l2": 476146.89045343356, + "b_with_fsa_l2_error": -0.002039605720704075, "label": "Federal student loan borrowers, Mississippi", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8379,16 +8380,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 864211.4890923233, - "release": 452444.02663447533, - "release_error": -0.4764660822668826, - "a_no_fsa": 553444.2987194873, - "a_no_fsa_error": -0.359596226496865, - "b_with_fsa": 865513.844392145, - "b_with_fsa_error": 0.001506986792306548, - "a_no_fsa_l2": 473297.66625123104, - "a_no_fsa_l2_error": -0.4523358318826182, - "b_with_fsa_l2": 769359.7836815356, - "b_with_fsa_l2_error": -0.10975520067479079, + "release": 472395.4279904787, + "release_error": -0.4533798335791242, + "a_no_fsa": 567762.6380810993, + "a_no_fsa_error": -0.3430281299807559, + "b_with_fsa": 865294.1581226342, + "b_with_fsa_error": 0.001252782500551966, + "a_no_fsa_l2": 479060.16898250865, + "a_no_fsa_l2_error": -0.4456679007060379, + "b_with_fsa_l2": 836071.273417047, + "b_with_fsa_l2_error": -0.03256172364108682, "label": "Federal student loan borrowers, Missouri", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8398,16 +8399,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 132167.37110861426, - "release": 93723.77991366376, - "release_error": -0.2908705142009506, - "a_no_fsa": 86613.87924402698, - "a_no_fsa_error": -0.3446651884083533, - "b_with_fsa": 132178.27686305947, - "b_with_fsa_error": 8.251472624242278e-05, - "a_no_fsa_l2": 94461.3730386145, - "a_no_fsa_l2_error": -0.28528976368163683, - "b_with_fsa_l2": 131896.7122885196, - "b_with_fsa_l2_error": -0.002047849010117872, + "release": 88576.2355027902, + "release_error": -0.32981767920617233, + "a_no_fsa": 81204.4951772178, + "a_no_fsa_error": -0.3855934751816733, + "b_with_fsa": 132440.56308882727, + "b_with_fsa_error": 0.0020670153149108706, + "a_no_fsa_l2": 88555.432440822, + "a_no_fsa_l2_error": -0.32997507858389846, + "b_with_fsa_l2": 129928.2703811863, + "b_with_fsa_l2_error": -0.01694140322718439, "label": "Federal student loan borrowers, Montana", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8417,16 +8418,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 254610.4024125599, - "release": 111990.89588350114, - "release_error": -0.5601479954380031, - "a_no_fsa": 120988.71797550295, - "a_no_fsa_error": -0.5248084256217546, - "b_with_fsa": 255006.2979676402, - "b_with_fsa_error": 0.0015549072281767994, - "a_no_fsa_l2": 105847.61728898739, - "a_no_fsa_l2_error": -0.5842761478477364, - "b_with_fsa_l2": 210698.81449482986, - "b_with_fsa_l2_error": -0.17246580462402933, + "release": 123018.40957040986, + "release_error": -0.5168366712249406, + "a_no_fsa": 144097.4680489754, + "a_no_fsa_error": -0.4340472082696528, + "b_with_fsa": 254409.29194099287, + "b_with_fsa_error": -0.0007898753140539471, + "a_no_fsa_l2": 118509.36669427638, + "a_no_fsa_l2_error": -0.5345462495980473, + "b_with_fsa_l2": 246521.32790952566, + "b_with_fsa_l2_error": -0.031770400684285646, "label": "Federal student loan borrowers, Nebraska", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8436,16 +8437,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 384686.5176492024, - "release": 177125.4308876983, - "release_error": -0.5395590363548434, - "a_no_fsa": 213697.41683693312, - "a_no_fsa_error": -0.4444894556148576, - "b_with_fsa": 384138.0826987667, - "b_with_fsa_error": -0.0014256671998465285, - "a_no_fsa_l2": 196577.2597530539, - "a_no_fsa_l2_error": -0.4889936331683095, - "b_with_fsa_l2": 354481.41929885204, - "b_with_fsa_l2_error": -0.07851873399393353, + "release": 176511.93952379236, + "release_error": -0.5411538189525152, + "a_no_fsa": 215536.58815229477, + "a_no_fsa_error": -0.4397084944140317, + "b_with_fsa": 384459.04303150147, + "b_with_fsa_error": -0.0005913246429612142, + "a_no_fsa_l2": 196478.84747527208, + "a_no_fsa_l2_error": -0.4892494577768328, + "b_with_fsa_l2": 358893.58799715026, + "b_with_fsa_l2_error": -0.06704921661843326, "label": "Federal student loan borrowers, Nevada", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8455,16 +8456,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 196264.3635845482, - "release": 108023.15640722083, - "release_error": -0.4496038178592426, - "a_no_fsa": 103378.03869667342, - "a_no_fsa_error": -0.47327147522561086, - "b_with_fsa": 196627.96152647337, - "b_with_fsa_error": 0.0018525927747883467, - "a_no_fsa_l2": 109232.75153691879, - "a_no_fsa_l2_error": -0.44344072687519404, - "b_with_fsa_l2": 196425.72703209682, - "b_with_fsa_l2_error": 0.000822173952527579, + "release": 104937.6029087654, + "release_error": -0.465325232802339, + "a_no_fsa": 96431.86279789588, + "a_no_fsa_error": -0.5086634117540434, + "b_with_fsa": 196351.78983107032, + "b_with_fsa_error": 0.00044545145601253673, + "a_no_fsa_l2": 104240.58703961143, + "a_no_fsa_l2_error": -0.4688766460921679, + "b_with_fsa_l2": 190749.64602120363, + "b_with_fsa_l2_error": -0.0280984151306149, "label": "Federal student loan borrowers, New Hampshire", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8474,16 +8475,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 1291873.3149105452, - "release": 447680.0737567185, - "release_error": -0.6534644159069748, - "a_no_fsa": 536509.793996977, - "a_no_fsa_error": -0.5847040202745211, - "b_with_fsa": 1292954.816786841, - "b_with_fsa_error": 0.0008371578418822474, - "a_no_fsa_l2": 483073.4538047429, - "a_no_fsa_l2_error": -0.6260674725383635, - "b_with_fsa_l2": 1074578.4850136566, - "b_with_fsa_l2_error": -0.16820134558777158, + "release": 450355.9164135196, + "release_error": -0.6513931271622372, + "a_no_fsa": 629604.7621387488, + "a_no_fsa_error": -0.512642025443226, + "b_with_fsa": 1308724.524122396, + "b_with_fsa_error": 0.013044010598684454, + "a_no_fsa_l2": 519951.8635219385, + "a_no_fsa_l2_error": -0.5975210126869583, + "b_with_fsa_l2": 1217375.8839798425, + "b_with_fsa_l2_error": -0.05766620462770471, "label": "Federal student loan borrowers, New Jersey", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8493,16 +8494,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 236311.9135328071, - "release": 147762.47310640148, - "release_error": -0.3747142456874581, - "a_no_fsa": 85696.705118071, - "a_no_fsa_error": -0.6373576607420017, - "b_with_fsa": 235941.97409305436, - "b_with_fsa_error": -0.0015654709668346525, - "a_no_fsa_l2": 123886.99020482403, - "a_no_fsa_l2_error": -0.47574801306991726, - "b_with_fsa_l2": 191802.20980418823, - "b_with_fsa_l2_error": -0.18835150146773966, + "release": 153771.50269997696, + "release_error": -0.34928586375045834, + "a_no_fsa": 88407.74323607699, + "a_no_fsa_error": -0.6258853736385857, + "b_with_fsa": 236428.14745450986, + "b_with_fsa_error": 0.0004918665333671835, + "a_no_fsa_l2": 130651.11037340286, + "a_no_fsa_l2_error": -0.4471243179397953, + "b_with_fsa_l2": 233313.52656264952, + "b_with_fsa_l2_error": -0.012688259873708502, "label": "Federal student loan borrowers, New Mexico", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8512,16 +8513,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 2568689.587542894, - "release": 1236861.9475659486, - "release_error": -0.5184852410488877, - "a_no_fsa": 1188613.9679541558, - "a_no_fsa_error": -0.5372683512564332, - "b_with_fsa": 2565691.4335756493, - "b_with_fsa_error": -0.0011671920117496428, - "a_no_fsa_l2": 1275810.6740325857, - "a_no_fsa_l2_error": -0.5033223631925976, - "b_with_fsa_l2": 2566339.7670112867, - "b_with_fsa_l2_error": -0.0009147934974326285, + "release": 1218896.422932909, + "release_error": -0.5254792837390457, + "a_no_fsa": 1190028.7824702621, + "a_no_fsa_error": -0.5367175589291051, + "b_with_fsa": 2569075.85121198, + "b_with_fsa_error": 0.000150373821328734, + "a_no_fsa_l2": 1252071.5644215113, + "a_no_fsa_l2_error": -0.5125640830664974, + "b_with_fsa_l2": 2571667.2342337165, + "b_with_fsa_l2_error": 0.0011592084560404087, "label": "Federal student loan borrowers, New York", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8531,16 +8532,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 1442234.6121053135, - "release": 763658.810431207, - "release_error": -0.4705030623856337, - "a_no_fsa": 955791.6462242447, - "a_no_fsa_error": -0.3372842128445245, - "b_with_fsa": 1441043.2246505758, - "b_with_fsa_error": -0.0008260704914012146, - "a_no_fsa_l2": 815912.7335369833, - "a_no_fsa_l2_error": -0.43427183990131246, - "b_with_fsa_l2": 1441452.2256166337, - "b_with_fsa_l2_error": -0.000542482119145443, + "release": 732860.7559010923, + "release_error": -0.4918574621979894, + "a_no_fsa": 950046.3765895162, + "a_no_fsa_error": -0.3412678016354923, + "b_with_fsa": 1444188.4760409745, + "b_with_fsa_error": 0.0013547476390189167, + "a_no_fsa_l2": 789713.1773550404, + "a_no_fsa_l2_error": -0.45243778597003, + "b_with_fsa_l2": 1441384.317157992, + "b_with_fsa_l2_error": -0.0005895677029136763, "label": "Federal student loan borrowers, North Carolina", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8550,16 +8551,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 92433.5095411511, - "release": 54708.78443065691, - "release_error": -0.408128235071495, - "a_no_fsa": 68206.21058721757, - "a_no_fsa_error": -0.2621051507640485, - "b_with_fsa": 92301.94850124199, - "b_with_fsa_error": -0.0014233046063293604, - "a_no_fsa_l2": 59660.234957100474, - "a_no_fsa_l2_error": -0.35456053488329436, - "b_with_fsa_l2": 92239.67932013402, - "b_with_fsa_l2_error": -0.00209696918335431, + "release": 52350.8952984563, + "release_error": -0.43363726468538066, + "a_no_fsa": 64873.14637728784, + "a_no_fsa_error": -0.2981641971691389, + "b_with_fsa": 92390.57551640531, + "b_with_fsa_error": -0.0004644854983751701, + "a_no_fsa_l2": 56985.539826573906, + "a_no_fsa_l2_error": -0.3834969578732253, + "b_with_fsa_l2": 86386.39187795504, + "b_with_fsa_l2_error": -0.06542127084879211, "label": "Federal student loan borrowers, North Dakota", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8569,16 +8570,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 1851597.9490437824, - "release": 706814.7435384409, - "release_error": -0.6182677001216922, - "a_no_fsa": 520187.16973959334, - "a_no_fsa_error": -0.7190604094111075, - "b_with_fsa": 1609889.715113531, - "b_with_fsa_error": -0.13054034438473877, - "a_no_fsa_l2": 624257.7585592739, - "a_no_fsa_l2_error": -0.6628545852075185, - "b_with_fsa_l2": 1436806.627315834, - "b_with_fsa_l2_error": -0.22401802828857015, + "release": 699900.1151267327, + "release_error": -0.6220021114798809, + "a_no_fsa": 507458.0975874492, + "a_no_fsa_error": -0.7259350509382909, + "b_with_fsa": 1754220.3502949593, + "b_with_fsa_error": -0.052591113961382226, + "a_no_fsa_l2": 613615.6535971871, + "a_no_fsa_l2_error": -0.6686021099158833, + "b_with_fsa_l2": 1569951.7287603493, + "b_with_fsa_l2_error": -0.15210981435191326, "label": "Federal student loan borrowers, Ohio", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8588,16 +8589,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 534002.1869079849, - "release": 320838.68124943797, - "release_error": -0.3991809600871122, - "a_no_fsa": 276824.98737939657, - "a_no_fsa_error": -0.48160327023698707, - "b_with_fsa": 533733.4956403348, - "b_with_fsa_error": -0.0005031651072552771, - "a_no_fsa_l2": 296473.55681708595, - "a_no_fsa_l2_error": -0.44480834707111044, - "b_with_fsa_l2": 532758.6863892084, - "b_with_fsa_l2_error": -0.002328643120315061, + "release": 315479.7158029133, + "release_error": -0.40921643480596026, + "a_no_fsa": 256420.86088079162, + "a_no_fsa_error": -0.5198130884715345, + "b_with_fsa": 534087.7838574765, + "b_with_fsa_error": 0.00016029325645139963, + "a_no_fsa_l2": 278947.38529185636, + "a_no_fsa_l2_error": -0.4776287585879823, + "b_with_fsa_l2": 485430.2466151658, + "b_with_fsa_l2_error": -0.09095831718230145, "label": "Federal student loan borrowers, Oklahoma", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8607,16 +8608,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 550627.6710901603, - "release": 297551.15767216764, - "release_error": -0.4596145938632889, - "a_no_fsa": 322529.2728418437, - "a_no_fsa_error": -0.41425160816330914, - "b_with_fsa": 550760.036233989, - "b_with_fsa_error": 0.00024038956045694063, - "a_no_fsa_l2": 320994.110383276, - "a_no_fsa_l2_error": -0.417039630885684, - "b_with_fsa_l2": 551859.915750035, - "b_with_fsa_l2_error": 0.002237890909904773, + "release": 312082.1217905176, + "release_error": -0.43322477569526835, + "a_no_fsa": 348077.4974950408, + "a_no_fsa_error": -0.3678532413638066, + "b_with_fsa": 551112.3638620565, + "b_with_fsa_error": 0.0008802550204871383, + "a_no_fsa_l2": 332063.10531135707, + "a_no_fsa_l2_error": -0.3969371269447431, + "b_with_fsa_l2": 550032.7004637301, + "b_with_fsa_l2_error": -0.0010805316508198139, "label": "Federal student loan borrowers, Oregon", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8626,16 +8627,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 1938489.6305242085, - "release": 698545.2568212012, - "release_error": -0.6396445738880224, - "a_no_fsa": 537921.4321204484, - "a_no_fsa_error": -0.7225048699512604, - "b_with_fsa": 1938329.727568864, - "b_with_fsa_error": -8.248842440359311e-05, - "a_no_fsa_l2": 646670.5828192894, - "a_no_fsa_l2_error": -0.6664049306034121, - "b_with_fsa_l2": 1932296.3638556004, - "b_with_fsa_l2_error": -0.0031948928542544688, + "release": 633413.2224533451, + "release_error": -0.6732439459673267, + "a_no_fsa": 491519.81022400304, + "a_no_fsa_error": -0.7464418676869138, + "b_with_fsa": 1962094.9843020402, + "b_with_fsa_error": 0.012177188573068749, + "a_no_fsa_l2": 596122.0124541493, + "a_no_fsa_l2_error": -0.6924811961501464, + "b_with_fsa_l2": 1751886.1017661775, + "b_with_fsa_l2_error": -0.09626233012532007, "label": "Federal student loan borrowers, Pennsylvania", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8645,16 +8646,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 156530.50201708506, - "release": 91440.35154731626, - "release_error": -0.41583045879878616, - "a_no_fsa": 67193.49636949998, - "a_no_fsa_error": -0.5707322502411325, - "b_with_fsa": 156676.35780594032, - "b_with_fsa_error": 0.0009318042616341992, - "a_no_fsa_l2": 83389.41659921774, - "a_no_fsa_l2_error": -0.46726410811538877, - "b_with_fsa_l2": 143822.69678447698, - "b_with_fsa_l2_error": -0.0811842105458848, + "release": 91242.25816610051, + "release_error": -0.41709598455040053, + "a_no_fsa": 70033.98409757929, + "a_no_fsa_error": -0.5525857056924587, + "b_with_fsa": 156520.36278757596, + "b_with_fsa_error": -6.47747843292529e-05, + "a_no_fsa_l2": 85690.9845588893, + "a_no_fsa_l2_error": -0.4525604693356426, + "b_with_fsa_l2": 146908.43408377256, + "b_with_fsa_l2_error": -0.061470881453266325, "label": "Federal student loan borrowers, Rhode Island", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8664,16 +8665,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 817994.7343217478, - "release": 307285.4899877888, - "release_error": -0.6243429485611799, - "a_no_fsa": 272654.13553604257, - "a_no_fsa_error": -0.666679840228901, - "b_with_fsa": 817209.1264704542, - "b_with_fsa_error": -0.0009604069785914143, - "a_no_fsa_l2": 268421.8042701504, - "a_no_fsa_l2_error": -0.671853872638048, - "b_with_fsa_l2": 704813.5760368434, - "b_with_fsa_l2_error": -0.13836416487295636, + "release": 307173.6792835799, + "release_error": -0.6244796373435368, + "a_no_fsa": 272650.71166897507, + "a_no_fsa_error": -0.6666840259124072, + "b_with_fsa": 819067.3598882724, + "b_with_fsa_error": 0.0013112866397776422, + "a_no_fsa_l2": 268405.89401339646, + "a_no_fsa_l2_error": -0.6718733229548854, + "b_with_fsa_l2": 667052.5589610499, + "b_with_fsa_l2_error": -0.18452707459767917, "label": "Federal student loan borrowers, South Carolina", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8683,16 +8684,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 122024.78012955129, - "release": 49228.630249451584, - "release_error": -0.596568580601526, - "a_no_fsa": 36584.26075481092, - "a_no_fsa_error": -0.7001899063782772, - "b_with_fsa": 122015.55896799649, - "b_with_fsa_error": -7.556794238850849e-05, - "a_no_fsa_l2": 45954.48305721645, - "a_no_fsa_l2_error": -0.6234004027015866, - "b_with_fsa_l2": 82771.49356563347, - "b_with_fsa_l2_error": -0.32168291163682805, + "release": 49540.153662184995, + "release_error": -0.5940156285502896, + "a_no_fsa": 35771.798877450055, + "a_no_fsa_error": -0.7068480775833249, + "b_with_fsa": 121938.80396197141, + "b_with_fsa_error": -0.000704579573825913, + "a_no_fsa_l2": 44992.553603884146, + "a_no_fsa_l2_error": -0.6312834691763719, + "b_with_fsa_l2": 83720.64035650807, + "b_with_fsa_l2_error": -0.3139045998065022, "label": "Federal student loan borrowers, South Dakota", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8702,16 +8703,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 935732.439913757, - "release": 618646.4720275834, - "release_error": -0.3388639255847518, - "a_no_fsa": 723231.4766187513, - "a_no_fsa_error": -0.2270958601313332, - "b_with_fsa": 935922.0496568226, - "b_with_fsa_error": 0.00020263243527500832, - "a_no_fsa_l2": 671009.0567532815, - "a_no_fsa_l2_error": -0.2829049970575714, - "b_with_fsa_l2": 934369.1426269347, - "b_with_fsa_l2_error": -0.0014569306659369362, + "release": 645573.8122887461, + "release_error": -0.3100871736922509, + "a_no_fsa": 728891.3907266264, + "a_no_fsa_error": -0.22104721431501767, + "b_with_fsa": 935830.8960656659, + "b_with_fsa_error": 0.00010521827363163767, + "a_no_fsa_l2": 686034.6483909406, + "a_no_fsa_l2_error": -0.2668474244045981, + "b_with_fsa_l2": 935468.3979634753, + "b_with_fsa_l2_error": -0.0002821767623082996, "label": "Federal student loan borrowers, Tennessee", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8721,16 +8722,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 4130021.2215569983, - "release": 1916757.9539955892, - "release_error": -0.5358963426166172, - "a_no_fsa": 1897197.4901693538, - "a_no_fsa_error": -0.5406325080687795, - "b_with_fsa": 4126692.5204542256, - "b_with_fsa_error": -0.0008059767551310119, - "a_no_fsa_l2": 2041199.1526389704, - "a_no_fsa_l2_error": -0.5057654566071581, - "b_with_fsa_l2": 4120079.529044153, - "b_with_fsa_l2_error": -0.0024071771014041385, + "release": 1799115.9671694795, + "release_error": -0.5643809388245173, + "a_no_fsa": 1741322.477649456, + "a_no_fsa_error": -0.5783744479179732, + "b_with_fsa": 4130654.202216061, + "b_with_fsa_error": 0.00015326329457064576, + "a_no_fsa_l2": 1899360.1455814794, + "a_no_fsa_l2_error": -0.5401088653812219, + "b_with_fsa_l2": 4124040.786020423, + "b_with_fsa_l2_error": -0.0014480399048218226, "label": "Federal student loan borrowers, Texas", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8740,16 +8741,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 327595.23234437377, - "release": 229731.67029358065, - "release_error": -0.29873316943732947, - "a_no_fsa": 277394.9378901126, - "a_no_fsa_error": -0.15323878218560208, - "b_with_fsa": 327687.50281895587, - "b_with_fsa_error": 0.00028166000439560523, - "a_no_fsa_l2": 274030.51342209865, - "a_no_fsa_l2_error": -0.16350884760730267, - "b_with_fsa_l2": 327472.09163601685, - "b_with_fsa_l2_error": -0.0003758928586221714, + "release": 239327.1041554662, + "release_error": -0.26944265201063305, + "a_no_fsa": 276269.96170826943, + "a_no_fsa_error": -0.1566728253912753, + "b_with_fsa": 327596.74386875663, + "b_with_fsa_error": 4.6139999414683845e-06, + "a_no_fsa_l2": 277588.3219229197, + "a_no_fsa_l2_error": -0.15264846824414688, + "b_with_fsa_l2": 328132.9212201755, + "b_with_fsa_l2_error": 0.0016413208212887453, "label": "Federal student loan borrowers, Utah", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8759,16 +8760,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 78212.96961174325, - "release": 49096.742670000946, - "release_error": -0.37226852638735075, - "a_no_fsa": 49036.670480560766, - "a_no_fsa_error": -0.3730365855690745, - "b_with_fsa": 78111.57172707091, - "b_with_fsa_error": -0.0012964331258061412, - "a_no_fsa_l2": 49998.66037156169, - "a_no_fsa_l2_error": -0.3607369644732852, - "b_with_fsa_l2": 78189.04472003297, - "b_with_fsa_l2_error": -0.00030589417367793154, + "release": 50912.25411705035, + "release_error": -0.3490561172937979, + "a_no_fsa": 53366.81503613847, + "a_no_fsa_error": -0.31767307518105364, + "b_with_fsa": 78213.34278720869, + "b_with_fsa_error": 4.771273451143926e-06, + "a_no_fsa_l2": 52194.206952528504, + "a_no_fsa_l2_error": -0.3326655769289211, + "b_with_fsa_l2": 78166.88342238525, + "b_with_fsa_l2_error": -0.0005892397333431619, "label": "Federal student loan borrowers, Vermont", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8778,16 +8779,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 1135029.1245126643, - "release": 491786.82450325566, - "release_error": -0.5667187617635723, - "a_no_fsa": 510461.6787403574, - "a_no_fsa_error": -0.5502655678905781, - "b_with_fsa": 1134113.0062613555, - "b_with_fsa_error": -0.0008071319330260737, - "a_no_fsa_l2": 492104.577104254, - "a_no_fsa_l2_error": -0.5664388107084531, - "b_with_fsa_l2": 949575.3378936852, - "b_with_fsa_l2_error": -0.16339121403479884, + "release": 542755.0749534387, + "release_error": -0.5218139665037442, + "a_no_fsa": 569479.9936513162, + "a_no_fsa_error": -0.49826838681709784, + "b_with_fsa": 1134849.7671768656, + "b_with_fsa_error": -0.00015802002955270773, + "a_no_fsa_l2": 542429.336726996, + "a_no_fsa_l2_error": -0.5221009531716702, + "b_with_fsa_l2": 1018857.8548157496, + "b_with_fsa_l2_error": -0.10235091522148734, "label": "Federal student loan borrowers, Virginia", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8797,16 +8798,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 811511.8411186354, - "release": 510863.37442847824, - "release_error": -0.37047945754645517, - "a_no_fsa": 398849.4271570374, - "a_no_fsa_error": -0.5085106501868906, - "b_with_fsa": 812133.6122421519, - "b_with_fsa_error": 0.0007661886025709792, - "a_no_fsa_l2": 467944.96517448215, - "a_no_fsa_l2_error": -0.4233664359974841, - "b_with_fsa_l2": 810895.3765560483, - "b_with_fsa_l2_error": -0.0007596494978278073, + "release": 507889.2370290313, + "release_error": -0.3741443916222749, + "a_no_fsa": 394762.047958978, + "a_no_fsa_error": -0.5135473964066687, + "b_with_fsa": 811796.2032889295, + "b_with_fsa_error": 0.00035041037713285685, + "a_no_fsa_l2": 465432.98256615526, + "a_no_fsa_l2_error": -0.4264618715549791, + "b_with_fsa_l2": 809697.7502269795, + "b_with_fsa_l2_error": -0.0022354459907266847, "label": "Federal student loan borrowers, Washington", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8816,16 +8817,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 238716.85778557463, - "release": 99508.45676311901, - "release_error": -0.5831527874227398, - "a_no_fsa": 111061.67787886404, - "a_no_fsa_error": -0.5347556142070862, - "b_with_fsa": 227133.7313928928, - "b_with_fsa_error": -0.04852244831023314, - "a_no_fsa_l2": 105666.50272157288, - "a_no_fsa_l2_error": -0.5573563438218221, - "b_with_fsa_l2": 160974.66074490198, - "b_with_fsa_l2_error": -0.3256669753524651, + "release": 97732.96010272118, + "release_error": -0.5905904551135263, + "a_no_fsa": 110575.54385047755, + "a_no_fsa_error": -0.5367920603671774, + "b_with_fsa": 234182.8693783432, + "b_with_fsa_error": -0.018993163906773802, + "a_no_fsa_l2": 104566.58420353933, + "a_no_fsa_l2_error": -0.561963971989505, + "b_with_fsa_l2": 165128.69949564617, + "b_with_fsa_l2_error": -0.30826544456289884, "label": "Federal student loan borrowers, West Virginia", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8835,16 +8836,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 741454.769407582, - "release": 324174.02055824467, - "release_error": -0.5627865192407383, - "a_no_fsa": 294341.44872453704, - "a_no_fsa_error": -0.6030217069616881, - "b_with_fsa": 740807.4440121755, - "b_with_fsa_error": -0.0008730477193149163, - "a_no_fsa_l2": 318365.06399301125, - "a_no_fsa_l2_error": -0.570621058588128, - "b_with_fsa_l2": 740101.4577246602, - "b_with_fsa_l2_error": -0.0018252113800591267, + "release": 322917.9462745847, + "release_error": -0.5644805865466423, + "a_no_fsa": 325050.34774435166, + "a_no_fsa_error": -0.5616046168209762, + "b_with_fsa": 741855.6392019944, + "b_with_fsa_error": 0.0005406530660429796, + "a_no_fsa_l2": 320358.33044854907, + "a_no_fsa_l2_error": -0.5679327402472393, + "b_with_fsa_l2": 740078.8021415732, + "b_with_fsa_l2_error": -0.0018557669635171808, "label": "Federal student loan borrowers, Wisconsin", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8854,16 +8855,16 @@ "family": "ed_fsa/fsa_state_borrowers", "is_fsa": true, "target": 57300.4108920258, - "release": 35036.212167585065, - "release_error": -0.38855216529588843, - "a_no_fsa": 27384.6977594811, - "a_no_fsa_error": -0.5220854906069777, - "b_with_fsa": 57267.86581131417, - "b_with_fsa_error": -0.0005679729028986365, - "a_no_fsa_l2": 31449.305982432343, - "a_no_fsa_l2_error": -0.4511504281933696, - "b_with_fsa_l2": 57299.987248917, - "b_with_fsa_l2_error": -7.393369475091375e-06, + "release": 33514.1781105738, + "release_error": -0.4151145238081043, + "a_no_fsa": 25898.06076214302, + "a_no_fsa_error": -0.5480301038164611, + "b_with_fsa": 57400.11392044902, + "b_with_fsa_error": 0.0017400054706604563, + "a_no_fsa_l2": 30505.306398660698, + "a_no_fsa_l2_error": -0.4676249973818955, + "b_with_fsa_l2": 56979.63773040034, + "b_with_fsa_l2_error": -0.005598095312613209, "label": "Federal student loan borrowers, Wyoming", "measure_mode": "indicator_sum", "target_role": "fsa_state_borrowers" @@ -8873,16 +8874,16 @@ "family": "ed_fsa/fsa_age_band_balance", "is_fsa": true, "target": 84895672115.86523, - "release": 21842938479.954216, - "release_error": -0.742708456914705, - "a_no_fsa": 21232149847.622253, - "a_no_fsa_error": -0.7499030360623719, - "b_with_fsa": 84808630393.55034, - "b_with_fsa_error": -0.0010252786761155677, - "a_no_fsa_l2": 21299604016.966805, - "a_no_fsa_l2_error": -0.7491084823747293, - "b_with_fsa_l2": 81952391366.12189, - "b_with_fsa_l2_error": -0.03466938509805742, + "release": 52137719851.71084, + "release_error": -0.3858612747590536, + "a_no_fsa": 49206544277.22551, + "a_no_fsa_error": -0.4203880710188779, + "b_with_fsa": 84882138103.32043, + "b_with_fsa_error": -0.00015941934621035387, + "a_no_fsa_l2": 51889788626.98698, + "a_no_fsa_l2_error": -0.3887816971851283, + "b_with_fsa_l2": 84815498325.316, + "b_with_fsa_l2_error": -0.0009443801851267433, "label": "Federal student loan balance, borrower age 24 and Younger", "measure_mode": "sum", "target_role": "fsa_age_band_balance" @@ -8892,16 +8893,16 @@ "family": "ed_fsa/fsa_age_band_balance", "is_fsa": true, "target": 461967337284.6965, - "release": 193476903657.1365, - "release_error": -0.5811892139510665, - "a_no_fsa": 192059518681.89603, - "a_no_fsa_error": -0.5842573637115483, - "b_with_fsa": 461409165880.1488, - "b_with_fsa_error": -0.0012082486346944575, - "a_no_fsa_l2": 191936493129.4715, - "a_no_fsa_l2_error": -0.5845236716136344, - "b_with_fsa_l2": 454068712547.75836, - "b_with_fsa_l2_error": -0.01709779912875188, + "release": 216227118967.37558, + "release_error": -0.5319428420236529, + "a_no_fsa": 206275290709.3648, + "a_no_fsa_error": -0.5534851188359154, + "b_with_fsa": 461883537967.0942, + "b_with_fsa_error": -0.00018139662880679364, + "a_no_fsa_l2": 212518802627.94098, + "a_no_fsa_l2_error": -0.5399700682800176, + "b_with_fsa_l2": 460842333166.1418, + "b_with_fsa_l2_error": -0.0024352460179698407, "label": "Federal student loan balance, borrower age 25 to 34", "measure_mode": "sum", "target_role": "fsa_age_band_balance" @@ -8911,16 +8912,16 @@ "family": "ed_fsa/fsa_age_band_balance", "is_fsa": true, "target": 679462908488.0756, - "release": 347912852480.123, - "release_error": -0.48795902155381776, - "a_no_fsa": 344745881287.4997, - "a_no_fsa_error": -0.4926200135712781, - "b_with_fsa": 679022261233.7264, - "b_with_fsa_error": -0.000648522897783543, - "a_no_fsa_l2": 341565055560.9475, - "a_no_fsa_l2_error": -0.49730139600851825, - "b_with_fsa_l2": 679614898831.1836, - "b_with_fsa_l2_error": 0.00022369189135906987, + "release": 353428881766.99976, + "release_error": -0.4798408016804903, + "a_no_fsa": 349592947265.7628, + "a_no_fsa_error": -0.48548634090465864, + "b_with_fsa": 677890984314.0103, + "b_with_fsa_error": -0.002313480477636543, + "a_no_fsa_l2": 340733652289.01373, + "a_no_fsa_l2_error": -0.4985250143422751, + "b_with_fsa_l2": 672923535215.3201, + "b_with_fsa_l2_error": -0.009624327084029868, "label": "Federal student loan balance, borrower age 35 to 49", "measure_mode": "sum", "target_role": "fsa_age_band_balance" @@ -8930,16 +8931,16 @@ "family": "ed_fsa/fsa_age_band_balance", "is_fsa": true, "target": 310226241096.29254, - "release": 203769267410.272, - "release_error": -0.3431591515592547, - "a_no_fsa": 236299093486.9287, - "a_no_fsa_error": -0.23830075543615037, - "b_with_fsa": 310337128776.068, - "b_with_fsa_error": 0.00035744132857230707, - "a_no_fsa_l2": 213626720834.2249, - "a_no_fsa_l2_error": -0.3113841044545412, - "b_with_fsa_l2": 310151190582.9893, - "b_with_fsa_l2_error": -0.00024192187301114667, + "release": 168531843341.06357, + "release_error": -0.4567453651067764, + "a_no_fsa": 200962213904.79062, + "a_no_fsa_error": -0.35220755924895136, + "b_with_fsa": 310222466064.4977, + "b_with_fsa_error": -1.2168641123073436e-05, + "a_no_fsa_l2": 180271208948.90756, + "a_no_fsa_l2_error": -0.41890406075302844, + "b_with_fsa_l2": 310072124373.68195, + "b_with_fsa_l2_error": -0.000496788157139675, "label": "Federal student loan balance, borrower age 50 to 61", "measure_mode": "sum", "target_role": "fsa_age_band_balance" @@ -8949,16 +8950,16 @@ "family": "ed_fsa/fsa_age_band_balance", "is_fsa": true, "target": 142517617792.63824, - "release": 91419246927.44438, - "release_error": -0.35854073101012324, - "a_no_fsa": 91709263939.19894, - "a_no_fsa_error": -0.3565057754990331, - "b_with_fsa": 142422600111.87424, - "b_with_fsa_error": -0.0006667083146327732, - "a_no_fsa_l2": 87322601876.0972, - "a_no_fsa_l2_error": -0.387285563507308, - "b_with_fsa_l2": 142351103859.76126, - "b_with_fsa_l2_error": -0.001168374376838517, + "release": 68095645027.780594, + "release_error": -0.5221948971469682, + "a_no_fsa": 80008911086.00209, + "a_no_fsa_error": -0.43860336479652445, + "b_with_fsa": 142453143985.93988, + "b_with_fsa_error": -0.0004523918354583573, + "a_no_fsa_l2": 70337022924.8587, + "a_no_fsa_l2_error": -0.5064678738371954, + "b_with_fsa_l2": 142513567225.33383, + "b_with_fsa_l2_error": -2.842151985943505e-05, "label": "Federal student loan balance, borrower age 62 and Older", "measure_mode": "sum", "target_role": "fsa_age_band_balance" @@ -8968,16 +8969,16 @@ "family": "ed_fsa/fsa_age_band_borrowers", "is_fsa": true, "target": 6132107.903700248, - "release": 1060922.4025248198, - "release_error": -0.8269889540129202, - "a_no_fsa": 894842.9148141979, - "a_no_fsa_error": -0.8540725426122672, - "b_with_fsa": 3721734.029040796, - "b_with_fsa_error": -0.39307427600955613, - "a_no_fsa_l2": 956369.9693649751, - "a_no_fsa_l2_error": -0.8440389529369043, - "b_with_fsa_l2": 3433745.108646735, - "b_with_fsa_l2_error": -0.4400383746387212, + "release": 2581827.639193066, + "release_error": -0.5789657194983254, + "a_no_fsa": 2565588.0258634584, + "a_no_fsa_error": -0.581614011665495, + "b_with_fsa": 6133783.137043165, + "b_with_fsa_error": 0.0002731904541186942, + "a_no_fsa_l2": 2649019.2144049457, + "a_no_fsa_l2_error": -0.5680083821084639, + "b_with_fsa_l2": 5519333.9267054815, + "b_with_fsa_l2_error": -0.09992876619555334, "label": "Federal student loan borrowers, borrower age 24 and Younger", "measure_mode": "indicator_sum", "target_role": "fsa_age_band_borrowers" @@ -8987,16 +8988,16 @@ "family": "ed_fsa/fsa_age_band_borrowers", "is_fsa": true, "target": 13846695.266419914, - "release": 6192543.906443544, - "release_error": -0.5527782053916295, - "a_no_fsa": 6296429.289961355, - "a_no_fsa_error": -0.5452756655061921, - "b_with_fsa": 14850266.951992404, - "b_with_fsa_error": 0.0724773432406132, - "a_no_fsa_l2": 6256775.98734856, - "a_no_fsa_l2_error": -0.5481394031598227, - "b_with_fsa_l2": 13852963.2445308, - "b_with_fsa_l2_error": 0.00045266960746134094, + "release": 6589408.84575269, + "release_error": -0.5241168582851038, + "a_no_fsa": 6715548.973986622, + "a_no_fsa_error": -0.5150070941278873, + "b_with_fsa": 13835281.428205932, + "b_with_fsa_error": -0.0008243005276256887, + "a_no_fsa_l2": 6663171.40447008, + "a_no_fsa_l2_error": -0.5187897706805782, + "b_with_fsa_l2": 13834689.4261224, + "b_with_fsa_l2_error": -0.0008670545618656372, "label": "Federal student loan borrowers, borrower age 25 to 34", "measure_mode": "indicator_sum", "target_role": "fsa_age_band_borrowers" @@ -9006,16 +9007,16 @@ "family": "ed_fsa/fsa_age_band_borrowers", "is_fsa": true, "target": 14835744.92830705, - "release": 8023497.101475692, - "release_error": -0.45917800958099403, - "a_no_fsa": 8074464.636991949, - "a_no_fsa_error": -0.455742554485038, - "b_with_fsa": 15595502.83134718, - "b_with_fsa_error": 0.05121130800722305, - "a_no_fsa_l2": 8186342.309318309, - "a_no_fsa_l2_error": -0.4482014655227376, - "b_with_fsa_l2": 15037030.459811296, - "b_with_fsa_l2_error": 0.013567605299022538, + "release": 7872017.318872907, + "release_error": -0.46938846974560344, + "a_no_fsa": 8082447.8682561545, + "a_no_fsa_error": -0.45520444660418774, + "b_with_fsa": 14830932.289964661, + "b_with_fsa_error": -0.00032439478877849785, + "a_no_fsa_l2": 7998011.953633308, + "a_no_fsa_l2_error": -0.46089583015323626, + "b_with_fsa_l2": 14838354.995697506, + "b_with_fsa_l2_error": 0.00017593099659423542, "label": "Federal student loan borrowers, borrower age 35 to 49", "measure_mode": "indicator_sum", "target_role": "fsa_age_band_borrowers" @@ -9025,16 +9026,16 @@ "family": "ed_fsa/fsa_age_band_borrowers", "is_fsa": true, "target": 6329917.836077675, - "release": 4409804.638042973, - "release_error": -0.30333935570078385, - "a_no_fsa": 4440574.673131422, - "a_no_fsa_error": -0.2984783075979043, - "b_with_fsa": 6442255.498218028, - "b_with_fsa_error": 0.01774709641570364, - "a_no_fsa_l2": 4460288.989864899, - "a_no_fsa_l2_error": -0.29536384114762687, - "b_with_fsa_l2": 6459200.128841143, - "b_with_fsa_l2_error": 0.020424008037926992, + "release": 2905496.92771755, + "release_error": -0.5409897880257578, + "a_no_fsa": 2981510.527065997, + "a_no_fsa_error": -0.5289811646412323, + "b_with_fsa": 6330080.809990909, + "b_with_fsa_error": 2.574660800569155e-05, + "a_no_fsa_l2": 2876944.882751477, + "a_no_fsa_l2_error": -0.5455004381961818, + "b_with_fsa_l2": 5733548.7767398665, + "b_with_fsa_l2_error": -0.09421434444832352, "label": "Federal student loan borrowers, borrower age 50 to 61", "measure_mode": "indicator_sum", "target_role": "fsa_age_band_borrowers" @@ -9044,16 +9045,16 @@ "family": "ed_fsa/fsa_age_band_borrowers", "is_fsa": true, "target": 3164958.9180388376, - "release": 1536635.384601094, - "release_error": -0.5144848876732757, - "a_no_fsa": 1740870.388920138, - "a_no_fsa_error": -0.4499548227947092, - "b_with_fsa": 3166670.121638725, - "b_with_fsa_error": 0.0005406716624769902, - "a_no_fsa_l2": 1569109.9640738436, - "a_no_fsa_l2_error": -0.5042242238499133, - "b_with_fsa_l2": 3165074.184682784, - "b_with_fsa_l2_error": 3.641963353443764e-05, + "release": 1228753.2066090046, + "release_error": -0.6117632997996701, + "a_no_fsa": 1244900.8467479001, + "a_no_fsa_error": -0.6066612935629189, + "b_with_fsa": 3130274.9343246636, + "b_with_fsa_error": -0.010958746894467084, + "a_no_fsa_l2": 1233072.4652039236, + "a_no_fsa_l2_error": -0.6103985874268487, + "b_with_fsa_l2": 2747095.1616626983, + "b_with_fsa_l2_error": -0.1320281770466291, "label": "Federal student loan borrowers, borrower age 62 and Older", "measure_mode": "indicator_sum", "target_role": "fsa_age_band_borrowers" @@ -9063,16 +9064,16 @@ "family": "ed_fsa/fsa_debt_size_band_balance", "is_fsa": true, "target": 18708022626.360928, - "release": 6883630670.137676, - "release_error": -0.6320492653008579, - "a_no_fsa": 6676350041.7059765, - "a_no_fsa_error": -0.6431290374698111, - "b_with_fsa": 17013689025.91875, - "b_with_fsa_error": -0.09056721997196758, - "a_no_fsa_l2": 6914341423.911572, - "a_no_fsa_l2_error": -0.6304076832701295, - "b_with_fsa_l2": 14157274654.550037, - "b_with_fsa_l2_error": -0.2432511475263326, + "release": 7194840956.187957, + "release_error": -0.6154141407734927, + "a_no_fsa": 7254421633.332421, + "a_no_fsa_error": -0.6122293746261336, + "b_with_fsa": 18457971834.568336, + "b_with_fsa_error": -0.013365965863236226, + "a_no_fsa_l2": 7443170469.984908, + "a_no_fsa_l2_error": -0.6021401823890807, + "b_with_fsa_l2": 15849255926.38819, + "b_with_fsa_l2_error": -0.1528096665836043, "label": "Federal student loan balance, borrower debt size Less than 5K", "measure_mode": "sum", "target_role": "fsa_debt_size_band_balance" @@ -9082,16 +9083,16 @@ "family": "ed_fsa/fsa_debt_size_band_balance", "is_fsa": true, "target": 51966729517.669235, - "release": 20408595500.500103, - "release_error": -0.6072757379592079, - "a_no_fsa": 18798236430.658524, - "a_no_fsa_error": -0.6382640084312613, - "b_with_fsa": 51977415379.77266, - "b_with_fsa_error": 0.00020562891301040536, - "a_no_fsa_l2": 19563119039.777695, - "a_no_fsa_l2_error": -0.6235453102137969, - "b_with_fsa_l2": 43104076108.86364, - "b_with_fsa_l2_error": -0.17054475990820628, + "release": 20403100746.587627, + "release_error": -0.6073814739553629, + "a_no_fsa": 18516269030.30718, + "a_no_fsa_error": -0.6436899300347263, + "b_with_fsa": 50843611427.35877, + "b_with_fsa_error": -0.021612252699654517, + "a_no_fsa_l2": 19454958091.2698, + "a_no_fsa_l2_error": -0.6256266601373306, + "b_with_fsa_l2": 43898568931.174416, + "b_with_fsa_l2_error": -0.15525626995155736, "label": "Federal student loan balance, borrower debt size 5K to 10K", "measure_mode": "sum", "target_role": "fsa_debt_size_band_balance" @@ -9101,16 +9102,16 @@ "family": "ed_fsa/fsa_debt_size_band_balance", "is_fsa": true, "target": 131154126877.92712, - "release": 58568935639.036705, - "release_error": -0.5534342911409088, - "a_no_fsa": 60185472683.14245, - "a_no_fsa_error": -0.5411088151335061, - "b_with_fsa": 131129909269.01414, - "b_with_fsa_error": -0.00018464999531063084, - "a_no_fsa_l2": 60578278746.143364, - "a_no_fsa_l2_error": -0.53811381930416, - "b_with_fsa_l2": 131090191663.75578, - "b_with_fsa_l2_error": -0.0004874815279800476, + "release": 55243407927.39507, + "release_error": -0.5787901666349137, + "a_no_fsa": 56145830948.5496, + "a_no_fsa_error": -0.571909536626264, + "b_with_fsa": 131105275530.378, + "b_with_fsa_error": -0.0003724728204289513, + "a_no_fsa_l2": 57006306444.05176, + "a_no_fsa_l2_error": -0.5653487404394764, + "b_with_fsa_l2": 131107639328.0345, + "b_with_fsa_l2_error": -0.00035444976836979445, "label": "Federal student loan balance, borrower debt size 10K to 20K", "measure_mode": "sum", "target_role": "fsa_debt_size_band_balance" @@ -9120,16 +9121,16 @@ "family": "ed_fsa/fsa_debt_size_band_balance", "is_fsa": true, "target": 268049340064.47293, - "release": 136469359110.77391, - "release_error": -0.49087970491570904, - "a_no_fsa": 147296248684.5356, - "a_no_fsa_error": -0.4504882994708848, - "b_with_fsa": 268208602636.97992, - "b_with_fsa_error": 0.0005941539437055942, - "a_no_fsa_l2": 142891029210.66406, - "a_no_fsa_l2_error": -0.4669226599241207, - "b_with_fsa_l2": 267493209581.49188, - "b_with_fsa_l2_error": -0.0020747317745579397, + "release": 139894702305.24088, + "release_error": -0.4781009262265204, + "a_no_fsa": 155373084025.33463, + "a_no_fsa_error": -0.42035640159396287, + "b_with_fsa": 268003551717.58005, + "b_with_fsa_error": -0.00017082059176817967, + "a_no_fsa_l2": 145472996944.85562, + "a_no_fsa_l2_error": -0.45729022533737435, + "b_with_fsa_l2": 267806944899.71188, + "b_with_fsa_l2_error": -0.0009042930853802697, "label": "Federal student loan balance, borrower debt size 20K to 40K", "measure_mode": "sum", "target_role": "fsa_debt_size_band_balance" @@ -9139,16 +9140,16 @@ "family": "ed_fsa/fsa_debt_size_band_balance", "is_fsa": true, "target": 204303485189.46533, - "release": 111851738434.43323, - "release_error": -0.4525216330465187, - "a_no_fsa": 102895679571.38193, - "a_no_fsa_error": -0.4963586672250874, - "b_with_fsa": 204383005644.22495, - "b_with_fsa_error": 0.0003892271083181376, - "a_no_fsa_l2": 109372817051.39279, - "a_no_fsa_l2_error": -0.4646551577425931, - "b_with_fsa_l2": 204292840783.24, - "b_with_fsa_l2_error": -5.2100952734460077e-05, + "release": 110356140311.40195, + "release_error": -0.4598421059285369, + "a_no_fsa": 108801895979.57436, + "a_no_fsa_error": -0.4674496331833276, + "b_with_fsa": 204219392263.77588, + "b_with_fsa_error": -0.0004116078862358501, + "a_no_fsa_l2": 110871096565.19757, + "a_no_fsa_l2_error": -0.457321560313184, + "b_with_fsa_l2": 204319841790.97797, + "b_with_fsa_l2_error": 8.006031564985601e-05, "label": "Federal student loan balance, borrower debt size 40K to 60K", "measure_mode": "sum", "target_role": "fsa_debt_size_band_balance" @@ -9158,16 +9159,16 @@ "family": "ed_fsa/fsa_debt_size_band_balance", "is_fsa": true, "target": 175598053646.37186, - "release": 126845755179.68854, - "release_error": -0.27763575651506445, - "a_no_fsa": 142494050099.33737, - "a_no_fsa_error": -0.18852147196176208, - "b_with_fsa": 175700666825.5031, - "b_with_fsa_error": 0.0005843639892381932, - "a_no_fsa_l2": 132719543311.71623, - "a_no_fsa_l2_error": -0.2441855672330316, - "b_with_fsa_l2": 178397480806.7161, - "b_with_fsa_l2_error": 0.01594224481543437, + "release": 131469954513.0081, + "release_error": -0.2513017554410434, + "a_no_fsa": 144569920228.53723, + "a_no_fsa_error": -0.1766997570503864, + "b_with_fsa": 175669534805.00638, + "b_with_fsa_error": 0.00040707261356366637, + "a_no_fsa_l2": 137122964828.82472, + "a_no_fsa_l2_error": -0.21910885695253884, + "b_with_fsa_l2": 178318680400.69867, + "b_with_fsa_l2_error": 0.015493490376640204, "label": "Federal student loan balance, borrower debt size 60K to 80K", "measure_mode": "sum", "target_role": "fsa_debt_size_band_balance" @@ -9177,16 +9178,16 @@ "family": "ed_fsa/fsa_debt_size_band_balance", "is_fsa": true, "target": 126402883036.31165, - "release": 58388278013.358025, - "release_error": -0.5380779566824843, - "a_no_fsa": 53594580421.09877, - "a_no_fsa_error": -0.5760019144048898, - "b_with_fsa": 126368318497.91405, - "b_with_fsa_error": -0.0002734473895478234, - "a_no_fsa_l2": 55298634527.32333, - "a_no_fsa_l2_error": -0.562520781179985, - "b_with_fsa_l2": 126310711594.85712, - "b_with_fsa_l2_error": -0.0007291878099651478, + "release": 62852695832.42822, + "release_error": -0.5027590010397739, + "a_no_fsa": 55843840578.66671, + "a_no_fsa_error": -0.5582075405461717, + "b_with_fsa": 126371680355.4723, + "b_with_fsa_error": -0.0002468510218265879, + "a_no_fsa_l2": 59579154191.4333, + "a_no_fsa_l2_error": -0.5286566828201376, + "b_with_fsa_l2": 126405731462.39493, + "b_with_fsa_l2_error": 2.2534502495992957e-05, "label": "Federal student loan balance, borrower debt size 80K to 100K", "measure_mode": "sum", "target_role": "fsa_debt_size_band_balance" @@ -9196,16 +9197,16 @@ "family": "ed_fsa/fsa_debt_size_band_balance", "is_fsa": true, "target": 350701186059.2421, - "release": 153438077421.90552, - "release_error": -0.5624820116918965, - "a_no_fsa": 159381293835.21597, - "a_no_fsa_error": -0.5455353441311358, - "b_with_fsa": 350865871418.2749, - "b_with_fsa_error": 0.0004695888282652014, - "a_no_fsa_l2": 149165830562.74597, - "a_no_fsa_l2_error": -0.574664025979233, - "b_with_fsa_l2": 350709890992.9936, - "b_with_fsa_l2_error": 2.4821512151927437e-05, + "release": 140740402028.01462, + "release_error": -0.5986885484777343, + "a_no_fsa": 144961029078.46237, + "a_no_fsa_error": -0.5866537244787793, + "b_with_fsa": 350642680671.3064, + "b_with_fsa_error": -0.0001668240378458457, + "a_no_fsa_l2": 136229937048.33438, + "a_no_fsa_l2_error": -0.6115498251399647, + "b_with_fsa_l2": 351259895910.7162, + "b_with_fsa_l2_error": 0.0015931222182398897, "label": "Federal student loan balance, borrower debt size 100K to 200K", "measure_mode": "sum", "target_role": "fsa_debt_size_band_balance" @@ -9215,16 +9216,16 @@ "family": "ed_fsa/fsa_debt_size_band_balance", "is_fsa": true, "target": 352185949759.74695, - "release": 185566838985.09744, - "release_error": -0.4730998237956772, - "a_no_fsa": 194723995476.0694, - "a_no_fsa_error": -0.447098910081718, - "b_with_fsa": 352352307697.7656, - "b_with_fsa_error": 0.00047235824748875495, - "a_no_fsa_l2": 179246881544.034, - "a_no_fsa_l2_error": -0.49104476863341073, - "b_with_fsa_l2": 352582621001.3442, - "b_with_fsa_l2_error": 0.001126311943641786, + "release": 190265964334.6665, + "release_error": -0.4597570843911817, + "a_no_fsa": 194579615740.381, + "a_no_fsa_error": -0.44750886322092437, + "b_with_fsa": 352018571829.4148, + "b_with_fsa_error": -0.0004752544229726786, + "a_no_fsa_l2": 182569890833.75714, + "a_no_fsa_l2_error": -0.4816093857284708, + "b_with_fsa_l2": 352200499655.69806, + "b_with_fsa_l2_error": 4.1313107354329266e-05, "label": "Federal student loan balance, borrower debt size 200K+", "measure_mode": "sum", "target_role": "fsa_debt_size_band_balance" @@ -9234,16 +9235,16 @@ "family": "ed_fsa/fsa_debt_size_band_borrowers", "is_fsa": true, "target": 6824442.667021244, - "release": 2660011.61784388, - "release_error": -0.6102228786098175, - "a_no_fsa": 2666405.328149534, - "a_no_fsa_error": -0.6092859947326108, - "b_with_fsa": 6294957.037398813, - "b_with_fsa_error": -0.07758664779779625, - "a_no_fsa_l2": 2751049.904528079, - "a_no_fsa_l2_error": -0.5968828461520556, - "b_with_fsa_l2": 5478802.650575942, - "b_with_fsa_l2_error": -0.1971794741493009, + "release": 2701286.054707425, + "release_error": -0.6041748481877873, + "a_no_fsa": 2807981.302908785, + "a_no_fsa_error": -0.5885405680850386, + "b_with_fsa": 6647229.630419818, + "b_with_fsa_error": -0.025967400599289765, + "a_no_fsa_l2": 2867027.2572995597, + "a_no_fsa_l2_error": -0.5798884396590631, + "b_with_fsa_l2": 5958931.572075626, + "b_with_fsa_l2_error": -0.12682516905419314, "label": "Federal student loan borrowers, borrower debt size Less than 5K", "measure_mode": "indicator_sum", "target_role": "fsa_debt_size_band_borrowers" @@ -9253,16 +9254,16 @@ "family": "ed_fsa/fsa_debt_size_band_borrowers", "is_fsa": true, "target": 7121157.565587386, - "release": 2886637.902069267, - "release_error": -0.5946392316863215, - "a_no_fsa": 2656816.009424752, - "a_no_fsa_error": -0.6269123404509859, - "b_with_fsa": 7113066.670173819, - "b_with_fsa_error": -0.001136176996372781, - "a_no_fsa_l2": 2759802.254558279, - "a_no_fsa_l2_error": -0.6124503314047036, - "b_with_fsa_l2": 5944674.881242196, - "b_with_fsa_l2_error": -0.1652094724080365, + "release": 2892278.969669795, + "release_error": -0.5938470756992403, + "a_no_fsa": 2639085.5879658996, + "a_no_fsa_error": -0.6294021633899607, + "b_with_fsa": 7120831.972355158, + "b_with_fsa_error": -4.5721953099437275e-05, + "a_no_fsa_l2": 2758970.991089851, + "a_no_fsa_l2_error": -0.6125670629136993, + "b_with_fsa_l2": 6160291.932698301, + "b_with_fsa_l2_error": -0.13493110130471153, "label": "Federal student loan borrowers, borrower debt size 5K to 10K", "measure_mode": "indicator_sum", "target_role": "fsa_debt_size_band_borrowers" @@ -9272,16 +9273,16 @@ "family": "ed_fsa/fsa_debt_size_band_borrowers", "is_fsa": true, "target": 9099256.889361657, - "release": 4031816.608781144, - "release_error": -0.5569070466078478, - "a_no_fsa": 4114714.845009719, - "a_no_fsa_error": -0.5477966063557989, - "b_with_fsa": 8845852.695692249, - "b_with_fsa_error": -0.02784888884340375, - "a_no_fsa_l2": 4135943.222839435, - "a_no_fsa_l2_error": -0.5454636270710249, - "b_with_fsa_l2": 8855644.781073565, - "b_with_fsa_l2_error": -0.02677274762655731, + "release": 3824581.1286443486, + "release_error": -0.5796820361104613, + "a_no_fsa": 3864999.6984308925, + "a_no_fsa_error": -0.5752400723019884, + "b_with_fsa": 8972005.04345278, + "b_with_fsa_error": -0.013984861341551117, + "a_no_fsa_l2": 3915637.43367675, + "a_no_fsa_l2_error": -0.5696750315671718, + "b_with_fsa_l2": 8975868.394923609, + "b_with_fsa_l2_error": -0.013560282552557383, "label": "Federal student loan borrowers, borrower debt size 10K to 20K", "measure_mode": "indicator_sum", "target_role": "fsa_debt_size_band_borrowers" @@ -9291,16 +9292,16 @@ "family": "ed_fsa/fsa_debt_size_band_borrowers", "is_fsa": true, "target": 9395971.787927799, - "release": 4990277.860182391, - "release_error": -0.4688917790713212, - "a_no_fsa": 5359769.4045512425, - "a_no_fsa_error": -0.4295673161303421, - "b_with_fsa": 9378151.392935265, - "b_with_fsa_error": -0.001896599457166336, - "a_no_fsa_l2": 5210570.48186096, - "a_no_fsa_l2_error": -0.4454463466402014, - "b_with_fsa_l2": 9501277.377082592, - "b_with_fsa_l2_error": 0.011207525047073091, + "release": 5062327.412636923, + "release_error": -0.46122364701635876, + "a_no_fsa": 5563714.383109939, + "a_no_fsa_error": -0.40786174025571775, + "b_with_fsa": 9389378.449373392, + "b_with_fsa_error": -0.0007017197053398819, + "a_no_fsa_l2": 5238521.933234368, + "a_no_fsa_l2_error": -0.44247151316855116, + "b_with_fsa_l2": 9392531.393397568, + "b_with_fsa_l2_error": -0.0003661563282524375, "label": "Federal student loan borrowers, borrower debt size 20K to 40K", "measure_mode": "indicator_sum", "target_role": "fsa_debt_size_band_borrowers" @@ -9310,16 +9311,16 @@ "family": "ed_fsa/fsa_debt_size_band_borrowers", "is_fsa": true, "target": 4154008.5799259744, - "release": 2297313.147286536, - "release_error": -0.44696475631076454, - "a_no_fsa": 2118828.9961400456, - "a_no_fsa_error": -0.48993148295861155, - "b_with_fsa": 4154735.48989536, - "b_with_fsa_error": 0.00017499000192211137, - "a_no_fsa_l2": 2257145.529060151, - "a_no_fsa_l2_error": -0.4566343603699601, - "b_with_fsa_l2": 4154349.4023655565, - "b_with_fsa_l2_error": 8.204663833124789e-05, + "release": 2270434.8601837642, + "release_error": -0.45343520204663995, + "a_no_fsa": 2236093.6142775794, + "a_no_fsa_error": -0.4617022157625329, + "b_with_fsa": 4192792.6117491154, + "b_with_fsa_error": 0.009336531467595615, + "a_no_fsa_l2": 2281052.0086418344, + "a_no_fsa_l2_error": -0.45087932180378804, + "b_with_fsa_l2": 4201394.038443646, + "b_with_fsa_l2_error": 0.01140716433438769, "label": "Federal student loan borrowers, borrower debt size 40K to 60K", "measure_mode": "indicator_sum", "target_role": "fsa_debt_size_band_borrowers" @@ -9329,16 +9330,16 @@ "family": "ed_fsa/fsa_debt_size_band_borrowers", "is_fsa": true, "target": 2571529.1209065556, - "release": 1839757.88789356, - "release_error": -0.2845665744415214, - "a_no_fsa": 2082970.9466790836, - "a_no_fsa_error": -0.189987416535745, - "b_with_fsa": 2554216.643483538, - "b_with_fsa_error": -0.006732366856072824, - "a_no_fsa_l2": 1925962.5331750982, - "a_no_fsa_l2_error": -0.2510438565455063, - "b_with_fsa_l2": 2573167.2940243455, - "b_with_fsa_l2_error": 0.0006370424135863533, + "release": 1906859.772196471, + "release_error": -0.25847241756133216, + "a_no_fsa": 2094535.1090107264, + "a_no_fsa_error": -0.1854904181398777, + "b_with_fsa": 2555630.679479067, + "b_with_fsa_error": -0.006182485470700631, + "a_no_fsa_l2": 1979989.1588382083, + "a_no_fsa_l2_error": -0.23003432364779458, + "b_with_fsa_l2": 2570939.677319141, + "b_with_fsa_l2_error": -0.00022921909871534134, "label": "Federal student loan borrowers, borrower debt size 60K to 80K", "measure_mode": "indicator_sum", "target_role": "fsa_debt_size_band_borrowers" @@ -9348,16 +9349,16 @@ "family": "ed_fsa/fsa_debt_size_band_borrowers", "is_fsa": true, "target": 1384669.5266419915, - "release": 671311.2066995457, - "release_error": -0.5151830860843994, - "a_no_fsa": 609132.1726657285, - "a_no_fsa_error": -0.5600884103061361, - "b_with_fsa": 1435371.7495332821, - "b_with_fsa_error": 0.0366168402754196, - "a_no_fsa_l2": 631350.8532255689, - "a_no_fsa_l2_error": -0.5440422129049961, - "b_with_fsa_l2": 1435291.1169777627, - "b_with_fsa_l2_error": 0.03655860792902356, + "release": 728545.0784757418, + "release_error": -0.47384912828798875, + "a_no_fsa": 640771.0483646113, + "a_no_fsa_error": -0.537239004660869, + "b_with_fsa": 1446972.7292447137, + "b_with_fsa_error": 0.04499499801502515, + "a_no_fsa_l2": 688165.2388905862, + "a_no_fsa_l2_error": -0.5030112054538538, + "b_with_fsa_l2": 1452604.9256615886, + "b_with_fsa_l2_error": 0.04906253637598967, "label": "Federal student loan borrowers, borrower debt size 80K to 100K", "measure_mode": "indicator_sum", "target_role": "fsa_debt_size_band_borrowers" @@ -9367,16 +9368,16 @@ "family": "ed_fsa/fsa_debt_size_band_borrowers", "is_fsa": true, "target": 2571529.1209065556, - "release": 1189524.6536394043, - "release_error": -0.5374251670072262, - "a_no_fsa": 1196301.768084729, - "a_no_fsa_error": -0.5347897255532575, - "b_with_fsa": 2627419.5752201807, - "b_with_fsa_error": 0.021734326809381706, - "a_no_fsa_l2": 1147738.2311298787, - "a_no_fsa_l2_error": -0.5536748070248335, - "b_with_fsa_l2": 2654541.6540517164, - "b_with_fsa_l2_error": 0.032281389493227286, + "release": 1091197.0412239158, + "release_error": -0.5756621877806191, + "a_no_fsa": 1086340.1832909817, + "a_no_fsa_error": -0.5775508920124505, + "b_with_fsa": 2579347.281474521, + "b_with_fsa_error": 0.0030402768937764077, + "a_no_fsa_l2": 1046767.9308337058, + "a_no_fsa_l2_error": -0.5929394995672136, + "b_with_fsa_l2": 2639977.063330595, + "b_with_fsa_l2_error": 0.0266176034591858, "label": "Federal student loan borrowers, borrower debt size 100K to 200K", "measure_mode": "indicator_sum", "target_role": "fsa_debt_size_band_borrowers" @@ -9386,16 +9387,16 @@ "family": "ed_fsa/fsa_debt_size_band_borrowers", "is_fsa": true, "target": 1186859.594264564, - "release": 656752.548692369, - "release_error": -0.4466468048401927, - "a_no_fsa": 642242.4331142446, - "a_no_fsa_error": -0.4588724426900646, - "b_with_fsa": 1372658.1779046573, - "b_with_fsa_error": 0.15654638892245973, - "a_no_fsa_l2": 609324.2095931433, - "a_no_fsa_l2_error": -0.4866080094581784, - "b_with_fsa_l2": 1350263.9691190727, - "b_with_fsa_l2_error": 0.13767793228799052, + "release": 699993.6204068068, + "release_error": -0.41021362274906925, + "a_no_fsa": 656475.314560746, + "a_no_fsa_error": -0.4468803911320867, + "b_with_fsa": 1356164.2019807717, + "b_with_fsa_error": 0.14264923040127336, + "a_no_fsa_l2": 644087.9679588642, + "a_no_fsa_l2_error": -0.45731746950407187, + "b_with_fsa_l2": 1320483.2890778477, + "b_with_fsa_l2_error": 0.11258593304466091, "label": "Federal student loan borrowers, borrower debt size 200K+", "measure_mode": "indicator_sum", "target_role": "fsa_debt_size_band_borrowers" @@ -9405,16 +9406,16 @@ "family": "ed_fsa/fsa_parent_plus_balance", "is_fsa": true, "target": 114840658244.6196, - "release": 143855898994.11093, - "release_error": 0.25265651723875177, - "a_no_fsa": 152559120060.60333, - "a_no_fsa_error": 0.3284417069052361, - "b_with_fsa": 114878467611.03508, - "b_with_fsa_error": 0.00032923327846958746, - "a_no_fsa_l2": 143797166880.5975, - "a_no_fsa_l2_error": 0.2521450945909616, - "b_with_fsa_l2": 126684266224.0997, - "b_with_fsa_l2_error": 0.10313079148547102, + "release": 91774549445.12498, + "release_error": -0.2008531573405126, + "a_no_fsa": 102454167482.18758, + "a_no_fsa_error": -0.10785806135008236, + "b_with_fsa": 114846618687.4453, + "b_with_fsa_error": 5.190185180759451e-05, + "a_no_fsa_l2": 93165691088.92987, + "a_no_fsa_l2_error": -0.1887394890189531, + "b_with_fsa_l2": 114810235390.82646, + "b_with_fsa_l2_error": -0.00026491361385558705, "label": "Parent PLUS loan balance", "measure_mode": "sum", "target_role": "fsa_parent_plus_balance" @@ -9424,16 +9425,16 @@ "family": "ed_fsa/fsa_balance_excluding_parent_plus", "is_fsa": true, "target": 1564229118532.9485, - "release": 714565309960.8195, - "release_error": -0.5431837308904002, - "a_no_fsa": 733486787182.5394, - "a_no_fsa_error": -0.5310873717333312, - "b_with_fsa": 1563121318784.333, - "b_with_fsa_error": -0.0007082081106215797, - "a_no_fsa_l2": 711953308537.1119, - "a_no_fsa_l2_error": -0.5448535639044776, - "b_with_fsa_l2": 1541454030963.7156, - "b_with_fsa_l2_error": -0.014559943488709056, + "release": 766646659509.804, + "release_error": -0.5098885128613239, + "a_no_fsa": 783591739760.9545, + "a_no_fsa_error": -0.499055649535622, + "b_with_fsa": 1562485651747.415, + "b_with_fsa_error": -0.0011145853026752253, + "a_no_fsa_l2": 762584784328.7798, + "a_no_fsa_l2_error": -0.5124852393465293, + "b_with_fsa_l2": 1556356822914.9683, + "b_with_fsa_l2_error": -0.005032699829398045, "label": "Federal student loan balance excluding Parent PLUS", "measure_mode": "sum", "target_role": "fsa_balance_excluding_parent_plus" @@ -9460,10 +9461,10 @@ "other_or_multiple": 0.09763562908781218 }, "b_with_fsa": { - "white_non_hispanic": 0.5789114960854711, - "black_non_hispanic": 0.1898937122343615, - "hispanic": 0.1484731970842785, - "other_or_multiple": 0.08272159459588889 + "white_non_hispanic": 0.5756802954013409, + "black_non_hispanic": 0.18825388229277845, + "hispanic": 0.1443853499362584, + "other_or_multiple": 0.09168047236962222 }, "a_no_fsa_l2": { "white_non_hispanic": 0.6207868469201013, @@ -9472,25 +9473,25 @@ "other_or_multiple": 0.08729996228567515 }, "b_with_fsa_l2": { - "white_non_hispanic": 0.5997263899263966, - "black_non_hispanic": 0.18988343165182947, - "hispanic": 0.12804095308992025, - "other_or_multiple": 0.08234922533185371 + "white_non_hispanic": 0.5990341566934774, + "black_non_hispanic": 0.19215923207947666, + "hispanic": 0.12359991141666021, + "other_or_multiple": 0.08520669981038569 } }, "people": { "release": { "borrowers": { - "white_non_hispanic": 0.6154917785803062, - "black_non_hispanic": 0.16435610234005504, - "hispanic": 0.13015144089908207, - "other_or_multiple": 0.0900006781805565 + "white_non_hispanic": 0.6024446842882388, + "black_non_hispanic": 0.16604397388821024, + "hispanic": 0.13503772953249454, + "other_or_multiple": 0.09647361229105646 }, "balance": { - "white_non_hispanic": 0.6006375021761191, - "black_non_hispanic": 0.17904584458677544, - "hispanic": 0.1140512751186056, - "other_or_multiple": 0.1062653781184998 + "white_non_hispanic": 0.5891875758483623, + "black_non_hispanic": 0.17815405372334245, + "hispanic": 0.12436741146546251, + "other_or_multiple": 0.10829095896283272 }, "adults": { "white_non_hispanic": 0.6298230145750681, @@ -9499,24 +9500,24 @@ "other_or_multiple": 0.0960361858500396 }, "borrower_share_of_adults_by_race": { - "white_non_hispanic": 0.0787430719556842, - "black_non_hispanic": 0.1276258547641487, - "hispanic": 0.06155347148471287, - "other_or_multiple": 0.07551259269063522 + "white_non_hispanic": 0.07690720274916459, + "black_non_hispanic": 0.12865767250540616, + "hispanic": 0.06372626194559652, + "other_or_multiple": 0.08076847627552444 } }, "a_no_fsa": { "borrowers": { - "white_non_hispanic": 0.6089166587917068, - "black_non_hispanic": 0.1566627059769501, - "hispanic": 0.13517257285565665, - "other_or_multiple": 0.09924806237568648 + "white_non_hispanic": 0.5928697150190028, + "black_non_hispanic": 0.16188633976571526, + "hispanic": 0.1390614019168493, + "other_or_multiple": 0.1061825432984327 }, "balance": { - "white_non_hispanic": 0.6086262933750644, - "black_non_hispanic": 0.2039816924325645, - "hispanic": 0.08700649171876078, - "other_or_multiple": 0.10038552247361046 + "white_non_hispanic": 0.5940032003684192, + "black_non_hispanic": 0.20788645902194117, + "hispanic": 0.09866219129880544, + "other_or_multiple": 0.0994481493108341 }, "adults": { "white_non_hispanic": 0.6168043156555436, @@ -9525,50 +9526,50 @@ "other_or_multiple": 0.10217626556787562 }, "borrower_share_of_adults_by_race": { - "white_non_hispanic": 0.08030985770075132, - "black_non_hispanic": 0.11886363054154586, - "hispanic": 0.06327005170862247, - "other_or_multiple": 0.07901879691524766 + "white_non_hispanic": 0.07871411164924272, + "black_non_hispanic": 0.12364481318592514, + "hispanic": 0.06552371974756858, + "other_or_multiple": 0.08510279651662007 } }, "b_with_fsa": { "borrowers": { - "white_non_hispanic": 0.5921867134546868, - "black_non_hispanic": 0.1782668448363, - "hispanic": 0.14507355419154938, - "other_or_multiple": 0.08447288751746382 + "white_non_hispanic": 0.5722250524603602, + "black_non_hispanic": 0.18370445754116826, + "hispanic": 0.1468628772780964, + "other_or_multiple": 0.09720761272037508 }, "balance": { - "white_non_hispanic": 0.570532822664618, - "black_non_hispanic": 0.20825053461596962, - "hispanic": 0.129554716977867, - "other_or_multiple": 0.09166192574154546 + "white_non_hispanic": 0.5542220247836326, + "black_non_hispanic": 0.20214557869122174, + "hispanic": 0.14222924512798896, + "other_or_multiple": 0.10140315139715672 }, "adults": { - "white_non_hispanic": 0.6162176957287394, - "black_non_hispanic": 0.11300086400506511, - "hispanic": 0.16973490129723393, - "other_or_multiple": 0.10104653896896154 + "white_non_hispanic": 0.6114840740447182, + "black_non_hispanic": 0.11517842893957711, + "hispanic": 0.16716408082854894, + "other_or_multiple": 0.10617341618715578 }, "borrower_share_of_adults_by_race": { - "white_non_hispanic": 0.15959872251122573, - "black_non_hispanic": 0.2619954391255782, - "hispanic": 0.14194562655051507, - "other_or_multiple": 0.13883559132491619 + "white_non_hispanic": 0.15734619508370437, + "black_non_hispanic": 0.2681779534753427, + "hispanic": 0.147721461558332, + "other_or_multiple": 0.15394266989878125 } }, "a_no_fsa_l2": { "borrowers": { - "white_non_hispanic": 0.6291529025314854, - "black_non_hispanic": 0.16040853879964695, - "hispanic": 0.1224656641310282, - "other_or_multiple": 0.08797289453783937 + "white_non_hispanic": 0.6140017335731585, + "black_non_hispanic": 0.16420051098668248, + "hispanic": 0.12562002014064638, + "other_or_multiple": 0.09617773529951264 }, "balance": { - "white_non_hispanic": 0.6150341612588469, - "black_non_hispanic": 0.19512310590430043, - "hispanic": 0.09152157769681851, - "other_or_multiple": 0.09832115514003416 + "white_non_hispanic": 0.6044350970274939, + "black_non_hispanic": 0.19698401198319707, + "hispanic": 0.09904508600912193, + "other_or_multiple": 0.09953580498018708 }, "adults": { "white_non_hispanic": 0.6475133294176726, @@ -9577,49 +9578,49 @@ "other_or_multiple": 0.09589122475626961 }, "borrower_share_of_adults_by_race": { - "white_non_hispanic": 0.07901202942885216, - "black_non_hispanic": 0.12555175973378563, - "hispanic": 0.06521640523601745, - "other_or_multiple": 0.07460290260231378 + "white_non_hispanic": 0.0770780849568202, + "black_non_hispanic": 0.12846775415704056, + "hispanic": 0.06686913109817934, + "other_or_multiple": 0.08152779519871957 } }, "b_with_fsa_l2": { "borrowers": { - "white_non_hispanic": 0.614283945401807, - "black_non_hispanic": 0.17739190931727847, - "hispanic": 0.125699321505896, - "other_or_multiple": 0.08262482377501867 + "white_non_hispanic": 0.5944690600561665, + "black_non_hispanic": 0.18419234434779, + "hispanic": 0.12742621446706232, + "other_or_multiple": 0.09391238112898115 }, "balance": { - "white_non_hispanic": 0.5880910478727771, - "black_non_hispanic": 0.21732843669896443, - "hispanic": 0.10526750455028751, - "other_or_multiple": 0.089313010877971 + "white_non_hispanic": 0.5746507517286273, + "black_non_hispanic": 0.20948387976863445, + "hispanic": 0.11270971732797055, + "other_or_multiple": 0.10315565117476758 }, "adults": { - "white_non_hispanic": 0.6511496936642174, - "black_non_hispanic": 0.11172347014381202, - "hispanic": 0.1420928915217667, - "other_or_multiple": 0.09503394467020368 + "white_non_hispanic": 0.647148242100287, + "black_non_hispanic": 0.11275054983909459, + "hispanic": 0.1418376208920364, + "other_or_multiple": 0.09826358716858194 }, "borrower_share_of_adults_by_race": { - "white_non_hispanic": 0.15011151236625206, - "black_non_hispanic": 0.2526475364300562, - "hispanic": 0.14076226850454934, - "other_or_multiple": 0.13834308806928053 + "white_non_hispanic": 0.1488846622969502, + "black_non_hispanic": 0.2647752501322496, + "hispanic": 0.14561020809771355, + "other_or_multiple": 0.15490117679651583 } } } }, "support": { - "borrower_records": 9944, + "borrower_records": 10008, "people": 166321, "borrower_records_by_age_band": { - "24_and_younger": 561, - "25_to_34": 2887, - "35_to_49": 4051, - "50_to_61": 1816, - "62_and_older": 629 + "24_and_younger": 1246, + "25_to_34": 3064, + "35_to_49": 3972, + "50_to_61": 1217, + "62_and_older": 509 }, "people_by_age_band": { "24_and_younger": 59179, @@ -9638,7 +9639,7 @@ "median_among_borrowers": 25000.0, "total_household_weight": 134963690.69015205, "federal_education_debt_total": 1005887392198.3959, - "parent_plus_share_of_total": 0.13750075307389345 + "parent_plus_share_of_total": 0.09068330207742185 }, "household_balance_bands": { "under_5k": 0.09639294713632403, @@ -9742,29 +9743,29 @@ } }, "borrowers": { - "borrower_weight": 27234421.461229563, - "mean_balance": 36934.413812695064, + "borrower_weight": 27237098.830047637, + "mean_balance": 36930.783211342365, "median_balance": 21000.0, "balance_bands": { - "under_5k": 0.11892493269111482, - "5k_to_10k": 0.15531044452506518, - "10k_to_20k": 0.18601428472545406, - "20k_to_40k": 0.22258528435724315, - "40k_to_60k": 0.1281197371592323, - "60k_to_80k": 0.08084824950055876, - "80k_to_100k": 0.03718912377212063, - "100k_to_200k": 0.04910146852901287, - "200k_plus": 0.021906474740198353 + "under_5k": 0.11858724248854419, + "5k_to_10k": 0.15545017628617694, + "10k_to_20k": 0.18221344662589709, + "20k_to_40k": 0.22815323048913974, + "40k_to_60k": 0.12964994896026388, + "60k_to_80k": 0.07784527443403214, + "80k_to_100k": 0.03718546813313425, + "100k_to_200k": 0.04901089121852003, + "200k_plus": 0.021904321364291858 }, "age_bands": { - "24_and_younger": 0.057262304197073094, - "25_to_34": 0.33134066182556904, - "35_to_49": 0.3807800839788549, - "50_to_61": 0.1615926964748789, - "62_and_older": 0.06902425352362417 + "24_and_younger": 0.10943214673515073, + "25_to_34": 0.3533895334655874, + "35_to_49": 0.37160638234348325, + "50_to_61": 0.11180436490051585, + "62_and_older": 0.05376757255526285 }, - "graduate_share_of_own_original_principal": 0.47738241507384116, - "ibr_new_borrower_share": 0.5915143468879298 + "graduate_share_of_own_original_principal": 0.47206971539270537, + "ibr_new_borrower_share": 0.5952213780001776 } }, "release": { @@ -9775,7 +9776,7 @@ "median_among_borrowers": 23000.0, "total_household_weight": 122537091.8856833, "federal_education_debt_total": 858421208954.9309, - "parent_plus_share_of_total": 0.16758194869071996 + "parent_plus_share_of_total": 0.10691085971286082 }, "household_balance_bands": { "under_5k": 0.1179407532730876, @@ -9879,29 +9880,29 @@ } }, "borrowers": { - "borrower_weight": 21223403.433088087, - "mean_balance": 40446.915673129966, - "median_balance": 22000.0, + "borrower_weight": 21177503.938145176, + "mean_balance": 40534.57912047568, + "median_balance": 22224.0, "balance_bands": { - "under_5k": 0.12533388559616318, - "5k_to_10k": 0.13601201669515878, - "10k_to_20k": 0.18997031373843593, - "20k_to_40k": 0.2351308957545589, - "40k_to_60k": 0.10824433293789903, - "60k_to_80k": 0.08668533742450127, - "80k_to_100k": 0.03163070469899026, - "100k_to_200k": 0.05604778033785523, - "200k_plus": 0.03094473281643728 + "under_5k": 0.12755450607386423, + "5k_to_10k": 0.13657317586234458, + "10k_to_20k": 0.18059640738658841, + "20k_to_40k": 0.2390426854563625, + "40k_to_60k": 0.10720974798612737, + "60k_to_80k": 0.09004176213429058, + "80k_to_100k": 0.034401838885435285, + "100k_to_200k": 0.051526234839151065, + "200k_plus": 0.03305364137583606 }, "age_bands": { - "24_and_younger": 0.049988325664619956, - "25_to_34": 0.2917790224346921, - "35_to_49": 0.3780495021343625, - "50_to_61": 0.20778027670943267, - "62_and_older": 0.07240287305689257 + "24_and_younger": 0.12191368948550384, + "25_to_34": 0.3111513455503956, + "35_to_49": 0.37171601251334024, + "50_to_61": 0.13719732675785898, + "62_and_older": 0.05802162569290144 }, - "graduate_share_of_own_original_principal": 0.4826934460430418, - "ibr_new_borrower_share": 0.6147006160485154 + "graduate_share_of_own_original_principal": 0.4995084468534534, + "ibr_new_borrower_share": 0.6132625665271612 } }, "a_no_fsa": { @@ -9912,7 +9913,7 @@ "median_among_borrowers": 24105.0, "total_household_weight": 122537091.8856833, "federal_education_debt_total": 886045907243.1461, - "parent_plus_share_of_total": 0.1721797017665568 + "parent_plus_share_of_total": 0.11563076658292412 }, "household_balance_bands": { "under_5k": 0.11841969068975977, @@ -10016,166 +10017,166 @@ } }, "borrowers": { - "borrower_weight": 21447181.90381908, - "mean_balance": 41312.929186531896, - "median_balance": 22224.0, + "borrower_weight": 21589996.24192015, + "mean_balance": 41039.65083248869, + "median_balance": 24000.0, "balance_bands": { - "under_5k": 0.12432427440151143, - "5k_to_10k": 0.12387716117387236, - "10k_to_20k": 0.1918534035596076, - "20k_to_40k": 0.2499055320455334, - "40k_to_60k": 0.0987928859671185, - "60k_to_80k": 0.09712096237259826, - "80k_to_100k": 0.028401501670355163, - "100k_to_200k": 0.055778972428620316, - "200k_plus": 0.029945306380782872 + "under_5k": 0.13005936969348214, + "5k_to_10k": 0.12223650057158077, + "10k_to_20k": 0.17901808111140036, + "20k_to_40k": 0.2576987193868597, + "40k_to_60k": 0.1035708199863358, + "60k_to_80k": 0.09701414884657916, + "80k_to_100k": 0.029679071787907987, + "100k_to_200k": 0.0503168305875706, + "200k_plus": 0.030406458028283605 }, "age_bands": { - "24_and_younger": 0.04172309997775765, - "25_to_34": 0.2935783973017066, - "35_to_49": 0.37648137984758434, - "50_to_61": 0.20704700006953808, - "62_and_older": 0.08117012280341329 + "24_and_younger": 0.11883225902939219, + "25_to_34": 0.31104910342445596, + "35_to_49": 0.37436078161805786, + "50_to_61": 0.1380968525264009, + "62_and_older": 0.057661003401693146 }, - "graduate_share_of_own_original_principal": 0.46015423787755827, - "ibr_new_borrower_share": 0.6219642890649367 + "graduate_share_of_own_original_principal": 0.49676322471095574, + "ibr_new_borrower_share": 0.6042552792434042 } }, "b_with_fsa": { "households": { "household_weight": 122537091.8856833, - "share_with_federal_education_debt": 0.3304083903971288, - "mean_among_borrowers": 41445.10695407523, - "median_among_borrowers": 20000.0, + "share_with_federal_education_debt": 0.33694036417552564, + "mean_among_borrowers": 40625.478789361725, + "median_among_borrowers": 19300.0, "total_household_weight": 122537091.8856833, - "federal_education_debt_total": 1677999786395.3677, - "parent_plus_share_of_total": 0.06846155079543476 + "federal_education_debt_total": 1677332270434.8613, + "parent_plus_share_of_total": 0.06846980810645852 }, "household_balance_bands": { - "under_5k": 0.135564676794675, - "5k_to_10k": 0.15761388003444637, - "10k_to_20k": 0.19350342213568403, - "20k_to_40k": 0.2065728877678875, - "40k_to_60k": 0.09191337179261283, - "60k_to_80k": 0.07486999998004787, - "80k_to_100k": 0.03905860701857532, - "100k_to_200k": 0.06424842168964758, - "200k_plus": 0.03665473278642335 + "under_5k": 0.13955161180928513, + "5k_to_10k": 0.15826542147244488, + "10k_to_20k": 0.20707794934003546, + "20k_to_40k": 0.19547236113209127, + "40k_to_60k": 0.09529393843931358, + "60k_to_80k": 0.06672533541244413, + "80k_to_100k": 0.03654771290584069, + "100k_to_200k": 0.06804129066645687, + "200k_plus": 0.033024378822087974 }, "by_head_age_band": { "24_and_younger": { - "household_weight": 4658574.061326142, - "share_with_federal_education_debt": 0.689791483762517, - "mean_among_borrowers": 23020.88901034178, - "median_among_borrowers": 12662.0 + "household_weight": 3847176.057577575, + "share_with_federal_education_debt": 0.5767111055129247, + "mean_among_borrowers": 15664.324914787016, + "median_among_borrowers": 6000.0 }, "25_to_34": { - "household_weight": 20781207.858254902, - "share_with_federal_education_debt": 0.6286839594078948, - "mean_among_borrowers": 35278.18891892243, - "median_among_borrowers": 21000.0 + "household_weight": 20479157.367551968, + "share_with_federal_education_debt": 0.5670384500305262, + "mean_among_borrowers": 33595.451331272445, + "median_among_borrowers": 18000.0 }, "35_to_49": { - "household_weight": 32794797.71451219, - "share_with_federal_education_debt": 0.4624626677924237, - "mean_among_borrowers": 45750.67693336133, - "median_among_borrowers": 19716.0 + "household_weight": 32991356.470968604, + "share_with_federal_education_debt": 0.4513258179323375, + "mean_among_borrowers": 45142.324926269954, + "median_among_borrowers": 19073.0 }, "50_to_61": { - "household_weight": 24220618.80222953, - "share_with_federal_education_debt": 0.24408580499907598, - "mean_among_borrowers": 52136.92596716114, - "median_among_borrowers": 28503.0 + "household_weight": 24910795.424953073, + "share_with_federal_education_debt": 0.35283441796727216, + "mean_among_borrowers": 41714.95752585544, + "median_among_borrowers": 23000.0 }, "62_and_older": { - "household_weight": 40081893.449360535, - "share_with_federal_education_debt": 0.07810877666193722, - "mean_among_borrowers": 45043.5768845479, - "median_among_borrowers": 34000.0 + "household_weight": 40308606.56463207, + "share_with_federal_education_debt": 0.09370893536586869, + "mean_among_borrowers": 56559.314875026146, + "median_among_borrowers": 27000.0 } }, "by_race": { "white_non_hispanic": { - "household_weight": 79018371.30140859, - "share_with_federal_education_debt": 0.2966215749335051, - "mean_among_borrowers": 40901.807990338115, + "household_weight": 78624715.69281693, + "share_with_federal_education_debt": 0.3023032990029397, + "mean_among_borrowers": 39933.94147052817, "median_among_borrowers": 21000.0 }, "black_non_hispanic": { - "household_weight": 15776415.72017985, - "share_with_federal_education_debt": 0.48732745506493746, - "mean_among_borrowers": 46409.43511140771, - "median_among_borrowers": 25500.0 + "household_weight": 15990487.204444192, + "share_with_federal_education_debt": 0.48607451913383065, + "mean_among_borrowers": 43263.47914032129, + "median_among_borrowers": 24800.0 }, "hispanic": { - "household_weight": 17650587.89945151, - "share_with_federal_education_debt": 0.34057088784493655, - "mean_among_borrowers": 35970.1751113149, - "median_among_borrowers": 18000.0 + "household_weight": 17446132.321052335, + "share_with_federal_education_debt": 0.34169968451881383, + "mean_among_borrowers": 37037.78907722883, + "median_among_borrowers": 15200.0 }, "other_or_multiple": { - "household_weight": 10091716.964643355, - "share_with_federal_education_debt": 0.3318734212087308, - "mean_among_borrowers": 43677.99364815788, - "median_among_borrowers": 16000.0 + "household_weight": 10475756.66736983, + "share_with_federal_education_debt": 0.36133668041973077, + "mean_among_borrowers": 45201.158038559435, + "median_among_borrowers": 15800.0 } }, "by_income_quintile": { "1": { - "household_weight": 24505888.518620066, - "share_with_federal_education_debt": 0.3852195292718262, - "mean_among_borrowers": 41805.033503133294, - "median_among_borrowers": 19200.0 + "household_weight": 24519312.930006135, + "share_with_federal_education_debt": 0.37160119581737394, + "mean_among_borrowers": 41520.510029656325, + "median_among_borrowers": 19300.0 }, "2": { - "household_weight": 24507705.40072792, - "share_with_federal_education_debt": 0.3659441126296723, - "mean_among_borrowers": 37318.761754539475, - "median_among_borrowers": 18000.0 + "household_weight": 24488609.03927902, + "share_with_federal_education_debt": 0.3644520881120006, + "mean_among_borrowers": 36447.034230393336, + "median_among_borrowers": 17000.0 }, "3": { - "household_weight": 24503645.411256474, - "share_with_federal_education_debt": 0.2818350832108356, - "mean_among_borrowers": 34824.64353110136, - "median_among_borrowers": 19073.0 + "household_weight": 24515013.423280142, + "share_with_federal_education_debt": 0.2795901654964384, + "mean_among_borrowers": 32106.89164645145, + "median_among_borrowers": 16000.0 }, "4": { - "household_weight": 24495966.212403823, - "share_with_federal_education_debt": 0.38308620535630405, - "mean_among_borrowers": 43326.87773015115, + "household_weight": 24505919.600144904, + "share_with_federal_education_debt": 0.4073163476136399, + "mean_among_borrowers": 42277.80653946196, "median_among_borrowers": 25000.0 }, "5": { - "household_weight": 24523886.342675015, - "share_with_federal_education_debt": 0.23604057618448832, - "mean_among_borrowers": 52098.97678365572, - "median_among_borrowers": 22645.0 + "household_weight": 24508236.89297309, + "share_with_federal_education_debt": 0.2617709042738302, + "mean_among_borrowers": 51697.3491788981, + "median_among_borrowers": 20000.0 } }, "borrowers": { - "borrower_weight": 43776429.43223714, - "mean_balance": 38331.124949164565, - "median_balance": 19200.0, + "borrower_weight": 44260352.59952934, + "mean_balance": 37896.947762966935, + "median_balance": 19000.0, "balance_bands": { - "under_5k": 0.14379786380574872, - "5k_to_10k": 0.1624862228927181, - "10k_to_20k": 0.2020688487028159, - "20k_to_40k": 0.2142283305095036, - "40k_to_60k": 0.09490804854988462, - "60k_to_80k": 0.0583468473014065, - "80k_to_100k": 0.032788689442000696, - "100k_to_200k": 0.060019046991652086, - "200k_plus": 0.03135610180426973 + "under_5k": 0.1501847418741644, + "5k_to_10k": 0.1608851162299797, + "10k_to_20k": 0.2027097507476295, + "20k_to_40k": 0.21213971190715802, + "40k_to_60k": 0.09473021260552951, + "60k_to_80k": 0.05774085675734634, + "80k_to_100k": 0.03269230008936035, + "100k_to_200k": 0.05827669979976499, + "200k_plus": 0.03064060998906712 }, "age_bands": { - "24_and_younger": 0.08501684758922101, - "25_to_34": 0.3392297440562072, - "35_to_49": 0.356253422986174, - "50_to_61": 0.14716265309371995, - "62_and_older": 0.07233733227467784 + "24_and_younger": 0.1385841453307442, + "25_to_34": 0.3125885948850993, + "35_to_49": 0.33508391639253193, + "50_to_61": 0.14301921331865375, + "62_and_older": 0.07072413007297072 }, - "graduate_share_of_own_original_principal": 0.4693255659578221, - "ibr_new_borrower_share": 0.6290114738139596 + "graduate_share_of_own_original_principal": 0.508285507012338, + "ibr_new_borrower_share": 0.6105831277596138 } }, "a_no_fsa_l2": { @@ -10186,7 +10187,7 @@ "median_among_borrowers": 23000.0, "total_household_weight": 122537091.88568327, "federal_education_debt_total": 855750475417.7095, - "parent_plus_share_of_total": 0.1680363271903611 + "parent_plus_share_of_total": 0.10887015989497843 }, "household_balance_bands": { "under_5k": 0.12261795764358152, @@ -10290,166 +10291,166 @@ } }, "borrowers": { - "borrower_weight": 21428887.219970584, - "mean_balance": 39934.433675127824, + "borrower_weight": 21420219.92046372, + "mean_balance": 39950.592411993486, "median_balance": 22000.0, "balance_bands": { - "under_5k": 0.12838043694421256, - "5k_to_10k": 0.1287888739265141, - "10k_to_20k": 0.1930078393891098, - "20k_to_40k": 0.24315637244126143, - "40k_to_60k": 0.10533190575367865, - "60k_to_80k": 0.0898769270380128, - "80k_to_100k": 0.0294626056287787, - "100k_to_200k": 0.053560328137816096, - "200k_plus": 0.02843471074061583 + "under_5k": 0.13384677038542236, + "5k_to_10k": 0.12880217856465984, + "10k_to_20k": 0.1828009912230621, + "20k_to_40k": 0.2445596708477191, + "40k_to_60k": 0.10649059706724294, + "60k_to_80k": 0.0924355196253908, + "80k_to_100k": 0.032126898857520625, + "100k_to_200k": 0.048868215859617724, + "200k_plus": 0.03006915756936449 }, "age_bands": { - "24_and_younger": 0.044629940861963584, - "25_to_34": 0.29197857654118253, - "35_to_49": 0.38202367791123953, - "50_to_61": 0.2081437521267154, - "62_and_older": 0.07322405255889887 + "24_and_younger": 0.12366909509991612, + "25_to_34": 0.31106923407935827, + "35_to_49": 0.3733860802237818, + "50_to_61": 0.13430977335592123, + "62_and_older": 0.05756581724102254 }, - "graduate_share_of_own_original_principal": 0.4589063538453081, - "ibr_new_borrower_share": 0.6155169343113196 + "graduate_share_of_own_original_principal": 0.49174957523668006, + "ibr_new_borrower_share": 0.6080491171993825 } }, "b_with_fsa_l2": { "households": { - "household_weight": 122537091.88568331, - "share_with_federal_education_debt": 0.3150829843940598, - "mean_among_borrowers": 43205.549547141425, - "median_among_borrowers": 22000.0, - "total_household_weight": 122537091.88568331, - "federal_education_debt_total": 1668138297187.8127, - "parent_plus_share_of_total": 0.07594350326808462 + "household_weight": 122537091.8856833, + "share_with_federal_education_debt": 0.323233835865687, + "mean_among_borrowers": 42192.52156450831, + "median_among_borrowers": 20000.0, + "total_household_weight": 122537091.8856833, + "federal_education_debt_total": 1671167058305.7954, + "parent_plus_share_of_total": 0.06870063338085393 }, "household_balance_bands": { - "under_5k": 0.12114583198550095, - "5k_to_10k": 0.13581752216357212, - "10k_to_20k": 0.20256615308015288, - "20k_to_40k": 0.21902133405783172, - "40k_to_60k": 0.09479872344354949, - "60k_to_80k": 0.0774390496803849, - "80k_to_100k": 0.043440252170291044, - "100k_to_200k": 0.06810715084070801, - "200k_plus": 0.0376639825780089 + "under_5k": 0.12687176397711675, + "5k_to_10k": 0.14015253320577614, + "10k_to_20k": 0.21290206834104333, + "20k_to_40k": 0.20773188931543504, + "40k_to_60k": 0.09868406383570383, + "60k_to_80k": 0.07056651342100889, + "80k_to_100k": 0.03743463303429598, + "100k_to_200k": 0.07217233754549668, + "200k_plus": 0.03348419732412317 }, "by_head_age_band": { "24_and_younger": { - "household_weight": 4764140.996022275, - "share_with_federal_education_debt": 0.6127978699147862, - "mean_among_borrowers": 24567.251018702387, - "median_among_borrowers": 14010.0 + "household_weight": 4020461.628401902, + "share_with_federal_education_debt": 0.480939342799211, + "mean_among_borrowers": 16453.978132854223, + "median_among_borrowers": 7940.0 }, "25_to_34": { - "household_weight": 20698788.632249083, - "share_with_federal_education_debt": 0.5787236920023119, - "mean_among_borrowers": 38051.561498701936, - "median_among_borrowers": 22224.0 + "household_weight": 20518271.01844301, + "share_with_federal_education_debt": 0.5525159821592887, + "mean_among_borrowers": 35083.592475100166, + "median_among_borrowers": 19224.0 }, "35_to_49": { - "household_weight": 32853749.2675365, - "share_with_federal_education_debt": 0.4463390560660761, - "mean_among_borrowers": 46902.73876101873, + "household_weight": 33023047.529334612, + "share_with_federal_education_debt": 0.45133617587243646, + "mean_among_borrowers": 44694.318601981875, "median_among_borrowers": 20000.0 }, "50_to_61": { - "household_weight": 24758994.944669947, - "share_with_federal_education_debt": 0.24008811189611548, - "mean_among_borrowers": 51905.60588478955, - "median_among_borrowers": 25000.0 + "household_weight": 25489591.57285554, + "share_with_federal_education_debt": 0.32013000884432247, + "mean_among_borrowers": 45240.13907667991, + "median_among_borrowers": 24831.0 }, "62_and_older": { - "household_weight": 39461418.0452055, - "share_with_federal_education_debt": 0.07862783821336401, - "mean_among_borrowers": 46499.814194718885, - "median_among_borrowers": 27000.0 + "household_weight": 39485720.13664824, + "share_with_federal_education_debt": 0.08290045703177726, + "mean_among_borrowers": 63028.16626521563, + "median_among_borrowers": 28000.0 } }, "by_race": { "white_non_hispanic": { - "household_weight": 82853219.2100646, - "share_with_federal_education_debt": 0.27947070589580525, - "mean_among_borrowers": 42353.35636970489, - "median_among_borrowers": 23000.0 + "household_weight": 82602036.26210862, + "share_with_federal_education_debt": 0.28724019854653243, + "mean_among_borrowers": 41559.885843689495, + "median_among_borrowers": 22000.0 }, "black_non_hispanic": { - "household_weight": 15436089.508440204, - "share_with_federal_education_debt": 0.4749438880548471, - "mean_among_borrowers": 50579.19156548265, - "median_among_borrowers": 27000.0 + "household_weight": 15572373.555481266, + "share_with_federal_education_debt": 0.4887545648518058, + "mean_among_borrowers": 47047.79247612714, + "median_among_borrowers": 25500.0 }, "hispanic": { - "household_weight": 14920580.91327152, - "share_with_federal_education_debt": 0.3313261283286711, - "mean_among_borrowers": 35114.923363945636, - "median_among_borrowers": 17300.0 + "household_weight": 14817586.472054191, + "share_with_federal_education_debt": 0.330388615812849, + "mean_among_borrowers": 33831.14213368209, + "median_among_borrowers": 16000.0 }, "other_or_multiple": { - "household_weight": 9327202.253906973, - "share_with_federal_education_debt": 0.34087931101650815, - "mean_among_borrowers": 44989.194440070474, - "median_among_borrowers": 16630.0 + "household_weight": 9545095.596039219, + "share_with_federal_education_debt": 0.35357198582189475, + "mean_among_borrowers": 47819.43862195242, + "median_among_borrowers": 16000.0 } }, "by_income_quintile": { "1": { - "household_weight": 24493815.457474664, - "share_with_federal_education_debt": 0.34044059418291056, - "mean_among_borrowers": 46450.77492591306, - "median_among_borrowers": 21000.0 + "household_weight": 24507462.887031876, + "share_with_federal_education_debt": 0.3292505672134323, + "mean_among_borrowers": 42300.941960541815, + "median_among_borrowers": 19716.0 }, "2": { - "household_weight": 24528121.501473986, - "share_with_federal_education_debt": 0.33883736871599485, - "mean_among_borrowers": 40172.53617674583, + "household_weight": 24506590.787594683, + "share_with_federal_education_debt": 0.33916996611938816, + "mean_among_borrowers": 40663.62325966678, "median_among_borrowers": 18000.0 }, "3": { - "household_weight": 24499770.686659425, - "share_with_federal_education_debt": 0.26582618634930477, - "mean_among_borrowers": 37265.38753939413, - "median_among_borrowers": 20000.0 + "household_weight": 24510366.85735613, + "share_with_federal_education_debt": 0.2702289062515029, + "mean_among_borrowers": 32955.67888464545, + "median_among_borrowers": 19073.0 }, "4": { - "household_weight": 24504369.13229914, - "share_with_federal_education_debt": 0.38699872324431855, - "mean_among_borrowers": 42380.620333453466, - "median_among_borrowers": 25347.0 + "household_weight": 24509151.04761634, + "share_with_federal_education_debt": 0.4127223962067935, + "mean_among_borrowers": 42712.965436412225, + "median_among_borrowers": 25500.0 }, "5": { - "household_weight": 24511015.10777609, - "share_with_federal_education_debt": 0.2433101677208347, - "mean_among_borrowers": 50693.401524864246, - "median_among_borrowers": 22000.0 + "household_weight": 24503520.306084275, + "share_with_federal_education_debt": 0.2647886248297161, + "mean_among_borrowers": 52634.16824386155, + "median_among_borrowers": 20000.0 } }, "borrowers": { - "borrower_weight": 41948013.12651276, - "mean_balance": 39766.80116306832, + "borrower_weight": 42673022.28692794, + "mean_balance": 39162.14434190018, "median_balance": 20000.0, "balance_bands": { - "under_5k": 0.1306093481484376, - "5k_to_10k": 0.14171529086046122, - "10k_to_20k": 0.2111099935619233, - "20k_to_40k": 0.22650124925886922, - "40k_to_60k": 0.09903566564252482, - "60k_to_80k": 0.06134181579146133, - "80k_to_100k": 0.03421594993424382, - "100k_to_200k": 0.06328170171125325, - "200k_plus": 0.032188985090825545 + "under_5k": 0.1396416577201527, + "5k_to_10k": 0.14436033827829883, + "10k_to_20k": 0.21034058320432564, + "20k_to_40k": 0.22010466777448748, + "40k_to_60k": 0.0984555068585021, + "60k_to_80k": 0.06024742423989721, + "80k_to_100k": 0.03404035729868063, + "100k_to_200k": 0.0618652469839077, + "200k_plus": 0.030944217641747686 }, "age_bands": { - "24_and_younger": 0.08185715729349942, - "25_to_34": 0.3302412250790301, - "35_to_49": 0.35846824054480203, - "50_to_61": 0.15398107436842312, - "62_and_older": 0.07545230271424547 + "24_and_younger": 0.12934012242194104, + "25_to_34": 0.32420224030769845, + "35_to_49": 0.3477221485726113, + "50_to_61": 0.13436003520416762, + "62_and_older": 0.06437545349358148 }, - "graduate_share_of_own_original_principal": 0.4797743910529097, - "ibr_new_borrower_share": 0.6202572419325227 + "graduate_share_of_own_original_principal": 0.510849288503444, + "ibr_new_borrower_share": 0.6107068389047522 } } }, @@ -10482,24 +10483,24 @@ }, "b_with_fsa": { "ratio_quantiles": { - "0.01": 0.0004344253173766719, - "0.05": 0.00043451230012664523, - "0.25": 0.00043496339985952853, - "0.5": 0.0004377489484246026, - "0.75": 0.001979172119977143, - "0.95": 1.9964949657458309, - "0.99": 4.978797918889173 + "0.01": 0.0006926508102690254, + "0.05": 0.0006928080625896851, + "0.25": 0.0006935190900865327, + "0.5": 0.0006978842619729753, + "0.75": 0.0029336623841658997, + "0.95": 1.9553618488896691, + "0.99": 4.976988051897074 }, "share_at_cap": 0.0, - "borrower_households_weighted_mean_ratio": 2.013007269324265, - "other_households_weighted_mean_ratio": 0.8010779006750334, + "borrower_households_weighted_mean_ratio": 2.0528032039345945, + "other_households_weighted_mean_ratio": 0.7932632569927957, "borrower_household_weight_share": { "initial": 0.16413671000206656, - "final": 0.3304083903971288 + "final": 0.33694036417552564 }, "effective_sample_size": { "initial": 9174.432030037513, - "final": 2950.5076688149948 + "final": 3045.454372921042 }, "total_weight": { "initial": 122537091.8856833, @@ -10534,30 +10535,30 @@ }, "b_with_fsa_l2": { "ratio_quantiles": { - "0.01": 0.0038616930515874615, - "0.05": 0.003861782100952195, - "0.25": 0.0038618235972816537, - "0.5": 0.003862017613440734, - "0.75": 0.004042756844803156, - "0.95": 1.4813982690064946, - "0.99": 2.800846081366575 - }, - "share_at_cap": 0.0, - "borrower_households_weighted_mean_ratio": 1.9196375045539342, - "other_households_weighted_mean_ratio": 0.8194127243076241, + "0.01": 0.010930534745920758, + "0.05": 0.010934835994047536, + "0.25": 0.010934947606906435, + "0.5": 0.010935395003846847, + "0.75": 0.011280074666995056, + "0.95": 1.453114417894372, + "0.99": 2.770508569166096 + }, + "share_at_cap": 0.0003843466107617051, + "borrower_households_weighted_mean_ratio": 1.96929642285152, + "other_households_weighted_mean_ratio": 0.809661307336498, "borrower_household_weight_share": { "initial": 0.16413671000206656, - "final": 0.3150829843940598 + "final": 0.323233835865687 }, "effective_sample_size": { "initial": 9174.432030037513, - "final": 4248.393703216165 + "final": 4424.347224536957 }, "total_weight": { "initial": 122537091.8856833, - "final": 122537091.88568331 + "final": 122537091.8856833 } } }, - "seconds": 794.2393439030001 + "seconds": 775.1628392 } diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_fsa_student_loan_targets.py b/packages/microcosm-build/tests/engine_free/us/test_us_fsa_student_loan_targets.py index b3b744ee17..4662add56f 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_fsa_student_loan_targets.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_fsa_student_loan_targets.py @@ -2,9 +2,10 @@ The fixture ``us_fsa_portfolio_chronicle_347_facts.jsonl.gz`` holds, byte for byte, 244 of the 461 rows ``chronicle build-bundle --year 2026`` writes for the -six ``packages/ed_fsa`` source packages of draft PolicyEngine/chronicle#347 -(DTrim99/chronicle ``4448a7c``; the export at ``81e3f98``, after Chronicle -main was merged in and the raw files reached R2, is byte-identical): every +six ``packages/ed_fsa`` source packages of PolicyEngine/chronicle#347 (first +drafted at ``4448a7c``; the exports at the PR head ``81e3f98``, which reads +the raw files from R2, and at its merge commit ``acbedb5`` on Chronicle main +are byte-identical): every portfolio-summary, location, age, debt-size and loan-type row, and the FY2026 Q2 Direct Loan repayment-plan dollars. The tests pin the plan's reference quarter, its one in-scope control, each family's reconciled values, every fact's disposition, the release