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 000000000..8633359b9 --- /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), 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 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 e4ae417a8..1d153af29 100644 --- a/docs/us-fact-to-target.md +++ b/docs/us-fact-to-target.md @@ -186,6 +186,89 @@ 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 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 + 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 + 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 + 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 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 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` 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 `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 000000000..b1dd03026 --- /dev/null +++ b/experiments/1074-fsa-calibration-receipts.md @@ -0,0 +1,313 @@ +# microcosm#1074 receipts: Federal Student Aid portfolio targets + +Generated 2026-11-02 by `experiments/fit_1074_fsa_calibration.py`, commit `88d7a950dd6e0019f9ac794b86024a26bc441235`, Modal run `20261102T174003Z-88d7a950d` (`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 `51aa40f` US feed (the pin before main's cf9ece2 re-pin, whose added B4923C facts bind no target) 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; **+ L2** = A and B with an L2 anchor to the published weights; **B, counts xF** = B (and B + L2) with the balance targets at full loss weight and the borrower-count targets at F of theirs. 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. The targets bind that stock unaged (`period_alignment = stock_at_source_reference_date`), and the build writes the calibrated balances at its period, 2024, since the H5 records one period for every column. policyengine-us#10415 (merged 2026-10-30) holds the balances at their stored value in every year, so a 2024 or a 2026 read returns the March 2026 stock. + +## 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 | 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,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% | + +## Down-weighted borrower counts + +Every arm binds the 67 FSA balance targets at full loss weight. The 65 borrower-count targets (state, age band, debt-size band) keep the stated fraction of their weight (1 in B and B + L2), and the vector is renormalized to mean 1. At x0 they only validate. Reference: FSA, except the household share, which is the SCF's. + +| | Reference | Release | B, with FSA | B, counts x0.25 | B, counts x0.1 | B, counts x0 | B + L2 | B + L2, counts x0.25 | B + L2, counts x0.1 | B + L2, counts x0 | +|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:| +| FSA balance targets within 5% (67) | | 0% | 99% | 96% | 96% | 96% | 94% | 88% | 88% | 87% | +| FSA borrower-count targets within 5% (65) | | 0% | 92% | 43% | 31% | 17% | 62% | 17% | 12% | 9% | +| FSA balance targets: mean error | | 47.2% | 0.2% | 0.6% | 0.9% | 1.3% | 1.3% | 2.9% | 3.6% | 4.1% | +| FSA borrower-count targets: mean error | | 49.5% | 1.3% | 8.6% | 13.1% | 17.7% | 6.1% | 18.2% | 22.1% | 24.5% | +| Non-FSA capped error | | 5.30% | 3.62% | 3.50% | 3.47% | 3.45% | 3.85% | 3.84% | 3.85% | 3.84% | +| Households with federal education debt | 18.2% | 16.4% | 33.7% | 32.7% | 31.7% | 30.2% | 32.3% | 28.2% | 26.7% | 25.7% | +| Borrowers | 44.31M | 21.18M | 44.26M | 42.98M | 41.71M | 39.75M | 42.67M | 37.27M | 35.38M | 34.11M | +| Parent PLUS share of the balance | 6.8% | 10.7% | 6.8% | 6.8% | 6.8% | 6.8% | 6.9% | 6.9% | 6.9% | 6.9% | +| Effective sample size | | 9,174 | 3,045 | 3,170 | 3,292 | 3,364 | 4,424 | 5,011 | 5,159 | 5,232 | +| Borrowers age 24 and Younger | 13.8% | 12.2% | 13.9% | 12.7% | 12.1% | 11.6% | 12.9% | 11.6% | 11.3% | 11.0% | +| Borrowers age 25 to 34 | 31.2% | 31.1% | 31.3% | 32.9% | 33.0% | 33.1% | 32.4% | 32.2% | 32.1% | 32.0% | +| Borrowers age 35 to 49 | 33.5% | 37.2% | 33.5% | 34.9% | 35.8% | 36.0% | 34.8% | 36.1% | 36.2% | 36.2% | +| Borrowers age 50 to 61 | 14.3% | 13.7% | 14.3% | 13.4% | 13.0% | 13.2% | 13.4% | 13.6% | 13.9% | 14.1% | +| Borrowers age 62 and Older | 7.1% | 5.8% | 7.1% | 6.2% | 6.1% | 6.1% | 6.4% | 6.5% | 6.6% | 6.7% | +| Borrower age profile: distance from FSA (TVD) | | 0.037 | 0.001 | 0.030 | 0.041 | 0.044 | 0.025 | 0.036 | 0.035 | 0.035 | + +## 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.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 | +| 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 + +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.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 | 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.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 + +| 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.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/fit_1074_fsa_calibration.py b/experiments/fit_1074_fsa_calibration.py new file mode 100644 index 000000000..59dcab576 --- /dev/null +++ b/experiments/fit_1074_fsa_calibration.py @@ -0,0 +1,1343 @@ +#!/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; +- **B, counts xF** (with and without the L2 anchor): B with the 67 FSA + balance targets at full loss weight and the 65 borrower-count targets at a + fraction F (0, 0.1, 0.25) of theirs, renormalized to mean 1. FSA counts + 44.3M borrowers, about twice what the SCF and the host see, and binding them + at full weight about doubles the share of households with debt; at 0 the + counts only validate. + +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 ``51aa40f`` US feed, pinned when the experiment began, +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), +} +#: Down-weighted borrower counts (the #1074 review): every FSA balance target +#: keeps its full loss weight, and each FSA borrower-count target (state, age +#: band, debt-size band) keeps this fraction of its weight. The vector is then +#: renormalized to mean 1, as a family multiplier is. At 0 the counts only +#: validate. solved arm -> (with the FSA family, l2_lambda or None for the +#: release's, borrower-count loss-weight fraction). +COUNT_WEIGHT_ARMS = { + "b_counts_w0": (True, None, 0.0), + "b_counts_w010": (True, None, 0.1), + "b_counts_w025": (True, None, 0.25), + "b_counts_w0_l2": (True, L2_SENSITIVITY_LAMBDA, 0.0), + "b_counts_w010_l2": (True, L2_SENSITIVITY_LAMBDA, 0.1), + "b_counts_w025_l2": (True, L2_SENSITIVITY_LAMBDA, 0.25), +} +ALL_ARMS = ARMS + tuple(COUNT_WEIGHT_ARMS) +#: Every solved arm, with the original four at full borrower-count weight. +ALL_SOLVED_ARMS = { + **{arm: (*spec, 1.0) for arm, spec in SOLVED_ARMS.items()}, + **COUNT_WEIGHT_ARMS, +} +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", + "b_counts_w0": "B, counts x0", + "b_counts_w010": "B, counts x0.1", + "b_counts_w025": "B, counts x0.25", + "b_counts_w0_l2": "B + L2, counts x0", + "b_counts_w010_l2": "B + L2, counts x0.1", + "b_counts_w025_l2": "B + L2, counts x0.25", +} +#: The arms the borrower-count comparison table shows. +COUNT_COMPARISON_ARMS = ( + "release", + "b_with_fsa", + "b_counts_w025", + "b_counts_w010", + "b_counts_w0", + "b_with_fsa_l2", + "b_counts_w025_l2", + "b_counts_w010_l2", + "b_counts_w0_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 _is_borrower_count_role(role: str) -> bool: + """FSA's state, age-band and debt-size-band borrower counts.""" + + return role.endswith("_borrowers") + + +def scaled_borrower_count_loss_weights( + specs: Sequence, loss_weights: np.ndarray, fraction: float +) -> np.ndarray: + """``loss_weights`` with each FSA borrower count's weight times ``fraction``. + + Every other target keeps its weight, then the vector is renormalized to + mean 1, as a family multiplier is. A ``fraction`` of 0 leaves the counts + in the target set as validation only. + """ + + mask = np.asarray( + [ + spec.family == "ed_fsa" + and _is_borrower_count_role(str(spec.metadata["target_role"])) + for spec in specs + ], + dtype=bool, + ) + if not mask.any(): + raise RuntimeError("No FSA borrower-count target to down-weight.") + scaled = np.asarray(loss_weights, dtype=np.float64).copy() + scaled[mask] *= fraction + return scaled / scaled.mean() + + +def borrower_count_comparison( + rows: Sequence[Mapping[str, object]], + headline: Sequence[Mapping[str, object]], + fit_overall: Mapping[str, Mapping[str, Mapping[str, float]]], + weights: Mapping[str, Mapping[str, object]], + arms: Sequence[str], +) -> dict[str, object]: + """Per arm: the FSA fit by balance and count, the rest of the surface, the + borrower levels, the Parent PLUS mix and the borrower age profile.""" + + fsa = [row for row in rows if row["is_fsa"]] + balances = [row for row in fsa if not _is_borrower_count_role(row["target_role"])] + counts = [row for row in fsa if _is_borrower_count_role(row["target_role"])] + ages = [row for row in fsa if row["target_role"] == "fsa_age_band_borrowers"] + by_label = {row["label"]: row for row in headline} + fsa_age_total = sum(row["target"] for row in ages) + result: dict[str, object] = { + "targets": { + "balance": len(balances), + "borrower_count": len(counts), + "age_bands": len(ages), + }, + "fsa_age_distribution": { + row["label"]: row["target"] / fsa_age_total for row in ages + }, + "arms": {}, + } + for arm in arms: + age_total = sum(row[arm] for row in ages) + age_shares = {row["label"]: row[arm] / age_total for row in ages} + result["arms"][arm] = { + "balance_targets": _summary([row[f"{arm}_error"] for row in balances]), + "borrower_count_targets": _summary([row[f"{arm}_error"] for row in counts]), + "non_fsa_mean_capped_abs_rel_error": fit_overall["non_fsa"][arm][ + "mean_capped_abs_rel_error" + ], + "households_with_federal_education_debt": by_label[ + "Households with federal education debt" + ][arm], + "borrowers": by_label["Borrowers (people with a balance)"][arm], + "parent_plus_share": by_label["Parent PLUS share of the balance"][arm], + "borrower_age_distribution": age_shares, + "borrower_age_tvd_vs_fsa": 0.5 + * sum( + abs(age_shares[label] - share) + for label, share in result["fsa_age_distribution"].items() + ), + "effective_sample_size": ( + weights[arm]["effective_sample_size"]["final"] + if arm in weights + else weights["b_with_fsa"]["effective_sample_size"]["initial"] + ), + } + return result + + +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 borrower_count_markdown(receipt: Mapping[str, object]) -> list[str]: + """The down-weighted borrower-count arms beside B, B + L2 and the release.""" + + comparison = receipt["borrower_count_weighting"] + arms = comparison["arms"] + targets = comparison["targets"] + controls = receipt["fsa"]["controls"] + pp_row = next( + row + for row in receipt["headline"] + if row["label"] == "Parent PLUS share of the balance" + ) + scf_share = receipt["scf_fit_tables"]["scf_2025"]["households"][ + "share_with_federal_education_debt" + ] + shown = COUNT_COMPARISON_ARMS + lines = [ + "", + "## Down-weighted borrower counts", + "", + f"Every arm binds the {targets['balance']} FSA balance targets at full " + f"loss weight. The {targets['borrower_count']} borrower-count targets " + "(state, age band, debt-size band) keep the stated fraction of their " + "weight (1 in B and B + L2), and the vector is renormalized to mean 1. " + "At x0 they only validate. Reference: FSA, except the household share, " + "which is the SCF's.", + "", + "| | Reference | " + " | ".join(ARM_LABELS[arm] for arm in shown) + " |", + "|---|---:|" + "---:|" * len(shown), + ] + rows = ( + ( + f"FSA balance targets within 5% ({targets['balance']})", + "", + lambda m: _fmt_pct(m["balance_targets"]["share_within_5pct"], 0), + ), + ( + f"FSA borrower-count targets within 5% ({targets['borrower_count']})", + "", + lambda m: _fmt_pct(m["borrower_count_targets"]["share_within_5pct"], 0), + ), + ( + "FSA balance targets: mean error", + "", + lambda m: _fmt_pct(m["balance_targets"]["mean_abs_rel_error"]), + ), + ( + "FSA borrower-count targets: mean error", + "", + lambda m: _fmt_pct(m["borrower_count_targets"]["mean_abs_rel_error"]), + ), + ( + "Non-FSA capped error", + "", + lambda m: _fmt_pct(m["non_fsa_mean_capped_abs_rel_error"], 2), + ), + ( + "Households with federal education debt", + _fmt_pct(scf_share), + lambda m: _fmt_pct(m["households_with_federal_education_debt"]), + ), + ( + "Borrowers", + _fmt_count(controls["borrowers"]["in_scope_control"]), + lambda m: _fmt_count(m["borrowers"]), + ), + ( + "Parent PLUS share of the balance", + _fmt_pct(pp_row["target"]), + lambda m: _fmt_pct(m["parent_plus_share"]), + ), + ( + "Effective sample size", + "", + lambda m: f"{m['effective_sample_size']:,.0f}", + ), + ) + for label, reference, getter in rows: + lines.append( + f"| {label} | {reference} | " + + " | ".join(getter(arms[arm]) for arm in shown) + + " |" + ) + for band, share in comparison["fsa_age_distribution"].items(): + short = band.removeprefix("Federal student loan borrowers, borrower ") + lines.append( + f"| Borrowers {short} | {_fmt_pct(share)} | " + + " | ".join( + _fmt_pct(arms[arm]["borrower_age_distribution"][band]) for arm in shown + ) + + " |" + ) + lines.append( + "| Borrower age profile: distance from FSA (TVD) | | " + + " | ".join(f"{arms[arm]['borrower_age_tvd_vs_fsa']:.3f}" for arm in shown) + + " |" + ) + return lines + + +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 `51aa40f` US feed " + "(the pin before main's cf9ece2 re-pin, whose added B4923C facts bind no " + "target) 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; **+ L2** = A and B " + "with an L2 anchor to the published weights; **B, counts xF** = B " + "(and B + L2) with the balance targets at full loss weight and the " + "borrower-count targets at F of theirs. 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. The targets bind that stock unaged " + "(`period_alignment = stock_at_source_reference_date`), and the build " + "writes the calibrated balances at its period, 2024, since the H5 " + "records one period for every column. policyengine-us#10415 (merged " + "2026-10-30) holds the balances at their stored value in every year, so " + "a 2024 or a 2026 read returns the March 2026 stock.", + "", + "## 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 += borrower_count_markdown(receipt) + 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, count_weight) in ALL_SOLVED_ARMS.items(): + arm_registry = registry_b if with_fsa else registry_a + loss_weights = release._fiscal_target_loss_weights( + arm_registry, cli.target_family_loss_multipliers + ) + if count_weight != 1.0: + loss_weights = scaled_borrower_count_loss_weights( + arm_registry.specs, loss_weights, count_weight + ) + _log( + f"calibrating arm {arm} ({len(arm_registry)} targets, {epochs} epochs, " + f"borrower-count weight x{count_weight:g})" + ) + 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=loss_weights, + 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 ALL_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 ALL_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 ALL_ARMS + } + fit_overall = { + group: { + arm: _summary( + [row[f"{arm}_error"] for row in rows if row["is_fsa"] == is_fsa] + ) + for arm in ALL_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 ALL_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 ALL_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 ALL_ARMS + }, + }, + { + "label": "Parent PLUS balance", + "kind": "amount", + "target": pp_target, + **{arm: float(np.dot(plus, person_weights[arm])) for arm in ALL_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 ALL_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 ALL_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 ALL_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, + "borrower_count_loss_weight": count_weight, + } + for arm, (with_fsa, l2_lambda, count_weight) in ALL_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 ALL_SOLVED_ARMS + }, + "seconds": time.perf_counter() - started, + } + receipt["borrower_count_weighting"] = borrower_count_comparison( + rows, headline, fit_overall, receipt["weights"], ALL_ARMS + ) + 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 000000000..694210672 --- /dev/null +++ b/experiments/modal_1074.py @@ -0,0 +1,700 @@ +"""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 US feed pinned when the experiment began (rebuilt + byte for byte at Chronicle ``51aa40f`` with ``tools/build_us_chronicle_feed.py`` + and checked against that pin's facts sha256; main has since re-pinned to + ``cf9ece2``, which adds the B4923C ESI anchor facts of microcosm#454, a + reviewed exclusion that binds no target) 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 US feed pinned (us/chronicle_feed.json) when the experiment began, and +#: where it is rebuilt from. Main's re-pin to cf9ece2 (microcosm#454) adds only +#: facts that bind no target, so the arms stay comparable across receipts. +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 000000000..ca3b4590b --- /dev/null +++ b/experiments/receipts/1074-fsa-calibration-fit.json @@ -0,0 +1,17043 @@ +{ + "schema_version": 1, + "issue": "PolicyEngine/microcosm#1074", + "generated_at": "2026-11-02", + "provenance": { + "commit": "88d7a950dd6e0019f9ac794b86024a26bc441235", + "run": "20261102T174003Z-88d7a950d" + }, + "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/PolicyEngine/chronicle.git", + "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, + "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, + "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": 158.56872164000004 + }, + "b_with_fsa": { + "initial": 0.05507756769657135, + "final": 0.01628154753487812, + "seconds": 157.6289507240001 + }, + "a_no_fsa_l2": { + "initial": 0.03675158694386482, + "final": 0.019865802644470798, + "seconds": 168.55338446299993 + }, + "b_with_fsa_l2": { + "initial": 0.05507756769657135, + "final": 0.019343231231045796, + "seconds": 189.2125150249999 + }, + "b_counts_w0": { + "initial": 0.04771532863378525, + "final": 0.015999359713901633, + "seconds": 150.41372711300005 + }, + "b_counts_w010": { + "initial": 0.04846217855811119, + "final": 0.016179976052958626, + "seconds": 162.41091317300015 + }, + "b_counts_w025": { + "initial": 0.04957795888185501, + "final": 0.01628095139428469, + "seconds": 186.99489178299996 + }, + "b_counts_w0_l2": { + "initial": 0.04771532863378525, + "final": 0.019604862261606088, + "seconds": 188.10354873799974 + }, + "b_counts_w010_l2": { + "initial": 0.04846217855811119, + "final": 0.019760351960908775, + "seconds": 177.50920433099964 + }, + "b_counts_w025_l2": { + "initial": 0.04957795888185501, + "final": 0.01985339933625068, + "seconds": 177.57199708500002 + } + }, + "arms": { + "a_no_fsa": { + "with_fsa": false, + "targets": 6102, + "l2_lambda": 0.0, + "borrower_count_loss_weight": 1.0 + }, + "b_with_fsa": { + "with_fsa": true, + "targets": 6234, + "l2_lambda": 0.0, + "borrower_count_loss_weight": 1.0 + }, + "a_no_fsa_l2": { + "with_fsa": false, + "targets": 6102, + "l2_lambda": 0.03, + "borrower_count_loss_weight": 1.0 + }, + "b_with_fsa_l2": { + "with_fsa": true, + "targets": 6234, + "l2_lambda": 0.03, + "borrower_count_loss_weight": 1.0 + }, + "b_counts_w0": { + "with_fsa": true, + "targets": 6234, + "l2_lambda": 0.0, + "borrower_count_loss_weight": 0.0 + }, + "b_counts_w010": { + "with_fsa": true, + "targets": 6234, + "l2_lambda": 0.0, + "borrower_count_loss_weight": 0.1 + }, + "b_counts_w025": { + "with_fsa": true, + "targets": 6234, + "l2_lambda": 0.0, + "borrower_count_loss_weight": 0.25 + }, + "b_counts_w0_l2": { + "with_fsa": true, + "targets": 6234, + "l2_lambda": 0.03, + "borrower_count_loss_weight": 0.0 + }, + "b_counts_w010_l2": { + "with_fsa": true, + "targets": 6234, + "l2_lambda": 0.03, + "borrower_count_loss_weight": 0.1 + }, + "b_counts_w025_l2": { + "with_fsa": true, + "targets": 6234, + "l2_lambda": 0.03, + "borrower_count_loss_weight": 0.25 + } + }, + "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.9309, + "a_no_fsa": 886045907243.1461, + "b_with_fsa": 1677332270434.8613, + "a_no_fsa_l2": 855750475417.7096, + "b_with_fsa_l2": 1671167058305.7954, + "b_counts_w0": 1676891736462.0554, + "b_counts_w010": 1677480211886.3687, + "b_counts_w025": 1677041856977.4128, + "b_counts_w0_l2": 1663011689865.8518, + "b_counts_w010_l2": 1665323518103.9524, + "b_counts_w025_l2": 1668047581461.2764 + }, + { + "label": "Borrowers (people with a balance)", + "kind": "count", + "target": 44309424.85254373, + "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, + "b_counts_w0": 39749334.84605471, + "b_counts_w010": 41706814.85762861, + "b_counts_w025": 42975089.656632446, + "b_counts_w0_l2": 34112730.25781064, + "b_counts_w010_l2": 35378421.03185457, + "b_counts_w025_l2": 37269184.59596503 + }, + { + "label": "Parent PLUS balance", + "kind": "amount", + "target": 114840658244.6196, + "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, + "b_counts_w0": 114707368024.8201, + "b_counts_w010": 114786674544.01074, + "b_counts_w025": 114712338741.7442, + "b_counts_w0_l2": 114801586272.25423, + "b_counts_w010_l2": 114855103732.74493, + "b_counts_w025_l2": 114882657580.57384 + }, + { + "label": "Parent PLUS share of the balance", + "kind": "share", + "target": 0.0683954054994779, + "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, + "b_counts_w0": 0.06840475477971662, + "b_counts_w010": 0.06842803493635864, + "b_counts_w025": 0.0684015955025082, + "b_counts_w0_l2": 0.06903233872127189, + "b_counts_w010_l2": 0.06896864332013564, + "b_counts_w025_l2": 0.0688725302907319 + }, + { + "label": "Mean balance per borrower", + "kind": "amount", + "target": 37894.19028491803, + "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, + "b_counts_w0": 42186.66156192282, + "b_counts_w010": 40220.770097468616, + "b_counts_w025": 39023.5801804451, + "b_counts_w0_l2": 48750.47166548856, + "b_counts_w010_l2": 47071.731002480374, + "b_counts_w025_l2": 44756.75010184872 + }, + { + "label": "Households with federal education debt", + "kind": "share", + "target": NaN, + "release": 0.16413671000206656, + "a_no_fsa": 0.1662222969167077, + "b_with_fsa": 0.33694036417552564, + "a_no_fsa_l2": 0.16563645838046798, + "b_with_fsa_l2": 0.323233835865687, + "b_counts_w0": 0.301984185857176, + "b_counts_w010": 0.3170171574080812, + "b_counts_w025": 0.32670237970830907, + "b_counts_w0_l2": 0.2574945570424808, + "b_counts_w010_l2": 0.26715217443405004, + "b_counts_w025_l2": 0.2817087355208398 + } + ], + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 1, + "mean_capped_abs_rel_error": 0.07597482962833627, + "mean_abs_rel_error": 0.07597482962833627, + "median_abs_rel_error": 0.07597482962833627, + "max_abs_rel_error": 0.07597482962833627, + "share_within_5pct": 0.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0758212127990676, + "mean_abs_rel_error": 0.0758212127990676, + "median_abs_rel_error": 0.0758212127990676, + "max_abs_rel_error": 0.0758212127990676, + "share_within_5pct": 0.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0755451150620287, + "mean_abs_rel_error": 0.0755451150620287, + "median_abs_rel_error": 0.0755451150620287, + "max_abs_rel_error": 0.0755451150620287, + "share_within_5pct": 0.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.10694934506468443, + "mean_abs_rel_error": 0.10694934506468443, + "median_abs_rel_error": 0.10694934506468443, + "max_abs_rel_error": 0.10694934506468443, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w010_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.10517762459524584, + "mean_abs_rel_error": 0.10517762459524584, + "median_abs_rel_error": 0.10517762459524584, + "max_abs_rel_error": 0.10517762459524584, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w025_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.10334014559643798, + "mean_abs_rel_error": 0.10334014559643798, + "median_abs_rel_error": 0.10334014559643798, + "max_abs_rel_error": 0.10334014559643798, + "share_within_5pct": 0.0, + "share_within_10pct": 0.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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13492506348371278, + "mean_abs_rel_error": 0.13492506348371278, + "median_abs_rel_error": 0.13492506348371278, + "max_abs_rel_error": 0.13492506348371278, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w010": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13531398652759904, + "mean_abs_rel_error": 0.13531398652759904, + "median_abs_rel_error": 0.13531398652759904, + "max_abs_rel_error": 0.13531398652759904, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w025": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13495241572731306, + "mean_abs_rel_error": 0.13495241572731306, + "median_abs_rel_error": 0.13495241572731306, + "max_abs_rel_error": 0.13495241572731306, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w0_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13457521121938054, + "mean_abs_rel_error": 0.13457521121938054, + "median_abs_rel_error": 0.13457521121938054, + "max_abs_rel_error": 0.13457521121938054, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w010_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13467432318867215, + "mean_abs_rel_error": 0.13467432318867215, + "median_abs_rel_error": 0.13467432318867215, + "max_abs_rel_error": 0.13467432318867215, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w025_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13481409231766675, + "mean_abs_rel_error": 0.13481409231766675, + "median_abs_rel_error": 0.13481409231766675, + "max_abs_rel_error": 0.13481409231766675, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 5, + "mean_capped_abs_rel_error": 0.04562933181540976, + "mean_abs_rel_error": 0.04562933181540976, + "median_abs_rel_error": 0.0294556898912532, + "max_abs_rel_error": 0.1493125047872981, + "share_within_5pct": 0.8, + "share_within_10pct": 0.8 + }, + "b_counts_w010": { + "targets": 5, + "mean_capped_abs_rel_error": 0.0459266361452545, + "mean_abs_rel_error": 0.0459266361452545, + "median_abs_rel_error": 0.029127285329267873, + "max_abs_rel_error": 0.1498227473431799, + "share_within_5pct": 0.8, + "share_within_10pct": 0.8 + }, + "b_counts_w025": { + "targets": 5, + "mean_capped_abs_rel_error": 0.045307290568663325, + "mean_abs_rel_error": 0.045307290568663325, + "median_abs_rel_error": 0.02912052395561957, + "max_abs_rel_error": 0.1480972608619548, + "share_within_5pct": 0.8, + "share_within_10pct": 0.8 + }, + "b_counts_w0_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.04560313185733453, + "mean_abs_rel_error": 0.04560313185733453, + "median_abs_rel_error": 0.026096895673127334, + "max_abs_rel_error": 0.15137072882712818, + "share_within_5pct": 0.8, + "share_within_10pct": 0.8 + }, + "b_counts_w010_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.045801128387356546, + "mean_abs_rel_error": 0.045801128387356546, + "median_abs_rel_error": 0.026985346161158275, + "max_abs_rel_error": 0.15083823996426576, + "share_within_5pct": 0.8, + "share_within_10pct": 0.8 + }, + "b_counts_w025_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.04604855375864514, + "mean_abs_rel_error": 0.04604855375864514, + "median_abs_rel_error": 0.027758165372942203, + "max_abs_rel_error": 0.15083547040505949, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 936, + "mean_capped_abs_rel_error": 0.0010372346010832382, + "mean_abs_rel_error": 0.0010372346010832382, + "median_abs_rel_error": 0.0008277666253055809, + "max_abs_rel_error": 0.008108396579343868, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 936, + "mean_capped_abs_rel_error": 0.0010289891487296852, + "mean_abs_rel_error": 0.0010289891487296852, + "median_abs_rel_error": 0.0008199261790230216, + "max_abs_rel_error": 0.005049224680018283, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 936, + "mean_capped_abs_rel_error": 0.0010877385557140915, + "mean_abs_rel_error": 0.0010877385557140915, + "median_abs_rel_error": 0.0008774713607135538, + "max_abs_rel_error": 0.005724513951018587, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 936, + "mean_capped_abs_rel_error": 0.0014794941005170843, + "mean_abs_rel_error": 0.0014794941005170843, + "median_abs_rel_error": 0.0009777097537654136, + "max_abs_rel_error": 0.2348761438681341, + "share_within_5pct": 0.9989316239316239, + "share_within_10pct": 0.9989316239316239 + }, + "b_counts_w010_l2": { + "targets": 936, + "mean_capped_abs_rel_error": 0.0014284229136759382, + "mean_abs_rel_error": 0.0014284229136759382, + "median_abs_rel_error": 0.0009418094657752615, + "max_abs_rel_error": 0.23283731187119755, + "share_within_5pct": 0.9989316239316239, + "share_within_10pct": 0.9989316239316239 + }, + "b_counts_w025_l2": { + "targets": 936, + "mean_capped_abs_rel_error": 0.0013577882725156172, + "mean_abs_rel_error": 0.0013577882725156172, + "median_abs_rel_error": 0.0008688141913648304, + "max_abs_rel_error": 0.22746394906685705, + "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.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.5454545454545454 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 44, + "mean_capped_abs_rel_error": 0.1385812725944751, + "mean_abs_rel_error": 0.1385812725944751, + "median_abs_rel_error": 0.09123440352299514, + "max_abs_rel_error": 0.9569980132257038, + "share_within_5pct": 0.3181818181818182, + "share_within_10pct": 0.5454545454545454 + }, + "b_counts_w010": { + "targets": 44, + "mean_capped_abs_rel_error": 0.13887868323197708, + "mean_abs_rel_error": 0.13887868323197708, + "median_abs_rel_error": 0.09237766288623867, + "max_abs_rel_error": 0.9552775513377221, + "share_within_5pct": 0.3181818181818182, + "share_within_10pct": 0.5681818181818182 + }, + "b_counts_w025": { + "targets": 44, + "mean_capped_abs_rel_error": 0.13929103789741662, + "mean_abs_rel_error": 0.13929103789741662, + "median_abs_rel_error": 0.0940101460421585, + "max_abs_rel_error": 0.9559049447962096, + "share_within_5pct": 0.29545454545454547, + "share_within_10pct": 0.5681818181818182 + }, + "b_counts_w0_l2": { + "targets": 44, + "mean_capped_abs_rel_error": 0.13958916400368573, + "mean_abs_rel_error": 0.13958916400368573, + "median_abs_rel_error": 0.08889257815102593, + "max_abs_rel_error": 0.95834836530426, + "share_within_5pct": 0.25, + "share_within_10pct": 0.5227272727272727 + }, + "b_counts_w010_l2": { + "targets": 44, + "mean_capped_abs_rel_error": 0.1395354644716465, + "mean_abs_rel_error": 0.1395354644716465, + "median_abs_rel_error": 0.08898158934321035, + "max_abs_rel_error": 0.9540425549755239, + "share_within_5pct": 0.25, + "share_within_10pct": 0.5227272727272727 + }, + "b_counts_w025_l2": { + "targets": 44, + "mean_capped_abs_rel_error": 0.14013009925221334, + "mean_abs_rel_error": 0.14013009925221334, + "median_abs_rel_error": 0.08959968134246106, + "max_abs_rel_error": 0.962361314277285, + "share_within_5pct": 0.25, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 102, + "mean_capped_abs_rel_error": 0.0019915501528705603, + "mean_abs_rel_error": 0.0019915501528705603, + "median_abs_rel_error": 0.0008590738820083311, + "max_abs_rel_error": 0.09364060194326293, + "share_within_5pct": 0.9901960784313726, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 102, + "mean_capped_abs_rel_error": 0.0022339129306888795, + "mean_abs_rel_error": 0.0022339129306888795, + "median_abs_rel_error": 0.0011555043243132415, + "max_abs_rel_error": 0.09381710898082085, + "share_within_5pct": 0.9901960784313726, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 102, + "mean_capped_abs_rel_error": 0.0023613769384654443, + "mean_abs_rel_error": 0.0023613769384654443, + "median_abs_rel_error": 0.0009048486775683739, + "max_abs_rel_error": 0.09859962444627055, + "share_within_5pct": 0.9901960784313726, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 102, + "mean_capped_abs_rel_error": 0.005399857712007188, + "mean_abs_rel_error": 0.005399857712007188, + "median_abs_rel_error": 0.001200896503733379, + "max_abs_rel_error": 0.14259715272217907, + "share_within_5pct": 0.9705882352941176, + "share_within_10pct": 0.9705882352941176 + }, + "b_counts_w010_l2": { + "targets": 102, + "mean_capped_abs_rel_error": 0.005663457350471726, + "mean_abs_rel_error": 0.005663457350471726, + "median_abs_rel_error": 0.0012187042440574474, + "max_abs_rel_error": 0.14090527148402707, + "share_within_5pct": 0.9705882352941176, + "share_within_10pct": 0.9705882352941176 + }, + "b_counts_w025_l2": { + "targets": 102, + "mean_capped_abs_rel_error": 0.005608474108829853, + "mean_abs_rel_error": 0.005608474108829853, + "median_abs_rel_error": 0.001201132904454975, + "max_abs_rel_error": 0.13925171989917223, + "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.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, + "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.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.9481481481481482 + }, + "b_counts_w0": { + "targets": 135, + "mean_capped_abs_rel_error": 0.022772096298658052, + "mean_abs_rel_error": 27.31814663839386, + "median_abs_rel_error": 0.001367645635594365, + "max_abs_rel_error": 3685.8755631828517, + "share_within_5pct": 0.8740740740740741, + "share_within_10pct": 0.9629629629629629 + }, + "b_counts_w010": { + "targets": 135, + "mean_capped_abs_rel_error": 0.02266573662798139, + "mean_abs_rel_error": 23.63709239602296, + "median_abs_rel_error": 0.0012116566457434953, + "max_abs_rel_error": 3188.947599018322, + "share_within_5pct": 0.8740740740740741, + "share_within_10pct": 0.9703703703703703 + }, + "b_counts_w025": { + "targets": 135, + "mean_capped_abs_rel_error": 0.022866351407506643, + "mean_abs_rel_error": 33.77302822735473, + "median_abs_rel_error": 0.0014854880362380248, + "max_abs_rel_error": 4557.271853252875, + "share_within_5pct": 0.8666666666666667, + "share_within_10pct": 0.9703703703703703 + }, + "b_counts_w0_l2": { + "targets": 135, + "mean_capped_abs_rel_error": 0.02322823713062456, + "mean_abs_rel_error": 33.127838796908534, + "median_abs_rel_error": 0.0013172840219198459, + "max_abs_rel_error": 4470.122425570018, + "share_within_5pct": 0.8666666666666667, + "share_within_10pct": 0.9555555555555556 + }, + "b_counts_w010_l2": { + "targets": 135, + "mean_capped_abs_rel_error": 0.023395545638770183, + "mean_abs_rel_error": 32.05271551646204, + "median_abs_rel_error": 0.0015098287964490857, + "max_abs_rel_error": 4324.958196061141, + "share_within_5pct": 0.8666666666666667, + "share_within_10pct": 0.9481481481481482 + }, + "b_counts_w025_l2": { + "targets": 135, + "mean_capped_abs_rel_error": 0.02336417741472411, + "mean_abs_rel_error": 31.35244571624399, + "median_abs_rel_error": 0.0012883979623378927, + "max_abs_rel_error": 4230.42600774195, + "share_within_5pct": 0.8666666666666667, + "share_within_10pct": 0.9481481481481482 + } + }, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13240985139446956, + "mean_abs_rel_error": 0.13240985139446956, + "median_abs_rel_error": 0.13240985139446956, + "max_abs_rel_error": 0.13240985139446956, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w010": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13309290043789573, + "mean_abs_rel_error": 0.13309290043789573, + "median_abs_rel_error": 0.13309290043789573, + "max_abs_rel_error": 0.13309290043789573, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w025": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13327665010867354, + "mean_abs_rel_error": 0.13327665010867354, + "median_abs_rel_error": 0.13327665010867354, + "max_abs_rel_error": 0.13327665010867354, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w0_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13564071935127858, + "mean_abs_rel_error": 0.13564071935127858, + "median_abs_rel_error": 0.13564071935127858, + "max_abs_rel_error": 0.13564071935127858, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w010_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.1354388887918523, + "mean_abs_rel_error": 0.1354388887918523, + "median_abs_rel_error": 0.1354388887918523, + "max_abs_rel_error": 0.1354388887918523, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w025_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.13540096439328264, + "mean_abs_rel_error": 0.13540096439328264, + "median_abs_rel_error": 0.13540096439328264, + "max_abs_rel_error": 0.13540096439328264, + "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.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.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.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.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.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 + }, + "b_counts_w0": { + "targets": 5, + "mean_capped_abs_rel_error": 0.0011473539785051157, + "mean_abs_rel_error": 0.0011473539785051157, + "median_abs_rel_error": 0.0008609303609791591, + "max_abs_rel_error": 0.0021765034967255437, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 5, + "mean_capped_abs_rel_error": 0.0007367118490525261, + "mean_abs_rel_error": 0.0007367118490525261, + "median_abs_rel_error": 0.00028897163774711484, + "max_abs_rel_error": 0.001968987448540209, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 5, + "mean_capped_abs_rel_error": 0.000789780601178356, + "mean_abs_rel_error": 0.000789780601178356, + "median_abs_rel_error": 0.0005482389582552328, + "max_abs_rel_error": 0.0022113709105768702, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.006982815111431065, + "mean_abs_rel_error": 0.006982815111431065, + "median_abs_rel_error": 0.0004545678161474446, + "max_abs_rel_error": 0.03359132854904815, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.006112354885782587, + "mean_abs_rel_error": 0.006112354885782587, + "median_abs_rel_error": 0.0005583478235565386, + "max_abs_rel_error": 0.028063704153720257, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.004889935195107201, + "mean_abs_rel_error": 0.004889935195107201, + "median_abs_rel_error": 0.00016470074387814177, + "max_abs_rel_error": 0.02346931090622245, + "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.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.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.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.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.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 + }, + "b_counts_w0": { + "targets": 5, + "mean_capped_abs_rel_error": 0.14841509935404787, + "mean_abs_rel_error": 0.14841509935404787, + "median_abs_rel_error": 0.17354086889865897, + "max_abs_rel_error": 0.24554859898672898, + "share_within_5pct": 0.4, + "share_within_10pct": 0.4 + }, + "b_counts_w010": { + "targets": 5, + "mean_capped_abs_rel_error": 0.10554235724267695, + "mean_abs_rel_error": 0.10554235724267695, + "median_abs_rel_error": 0.14196471142346537, + "max_abs_rel_error": 0.1995410446636243, + "share_within_5pct": 0.4, + "share_within_10pct": 0.4 + }, + "b_counts_w025": { + "targets": 5, + "mean_capped_abs_rel_error": 0.07834167612874406, + "mean_abs_rel_error": 0.07834167612874406, + "median_abs_rel_error": 0.09056388644872845, + "max_abs_rel_error": 0.15920868018297954, + "share_within_5pct": 0.4, + "share_within_10pct": 0.6 + }, + "b_counts_w0_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.2576476053828646, + "mean_abs_rel_error": 0.2576476053828646, + "median_abs_rel_error": 0.23878498744824062, + "max_abs_rel_error": 0.38780536067570925, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w010_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.2313596758857491, + "mean_abs_rel_error": 0.2313596758857491, + "median_abs_rel_error": 0.22270682277519976, + "max_abs_rel_error": 0.35073163434465154, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "b_counts_w025_l2": { + "targets": 5, + "mean_capped_abs_rel_error": 0.1915753725076142, + "mean_abs_rel_error": 0.1915753725076142, + "median_abs_rel_error": 0.1967723400420236, + "max_abs_rel_error": 0.2951318893125006, + "share_within_5pct": 0.0, + "share_within_10pct": 0.2 + } + }, + "ed_fsa/fsa_balance_excluding_parent_plus": { + "release": { + "targets": 1, + "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.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.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.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.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 + }, + "b_counts_w0": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0013071934740834191, + "mean_abs_rel_error": 0.0013071934740834191, + "median_abs_rel_error": 0.0013071934740834191, + "max_abs_rel_error": 0.0013071934740834191, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0009816855934979226, + "mean_abs_rel_error": 0.0009816855934979226, + "median_abs_rel_error": 0.0009816855934979226, + "max_abs_rel_error": 0.0009816855934979226, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 1, + "mean_capped_abs_rel_error": 0.001214400291350065, + "mean_abs_rel_error": 0.001214400291350065, + "median_abs_rel_error": 0.001214400291350065, + "max_abs_rel_error": 0.001214400291350065, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.010240836684063817, + "mean_abs_rel_error": 0.010240836684063817, + "median_abs_rel_error": 0.010240836684063817, + "max_abs_rel_error": 0.010240836684063817, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.008797115460070887, + "mean_abs_rel_error": 0.008797115460070887, + "median_abs_rel_error": 0.008797115460070887, + "max_abs_rel_error": 0.008797115460070887, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0070732570575221775, + "mean_abs_rel_error": 0.0070732570575221775, + "median_abs_rel_error": 0.0070732570575221775, + "max_abs_rel_error": 0.0070732570575221775, + "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.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.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.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.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.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 + }, + "b_counts_w0": { + "targets": 9, + "mean_capped_abs_rel_error": 0.0834208401562946, + "mean_abs_rel_error": 0.0834208401562946, + "median_abs_rel_error": 0.011550529910056208, + "max_abs_rel_error": 0.3853620713764649, + "share_within_5pct": 0.7777777777777778, + "share_within_10pct": 0.7777777777777778 + }, + "b_counts_w010": { + "targets": 9, + "mean_capped_abs_rel_error": 0.0533939868804165, + "mean_abs_rel_error": 0.0533939868804165, + "median_abs_rel_error": 0.0020053136144935124, + "max_abs_rel_error": 0.2601308525862361, + "share_within_5pct": 0.7777777777777778, + "share_within_10pct": 0.7777777777777778 + }, + "b_counts_w025": { + "targets": 9, + "mean_capped_abs_rel_error": 0.02842406200517905, + "mean_abs_rel_error": 0.02842406200517905, + "median_abs_rel_error": 0.0003402407147612199, + "max_abs_rel_error": 0.16299433995908608, + "share_within_5pct": 0.7777777777777778, + "share_within_10pct": 0.8888888888888888 + }, + "b_counts_w0_l2": { + "targets": 9, + "mean_capped_abs_rel_error": 0.17981545350585953, + "mean_abs_rel_error": 0.17981545350585953, + "median_abs_rel_error": 0.0024564719837841067, + "max_abs_rel_error": 0.5425653572389263, + "share_within_5pct": 0.5555555555555556, + "share_within_10pct": 0.5555555555555556 + }, + "b_counts_w010_l2": { + "targets": 9, + "mean_capped_abs_rel_error": 0.15899590763534036, + "mean_abs_rel_error": 0.15899590763534036, + "median_abs_rel_error": 0.0023805152132734967, + "max_abs_rel_error": 0.49121745383778515, + "share_within_5pct": 0.5555555555555556, + "share_within_10pct": 0.5555555555555556 + }, + "b_counts_w025_l2": { + "targets": 9, + "mean_capped_abs_rel_error": 0.1289828362398465, + "mean_abs_rel_error": 0.1289828362398465, + "median_abs_rel_error": 0.016626398345916706, + "max_abs_rel_error": 0.41425627522284497, + "share_within_5pct": 0.5555555555555556, + "share_within_10pct": 0.5555555555555556 + } + }, + "ed_fsa/fsa_debt_size_band_borrowers": { + "release": { + "targets": 9, + "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.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.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.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.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 + }, + "b_counts_w0": { + "targets": 9, + "mean_capped_abs_rel_error": 0.1160611180833728, + "mean_abs_rel_error": 0.1160611180833728, + "median_abs_rel_error": 0.05440075792272322, + "max_abs_rel_error": 0.3823484134401148, + "share_within_5pct": 0.4444444444444444, + "share_within_10pct": 0.6666666666666666 + }, + "b_counts_w010": { + "targets": 9, + "mean_capped_abs_rel_error": 0.08522347196153023, + "mean_abs_rel_error": 0.08522347196153023, + "median_abs_rel_error": 0.03546157766415807, + "max_abs_rel_error": 0.2550127077013569, + "share_within_5pct": 0.5555555555555556, + "share_within_10pct": 0.6666666666666666 + }, + "b_counts_w025": { + "targets": 9, + "mean_capped_abs_rel_error": 0.058503151636503006, + "mean_abs_rel_error": 0.058503151636503006, + "median_abs_rel_error": 0.027894712923280284, + "max_abs_rel_error": 0.17524710533766563, + "share_within_5pct": 0.5555555555555556, + "share_within_10pct": 0.7777777777777778 + }, + "b_counts_w0_l2": { + "targets": 9, + "mean_capped_abs_rel_error": 0.204535202312622, + "mean_abs_rel_error": 0.204535202312622, + "median_abs_rel_error": 0.05151927071958082, + "max_abs_rel_error": 0.5242931896170927, + "share_within_5pct": 0.4444444444444444, + "share_within_10pct": 0.5555555555555556 + }, + "b_counts_w010_l2": { + "targets": 9, + "mean_capped_abs_rel_error": 0.18315427107104598, + "mean_abs_rel_error": 0.18315427107104598, + "median_abs_rel_error": 0.05108534247477853, + "max_abs_rel_error": 0.47080342107738454, + "share_within_5pct": 0.4444444444444444, + "share_within_10pct": 0.5555555555555556 + }, + "b_counts_w025_l2": { + "targets": 9, + "mean_capped_abs_rel_error": 0.14846812868417347, + "mean_abs_rel_error": 0.14846812868417347, + "median_abs_rel_error": 0.05118168931239308, + "max_abs_rel_error": 0.3902330380015669, + "share_within_5pct": 0.4444444444444444, + "share_within_10pct": 0.5555555555555556 + } + }, + "ed_fsa/fsa_parent_plus_balance": { + "release": { + "targets": 1, + "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.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": 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.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.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 + }, + "b_counts_w0": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0011606535684899012, + "mean_abs_rel_error": 0.0011606535684899012, + "median_abs_rel_error": 0.0011606535684899012, + "max_abs_rel_error": 0.0011606535684899012, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0004700748100377328, + "mean_abs_rel_error": 0.0004700748100377328, + "median_abs_rel_error": 0.0004700748100377328, + "max_abs_rel_error": 0.0004700748100377328, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0011173699701546912, + "mean_abs_rel_error": 0.0011173699701546912, + "median_abs_rel_error": 0.0011173699701546912, + "max_abs_rel_error": 0.0011173699701546912, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0003402276942918416, + "mean_abs_rel_error": 0.0003402276942918416, + "median_abs_rel_error": 0.0003402276942918416, + "max_abs_rel_error": 0.0003402276942918416, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00012578722855061296, + "mean_abs_rel_error": 0.00012578722855061296, + "median_abs_rel_error": 0.00012578722855061296, + "max_abs_rel_error": 0.00012578722855061296, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0003657183491995187, + "mean_abs_rel_error": 0.0003657183491995187, + "median_abs_rel_error": 0.0003657183491995187, + "max_abs_rel_error": 0.0003657183491995187, + "share_within_5pct": 1.0, + "share_within_10pct": 1.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.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": { + "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.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 + }, + "b_counts_w0": { + "targets": 51, + "mean_capped_abs_rel_error": 0.0022105706936125817, + "mean_abs_rel_error": 0.0022105706936125817, + "median_abs_rel_error": 0.0007808741233595269, + "max_abs_rel_error": 0.06680855931467136, + "share_within_5pct": 0.9803921568627451, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 51, + "mean_capped_abs_rel_error": 0.002172144504709544, + "mean_abs_rel_error": 0.002172144504709544, + "median_abs_rel_error": 0.0007649475054458181, + "max_abs_rel_error": 0.060431421542054206, + "share_within_5pct": 0.9803921568627451, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 51, + "mean_capped_abs_rel_error": 0.0021630761367317395, + "mean_abs_rel_error": 0.0021630761367317395, + "median_abs_rel_error": 0.001030702431255849, + "max_abs_rel_error": 0.05719584697560796, + "share_within_5pct": 0.9803921568627451, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.020995748930171542, + "mean_abs_rel_error": 0.020995748930171542, + "median_abs_rel_error": 0.0013321765649983218, + "max_abs_rel_error": 0.3831180135807184, + "share_within_5pct": 0.9019607843137255, + "share_within_10pct": 0.9411764705882353 + }, + "b_counts_w010_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.017806252966749276, + "mean_abs_rel_error": 0.017806252966749276, + "median_abs_rel_error": 0.0013405562941007814, + "max_abs_rel_error": 0.36334191611306976, + "share_within_5pct": 0.9215686274509803, + "share_within_10pct": 0.9411764705882353 + }, + "b_counts_w025_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.014614176646081256, + "mean_abs_rel_error": 0.014614176646081256, + "median_abs_rel_error": 0.0012131476737380624, + "max_abs_rel_error": 0.33271045262135285, + "share_within_5pct": 0.9215686274509803, + "share_within_10pct": 0.9411764705882353 + } + }, + "ed_fsa/fsa_state_borrowers": { + "release": { + "targets": 51, + "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.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.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.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.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 + }, + "b_counts_w0": { + "targets": 51, + "mean_capped_abs_rel_error": 0.19051019636355399, + "mean_abs_rel_error": 0.19051019636355399, + "median_abs_rel_error": 0.15719788808186866, + "max_abs_rel_error": 0.4032562751804122, + "share_within_5pct": 0.09803921568627451, + "share_within_10pct": 0.2549019607843137 + }, + "b_counts_w010": { + "targets": 51, + "mean_capped_abs_rel_error": 0.14111006618590968, + "mean_abs_rel_error": 0.14111006618590968, + "median_abs_rel_error": 0.12437653023584302, + "max_abs_rel_error": 0.3583056708948136, + "share_within_5pct": 0.2549019607843137, + "share_within_10pct": 0.43137254901960786 + }, + "b_counts_w025": { + "targets": 51, + "mean_capped_abs_rel_error": 0.09163875883250804, + "mean_abs_rel_error": 0.09163875883250804, + "median_abs_rel_error": 0.05964393357320503, + "max_abs_rel_error": 0.3008124565205545, + "share_within_5pct": 0.4117647058823529, + "share_within_10pct": 0.6274509803921569 + }, + "b_counts_w0_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.2508144790260996, + "mean_abs_rel_error": 0.2508144790260996, + "median_abs_rel_error": 0.23941670321293848, + "max_abs_rel_error": 0.4991383474388709, + "share_within_5pct": 0.0392156862745098, + "share_within_10pct": 0.11764705882352941 + }, + "b_counts_w010_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.2261244534862046, + "mean_abs_rel_error": 0.2261244534862046, + "median_abs_rel_error": 0.21671624668737233, + "max_abs_rel_error": 0.4840908170489062, + "share_within_5pct": 0.0784313725490196, + "share_within_10pct": 0.13725490196078433 + }, + "b_counts_w025_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.18759431146064842, + "mean_abs_rel_error": 0.18759431146064842, + "median_abs_rel_error": 0.1876225791047063, + "max_abs_rel_error": 0.4574529403676427, + "share_within_5pct": 0.13725490196078433, + "share_within_10pct": 0.27450980392156865 + } + }, + "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": 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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0004092587659740662, + "mean_abs_rel_error": 0.0004092587659740662, + "median_abs_rel_error": 0.0004092587659740662, + "max_abs_rel_error": 0.0004092587659740662, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00012172730652790735, + "mean_abs_rel_error": 0.00012172730652790735, + "median_abs_rel_error": 0.00012172730652790735, + "max_abs_rel_error": 0.00012172730652790735, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0003353243886168093, + "mean_abs_rel_error": 0.0003353243886168093, + "median_abs_rel_error": 0.0003353243886168093, + "max_abs_rel_error": 0.0003353243886168093, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00013649156242763268, + "mean_abs_rel_error": 0.00013649156242763268, + "median_abs_rel_error": 0.00013649156242763268, + "max_abs_rel_error": 0.00013649156242763268, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0001347622473451361, + "mean_abs_rel_error": 0.0001347622473451361, + "median_abs_rel_error": 0.0001347622473451361, + "max_abs_rel_error": 0.0001347622473451361, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0006041492296363751, + "mean_abs_rel_error": 0.0006041492296363751, + "median_abs_rel_error": 0.0006041492296363751, + "max_abs_rel_error": 0.0006041492296363751, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0003185920309231797, + "mean_abs_rel_error": 0.0003185920309231797, + "median_abs_rel_error": 0.0003185920309231797, + "max_abs_rel_error": 0.0003185920309231797, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00039711751969671573, + "mean_abs_rel_error": 0.00039711751969671573, + "median_abs_rel_error": 0.00039711751969671573, + "max_abs_rel_error": 0.00039711751969671573, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00014701912409435843, + "mean_abs_rel_error": 0.00014701912409435843, + "median_abs_rel_error": 0.00014701912409435843, + "max_abs_rel_error": 0.00014701912409435843, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0003523057598050981, + "mean_abs_rel_error": 0.0003523057598050981, + "median_abs_rel_error": 0.0003523057598050981, + "max_abs_rel_error": 0.0003523057598050981, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00032011016552169723, + "mean_abs_rel_error": 0.00032011016552169723, + "median_abs_rel_error": 0.00032011016552169723, + "max_abs_rel_error": 0.00032011016552169723, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00015143199844874083, + "mean_abs_rel_error": 0.00015143199844874083, + "median_abs_rel_error": 0.00015143199844874083, + "max_abs_rel_error": 0.00015143199844874083, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 30, + "mean_capped_abs_rel_error": 0.21471426064851992, + "mean_abs_rel_error": 0.5423641274013307, + "median_abs_rel_error": 0.00252177706502342, + "max_abs_rel_error": 10.765952232439137, + "share_within_5pct": 0.7333333333333333, + "share_within_10pct": 0.7333333333333333 + }, + "b_counts_w010": { + "targets": 30, + "mean_capped_abs_rel_error": 0.18295002461408602, + "mean_abs_rel_error": 0.5112054125283714, + "median_abs_rel_error": 0.0040482104430052835, + "max_abs_rel_error": 10.847661637428558, + "share_within_5pct": 0.7666666666666667, + "share_within_10pct": 0.7666666666666667 + }, + "b_counts_w025": { + "targets": 30, + "mean_capped_abs_rel_error": 0.19874222880622044, + "mean_abs_rel_error": 0.5393270377194155, + "median_abs_rel_error": 0.0030691566531123584, + "max_abs_rel_error": 11.217544267395853, + "share_within_5pct": 0.7666666666666667, + "share_within_10pct": 0.7666666666666667 + }, + "b_counts_w0_l2": { + "targets": 30, + "mean_capped_abs_rel_error": 0.2393941419836288, + "mean_abs_rel_error": 0.5283098547665275, + "median_abs_rel_error": 0.0049085089918813815, + "max_abs_rel_error": 9.667471383486959, + "share_within_5pct": 0.7, + "share_within_10pct": 0.7 + }, + "b_counts_w010_l2": { + "targets": 30, + "mean_capped_abs_rel_error": 0.2374593318294757, + "mean_abs_rel_error": 0.5328414041619776, + "median_abs_rel_error": 0.0039726311634365186, + "max_abs_rel_error": 9.861462169975056, + "share_within_5pct": 0.7, + "share_within_10pct": 0.7 + }, + "b_counts_w025_l2": { + "targets": 30, + "mean_capped_abs_rel_error": 0.23506847717520607, + "mean_abs_rel_error": 0.5369293518822615, + "median_abs_rel_error": 0.004413020056884006, + "max_abs_rel_error": 10.055826241211667, + "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.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": { + "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.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 + }, + "b_counts_w0": { + "targets": 261, + "mean_capped_abs_rel_error": 0.0061627955808436245, + "mean_abs_rel_error": 0.0061627955808436245, + "median_abs_rel_error": 0.0014812868364113255, + "max_abs_rel_error": 0.20554953298541662, + "share_within_5pct": 0.9808429118773946, + "share_within_10pct": 0.9846743295019157 + }, + "b_counts_w010": { + "targets": 261, + "mean_capped_abs_rel_error": 0.006015967625652256, + "mean_abs_rel_error": 0.006015967625652256, + "median_abs_rel_error": 0.0012964506645500415, + "max_abs_rel_error": 0.19445893507100262, + "share_within_5pct": 0.9808429118773946, + "share_within_10pct": 0.9846743295019157 + }, + "b_counts_w025": { + "targets": 261, + "mean_capped_abs_rel_error": 0.006168178511429748, + "mean_abs_rel_error": 0.006168178511429748, + "median_abs_rel_error": 0.0013184171222548246, + "max_abs_rel_error": 0.21117413390916476, + "share_within_5pct": 0.9808429118773946, + "share_within_10pct": 0.9846743295019157 + }, + "b_counts_w0_l2": { + "targets": 261, + "mean_capped_abs_rel_error": 0.02260730940275518, + "mean_abs_rel_error": 0.024064389268034947, + "median_abs_rel_error": 0.0018975127033621772, + "max_abs_rel_error": 1.1945950224145017, + "share_within_5pct": 0.9233716475095786, + "share_within_10pct": 0.9501915708812261 + }, + "b_counts_w010_l2": { + "targets": 261, + "mean_capped_abs_rel_error": 0.022517777872621658, + "mean_abs_rel_error": 0.023919628724437286, + "median_abs_rel_error": 0.002078449391030113, + "max_abs_rel_error": 1.191501540723294, + "share_within_5pct": 0.9195402298850575, + "share_within_10pct": 0.9501915708812261 + }, + "b_counts_w025_l2": { + "targets": 261, + "mean_capped_abs_rel_error": 0.0222794440018092, + "mean_abs_rel_error": 0.02351334365212331, + "median_abs_rel_error": 0.002263887774464752, + "max_abs_rel_error": 1.1660052961495362, + "share_within_5pct": 0.9233716475095786, + "share_within_10pct": 0.9540229885057471 + } + }, + "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.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, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.00882545738778887, + "mean_abs_rel_error": 0.00882545738778887, + "median_abs_rel_error": 0.0016450634500280543, + "max_abs_rel_error": 0.08494820720633142, + "share_within_5pct": 0.9615384615384616, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.010382507231171175, + "mean_abs_rel_error": 0.010382507231171175, + "median_abs_rel_error": 0.002576762085705708, + "max_abs_rel_error": 0.08865597961673184, + "share_within_5pct": 0.9519230769230769, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.012135461873546308, + "mean_abs_rel_error": 0.012135461873546308, + "median_abs_rel_error": 0.002692129509922339, + "max_abs_rel_error": 0.11204885961380122, + "share_within_5pct": 0.9423076923076923, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.008226413854571627, + "mean_abs_rel_error": 0.008226413854571627, + "median_abs_rel_error": 0.0021814155700908625, + "max_abs_rel_error": 0.07680072006623519, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.008250284509661192, + "mean_abs_rel_error": 0.008250284509661192, + "median_abs_rel_error": 0.0022775243607393155, + "max_abs_rel_error": 0.08216066915993392, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.008457119204693126, + "mean_abs_rel_error": 0.008457119204693126, + "median_abs_rel_error": 0.0019716458500776846, + "max_abs_rel_error": 0.09646564545017118, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 1.0 + } + }, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.010663216295869983, + "mean_abs_rel_error": 0.023196633448562067, + "median_abs_rel_error": 0.0008587788831096358, + "max_abs_rel_error": 2.303475383879977, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.010806925934795727, + "mean_abs_rel_error": 0.022644378130450924, + "median_abs_rel_error": 0.001047108366988719, + "max_abs_rel_error": 2.23109502834814, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.010619662155505237, + "mean_abs_rel_error": 0.02307079948897932, + "median_abs_rel_error": 0.0008364433909159577, + "max_abs_rel_error": 2.294918282681304, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.010786782074768991, + "mean_abs_rel_error": 0.027679531750120782, + "median_abs_rel_error": 0.001071385171726907, + "max_abs_rel_error": 2.756845966236587, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.010870355991278847, + "mean_abs_rel_error": 0.027659450796836176, + "median_abs_rel_error": 0.0010120888762511927, + "max_abs_rel_error": 2.746065859777963, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.01071840140261505, + "mean_abs_rel_error": 0.027630857801521615, + "median_abs_rel_error": 0.000870238013902507, + "max_abs_rel_error": 2.7588954654862827, + "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.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.5 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.17421617135135625, + "mean_abs_rel_error": 0.17421617135135625, + "median_abs_rel_error": 0.06056729056613796, + "max_abs_rel_error": 0.5573357900032646, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.17602872096540728, + "mean_abs_rel_error": 0.17602872096540728, + "median_abs_rel_error": 0.0551001703887114, + "max_abs_rel_error": 0.5539535306763838, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5096153846153846 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.17556292492733944, + "mean_abs_rel_error": 0.17556292492733944, + "median_abs_rel_error": 0.0557780004937113, + "max_abs_rel_error": 0.5583972966507049, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5096153846153846 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.2525519632290201, + "mean_abs_rel_error": 0.2525519632290201, + "median_abs_rel_error": 0.29295267344002873, + "max_abs_rel_error": 0.6177337610364484, + "share_within_5pct": 0.47115384615384615, + "share_within_10pct": 0.4807692307692308 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.25172332132908665, + "mean_abs_rel_error": 0.25172332132908665, + "median_abs_rel_error": 0.28931826912994374, + "max_abs_rel_error": 0.6173963087191925, + "share_within_5pct": 0.47115384615384615, + "share_within_10pct": 0.4807692307692308 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.25074968144942833, + "mean_abs_rel_error": 0.25074968144942833, + "median_abs_rel_error": 0.2798915542375148, + "max_abs_rel_error": 0.618568393165072, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 2, + "mean_capped_abs_rel_error": 0.07236808206797787, + "mean_abs_rel_error": 0.07236808206797787, + "median_abs_rel_error": 0.07236808206797787, + "max_abs_rel_error": 0.14467873679268392, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_counts_w010": { + "targets": 2, + "mean_capped_abs_rel_error": 0.07310883196840698, + "mean_abs_rel_error": 0.07310883196840698, + "median_abs_rel_error": 0.07310883196840698, + "max_abs_rel_error": 0.14597606741357122, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_counts_w025": { + "targets": 2, + "mean_capped_abs_rel_error": 0.07336845957665236, + "mean_abs_rel_error": 0.07336845957665236, + "median_abs_rel_error": 0.07336845957665236, + "max_abs_rel_error": 0.1464313208279484, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_counts_w0_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.06518398599649354, + "mean_abs_rel_error": 0.06518398599649354, + "median_abs_rel_error": 0.06518398599649354, + "max_abs_rel_error": 0.1302386612547812, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_counts_w010_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.06488269516381942, + "mean_abs_rel_error": 0.06488269516381942, + "median_abs_rel_error": 0.06488269516381942, + "max_abs_rel_error": 0.12966162592017771, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_counts_w025_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0652524547508716, + "mean_abs_rel_error": 0.0652524547508716, + "median_abs_rel_error": 0.0652524547508716, + "max_abs_rel_error": 0.13045930556892124, + "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.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.6423076923076924 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 260, + "mean_capped_abs_rel_error": 0.20688400316993277, + "mean_abs_rel_error": 0.2800866031141517, + "median_abs_rel_error": 0.02280226462026947, + "max_abs_rel_error": 3.762344337412535, + "share_within_5pct": 0.5884615384615385, + "share_within_10pct": 0.6576923076923077 + }, + "b_counts_w010": { + "targets": 260, + "mean_capped_abs_rel_error": 0.2070941531936358, + "mean_abs_rel_error": 0.27984002988874745, + "median_abs_rel_error": 0.02125779817083252, + "max_abs_rel_error": 3.772287859269036, + "share_within_5pct": 0.573076923076923, + "share_within_10pct": 0.6576923076923077 + }, + "b_counts_w025": { + "targets": 260, + "mean_capped_abs_rel_error": 0.20771870663032332, + "mean_abs_rel_error": 0.28098842029044074, + "median_abs_rel_error": 0.026945860618633025, + "max_abs_rel_error": 3.746906688833584, + "share_within_5pct": 0.5615384615384615, + "share_within_10pct": 0.6538461538461539 + }, + "b_counts_w0_l2": { + "targets": 260, + "mean_capped_abs_rel_error": 0.2243959691770205, + "mean_abs_rel_error": 0.3062580162993364, + "median_abs_rel_error": 0.04091594689964919, + "max_abs_rel_error": 3.904672504789965, + "share_within_5pct": 0.5384615384615384, + "share_within_10pct": 0.6423076923076924 + }, + "b_counts_w010_l2": { + "targets": 260, + "mean_capped_abs_rel_error": 0.22448200409660496, + "mean_abs_rel_error": 0.30601577259553686, + "median_abs_rel_error": 0.04034586506713403, + "max_abs_rel_error": 3.884290242959006, + "share_within_5pct": 0.5384615384615384, + "share_within_10pct": 0.6384615384615384 + }, + "b_counts_w025_l2": { + "targets": 260, + "mean_capped_abs_rel_error": 0.22376408626409452, + "mean_abs_rel_error": 0.3047157735538329, + "median_abs_rel_error": 0.04168886965775402, + "max_abs_rel_error": 3.8615015155641914, + "share_within_5pct": 0.5346153846153846, + "share_within_10pct": 0.6384615384615384 + } + }, + "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.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, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.00973601068642379, + "mean_abs_rel_error": 0.00973601068642379, + "median_abs_rel_error": 0.0010178429120813912, + "max_abs_rel_error": 0.1833299135388756, + "share_within_5pct": 0.9519230769230769, + "share_within_10pct": 0.9807692307692307 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0100112164450492, + "mean_abs_rel_error": 0.0100112164450492, + "median_abs_rel_error": 0.0011766994193744247, + "max_abs_rel_error": 0.17362336358240407, + "share_within_5pct": 0.9423076923076923, + "share_within_10pct": 0.9807692307692307 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.011140087208385116, + "mean_abs_rel_error": 0.011140087208385116, + "median_abs_rel_error": 0.0013229831193920356, + "max_abs_rel_error": 0.1793773415360603, + "share_within_5pct": 0.9230769230769231, + "share_within_10pct": 0.9807692307692307 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.013218290051021443, + "mean_abs_rel_error": 0.013218290051021443, + "median_abs_rel_error": 0.0013214784307233303, + "max_abs_rel_error": 0.2545588201272174, + "share_within_5pct": 0.9134615384615384, + "share_within_10pct": 0.9807692307692307 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.013379003392114171, + "mean_abs_rel_error": 0.013379003392114171, + "median_abs_rel_error": 0.001339556534596785, + "max_abs_rel_error": 0.2544250167294864, + "share_within_5pct": 0.9134615384615384, + "share_within_10pct": 0.9807692307692307 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.013501965554425874, + "mean_abs_rel_error": 0.013501965554425874, + "median_abs_rel_error": 0.0011742669240358285, + "max_abs_rel_error": 0.25390646506127, + "share_within_5pct": 0.9134615384615384, + "share_within_10pct": 0.9807692307692307 + } + }, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 2, + "mean_capped_abs_rel_error": 0.00011719023941065944, + "mean_abs_rel_error": 0.00011719023941065944, + "median_abs_rel_error": 0.00011719023941065944, + "max_abs_rel_error": 0.00013281735932792676, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 2, + "mean_capped_abs_rel_error": 0.000291385268966691, + "mean_abs_rel_error": 0.000291385268966691, + "median_abs_rel_error": 0.000291385268966691, + "max_abs_rel_error": 0.0002940076647773988, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0003093835369023557, + "mean_abs_rel_error": 0.0003093835369023557, + "median_abs_rel_error": 0.0003093835369023557, + "max_abs_rel_error": 0.0005141890123601448, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0005857215215371394, + "mean_abs_rel_error": 0.0005857215215371394, + "median_abs_rel_error": 0.0005857215215371394, + "max_abs_rel_error": 0.0008224769643840351, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.000526886235046042, + "mean_abs_rel_error": 0.000526886235046042, + "median_abs_rel_error": 0.000526886235046042, + "max_abs_rel_error": 0.0007626057493226154, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.00041305209810132124, + "mean_abs_rel_error": 0.00041305209810132124, + "median_abs_rel_error": 0.00041305209810132124, + "max_abs_rel_error": 0.0005511580900246625, + "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.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, + "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.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 + }, + "b_counts_w0": { + "targets": 781, + "mean_capped_abs_rel_error": 0.028880151653190994, + "mean_abs_rel_error": 11550.169680925714, + "median_abs_rel_error": 0.0018287659689823043, + "max_abs_rel_error": 6559901.672550178, + "share_within_5pct": 0.8937259923175416, + "share_within_10pct": 0.9346991037131882 + }, + "b_counts_w010": { + "targets": 781, + "mean_capped_abs_rel_error": 0.02962069685992956, + "mean_abs_rel_error": 10616.12095272698, + "median_abs_rel_error": 0.001984392024450242, + "max_abs_rel_error": 6090882.117826293, + "share_within_5pct": 0.8962868117797695, + "share_within_10pct": 0.9359795134443022 + }, + "b_counts_w025": { + "targets": 781, + "mean_capped_abs_rel_error": 0.02974398614892302, + "mean_abs_rel_error": 9469.434230545205, + "median_abs_rel_error": 0.001958171419212867, + "max_abs_rel_error": 5734272.652911448, + "share_within_5pct": 0.8988476312419974, + "share_within_10pct": 0.9346991037131882 + }, + "b_counts_w0_l2": { + "targets": 781, + "mean_capped_abs_rel_error": 0.02954653554403996, + "mean_abs_rel_error": 31763.35485693596, + "median_abs_rel_error": 0.0022310809424942036, + "max_abs_rel_error": 20374983.09697308, + "share_within_5pct": 0.8937259923175416, + "share_within_10pct": 0.9321382842509603 + }, + "b_counts_w010_l2": { + "targets": 781, + "mean_capped_abs_rel_error": 0.029588691331928308, + "mean_abs_rel_error": 30895.780547424674, + "median_abs_rel_error": 0.0019834872008880886, + "max_abs_rel_error": 19728213.633251093, + "share_within_5pct": 0.8911651728553137, + "share_within_10pct": 0.9295774647887324 + }, + "b_counts_w025_l2": { + "targets": 781, + "mean_capped_abs_rel_error": 0.029679560701599463, + "mean_abs_rel_error": 28035.08415834889, + "median_abs_rel_error": 0.001897134926367962, + "max_abs_rel_error": 17574612.732194126, + "share_within_5pct": 0.8886043533930857, + "share_within_10pct": 0.9270166453265045 + } + }, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 106, + "mean_capped_abs_rel_error": 0.001730700734447952, + "mean_abs_rel_error": 0.001730700734447952, + "median_abs_rel_error": 0.0007069789427260611, + "max_abs_rel_error": 0.02951059952857434, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0015694838731528853, + "mean_abs_rel_error": 0.0015694838731528853, + "median_abs_rel_error": 0.0006563124983302471, + "max_abs_rel_error": 0.027323618560869838, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0016493380847051838, + "mean_abs_rel_error": 0.0016493380847051838, + "median_abs_rel_error": 0.0007201859882869804, + "max_abs_rel_error": 0.028507665956605237, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0018510721946365719, + "mean_abs_rel_error": 0.0018510721946365719, + "median_abs_rel_error": 0.0007476156725134865, + "max_abs_rel_error": 0.025622424677342805, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.00181997160226038, + "mean_abs_rel_error": 0.00181997160226038, + "median_abs_rel_error": 0.0008371771260374645, + "max_abs_rel_error": 0.024308370403441987, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0017243396342344014, + "mean_abs_rel_error": 0.0017243396342344014, + "median_abs_rel_error": 0.0005365853767709768, + "max_abs_rel_error": 0.02521839178153911, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0006607024111322502, + "mean_abs_rel_error": 0.0006607024111322502, + "median_abs_rel_error": 0.0006607024111322502, + "max_abs_rel_error": 0.0012045437149712072, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 2, + "mean_capped_abs_rel_error": 0.00073375598671188, + "mean_abs_rel_error": 0.00073375598671188, + "median_abs_rel_error": 0.00073375598671188, + "max_abs_rel_error": 0.00098655038627454, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 2, + "mean_capped_abs_rel_error": 0.001012065265471479, + "mean_abs_rel_error": 0.001012065265471479, + "median_abs_rel_error": 0.001012065265471479, + "max_abs_rel_error": 0.001253847342781194, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.00039173890766195583, + "mean_abs_rel_error": 0.00039173890766195583, + "median_abs_rel_error": 0.00039173890766195583, + "max_abs_rel_error": 0.0007217996668532709, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0004882917488823968, + "mean_abs_rel_error": 0.0004882917488823968, + "median_abs_rel_error": 0.0004882917488823968, + "max_abs_rel_error": 0.0007309534987406471, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0004412923593815277, + "mean_abs_rel_error": 0.0004412923593815277, + "median_abs_rel_error": 0.0004412923593815277, + "max_abs_rel_error": 0.0005050521945600414, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 2, + "mean_capped_abs_rel_error": 0.5001446305702997, + "mean_abs_rel_error": 2.9740309716299596, + "median_abs_rel_error": 2.9740309716299596, + "max_abs_rel_error": 5.94777268211932, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_counts_w010": { + "targets": 2, + "mean_capped_abs_rel_error": 0.5002083077766113, + "mean_abs_rel_error": 2.8846109763794874, + "median_abs_rel_error": 2.8846109763794874, + "max_abs_rel_error": 5.768805337205752, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_counts_w025": { + "targets": 2, + "mean_capped_abs_rel_error": 0.5011746153577111, + "mean_abs_rel_error": 2.856149178146882, + "median_abs_rel_error": 2.856149178146882, + "max_abs_rel_error": 5.7099491255783414, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_counts_w0_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.5005933107736807, + "mean_abs_rel_error": 2.3591211226200004, + "median_abs_rel_error": 2.3591211226200004, + "max_abs_rel_error": 4.717055623692639, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_counts_w010_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.5000879788140351, + "mean_abs_rel_error": 2.3590551221299316, + "median_abs_rel_error": 2.3590551221299316, + "max_abs_rel_error": 4.7179342866317935, + "share_within_5pct": 0.5, + "share_within_10pct": 0.5 + }, + "b_counts_w025_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.500045382772315, + "mean_abs_rel_error": 2.3604278473387947, + "median_abs_rel_error": 2.3604278473387947, + "max_abs_rel_error": 4.72076492913296, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0073225495017417075, + "mean_abs_rel_error": 0.0073225495017417075, + "median_abs_rel_error": 0.0020801351123853284, + "max_abs_rel_error": 0.06742861013211916, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0074614456897280825, + "mean_abs_rel_error": 0.0074614456897280825, + "median_abs_rel_error": 0.00192179669630466, + "max_abs_rel_error": 0.06803640442022277, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.007649858351457785, + "mean_abs_rel_error": 0.007649858351457785, + "median_abs_rel_error": 0.002257144392805553, + "max_abs_rel_error": 0.06562570509438284, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.008255816087314675, + "mean_abs_rel_error": 0.008255816087314675, + "median_abs_rel_error": 0.0020419044544438742, + "max_abs_rel_error": 0.10939164698778014, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.008136906370125768, + "mean_abs_rel_error": 0.008136906370125768, + "median_abs_rel_error": 0.00189517676893757, + "max_abs_rel_error": 0.11183496804696229, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.008253448220997156, + "mean_abs_rel_error": 0.008253448220997156, + "median_abs_rel_error": 0.0019224580385897427, + "max_abs_rel_error": 0.11199639339657143, + "share_within_5pct": 0.9711538461538461, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.016876179656519462, + "mean_abs_rel_error": 0.016876179656519462, + "median_abs_rel_error": 0.007509904780723088, + "max_abs_rel_error": 0.0897235015463512, + "share_within_5pct": 0.9519230769230769, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.01707881306565773, + "mean_abs_rel_error": 0.01707881306565773, + "median_abs_rel_error": 0.007598047432148564, + "max_abs_rel_error": 0.09065172173566909, + "share_within_5pct": 0.9519230769230769, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.01736355093837401, + "mean_abs_rel_error": 0.01736355093837401, + "median_abs_rel_error": 0.010156013341833471, + "max_abs_rel_error": 0.08853929292438138, + "share_within_5pct": 0.9326923076923077, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.019722594762235982, + "mean_abs_rel_error": 0.019722594762235982, + "median_abs_rel_error": 0.0070620638580140525, + "max_abs_rel_error": 0.08599590681479562, + "share_within_5pct": 0.8942307692307693, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.01946460569333929, + "mean_abs_rel_error": 0.01946460569333929, + "median_abs_rel_error": 0.0072970399810254015, + "max_abs_rel_error": 0.08547851754127761, + "share_within_5pct": 0.8942307692307693, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.019612030377290868, + "mean_abs_rel_error": 0.019612030377290868, + "median_abs_rel_error": 0.0066160326689081676, + "max_abs_rel_error": 0.08569056712528687, + "share_within_5pct": 0.8942307692307693, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 2, + "mean_capped_abs_rel_error": 0.01254613781037754, + "mean_abs_rel_error": 0.01254613781037754, + "median_abs_rel_error": 0.01254613781037754, + "max_abs_rel_error": 0.02502528322096057, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 2, + "mean_capped_abs_rel_error": 0.012923521913245209, + "mean_abs_rel_error": 0.012923521913245209, + "median_abs_rel_error": 0.012923521913245209, + "max_abs_rel_error": 0.02544137156419687, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 2, + "mean_capped_abs_rel_error": 0.012371685896998524, + "mean_abs_rel_error": 0.012371685896998524, + "median_abs_rel_error": 0.012371685896998524, + "max_abs_rel_error": 0.024653504880175408, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.021438791411505183, + "mean_abs_rel_error": 0.021438791411505183, + "median_abs_rel_error": 0.021438791411505183, + "max_abs_rel_error": 0.024352971837469647, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.021200747576774096, + "mean_abs_rel_error": 0.021200747576774096, + "median_abs_rel_error": 0.021200747576774096, + "max_abs_rel_error": 0.024870917099637565, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.021443099105166646, + "mean_abs_rel_error": 0.021443099105166646, + "median_abs_rel_error": 0.021443099105166646, + "max_abs_rel_error": 0.024617465750771863, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0014806739929020421, + "mean_abs_rel_error": 0.0014806739929020421, + "median_abs_rel_error": 0.0009100579805462493, + "max_abs_rel_error": 0.018661004269956618, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0013492597830115013, + "mean_abs_rel_error": 0.0013492597830115013, + "median_abs_rel_error": 0.0008256271996948287, + "max_abs_rel_error": 0.018782167773489802, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0014385505263293662, + "mean_abs_rel_error": 0.0014385505263293662, + "median_abs_rel_error": 0.0008948053861969859, + "max_abs_rel_error": 0.018945451489618036, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0015481021715158362, + "mean_abs_rel_error": 0.0015481021715158362, + "median_abs_rel_error": 0.0010146195604850067, + "max_abs_rel_error": 0.019410387694830826, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0015798522574389515, + "mean_abs_rel_error": 0.0015798522574389515, + "median_abs_rel_error": 0.0009906076069214698, + "max_abs_rel_error": 0.01829738818951336, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0016231182897104267, + "mean_abs_rel_error": 0.0016231182897104267, + "median_abs_rel_error": 0.0011145284783571157, + "max_abs_rel_error": 0.018897945788366295, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 55, + "mean_capped_abs_rel_error": 0.022561520778005918, + "mean_abs_rel_error": 0.022561520778005918, + "median_abs_rel_error": 0.001161328792428893, + "max_abs_rel_error": 0.5323612114442675, + "share_within_5pct": 0.9454545454545454, + "share_within_10pct": 0.9454545454545454 + }, + "b_counts_w010": { + "targets": 55, + "mean_capped_abs_rel_error": 0.02342231041603225, + "mean_abs_rel_error": 0.02342231041603225, + "median_abs_rel_error": 0.0011410448739388116, + "max_abs_rel_error": 0.5382286818861367, + "share_within_5pct": 0.9090909090909091, + "share_within_10pct": 0.9454545454545454 + }, + "b_counts_w025": { + "targets": 55, + "mean_capped_abs_rel_error": 0.02284678067512778, + "mean_abs_rel_error": 0.02284678067512778, + "median_abs_rel_error": 0.0014807414064924181, + "max_abs_rel_error": 0.5371642003155248, + "share_within_5pct": 0.9454545454545454, + "share_within_10pct": 0.9454545454545454 + }, + "b_counts_w0_l2": { + "targets": 55, + "mean_capped_abs_rel_error": 0.025154130981802164, + "mean_abs_rel_error": 0.025154130981802164, + "median_abs_rel_error": 0.0013074484972180958, + "max_abs_rel_error": 0.5364800044530305, + "share_within_5pct": 0.8909090909090909, + "share_within_10pct": 0.9454545454545454 + }, + "b_counts_w010_l2": { + "targets": 55, + "mean_capped_abs_rel_error": 0.02481218593026189, + "mean_abs_rel_error": 0.02481218593026189, + "median_abs_rel_error": 0.0012548300895955582, + "max_abs_rel_error": 0.5357998001424247, + "share_within_5pct": 0.8909090909090909, + "share_within_10pct": 0.9636363636363636 + }, + "b_counts_w025_l2": { + "targets": 55, + "mean_capped_abs_rel_error": 0.024408755148919475, + "mean_abs_rel_error": 0.024408755148919475, + "median_abs_rel_error": 0.001061893250034863, + "max_abs_rel_error": 0.5329821815546324, + "share_within_5pct": 0.9090909090909091, + "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.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": { + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.06237399446600357, + "mean_abs_rel_error": 0.22654353130095664, + "median_abs_rel_error": 0.0015191116326492154, + "max_abs_rel_error": 6.840796570357878, + "share_within_5pct": 0.9134615384615384, + "share_within_10pct": 0.9326923076923077 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.06242355729298585, + "mean_abs_rel_error": 0.2274610787286216, + "median_abs_rel_error": 0.0016373821682591108, + "max_abs_rel_error": 6.961577805152628, + "share_within_5pct": 0.9230769230769231, + "share_within_10pct": 0.9326923076923077 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0630240687153072, + "mean_abs_rel_error": 0.23058491065932119, + "median_abs_rel_error": 0.0017319816944726528, + "max_abs_rel_error": 6.996157409708223, + "share_within_5pct": 0.9134615384615384, + "share_within_10pct": 0.9326923076923077 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.06354523570496522, + "mean_abs_rel_error": 0.22229689482786788, + "median_abs_rel_error": 0.0016505891959283287, + "max_abs_rel_error": 5.9690287691958375, + "share_within_5pct": 0.9230769230769231, + "share_within_10pct": 0.9230769230769231 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.06377712748154496, + "mean_abs_rel_error": 0.22252979416782429, + "median_abs_rel_error": 0.0019021818661036885, + "max_abs_rel_error": 5.9936469744044185, + "share_within_5pct": 0.9230769230769231, + "share_within_10pct": 0.9230769230769231 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.06392874405533362, + "mean_abs_rel_error": 0.2229072051701196, + "median_abs_rel_error": 0.0015580780266956566, + "max_abs_rel_error": 6.01446724638651, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 2, + "mean_capped_abs_rel_error": 0.00028214453562603996, + "mean_abs_rel_error": 0.00028214453562603996, + "median_abs_rel_error": 0.00028214453562603996, + "max_abs_rel_error": 0.0005269723014982878, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0004880682795882857, + "mean_abs_rel_error": 0.0004880682795882857, + "median_abs_rel_error": 0.0004880682795882857, + "max_abs_rel_error": 0.0004976783231428707, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 2, + "mean_capped_abs_rel_error": 8.157345194035718e-05, + "mean_abs_rel_error": 8.157345194035718e-05, + "median_abs_rel_error": 8.157345194035718e-05, + "max_abs_rel_error": 0.00015363777777590854, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0001224556282951037, + "mean_abs_rel_error": 0.0001224556282951037, + "median_abs_rel_error": 0.0001224556282951037, + "max_abs_rel_error": 0.0001887979699503717, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.0016323593256176846, + "mean_abs_rel_error": 0.0016323593256176846, + "median_abs_rel_error": 0.0016323593256176846, + "max_abs_rel_error": 0.0019340567189963611, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 2, + "mean_capped_abs_rel_error": 0.00037333033851226743, + "mean_abs_rel_error": 0.00037333033851226743, + "median_abs_rel_error": 0.00037333033851226743, + "max_abs_rel_error": 0.0005217849420469425, + "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.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": { + "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.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 + }, + "b_counts_w0": { + "targets": 108, + "mean_capped_abs_rel_error": 0.007936251303616927, + "mean_abs_rel_error": 0.007936251303616927, + "median_abs_rel_error": 0.0011318471626554699, + "max_abs_rel_error": 0.20988240129060948, + "share_within_5pct": 0.9629629629629629, + "share_within_10pct": 0.9722222222222222 + }, + "b_counts_w010": { + "targets": 108, + "mean_capped_abs_rel_error": 0.008244542078027143, + "mean_abs_rel_error": 0.008244542078027143, + "median_abs_rel_error": 0.001273264153665912, + "max_abs_rel_error": 0.20952723159131828, + "share_within_5pct": 0.9537037037037037, + "share_within_10pct": 0.9722222222222222 + }, + "b_counts_w025": { + "targets": 108, + "mean_capped_abs_rel_error": 0.008308123352774298, + "mean_abs_rel_error": 0.008308123352774298, + "median_abs_rel_error": 0.0011074591939313025, + "max_abs_rel_error": 0.21383776886835335, + "share_within_5pct": 0.9537037037037037, + "share_within_10pct": 0.9722222222222222 + }, + "b_counts_w0_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0077066865006801865, + "mean_abs_rel_error": 0.0077066865006801865, + "median_abs_rel_error": 0.0011841315751269042, + "max_abs_rel_error": 0.20679089410668716, + "share_within_5pct": 0.9629629629629629, + "share_within_10pct": 0.9814814814814815 + }, + "b_counts_w010_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.007683498897222137, + "mean_abs_rel_error": 0.007683498897222137, + "median_abs_rel_error": 0.001200663430529573, + "max_abs_rel_error": 0.20424727954982438, + "share_within_5pct": 0.9629629629629629, + "share_within_10pct": 0.9814814814814815 + }, + "b_counts_w025_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.007622633877696661, + "mean_abs_rel_error": 0.007622633877696661, + "median_abs_rel_error": 0.0012442857060005127, + "max_abs_rel_error": 0.20121904343920735, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.003544803225760608, + "mean_abs_rel_error": 0.003544803225760608, + "median_abs_rel_error": 0.0010809878038753097, + "max_abs_rel_error": 0.23672524559908628, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0034573864908628202, + "mean_abs_rel_error": 0.0034573864908628202, + "median_abs_rel_error": 0.0010542547228564732, + "max_abs_rel_error": 0.2313122196551566, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0038762122953854656, + "mean_abs_rel_error": 0.0038762122953854656, + "median_abs_rel_error": 0.0010946722623005993, + "max_abs_rel_error": 0.2632877219511864, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.005521410953817294, + "mean_abs_rel_error": 0.005521410953817294, + "median_abs_rel_error": 0.0010015619562783273, + "max_abs_rel_error": 0.37769760522964274, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.005927070557197828, + "mean_abs_rel_error": 0.005927070557197828, + "median_abs_rel_error": 0.0012639530857620964, + "max_abs_rel_error": 0.38698607975517785, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0056947922649278095, + "mean_abs_rel_error": 0.0056947922649278095, + "median_abs_rel_error": 0.0012330925799289663, + "max_abs_rel_error": 0.37128661735195084, + "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.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, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.006090138320319441, + "mean_abs_rel_error": 0.006090138320319441, + "median_abs_rel_error": 0.0011807843646102507, + "max_abs_rel_error": 0.13179435754227167, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.006486946756040201, + "mean_abs_rel_error": 0.006486946756040201, + "median_abs_rel_error": 0.0013027045702576768, + "max_abs_rel_error": 0.1297122267977665, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.00636992418814455, + "mean_abs_rel_error": 0.00636992418814455, + "median_abs_rel_error": 0.0011866841865704504, + "max_abs_rel_error": 0.1358934570768436, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.004686325807761471, + "mean_abs_rel_error": 0.004686325807761471, + "median_abs_rel_error": 0.0012287230516212866, + "max_abs_rel_error": 0.08525099932416416, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.004676247027709731, + "mean_abs_rel_error": 0.004676247027709731, + "median_abs_rel_error": 0.0012227255717956746, + "max_abs_rel_error": 0.091729344778093, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.004676000758104223, + "mean_abs_rel_error": 0.004676000758104223, + "median_abs_rel_error": 0.0014416073890652658, + "max_abs_rel_error": 0.09084664454825318, + "share_within_5pct": 0.9807692307692307, + "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.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, + "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.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 + }, + "b_counts_w0": { + "targets": 106, + "mean_capped_abs_rel_error": 0.06153827577293832, + "mean_abs_rel_error": 0.08908847161853334, + "median_abs_rel_error": 0.0017734538764818336, + "max_abs_rel_error": 2.0033551962332767, + "share_within_5pct": 0.8679245283018868, + "share_within_10pct": 0.9339622641509434 + }, + "b_counts_w010": { + "targets": 106, + "mean_capped_abs_rel_error": 0.060962152464109486, + "mean_abs_rel_error": 0.08786895831532797, + "median_abs_rel_error": 0.001992911655388821, + "max_abs_rel_error": 1.9913314075255037, + "share_within_5pct": 0.8679245283018868, + "share_within_10pct": 0.9339622641509434 + }, + "b_counts_w025": { + "targets": 106, + "mean_capped_abs_rel_error": 0.061300460322528026, + "mean_abs_rel_error": 0.08824142015395672, + "median_abs_rel_error": 0.0014849000731059535, + "max_abs_rel_error": 1.9089763779593136, + "share_within_5pct": 0.8773584905660378, + "share_within_10pct": 0.9339622641509434 + }, + "b_counts_w0_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.06414346231679328, + "mean_abs_rel_error": 0.08718171022742774, + "median_abs_rel_error": 0.0017628594825928995, + "max_abs_rel_error": 1.8784745108214167, + "share_within_5pct": 0.8679245283018868, + "share_within_10pct": 0.9150943396226415 + }, + "b_counts_w010_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.06454396165088173, + "mean_abs_rel_error": 0.08798717558629383, + "median_abs_rel_error": 0.0019075745676326627, + "max_abs_rel_error": 1.8814886990265651, + "share_within_5pct": 0.8679245283018868, + "share_within_10pct": 0.9056603773584906 + }, + "b_counts_w025_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.06476716595032476, + "mean_abs_rel_error": 0.08851820745909322, + "median_abs_rel_error": 0.0015647089208310422, + "max_abs_rel_error": 1.8895951855646549, + "share_within_5pct": 0.8679245283018868, + "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.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, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.005295093727966422, + "mean_abs_rel_error": 0.005295093727966422, + "median_abs_rel_error": 0.001247673008222028, + "max_abs_rel_error": 0.08319111694092964, + "share_within_5pct": 0.9615384615384616, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.005819431090390464, + "mean_abs_rel_error": 0.005819431090390464, + "median_abs_rel_error": 0.0011601432514350882, + "max_abs_rel_error": 0.09019461686675538, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.006836758431901328, + "mean_abs_rel_error": 0.006836758431901328, + "median_abs_rel_error": 0.0016522023566746557, + "max_abs_rel_error": 0.09063803680424379, + "share_within_5pct": 0.9903846153846154, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.008882676999354917, + "mean_abs_rel_error": 0.008882676999354917, + "median_abs_rel_error": 0.0015277381223756147, + "max_abs_rel_error": 0.07621447954028364, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.009241158690586306, + "mean_abs_rel_error": 0.009241158690586306, + "median_abs_rel_error": 0.001384271810202321, + "max_abs_rel_error": 0.0809475644997832, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.009781837781201686, + "mean_abs_rel_error": 0.009781837781201686, + "median_abs_rel_error": 0.0015030363988618358, + "max_abs_rel_error": 0.08207460681052876, + "share_within_5pct": 0.9615384615384616, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.03057460343757665, + "mean_abs_rel_error": 1.7849145159863984, + "median_abs_rel_error": 0.0011478798626149934, + "max_abs_rel_error": 162.97544316796913, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.030562385088833174, + "mean_abs_rel_error": 1.8217113093629325, + "median_abs_rel_error": 0.0010925357588617598, + "max_abs_rel_error": 164.24172792327002, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.030633671601270958, + "mean_abs_rel_error": 1.685024120911483, + "median_abs_rel_error": 0.0013129541868736193, + "max_abs_rel_error": 163.4644537058735, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.03124780514551094, + "mean_abs_rel_error": 1.8457496153972832, + "median_abs_rel_error": 0.0015483743661787548, + "max_abs_rel_error": 140.9133273493795, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.031823531473689555, + "mean_abs_rel_error": 1.826194935512819, + "median_abs_rel_error": 0.0014209208806218367, + "max_abs_rel_error": 141.33681970558916, + "share_within_5pct": 0.9711538461538461, + "share_within_10pct": 0.9711538461538461 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.031175770686381644, + "mean_abs_rel_error": 1.8020221216556642, + "median_abs_rel_error": 0.0016117186694129776, + "max_abs_rel_error": 140.02842104325876, + "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.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, + "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.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 + }, + "b_counts_w0": { + "targets": 106, + "mean_capped_abs_rel_error": 0.020682964423712032, + "mean_abs_rel_error": 0.020682964423712032, + "median_abs_rel_error": 0.004107732213780798, + "max_abs_rel_error": 0.19724260309980043, + "share_within_5pct": 0.8962264150943396, + "share_within_10pct": 0.9433962264150944 + }, + "b_counts_w010": { + "targets": 106, + "mean_capped_abs_rel_error": 0.02141727434103533, + "mean_abs_rel_error": 0.02141727434103533, + "median_abs_rel_error": 0.00578318118501201, + "max_abs_rel_error": 0.19584955287733166, + "share_within_5pct": 0.8867924528301887, + "share_within_10pct": 0.9433962264150944 + }, + "b_counts_w025": { + "targets": 106, + "mean_capped_abs_rel_error": 0.02209320034372632, + "mean_abs_rel_error": 0.02209320034372632, + "median_abs_rel_error": 0.008199168450584268, + "max_abs_rel_error": 0.2069439598045986, + "share_within_5pct": 0.8867924528301887, + "share_within_10pct": 0.9433962264150944 + }, + "b_counts_w0_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.02148668186319489, + "mean_abs_rel_error": 0.02148668186319489, + "median_abs_rel_error": 0.0054958351064050975, + "max_abs_rel_error": 0.2260293096326377, + "share_within_5pct": 0.8679245283018868, + "share_within_10pct": 0.9716981132075472 + }, + "b_counts_w010_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.021182536423567915, + "mean_abs_rel_error": 0.021182536423567915, + "median_abs_rel_error": 0.0051188897532660795, + "max_abs_rel_error": 0.22641813198318195, + "share_within_5pct": 0.8773584905660378, + "share_within_10pct": 0.9716981132075472 + }, + "b_counts_w025_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.02118258389835191, + "mean_abs_rel_error": 0.02118258389835191, + "median_abs_rel_error": 0.00499303211486826, + "max_abs_rel_error": 0.2301398187356792, + "share_within_5pct": 0.8773584905660378, + "share_within_10pct": 0.9716981132075472 + } + }, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.007943589865111185, + "mean_abs_rel_error": 0.007943589865111185, + "median_abs_rel_error": 0.0013557902524316393, + "max_abs_rel_error": 0.3758282978842393, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9807692307692307 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.007682131863363502, + "mean_abs_rel_error": 0.007682131863363502, + "median_abs_rel_error": 0.0011002135340594074, + "max_abs_rel_error": 0.38002467011544877, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9807692307692307 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.007792129722929037, + "mean_abs_rel_error": 0.007792129722929037, + "median_abs_rel_error": 0.0012146262436141522, + "max_abs_rel_error": 0.38501509454545413, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9807692307692307 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.009138663657320457, + "mean_abs_rel_error": 0.009138663657320457, + "median_abs_rel_error": 0.001186889835482143, + "max_abs_rel_error": 0.4035857768942533, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9807692307692307 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.009069822280997005, + "mean_abs_rel_error": 0.009069822280997005, + "median_abs_rel_error": 0.0010635643649790274, + "max_abs_rel_error": 0.40315904411992604, + "share_within_5pct": 0.9807692307692307, + "share_within_10pct": 0.9807692307692307 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.009170860808175335, + "mean_abs_rel_error": 0.009170860808175335, + "median_abs_rel_error": 0.0015585034710621586, + "max_abs_rel_error": 0.4008293488491952, + "share_within_5pct": 0.9807692307692307, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 107, + "mean_capped_abs_rel_error": 0.0040616774125126825, + "mean_abs_rel_error": 0.0040616774125126825, + "median_abs_rel_error": 0.001560108430970466, + "max_abs_rel_error": 0.03508705115177004, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 107, + "mean_capped_abs_rel_error": 0.00408617207059436, + "mean_abs_rel_error": 0.00408617207059436, + "median_abs_rel_error": 0.001583433740368359, + "max_abs_rel_error": 0.03594653549107241, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 107, + "mean_capped_abs_rel_error": 0.0042992617295989554, + "mean_abs_rel_error": 0.0042992617295989554, + "median_abs_rel_error": 0.0016544300393330834, + "max_abs_rel_error": 0.033274180163437236, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 107, + "mean_capped_abs_rel_error": 0.005853117410714775, + "mean_abs_rel_error": 0.005853117410714775, + "median_abs_rel_error": 0.0015905931020305862, + "max_abs_rel_error": 0.04219478717625062, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 107, + "mean_capped_abs_rel_error": 0.005784688238337038, + "mean_abs_rel_error": 0.005784688238337038, + "median_abs_rel_error": 0.001874860292133017, + "max_abs_rel_error": 0.041582387428341534, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 107, + "mean_capped_abs_rel_error": 0.005794439318969557, + "mean_abs_rel_error": 0.005794439318969557, + "median_abs_rel_error": 0.0017158178067746012, + "max_abs_rel_error": 0.042863528269942594, + "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.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, + "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.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 + }, + "b_counts_w0": { + "targets": 1038, + "mean_capped_abs_rel_error": 0.058225880920701384, + "mean_abs_rel_error": 0.07579941518138882, + "median_abs_rel_error": 0.0019307302355269125, + "max_abs_rel_error": 11.397985012996479, + "share_within_5pct": 0.8853564547206165, + "share_within_10pct": 0.9065510597302505 + }, + "b_counts_w010": { + "targets": 1038, + "mean_capped_abs_rel_error": 0.059159605887565664, + "mean_abs_rel_error": 0.07674719096214563, + "median_abs_rel_error": 0.0019700242490097563, + "max_abs_rel_error": 11.653467518217544, + "share_within_5pct": 0.882466281310212, + "share_within_10pct": 0.9065510597302505 + }, + "b_counts_w025": { + "targets": 1038, + "mean_capped_abs_rel_error": 0.059755834362745106, + "mean_abs_rel_error": 0.07710499251360022, + "median_abs_rel_error": 0.0019508512728205057, + "max_abs_rel_error": 11.435188829369347, + "share_within_5pct": 0.8805394990366089, + "share_within_10pct": 0.9007707129094412 + }, + "b_counts_w0_l2": { + "targets": 1038, + "mean_capped_abs_rel_error": 0.05936597242974636, + "mean_abs_rel_error": 0.08108974452678264, + "median_abs_rel_error": 0.002063754121219834, + "max_abs_rel_error": 9.411971863921174, + "share_within_5pct": 0.882466281310212, + "share_within_10pct": 0.9007707129094412 + }, + "b_counts_w010_l2": { + "targets": 1038, + "mean_capped_abs_rel_error": 0.05938490910543318, + "mean_abs_rel_error": 0.08103066140014722, + "median_abs_rel_error": 0.0020962452581497386, + "max_abs_rel_error": 9.446339928944031, + "share_within_5pct": 0.882466281310212, + "share_within_10pct": 0.9007707129094412 + }, + "b_counts_w025_l2": { + "targets": 1038, + "mean_capped_abs_rel_error": 0.0594656025927315, + "mean_abs_rel_error": 0.08094814082332895, + "median_abs_rel_error": 0.002103777575908695, + "max_abs_rel_error": 9.498058435379352, + "share_within_5pct": 0.8815028901734104, + "share_within_10pct": 0.9017341040462428 + } + }, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0011273989416096261, + "mean_abs_rel_error": 0.0011273989416096261, + "median_abs_rel_error": 0.0007652509648982712, + "max_abs_rel_error": 0.011260611564666833, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0012031707277639814, + "mean_abs_rel_error": 0.0012031707277639814, + "median_abs_rel_error": 0.0008273739502667842, + "max_abs_rel_error": 0.011163993657419739, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0011679913587604297, + "mean_abs_rel_error": 0.0011679913587604297, + "median_abs_rel_error": 0.0009269944632749746, + "max_abs_rel_error": 0.011197592813810749, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.001168215591888394, + "mean_abs_rel_error": 0.001168215591888394, + "median_abs_rel_error": 0.0008341910981734998, + "max_abs_rel_error": 0.010811879553872453, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0012072816930553244, + "mean_abs_rel_error": 0.0012072816930553244, + "median_abs_rel_error": 0.0008551951535744548, + "max_abs_rel_error": 0.011210386064762285, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0013043532194681085, + "mean_abs_rel_error": 0.0013043532194681085, + "median_abs_rel_error": 0.0009775372413159805, + "max_abs_rel_error": 0.010396590509120222, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0022784298369520305, + "mean_abs_rel_error": 0.0022784298369520305, + "median_abs_rel_error": 0.0005430667793031649, + "max_abs_rel_error": 0.11030012480447647, + "share_within_5pct": 0.9814814814814815, + "share_within_10pct": 0.9907407407407407 + }, + "b_counts_w010": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0025305691225084993, + "mean_abs_rel_error": 0.0025305691225084993, + "median_abs_rel_error": 0.000802551875235051, + "max_abs_rel_error": 0.11010412463865328, + "share_within_5pct": 0.9814814814814815, + "share_within_10pct": 0.9907407407407407 + }, + "b_counts_w025": { + "targets": 108, + "mean_capped_abs_rel_error": 0.002484183548312263, + "mean_abs_rel_error": 0.002484183548312263, + "median_abs_rel_error": 0.0009001849536706315, + "max_abs_rel_error": 0.11017017051099813, + "share_within_5pct": 0.9814814814814815, + "share_within_10pct": 0.9907407407407407 + }, + "b_counts_w0_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.002778280814754778, + "mean_abs_rel_error": 0.002778280814754778, + "median_abs_rel_error": 0.0009847550280922897, + "max_abs_rel_error": 0.10979739329553896, + "share_within_5pct": 0.9814814814814815, + "share_within_10pct": 0.9907407407407407 + }, + "b_counts_w010_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.002905946853571973, + "mean_abs_rel_error": 0.002905946853571973, + "median_abs_rel_error": 0.0011053809041728147, + "max_abs_rel_error": 0.11020300361996294, + "share_within_5pct": 0.9814814814814815, + "share_within_10pct": 0.9907407407407407 + }, + "b_counts_w025_l2": { + "targets": 108, + "mean_capped_abs_rel_error": 0.0029176684121062996, + "mean_abs_rel_error": 0.0029176684121062996, + "median_abs_rel_error": 0.0010577924444629579, + "max_abs_rel_error": 0.10959125911469597, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0007785307391315263, + "mean_abs_rel_error": 0.0007785307391315263, + "median_abs_rel_error": 0.0007785307391315263, + "max_abs_rel_error": 0.0007785307391315263, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0012234342696938723, + "mean_abs_rel_error": 0.0012234342696938723, + "median_abs_rel_error": 0.0012234342696938723, + "max_abs_rel_error": 0.0012234342696938723, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 1, + "mean_capped_abs_rel_error": 0.00020047585563780308, + "mean_abs_rel_error": 0.00020047585563780308, + "median_abs_rel_error": 0.00020047585563780308, + "max_abs_rel_error": 0.00020047585563780308, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0005290616861559695, + "mean_abs_rel_error": 0.0005290616861559695, + "median_abs_rel_error": 0.0005290616861559695, + "max_abs_rel_error": 0.0005290616861559695, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0008727483232339576, + "mean_abs_rel_error": 0.0008727483232339576, + "median_abs_rel_error": 0.0008727483232339576, + "max_abs_rel_error": 0.0008727483232339576, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 1, + "mean_capped_abs_rel_error": 0.0006674511748371483, + "mean_abs_rel_error": 0.0006674511748371483, + "median_abs_rel_error": 0.0006674511748371483, + "max_abs_rel_error": 0.0006674511748371483, + "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.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.9905660377358491 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0030406874902577756, + "mean_abs_rel_error": 0.0030406874902577756, + "median_abs_rel_error": 0.0014218626711607145, + "max_abs_rel_error": 0.11902111534309155, + "share_within_5pct": 0.9905660377358491, + "share_within_10pct": 0.9905660377358491 + }, + "b_counts_w010": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0031473414506322903, + "mean_abs_rel_error": 0.0031473414506322903, + "median_abs_rel_error": 0.0014182050477461613, + "max_abs_rel_error": 0.11905520490161157, + "share_within_5pct": 0.9905660377358491, + "share_within_10pct": 0.9905660377358491 + }, + "b_counts_w025": { + "targets": 106, + "mean_capped_abs_rel_error": 0.003573753080281824, + "mean_abs_rel_error": 0.003573753080281824, + "median_abs_rel_error": 0.0014317531036380062, + "max_abs_rel_error": 0.12503113648790323, + "share_within_5pct": 0.9905660377358491, + "share_within_10pct": 0.9905660377358491 + }, + "b_counts_w0_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.0037445753245869346, + "mean_abs_rel_error": 0.0037445753245869346, + "median_abs_rel_error": 0.0016066911931865192, + "max_abs_rel_error": 0.10070540252765549, + "share_within_5pct": 0.9811320754716981, + "share_within_10pct": 0.9905660377358491 + }, + "b_counts_w010_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.004290864923405159, + "mean_abs_rel_error": 0.004290864923405159, + "median_abs_rel_error": 0.0020023004163990414, + "max_abs_rel_error": 0.1012995187253015, + "share_within_5pct": 0.9811320754716981, + "share_within_10pct": 0.9905660377358491 + }, + "b_counts_w025_l2": { + "targets": 106, + "mean_capped_abs_rel_error": 0.004432249060568304, + "mean_abs_rel_error": 0.004432249060568304, + "median_abs_rel_error": 0.0021494171159932543, + "max_abs_rel_error": 0.10535747764627772, + "share_within_5pct": 0.9905660377358491, + "share_within_10pct": 0.9905660377358491 + } + }, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 11, + "mean_capped_abs_rel_error": 0.36878099316401763, + "mean_abs_rel_error": 0.36878099316401763, + "median_abs_rel_error": 0.26983396265100396, + "max_abs_rel_error": 0.9852075543613159, + "share_within_5pct": 0.18181818181818182, + "share_within_10pct": 0.18181818181818182 + }, + "b_counts_w010": { + "targets": 11, + "mean_capped_abs_rel_error": 0.3695630293136725, + "mean_abs_rel_error": 0.3695630293136725, + "median_abs_rel_error": 0.2666078889190998, + "max_abs_rel_error": 0.9849271533991217, + "share_within_5pct": 0.18181818181818182, + "share_within_10pct": 0.18181818181818182 + }, + "b_counts_w025": { + "targets": 11, + "mean_capped_abs_rel_error": 0.3674531786161371, + "mean_abs_rel_error": 0.3674531786161371, + "median_abs_rel_error": 0.29016312702975305, + "max_abs_rel_error": 0.9853995395492374, + "share_within_5pct": 0.18181818181818182, + "share_within_10pct": 0.18181818181818182 + }, + "b_counts_w0_l2": { + "targets": 11, + "mean_capped_abs_rel_error": 0.3965373681421301, + "mean_abs_rel_error": 0.3965373681421301, + "median_abs_rel_error": 0.27443512137755843, + "max_abs_rel_error": 0.9870184337405875, + "share_within_5pct": 0.18181818181818182, + "share_within_10pct": 0.18181818181818182 + }, + "b_counts_w010_l2": { + "targets": 11, + "mean_capped_abs_rel_error": 0.3960503961113957, + "mean_abs_rel_error": 0.3960503961113957, + "median_abs_rel_error": 0.2752296997133743, + "max_abs_rel_error": 0.9868707212945889, + "share_within_5pct": 0.18181818181818182, + "share_within_10pct": 0.18181818181818182 + }, + "b_counts_w025_l2": { + "targets": 11, + "mean_capped_abs_rel_error": 0.3958115919135038, + "mean_abs_rel_error": 0.3958115919135038, + "median_abs_rel_error": 0.2786217245146484, + "max_abs_rel_error": 0.9866658601141663, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 6, + "mean_capped_abs_rel_error": 0.0009806705865501556, + "mean_abs_rel_error": 0.0009806705865501556, + "median_abs_rel_error": 0.00013790452407700215, + "max_abs_rel_error": 0.00522399813706684, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 6, + "mean_capped_abs_rel_error": 0.0010846270796029001, + "mean_abs_rel_error": 0.0010846270796029001, + "median_abs_rel_error": 0.00012587630864741698, + "max_abs_rel_error": 0.005911252721549608, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 6, + "mean_capped_abs_rel_error": 0.0008667166218491677, + "mean_abs_rel_error": 0.0008667166218491677, + "median_abs_rel_error": 5.490221497103866e-05, + "max_abs_rel_error": 0.004824101852796257, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 6, + "mean_capped_abs_rel_error": 0.013899242084699682, + "mean_abs_rel_error": 0.013899242084699682, + "median_abs_rel_error": 0.0012944621299995985, + "max_abs_rel_error": 0.07795782575276185, + "share_within_5pct": 0.8333333333333334, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 6, + "mean_capped_abs_rel_error": 0.01389742903473129, + "mean_abs_rel_error": 0.01389742903473129, + "median_abs_rel_error": 0.0014771014728129452, + "max_abs_rel_error": 0.07743980661678933, + "share_within_5pct": 0.8333333333333334, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 6, + "mean_capped_abs_rel_error": 0.013549666150314048, + "mean_abs_rel_error": 0.013549666150314048, + "median_abs_rel_error": 0.0008582545000537043, + "max_abs_rel_error": 0.07688832861854766, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 3, + "mean_capped_abs_rel_error": 0.15079554254282818, + "mean_abs_rel_error": 0.15079554254282818, + "median_abs_rel_error": 0.0923531615408635, + "max_abs_rel_error": 0.35976190901636007, + "share_within_5pct": 0.3333333333333333, + "share_within_10pct": 0.6666666666666666 + }, + "b_counts_w010": { + "targets": 3, + "mean_capped_abs_rel_error": 0.14899572511908, + "mean_abs_rel_error": 0.14899572511908, + "median_abs_rel_error": 0.09171544947172122, + "max_abs_rel_error": 0.35513154365326194, + "share_within_5pct": 0.3333333333333333, + "share_within_10pct": 0.6666666666666666 + }, + "b_counts_w025": { + "targets": 3, + "mean_capped_abs_rel_error": 0.1549253343927265, + "mean_abs_rel_error": 0.1549253343927265, + "median_abs_rel_error": 0.09561127895068625, + "max_abs_rel_error": 0.3688283410465907, + "share_within_5pct": 0.3333333333333333, + "share_within_10pct": 0.6666666666666666 + }, + "b_counts_w0_l2": { + "targets": 3, + "mean_capped_abs_rel_error": 0.23612675512922518, + "mean_abs_rel_error": 0.23612675512922518, + "median_abs_rel_error": 0.12765942905368127, + "max_abs_rel_error": 0.5796578162718918, + "share_within_5pct": 0.3333333333333333, + "share_within_10pct": 0.3333333333333333 + }, + "b_counts_w010_l2": { + "targets": 3, + "mean_capped_abs_rel_error": 0.23469248729467482, + "mean_abs_rel_error": 0.23469248729467482, + "median_abs_rel_error": 0.1274245818844424, + "max_abs_rel_error": 0.576537488870873, + "share_within_5pct": 0.3333333333333333, + "share_within_10pct": 0.3333333333333333 + }, + "b_counts_w025_l2": { + "targets": 3, + "mean_capped_abs_rel_error": 0.23337342298824484, + "mean_abs_rel_error": 0.23337342298824484, + "median_abs_rel_error": 0.1277782515993773, + "max_abs_rel_error": 0.5720560022368639, + "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.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": { + "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.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 + }, + "b_counts_w0": { + "targets": 51, + "mean_capped_abs_rel_error": 0.004693495038737812, + "mean_abs_rel_error": 0.004693495038737812, + "median_abs_rel_error": 0.0018517688824124798, + "max_abs_rel_error": 0.04955414486603821, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 51, + "mean_capped_abs_rel_error": 0.004356629596362818, + "mean_abs_rel_error": 0.004356629596362818, + "median_abs_rel_error": 0.001930357681640584, + "max_abs_rel_error": 0.05499408857789241, + "share_within_5pct": 0.9803921568627451, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 51, + "mean_capped_abs_rel_error": 0.004324819328059095, + "mean_abs_rel_error": 0.004324819328059095, + "median_abs_rel_error": 0.0015939864856212712, + "max_abs_rel_error": 0.042626314183669564, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.005718261466638256, + "mean_abs_rel_error": 0.005718261466638256, + "median_abs_rel_error": 0.001882708023593144, + "max_abs_rel_error": 0.08163245796030913, + "share_within_5pct": 0.9607843137254902, + "share_within_10pct": 1.0 + }, + "b_counts_w010_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.005644176151563385, + "mean_abs_rel_error": 0.005644176151563385, + "median_abs_rel_error": 0.0019908330567068116, + "max_abs_rel_error": 0.08118409177674031, + "share_within_5pct": 0.9607843137254902, + "share_within_10pct": 1.0 + }, + "b_counts_w025_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.006595835515692254, + "mean_abs_rel_error": 0.006595835515692254, + "median_abs_rel_error": 0.0015883694069479463, + "max_abs_rel_error": 0.09528727908483596, + "share_within_5pct": 0.9607843137254902, + "share_within_10pct": 1.0 + } + }, + "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.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 + }, + "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.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.9607843137254902 + }, + "b_counts_w0": { + "targets": 51, + "mean_capped_abs_rel_error": 0.009789215489197298, + "mean_abs_rel_error": 0.009789215489197298, + "median_abs_rel_error": 0.0017112567460822697, + "max_abs_rel_error": 0.144979108793833, + "share_within_5pct": 0.9411764705882353, + "share_within_10pct": 0.9411764705882353 + }, + "b_counts_w010": { + "targets": 51, + "mean_capped_abs_rel_error": 0.009320554840068686, + "mean_abs_rel_error": 0.009320554840068686, + "median_abs_rel_error": 0.0013607771112955956, + "max_abs_rel_error": 0.15092423671617777, + "share_within_5pct": 0.9411764705882353, + "share_within_10pct": 0.9411764705882353 + }, + "b_counts_w025": { + "targets": 51, + "mean_capped_abs_rel_error": 0.009158228604422782, + "mean_abs_rel_error": 0.009158228604422782, + "median_abs_rel_error": 0.0014522311774332907, + "max_abs_rel_error": 0.15022622854190723, + "share_within_5pct": 0.9411764705882353, + "share_within_10pct": 0.9411764705882353 + }, + "b_counts_w0_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.017809607855196277, + "mean_abs_rel_error": 0.017809607855196277, + "median_abs_rel_error": 0.0024145798398533427, + "max_abs_rel_error": 0.19847937665611246, + "share_within_5pct": 0.9019607843137255, + "share_within_10pct": 0.9215686274509803 + }, + "b_counts_w010_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.017060411438977116, + "mean_abs_rel_error": 0.017060411438977116, + "median_abs_rel_error": 0.0018687721884096697, + "max_abs_rel_error": 0.19937473356453725, + "share_within_5pct": 0.9019607843137255, + "share_within_10pct": 0.9215686274509803 + }, + "b_counts_w025_l2": { + "targets": 51, + "mean_capped_abs_rel_error": 0.016458447650970893, + "mean_abs_rel_error": 0.016458447650970893, + "median_abs_rel_error": 0.0018208911329572906, + "max_abs_rel_error": 0.20244693178474346, + "share_within_5pct": 0.9019607843137255, + "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.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 + }, + "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.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 + }, + "b_counts_w0": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0011934453449780546, + "mean_abs_rel_error": 0.0011934453449780546, + "median_abs_rel_error": 0.000884364674091275, + "max_abs_rel_error": 0.012556588648832065, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w010": { + "targets": 104, + "mean_capped_abs_rel_error": 0.001530736807049778, + "mean_abs_rel_error": 0.001530736807049778, + "median_abs_rel_error": 0.0009763171945120453, + "max_abs_rel_error": 0.019501055052135428, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w025": { + "targets": 104, + "mean_capped_abs_rel_error": 0.0014796791134917644, + "mean_abs_rel_error": 0.0014796791134917644, + "median_abs_rel_error": 0.0010145948185636949, + "max_abs_rel_error": 0.018725892887860748, + "share_within_5pct": 1.0, + "share_within_10pct": 1.0 + }, + "b_counts_w0_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.006720634876894398, + "mean_abs_rel_error": 0.006720634876894398, + "median_abs_rel_error": 0.0011538111332105479, + "max_abs_rel_error": 0.11338300299633904, + "share_within_5pct": 0.9519230769230769, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w010_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.006683626311650175, + "mean_abs_rel_error": 0.006683626311650175, + "median_abs_rel_error": 0.001332525294693718, + "max_abs_rel_error": 0.11088979613008462, + "share_within_5pct": 0.9519230769230769, + "share_within_10pct": 0.9903846153846154 + }, + "b_counts_w025_l2": { + "targets": 104, + "mean_capped_abs_rel_error": 0.006490635533635423, + "mean_abs_rel_error": 0.006490635533635423, + "median_abs_rel_error": 0.0009960108184027417, + "max_abs_rel_error": 0.10369247907811072, + "share_within_5pct": 0.9615384615384616, + "share_within_10pct": 0.9807692307692307 + } + } + }, + "fit_overall": { + "fsa": { + "release": { + "targets": 132, + "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.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.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.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.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 + }, + "b_counts_w0": { + "targets": 132, + "mean_capped_abs_rel_error": 0.09374527922558971, + "mean_abs_rel_error": 0.09374527922558971, + "median_abs_rel_error": 0.012922502809043588, + "max_abs_rel_error": 0.4032562751804122, + "share_within_5pct": 0.5681818181818182, + "share_within_10pct": 0.6515151515151515 + }, + "b_counts_w010": { + "targets": 132, + "mean_capped_abs_rel_error": 0.06884694682319153, + "mean_abs_rel_error": 0.06884694682319153, + "median_abs_rel_error": 0.0056872212485827535, + "max_abs_rel_error": 0.3583056708948136, + "share_within_5pct": 0.6363636363636364, + "share_within_10pct": 0.7196969696969697 + }, + "b_counts_w025": { + "targets": 132, + "mean_capped_abs_rel_error": 0.045183542122102155, + "mean_abs_rel_error": 0.045183542122102155, + "median_abs_rel_error": 0.00220835130822259, + "max_abs_rel_error": 0.3008124565205545, + "share_within_5pct": 0.696969696969697, + "share_within_10pct": 0.8181818181818182 + }, + "b_counts_w0_l2": { + "targets": 132, + "mean_capped_abs_rel_error": 0.1413273537498939, + "mean_abs_rel_error": 0.1413273537498939, + "median_abs_rel_error": 0.05249189985469231, + "max_abs_rel_error": 0.5425653572389263, + "share_within_5pct": 0.48484848484848486, + "share_within_10pct": 0.5378787878787878 + }, + "b_counts_w010_l2": { + "targets": 132, + "mean_capped_abs_rel_error": 0.12663712646973033, + "mean_abs_rel_error": 0.12663712646973033, + "median_abs_rel_error": 0.039181738869467825, + "max_abs_rel_error": 0.49121745383778515, + "share_within_5pct": 0.5075757575757576, + "share_within_10pct": 0.5454545454545454 + }, + "b_counts_w025_l2": { + "targets": 132, + "mean_capped_abs_rel_error": 0.10454134160363425, + "mean_abs_rel_error": 0.10454134160363425, + "median_abs_rel_error": 0.019249202693675124, + "max_abs_rel_error": 0.4574529403676427, + "share_within_5pct": 0.5303030303030303, + "share_within_10pct": 0.6060606060606061 + } + }, + "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.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, + "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.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 + }, + "b_counts_w0": { + "targets": 6102, + "mean_capped_abs_rel_error": 0.034464733811132374, + "mean_abs_rel_error": 1478.992288565315, + "median_abs_rel_error": 0.001366172141120111, + "max_abs_rel_error": 6559901.672550178, + "share_within_5pct": 0.9156014421501147, + "share_within_10pct": 0.9373975745657162 + }, + "b_counts_w010": { + "targets": 6102, + "mean_capped_abs_rel_error": 0.03466775200287553, + "mean_abs_rel_error": 1359.3618704444914, + "median_abs_rel_error": 0.0014141827555633009, + "max_abs_rel_error": 6090882.117826293, + "share_within_5pct": 0.9141265158964273, + "share_within_10pct": 0.9382169780399869 + }, + "b_counts_w025": { + "targets": 6102, + "mean_capped_abs_rel_error": 0.035018188662881325, + "mean_abs_rel_error": 1212.8188260377774, + "median_abs_rel_error": 0.0014401597611509147, + "max_abs_rel_error": 5734272.652911448, + "share_within_5pct": 0.9133071124221567, + "share_within_10pct": 0.9367420517862995 + }, + "b_counts_w0_l2": { + "targets": 6102, + "mean_capped_abs_rel_error": 0.038446195835670716, + "mean_abs_rel_error": 4066.228581453439, + "median_abs_rel_error": 0.0015769152550677073, + "max_abs_rel_error": 20374983.09697308, + "share_within_5pct": 0.9049491969845952, + "share_within_10pct": 0.9319895116355293 + }, + "b_counts_w010_l2": { + "targets": 6102, + "mean_capped_abs_rel_error": 0.03845490837383332, + "mean_abs_rel_error": 3955.162910048806, + "median_abs_rel_error": 0.0015607130073362588, + "max_abs_rel_error": 19728213.633251093, + "share_within_5pct": 0.904621435594887, + "share_within_10pct": 0.9313339888561127 + }, + "b_counts_w025_l2": { + "targets": 6102, + "mean_capped_abs_rel_error": 0.0384097100837355, + "mean_abs_rel_error": 3589.0040598542973, + "median_abs_rel_error": 0.0015040888811562634, + "max_abs_rel_error": 17574612.732194126, + "share_within_5pct": 0.9042936742051786, + "share_within_10pct": 0.9311701081612586 + } + } + }, + "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": 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": 26353710219.39588, + "b_with_fsa_l2_error": -0.017587260696158395, + "b_counts_w0": 26836586488.325188, + "b_counts_w0_error": 0.0004133849114008655, + "b_counts_w010": 26821822669.247307, + "b_counts_w010_error": -0.00013698024865209867, + "b_counts_w025": 26779791383.04392, + "b_counts_w025_error": -0.001703821147780758, + "b_counts_w0_l2": 25391284658.074017, + "b_counts_w0_l2_error": -0.053464528989803806, + "b_counts_w010_l2": 25709108975.061146, + "b_counts_w010_l2_error": -0.0416166845963833, + "b_counts_w025_l2": 26332953137.587673, + "b_counts_w025_l2_error": -0.0183610425063624, + "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": 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": 2193760665.995848, + "b_with_fsa_l2_error": -0.11406150863551696, + "b_counts_w0": 2477045541.9417095, + "b_counts_w0_error": 0.0003415707486796761, + "b_counts_w010": 2473664193.7397056, + "b_counts_w010_error": -0.0010239686063171563, + "b_counts_w025": 2473660863.6416597, + "b_counts_w025_error": -0.0010253134485711656, + "b_counts_w0_l2": 2056483769.7779229, + "b_counts_w0_l2_error": -0.16950004767929142, + "b_counts_w010_l2": 2121970565.2439733, + "b_counts_w010_l2_error": -0.14305355619151078, + "b_counts_w025_l2": 2187576744.105982, + "b_counts_w025_l2_error": -0.11655885235889758, + "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": 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": 34993185254.43467, + "b_with_fsa_l2_error": -0.0024604437197906968, + "b_counts_w0": 35091236122.69487, + "b_counts_w0_error": 0.0003346610672127757, + "b_counts_w010": 35143422850.21749, + "b_counts_w010_error": 0.0018223314418333418, + "b_counts_w025": 35028090916.64999, + "b_counts_w025_error": -0.0014653991548344023, + "b_counts_w0_l2": 35064338643.05997, + "b_counts_w0_l2_error": -0.0004320967944956477, + "b_counts_w010_l2": 34966741324.41578, + "b_counts_w010_l2_error": -0.0032142723874455177, + "b_counts_w025_l2": 35062972847.218414, + "b_counts_w025_l2_error": -0.00047103110035679276, + "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": 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": 14962322112.92789, + "b_with_fsa_l2_error": 0.00013025452413654648, + "b_counts_w0": 14947280748.314491, + "b_counts_w0_error": -0.0008751591880967779, + "b_counts_w010": 14950608509.254206, + "b_counts_w010_error": -0.0006527208278935567, + "b_counts_w025": 14974663265.199463, + "b_counts_w025_error": 0.0009551772646932434, + "b_counts_w0_l2": 14987678850.839306, + "b_counts_w0_l2_error": 0.0018251813242576038, + "b_counts_w010_l2": 14954289656.542538, + "b_counts_w010_l2_error": -0.00040666097524279287, + "b_counts_w025_l2": 14953197525.239305, + "b_counts_w025_l2_error": -0.0004796625822147236, + "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": 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": 161410968339.90344, + "b_with_fsa_l2_error": -0.001634387754950129, + "b_counts_w0": 161527181868.24197, + "b_counts_w0_error": -0.0009155791661401671, + "b_counts_w010": 161379231422.962, + "b_counts_w010_error": -0.0018306882098627383, + "b_counts_w025": 161730168646.555, + "b_counts_w025_error": 0.000339942817851472, + "b_counts_w0_l2": 161786944983.11737, + "b_counts_w0_l2_error": 0.0006911180979214346, + "b_counts_w010_l2": 161873237145.3091, + "b_counts_w010_l2_error": 0.0012248558496031437, + "b_counts_w025_l2": 161819944198.54724, + "b_counts_w025_l2_error": 0.0008952261722059035, + "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": 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": 30581391897.20246, + "b_with_fsa_l2_error": -0.0020095942984132346, + "b_counts_w0": 30641119635.694603, + "b_counts_w0_error": -6.044462694705077e-05, + "b_counts_w010": 30614802098.768295, + "b_counts_w010_error": -0.0009192887712044265, + "b_counts_w025": 30631575204.249695, + "b_counts_w025_error": -0.00037191674835713654, + "b_counts_w0_l2": 30655370984.662727, + "b_counts_w0_l2_error": 0.000404632619579273, + "b_counts_w010_l2": 30585012518.73027, + "b_counts_w010_l2_error": -0.0018914392595720927, + "b_counts_w025_l2": 30564909239.574898, + "b_counts_w025_l2_error": -0.0025474878719976735, + "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": 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": 20335708773.23733, + "b_with_fsa_l2_error": -0.004549450346193112, + "b_counts_w0": 20404719365.563217, + "b_counts_w0_error": -0.0011713221074003976, + "b_counts_w010": 20385874512.133945, + "b_counts_w010_error": -0.0020937939972910393, + "b_counts_w025": 20454562458.65798, + "b_counts_w025_error": 0.001268540450177464, + "b_counts_w0_l2": 20413205546.893, + "b_counts_w0_l2_error": -0.000755916184577923, + "b_counts_w010_l2": 20384703923.662323, + "b_counts_w010_l2_error": -0.0021510953163888288, + "b_counts_w025_l2": 20427751840.741817, + "b_counts_w025_l2_error": -4.386250753638059e-05, + "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": 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": 5549913630.703793, + "b_with_fsa_l2_error": -0.039441620813355775, + "b_counts_w0": 5777997196.6615505, + "b_counts_w0_error": 3.4233229387452686e-05, + "b_counts_w010": 5785583295.994974, + "b_counts_w010_error": 0.0013472070457274032, + "b_counts_w025": 5763857361.857232, + "b_counts_w025_error": -0.0024130367112585676, + "b_counts_w0_l2": 4740718163.949125, + "b_counts_w0_l2_error": -0.17949415815211708, + "b_counts_w010_l2": 4828846435.905458, + "b_counts_w010_l2_error": -0.16424124509729532, + "b_counts_w025_l2": 4969493072.253133, + "b_counts_w025_l2_error": -0.13989864915115924, + "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": 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": 6591845017.209323, + "b_with_fsa_l2_error": -0.0017195151954024644, + "b_counts_w0": 6603271544.645757, + "b_counts_w0_error": 1.0938011415388973e-05, + "b_counts_w010": 6586756776.366506, + "b_counts_w010_error": -0.002490087246491225, + "b_counts_w025": 6607333017.712545, + "b_counts_w025_error": 0.0006260145630560239, + "b_counts_w0_l2": 6494916601.623752, + "b_counts_w0_l2_error": -0.016398523189293374, + "b_counts_w010_l2": 6584193916.812378, + "b_counts_w010_l2_error": -0.0028782111589165534, + "b_counts_w025_l2": 6587146949.864657, + "b_counts_w025_l2_error": -0.002430998692698472, + "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": 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": 116748160709.34915, + "b_with_fsa_l2_error": 0.0004905930238916919, + "b_counts_w0": 116660903703.86452, + "b_counts_w0_error": -0.00025716876209608427, + "b_counts_w010": 116705938485.3589, + "b_counts_w010_error": 0.00012876344420384984, + "b_counts_w025": 116607508418.38605, + "b_counts_w025_error": -0.0007147475411402351, + "b_counts_w0_l2": 116747184069.30122, + "b_counts_w0_l2_error": 0.00048222356286733525, + "b_counts_w010_l2": 116812044208.9049, + "b_counts_w010_l2_error": 0.001038052101333596, + "b_counts_w025_l2": 116923792371.14911, + "b_counts_w025_l2_error": 0.0019956944696049982, + "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": 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": 76919467646.1718, + "b_with_fsa_l2_error": -0.0006375905272533525, + "b_counts_w0": 77054239541.98297, + "b_counts_w0_error": 0.001113409195555656, + "b_counts_w010": 77081246749.36047, + "b_counts_w010_error": 0.0014642955012444114, + "b_counts_w025": 76962243563.43483, + "b_counts_w025_error": -8.18320820697153e-05, + "b_counts_w0_l2": 77021936016.68092, + "b_counts_w0_l2_error": 0.0006937114276405272, + "b_counts_w010_l2": 76959132553.77425, + "b_counts_w010_l2_error": -0.00012225131799832546, + "b_counts_w025_l2": 76887952150.28407, + "b_counts_w025_l2_error": -0.0010470499641148298, + "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": 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": 5060810899.190743, + "b_with_fsa_l2_error": 0.0010357716566189417, + "b_counts_w0": 5048867134.910523, + "b_counts_w0_error": -0.0013267223252539405, + "b_counts_w010": 5055385086.548018, + "b_counts_w010_error": -3.7461991874617175e-05, + "b_counts_w025": 5065856389.352673, + "b_counts_w025_error": 0.002033776964116254, + "b_counts_w0_l2": 5055739050.54067, + "b_counts_w0_l2_error": 3.2552601751011415e-05, + "b_counts_w010_l2": 5057513078.729716, + "b_counts_w010_l2_error": 0.0003834579630728769, + "b_counts_w025_l2": 5043046569.354818, + "b_counts_w025_l2_error": -0.002478038675261184, + "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": 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": 7725209256.315255, + "b_with_fsa_l2_error": -0.0016690020784128608, + "b_counts_w0": 7722607738.351707, + "b_counts_w0_error": -0.0020051969876363697, + "b_counts_w010": 7743822813.49944, + "b_counts_w010_error": 0.0007364332311053932, + "b_counts_w025": 7733215086.910403, + "b_counts_w025_error": -0.0006344063047499498, + "b_counts_w0_l2": 7738671470.9016485, + "b_counts_w0_l2_error": 7.072375636395292e-05, + "b_counts_w010_l2": 7720528268.777099, + "b_counts_w010_l2_error": -0.002273927434500276, + "b_counts_w025_l2": 7752769537.404707, + "b_counts_w025_l2_error": 0.001892620915881992, + "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": 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": 67488438950.88707, + "b_with_fsa_l2_error": 0.001709445078631554, + "b_counts_w0": 67290813882.169586, + "b_counts_w0_error": -0.0012238409922268804, + "b_counts_w010": 67424946646.408455, + "b_counts_w010_error": 0.0007670489871717916, + "b_counts_w025": 67305740340.4123, + "b_counts_w025_error": -0.001002292317583817, + "b_counts_w0_l2": 67391709070.59299, + "b_counts_w0_l2_error": 0.000273714215417768, + "b_counts_w010_l2": 67258616281.49812, + "b_counts_w010_l2_error": -0.0017017397435218334, + "b_counts_w025_l2": 67352751221.81439, + "b_counts_w025_l2_error": -0.0003045247494790586, + "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": 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": 32007473057.553585, + "b_with_fsa_l2_error": 0.0007261811556434114, + "b_counts_w0": 31978105099.439045, + "b_counts_w0_error": -0.00019201955702943414, + "b_counts_w010": 31977561624.07529, + "b_counts_w010_error": -0.00020901152713416682, + "b_counts_w025": 31939688805.964363, + "b_counts_w025_error": -0.001393120018598056, + "b_counts_w0_l2": 31999936670.926422, + "b_counts_w0_l2_error": 0.0004905530760523739, + "b_counts_w010_l2": 32011320689.831196, + "b_counts_w010_l2_error": 0.0008464788857622826, + "b_counts_w025_l2": 32045388909.988647, + "b_counts_w025_l2_error": 0.0019116351321061512, + "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": 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": 13915981654.154667, + "b_with_fsa_l2_error": -0.0009076208307104449, + "b_counts_w0": 13921201683.04078, + "b_counts_w0_error": -0.0005328509288256416, + "b_counts_w010": 13910627985.115402, + "b_counts_w010_error": -0.00129198537434485, + "b_counts_w025": 13946800330.861326, + "b_counts_w025_error": 0.001304993830542198, + "b_counts_w0_l2": 13796214346.194063, + "b_counts_w0_l2_error": -0.009506267166331047, + "b_counts_w010_l2": 13907957486.921959, + "b_counts_w010_l2_error": -0.0014837127321383975, + "b_counts_w025_l2": 13868096363.320644, + "b_counts_w025_l2_error": -0.004345526278961276, + "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": 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": 13493450407.894234, + "b_with_fsa_l2_error": -0.0016627200908797643, + "b_counts_w0": 13518368718.5397, + "b_counts_w0_error": 0.00018090609202530162, + "b_counts_w010": 13519664095.908209, + "b_counts_w010_error": 0.00027674692438770546, + "b_counts_w025": 13531750564.453663, + "b_counts_w025_error": 0.0011709861120395443, + "b_counts_w0_l2": 13133245969.897993, + "b_counts_w0_l2_error": -0.028313095493006406, + "b_counts_w010_l2": 13435445801.203585, + "b_counts_w010_l2_error": -0.005954295597161109, + "b_counts_w025_l2": 13525746432.76217, + "b_counts_w025_l2_error": 0.0007267595932542882, + "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": 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": 22306388021.44704, + "b_with_fsa_l2_error": 0.0009239211830619413, + "b_counts_w0": 22255703677.392185, + "b_counts_w0_error": -0.0013503677939432314, + "b_counts_w010": 22269276605.15584, + "b_counts_w010_error": -0.0007413284431495692, + "b_counts_w025": 22255912547.1561, + "b_counts_w025_error": -0.0013409954678223735, + "b_counts_w0_l2": 22284470570.006096, + "b_counts_w0_l2_error": -5.955052098611588e-05, + "b_counts_w010_l2": 22311519345.76552, + "b_counts_w010_l2_error": 0.0011541720534751357, + "b_counts_w025_l2": 22342734607.269783, + "b_counts_w025_l2_error": 0.002554851621837481, + "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": 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": 20361072374.099495, + "b_with_fsa_l2_error": -0.21376478193206117, + "b_counts_w0": 24166786256.886154, + "b_counts_w0_error": -0.06680855931467136, + "b_counts_w010": 24331934498.46065, + "b_counts_w010_error": -0.060431421542054206, + "b_counts_w025": 24415725921.695415, + "b_counts_w025_error": -0.05719584697560796, + "b_counts_w0_l2": 15975344888.043299, + "b_counts_w0_l2_error": -0.3831180135807184, + "b_counts_w010_l2": 16487484948.12039, + "b_counts_w010_l2_error": -0.36334191611306976, + "b_counts_w025_l2": 17280745578.968323, + "b_counts_w025_l2_error": -0.33271045262135285, + "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": 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": 6895979624.073615, + "b_with_fsa_l2_error": -0.002422295765812383, + "b_counts_w0": 6906360493.781414, + "b_counts_w0_error": -0.0009205911878422207, + "b_counts_w010": 6935710302.176514, + "b_counts_w010_error": 0.0033251746169588627, + "b_counts_w025": 6906460706.845817, + "b_counts_w025_error": -0.0009060942890445494, + "b_counts_w0_l2": 6923649619.1426325, + "b_counts_w0_l2_error": 0.0015804669541876458, + "b_counts_w010_l2": 6904291183.588936, + "b_counts_w010_l2_error": -0.0012199391882270246, + "b_counts_w025_l2": 6912820686.343514, + "b_counts_w025_l2_error": 1.394522559398371e-05, + "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": 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": 39622977525.34854, + "b_with_fsa_l2_error": 9.54490015269082e-05, + "b_counts_w0": 39612467139.23305, + "b_counts_w0_error": -0.00016983619352511857, + "b_counts_w010": 39537835240.62526, + "b_counts_w010_error": -0.0020535669681808707, + "b_counts_w025": 39636067405.70154, + "b_counts_w025_error": 0.0004258413795512922, + "b_counts_w0_l2": 38696040924.35991, + "b_counts_w0_l2_error": -0.023300699750005382, + "b_counts_w010_l2": 39438646035.08117, + "b_counts_w010_l2_error": -0.004557131294997551, + "b_counts_w025_l2": 39612580118.6476, + "b_counts_w025_l2_error": -0.000166984560321864, + "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": 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": 34444639896.7352, + "b_with_fsa_l2_error": -0.0004586866903637051, + "b_counts_w0": 34546683686.91461, + "b_counts_w0_error": 0.0025024992693911236, + "b_counts_w010": 34437679697.14908, + "b_counts_w010_error": -0.0006606631678668881, + "b_counts_w025": 34384449729.720215, + "b_counts_w025_error": -0.00220533170586831, + "b_counts_w0_l2": 34572329601.92432, + "b_counts_w0_l2_error": 0.0032467123500526853, + "b_counts_w010_l2": 34462817830.86988, + "b_counts_w010_l2_error": 6.881472096497026e-05, + "b_counts_w025_l2": 34492159885.86096, + "b_counts_w025_l2_error": 0.0009202852623588081, + "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": 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": 54900432574.57148, + "b_with_fsa_l2_error": 0.00020656630212171994, + "b_counts_w0": 54911600134.65445, + "b_counts_w0_error": 0.00041002311294716565, + "b_counts_w010": 54995826579.25677, + "b_counts_w010_error": 0.0019445072508105863, + "b_counts_w025": 54877143444.369934, + "b_counts_w025_error": -0.00021772800411003562, + "b_counts_w0_l2": 54912117207.0261, + "b_counts_w0_l2_error": 0.0004194434245389905, + "b_counts_w010_l2": 54870561775.28241, + "b_counts_w010_l2_error": -0.0003376365062812682, + "b_counts_w025_l2": 54978310817.58448, + "b_counts_w025_l2_error": 0.0016253953783384007, + "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": 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": 28385924880.019043, + "b_with_fsa_l2_error": 0.00045123011558445623, + "b_counts_w0": 28350966236.04099, + "b_counts_w0_error": -0.0007808741233595269, + "b_counts_w010": 28456339835.670135, + "b_counts_w010_error": 0.002932978703922952, + "b_counts_w025": 28433009128.00127, + "b_counts_w025_error": 0.0021106967002383274, + "b_counts_w0_l2": 28400506355.898525, + "b_counts_w0_l2_error": 0.0009651487404729955, + "b_counts_w010_l2": 28382100434.221325, + "b_counts_w010_l2_error": 0.00031643896401867955, + "b_counts_w025_l2": 28368768419.476624, + "b_counts_w025_l2_error": -0.00015344287381582764, + "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": 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": 18373143044.25435, + "b_with_fsa_l2_error": 0.0004353321226759685, + "b_counts_w0": 18331144408.82814, + "b_counts_w0_error": -0.001851534021027061, + "b_counts_w010": 18357488264.221096, + "b_counts_w010_error": -0.00041708572571020155, + "b_counts_w025": 18343233161.34636, + "b_counts_w025_error": -0.0011932898049240737, + "b_counts_w0_l2": 18357945222.571815, + "b_counts_w0_l2_error": -0.00039220390346198213, + "b_counts_w010_l2": 18392810902.320305, + "b_counts_w010_l2_error": 0.001506265934542723, + "b_counts_w025_l2": 18370298109.468258, + "b_counts_w025_l2_error": 0.0002804226838970542, + "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": 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": 31631620273.969486, + "b_with_fsa_l2_error": 0.0019027744050629587, + "b_counts_w0": 31585519231.410057, + "b_counts_w0_error": 0.0004425658528862007, + "b_counts_w010": 31562680978.198463, + "b_counts_w010_error": -0.00028081502539561694, + "b_counts_w025": 31566051729.098335, + "b_counts_w025_error": -0.00017404955941064792, + "b_counts_w0_l2": 31613605617.59049, + "b_counts_w0_l2_error": 0.0013321765649983218, + "b_counts_w010_l2": 31536349797.278503, + "b_counts_w010_l2_error": -0.0011148312088403668, + "b_counts_w025_l2": 31519661373.712605, + "b_counts_w025_l2_error": -0.0016434218319669482, + "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": 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": 4639144960.137013, + "b_with_fsa_l2_error": -0.0008032870284653866, + "b_counts_w0": 4641125740.617469, + "b_counts_w0_error": -0.00037665898338469186, + "b_counts_w010": 4636969361.517176, + "b_counts_w010_error": -0.001271875746508613, + "b_counts_w025": 4642198057.758818, + "b_counts_w025_error": -0.0001456992328044583, + "b_counts_w0_l2": 4648698911.493126, + "b_counts_w0_l2_error": 0.0012544794075796694, + "b_counts_w010_l2": 4636650486.352671, + "b_counts_w010_l2_error": -0.0013405562941007814, + "b_counts_w025_l2": 4638065732.699578, + "b_counts_w025_l2_error": -0.0010357351449394288, + "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": 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": 8457702479.336823, + "b_with_fsa_l2_error": -0.0003128296250467037, + "b_counts_w0": 8459648595.613981, + "b_counts_w0_error": -8.280173282826615e-05, + "b_counts_w010": 8464587442.771626, + "b_counts_w010_error": 0.0005009622565060897, + "b_counts_w025": 8457454567.290455, + "b_counts_w025_error": -0.00034213244017191984, + "b_counts_w0_l2": 8437491034.006069, + "b_counts_w0_l2_error": -0.0027017907691935135, + "b_counts_w010_l2": 8434135946.147539, + "b_counts_w010_l2_error": -0.003098356892895261, + "b_counts_w025_l2": 8445769660.270434, + "b_counts_w025_l2_error": -0.001723270126615419, + "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": 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": 13418323624.602032, + "b_with_fsa_l2_error": -0.014742162924645134, + "b_counts_w0": 13598088085.520313, + "b_counts_w0_error": -0.001542723940878918, + "b_counts_w010": 13616672916.705221, + "b_counts_w010_error": -0.00017810857699839073, + "b_counts_w025": 13603603690.35171, + "b_counts_w025_error": -0.0011377334936087302, + "b_counts_w0_l2": 12283761681.005503, + "b_counts_w0_l2_error": -0.09804884696723397, + "b_counts_w010_l2": 12380069040.952227, + "b_counts_w010_l2_error": -0.09097735399909794, + "b_counts_w025_l2": 12598388329.208988, + "b_counts_w025_l2_error": -0.07494697675098119, + "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": 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": 7006948933.132424, + "b_with_fsa_l2_error": -0.0012757228567522913, + "b_counts_w0": 7015536085.5557575, + "b_counts_w0_error": -5.176679847995609e-05, + "b_counts_w010": 7026671245.92912, + "b_counts_w010_error": 0.001535365504165365, + "b_counts_w025": 7011782553.64215, + "b_counts_w025_error": -0.00058677047596159, + "b_counts_w0_l2": 7004868466.971198, + "b_counts_w0_l2_error": -0.0015722587788519575, + "b_counts_w010_l2": 6984937411.822757, + "b_counts_w010_l2_error": -0.004413099897545617, + "b_counts_w025_l2": 6982866100.150696, + "b_counts_w025_l2_error": -0.004708330999150445, + "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": 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": 50020774343.13383, + "b_with_fsa_l2_error": 0.0016837216628793861, + "b_counts_w0": 49854075484.880424, + "b_counts_w0_error": -0.0016544820119931902, + "b_counts_w010": 49871564692.44658, + "b_counts_w010_error": -0.0013042544364737613, + "b_counts_w025": 49921572352.173965, + "b_counts_w025_error": -0.0003028333396359171, + "b_counts_w0_l2": 49980172763.99357, + "b_counts_w0_l2_error": 0.0008706606610721046, + "b_counts_w010_l2": 49938808774.73064, + "b_counts_w010_l2_error": 4.233212654184344e-05, + "b_counts_w025_l2": 49861696895.01344, + "b_counts_w025_l2_error": -0.0015018605748680555, + "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": 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": 8264644910.2367735, + "b_with_fsa_l2_error": 0.0012897701556534745, + "b_counts_w0": 8245557678.965645, + "b_counts_w0_error": -0.0010227126696768492, + "b_counts_w010": 8236107585.508167, + "b_counts_w010_error": -0.002167623553176147, + "b_counts_w025": 8257013553.06647, + "b_counts_w025_error": 0.000365205343732254, + "b_counts_w0_l2": 8241428799.13474, + "b_counts_w0_l2_error": -0.0015229404691515032, + "b_counts_w010_l2": 8288914314.945551, + "b_counts_w010_l2_error": 0.0042300908744017035, + "b_counts_w025_l2": 8265090012.90595, + "b_counts_w025_l2_error": 0.0013436958541142737, + "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": 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": 103282353514.36382, + "b_with_fsa_l2_error": 0.0020426452094113178, + "b_counts_w0": 103133734743.68373, + "b_counts_w0_error": 0.000600749851369042, + "b_counts_w010": 103061051570.0657, + "b_counts_w010_error": -0.00010442036480243084, + "b_counts_w025": 103090341092.46498, + "b_counts_w025_error": 0.00017974580205210207, + "b_counts_w0_l2": 102882373743.18437, + "b_counts_w0_l2_error": -0.0018379478861668575, + "b_counts_w010_l2": 103036629181.44583, + "b_counts_w010_l2_error": -0.0003413657292550948, + "b_counts_w025_l2": 103052583668.1374, + "b_counts_w025_l2_error": -0.0001865757239599513, + "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": 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": 57612832761.76091, + "b_with_fsa_l2_error": 0.0007154338190744608, + "b_counts_w0": 57575640245.3121, + "b_counts_w0_error": 6.941237821252162e-05, + "b_counts_w010": 57484942166.2708, + "b_counts_w010_error": -0.0015059826017513598, + "b_counts_w025": 57501161729.641, + "b_counts_w025_error": -0.0012242542676927748, + "b_counts_w0_l2": 57395828443.1488, + "b_counts_w0_l2_error": -0.0030538578548572697, + "b_counts_w010_l2": 57553090256.95726, + "b_counts_w010_l2_error": -0.00032227329835274587, + "b_counts_w025_l2": 57579022976.25809, + "b_counts_w025_l2_error": 0.0001281692714918655, + "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": 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": 2773979205.15262, + "b_with_fsa_l2_error": -0.004216320228247783, + "b_counts_w0": 2779303927.4598937, + "b_counts_w0_error": -0.002304888605742818, + "b_counts_w010": 2790108605.0514464, + "b_counts_w010_error": 0.0015736990891032309, + "b_counts_w025": 2787441797.841174, + "b_counts_w025_error": 0.0006163872634939616, + "b_counts_w0_l2": 2774625978.902563, + "b_counts_w0_l2_error": -0.003984145904986107, + "b_counts_w010_l2": 2782167944.5000825, + "b_counts_w010_l2_error": -0.0012767837728331981, + "b_counts_w025_l2": 2784706519.9876933, + "b_counts_w025_l2_error": -0.00036550367537032253, + "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": 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": 66180873311.48443, + "b_with_fsa_l2_error": -0.0024214827880206973, + "b_counts_w0": 66369727265.74019, + "b_counts_w0_error": 0.0004252104970524628, + "b_counts_w010": 66374165843.29812, + "b_counts_w010_error": 0.0004921154712121466, + "b_counts_w025": 66193315602.37082, + "b_counts_w025_error": -0.002233933705149773, + "b_counts_w0_l2": 66398098027.633026, + "b_counts_w0_l2_error": 0.0008528576580082507, + "b_counts_w010_l2": 66385837969.95303, + "b_counts_w010_l2_error": 0.0006680554704671853, + "b_counts_w025_l2": 66422000214.25293, + "b_counts_w025_l2_error": 0.0012131476737380624, + "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": 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": 17679924781.40679, + "b_with_fsa_l2_error": 0.00209724891812715, + "b_counts_w0": 17597483738.597054, + "b_counts_w0_error": -0.0025755052490433828, + "b_counts_w010": 17629779182.242733, + "b_counts_w010_error": -0.0007450011247294176, + "b_counts_w025": 17617483431.731403, + "b_counts_w025_error": -0.0014419236463537814, + "b_counts_w0_l2": 17654305568.580307, + "b_counts_w0_l2_error": 0.0006451532214380209, + "b_counts_w010_l2": 17632234023.75956, + "b_counts_w010_l2_error": -0.0006058608308109145, + "b_counts_w025_l2": 17650723401.507927, + "b_counts_w025_l2_error": 0.0004421161716326803, + "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": 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": 20871817608.87927, + "b_with_fsa_l2_error": -0.02742634050925297, + "b_counts_w0": 21454684086.966232, + "b_counts_w0_error": -0.0002662438559380338, + "b_counts_w010": 21460244846.617393, + "b_counts_w010_error": -7.1265876279868525e-06, + "b_counts_w025": 21484387670.724358, + "b_counts_w025_error": 0.0011178676621378977, + "b_counts_w0_l2": 21425199019.311897, + "b_counts_w0_l2_error": -0.0016401730788874228, + "b_counts_w010_l2": 21427693752.04733, + "b_counts_w010_l2_error": -0.0015239248732247812, + "b_counts_w025_l2": 21405918762.40101, + "b_counts_w025_l2_error": -0.0025385840544493946, + "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": 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": 71929208123.99995, + "b_with_fsa_l2_error": 0.0016629421698437406, + "b_counts_w0": 71631266854.45255, + "b_counts_w0_error": -0.002486091809985374, + "b_counts_w010": 71831941606.09348, + "b_counts_w010_error": 0.00030844002750315995, + "b_counts_w025": 71903117931.47418, + "b_counts_w025_error": 0.0012996185675306102, + "b_counts_w0_l2": 71732389153.23997, + "b_counts_w0_l2_error": -0.0010778953072826244, + "b_counts_w010_l2": 71835206752.77579, + "b_counts_w010_l2_error": 0.00035390940660132207, + "b_counts_w025_l2": 71710107420.87921, + "b_counts_w025_l2_error": -0.0013881835222543186, + "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": 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": 5250623074.7391815, + "b_with_fsa_l2_error": -0.0021477659937269335, + "b_counts_w0": 5256911175.144336, + "b_counts_w0_error": -0.0009527468602595056, + "b_counts_w010": 5264448135.811398, + "b_counts_w010_error": 0.00047961134412724104, + "b_counts_w025": 5261961280.10857, + "b_counts_w025_error": 6.99800216860478e-06, + "b_counts_w0_l2": 5113509925.2968645, + "b_counts_w0_l2_error": -0.028205371069377563, + "b_counts_w010_l2": 5201468554.706203, + "b_counts_w010_l2_error": -0.011489314021119797, + "b_counts_w025_l2": 5252180899.8716545, + "b_counts_w025_l2_error": -0.0018517098368666335, + "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": 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": 32368038792.552895, + "b_with_fsa_l2_error": -0.0008923021511371368, + "b_counts_w0": 32387404449.25599, + "b_counts_w0_error": -0.00029454036488978086, + "b_counts_w010": 32395003480.50494, + "b_counts_w010_error": -5.998025867884311e-05, + "b_counts_w025": 32410485196.089516, + "b_counts_w025_error": 0.0004178955037542838, + "b_counts_w0_l2": 32381071564.91437, + "b_counts_w0_l2_error": -0.0004900181797752598, + "b_counts_w010_l2": 32403561827.082207, + "b_counts_w010_l2_error": 0.00020419113585658772, + "b_counts_w025_l2": 32423865898.327408, + "b_counts_w025_l2_error": 0.0008309190636363667, + "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": 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": 3817731449.3101583, + "b_with_fsa_l2_error": 6.728090403945288e-05, + "b_counts_w0": 3809420114.08851, + "b_counts_w0_error": -0.0021099006306380622, + "b_counts_w010": 3817992500.5193663, + "b_counts_w010_error": 0.00013566412492224737, + "b_counts_w025": 3802960307.7857227, + "b_counts_w025_error": -0.0038020680892901374, + "b_counts_w0_l2": 3822766874.8646603, + "b_counts_w0_l2_error": 0.0013863271516207157, + "b_counts_w010_l2": 3799308165.8510566, + "b_counts_w010_l2_error": -0.004758758653456762, + "b_counts_w025_l2": 3818655623.4075055, + "b_counts_w025_l2_error": 0.0003093713414857596, + "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": 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": 35653549416.682495, + "b_with_fsa_l2_error": -0.0012604687051333257, + "b_counts_w0": 35710017839.37264, + "b_counts_w0_error": 0.00032134424009141094, + "b_counts_w010": 35752125584.318214, + "b_counts_w010_error": 0.0015008809240644983, + "b_counts_w025": 35721819640.488075, + "b_counts_w025_error": 0.0006519403660677874, + "b_counts_w0_l2": 35708273736.42018, + "b_counts_w0_l2_error": 0.00027248782624847147, + "b_counts_w010_l2": 35756070110.73621, + "b_counts_w010_l2_error": 0.001611376359451626, + "b_counts_w025_l2": 35721562141.26015, + "b_counts_w025_l2_error": 0.0006447272088248951, + "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": 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": 142349128171.56534, + "b_with_fsa_l2_error": -0.0023959610836438924, + "b_counts_w0": 142742867348.63675, + "b_counts_w0_error": 0.00036342211997241326, + "b_counts_w010": 142844487972.81384, + "b_counts_w010_error": 0.0010755946946725931, + "b_counts_w025": 142543938307.96698, + "b_counts_w025_error": -0.001030702431255849, + "b_counts_w0_l2": 142580704159.1023, + "b_counts_w0_l2_error": -0.0007730418325721531, + "b_counts_w010_l2": 142589786827.35455, + "b_counts_w010_l2_error": -0.0007093891312948426, + "b_counts_w025_l2": 142737100009.38397, + "b_counts_w025_l2_error": 0.00032300374153712786, + "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": 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": 11454315620.398739, + "b_with_fsa_l2_error": 0.0001651879048659591, + "b_counts_w0": 11463073408.565035, + "b_counts_w0_error": 0.0009298983543820635, + "b_counts_w010": 11426238597.539371, + "b_counts_w010_error": -0.0022864348524062757, + "b_counts_w025": 11438967521.125069, + "b_counts_w025_error": -0.00117497375147039, + "b_counts_w0_l2": 11435317891.241346, + "b_counts_w0_l2_error": -0.0014936512595299474, + "b_counts_w010_l2": 11452299834.835108, + "b_counts_w010_l2_error": -1.0825976175917539e-05, + "b_counts_w025_l2": 11447445646.592577, + "b_counts_w025_l2_error": -0.00043468282250467476, + "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": 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": 2985063414.2230296, + "b_with_fsa_l2_error": -0.0023432827789319145, + "b_counts_w0": 2985354143.2772007, + "b_counts_w0_error": -0.002246116403034133, + "b_counts_w010": 2992287369.2900105, + "b_counts_w010_error": 7.108043463904168e-05, + "b_counts_w025": 2987966083.9558053, + "b_counts_w025_error": -0.0013731633694145453, + "b_counts_w0_l2": 2978557999.8147607, + "b_counts_w0_l2_error": -0.0045174980240058685, + "b_counts_w010_l2": 2986615449.9539638, + "b_counts_w010_l2_error": -0.0018245672082824434, + "b_counts_w025_l2": 2989663964.713047, + "b_counts_w025_l2_error": -0.0008057040201653433, + "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": 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": 46963712141.06357, + "b_with_fsa_l2_error": 0.00040669163101094905, + "b_counts_w0": 46883506524.075134, + "b_counts_w0_error": -0.0013018239927245383, + "b_counts_w010": 46919591596.559685, + "b_counts_w010_error": -0.0005331507695963798, + "b_counts_w025": 47016283147.784134, + "b_counts_w025_error": 0.0015265432038819907, + "b_counts_w0_l2": 46987435999.7021, + "b_counts_w0_l2_error": 0.0009120500418199256, + "b_counts_w010_l2": 46857496000.70339, + "b_counts_w010_l2_error": -0.0018558922391986865, + "b_counts_w025_l2": 47036372704.17972, + "b_counts_w025_l2_error": 0.0019544848152621545, + "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": 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": 30405225413.811913, + "b_with_fsa_l2_error": -0.004406428641029307, + "b_counts_w0": 30609949127.415665, + "b_counts_w0_error": 0.002297077430530433, + "b_counts_w010": 30554935618.79316, + "b_counts_w010_error": 0.0004957062919501848, + "b_counts_w025": 30457783500.6658, + "b_counts_w025_error": -0.0026854582261582804, + "b_counts_w0_l2": 30506784922.01583, + "b_counts_w0_l2_error": -0.0010809478362638013, + "b_counts_w010_l2": 30513195657.101402, + "b_counts_w010_l2_error": -0.0008710336997292022, + "b_counts_w025_l2": 30528623130.16239, + "b_counts_w025_l2_error": -0.00036587405059673733, + "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": 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": 7934008237.551141, + "b_with_fsa_l2_error": -0.0013173864769209435, + "b_counts_w0": 7940886302.9737625, + "b_counts_w0_error": -0.00045161924469952475, + "b_counts_w010": 7939405515.673581, + "b_counts_w010_error": -0.0006380113540519826, + "b_counts_w025": 7942533319.760791, + "b_counts_w025_error": -0.0002443032223136559, + "b_counts_w0_l2": 7946911044.579289, + "b_counts_w0_l2_error": 0.00030673699999552334, + "b_counts_w010_l2": 7937514200.842728, + "b_counts_w010_l2_error": -0.000876078064057654, + "b_counts_w025_l2": 7933706037.463225, + "b_counts_w025_l2_error": -0.0013554255064467597, + "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": 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": 24732468542.733322, + "b_with_fsa_l2_error": -0.0011925089138159334, + "b_counts_w0": 24720769528.22714, + "b_counts_w0_error": -0.0016649673466210704, + "b_counts_w010": 24787427447.86268, + "b_counts_w010_error": 0.0010269770242840202, + "b_counts_w025": 24771310626.250744, + "b_counts_w025_error": 0.0003761078184590439, + "b_counts_w0_l2": 24681402800.906517, + "b_counts_w0_l2_error": -0.0032547715377977933, + "b_counts_w010_l2": 24743467998.917202, + "b_counts_w010_l2_error": -0.000748301769051916, + "b_counts_w025_l2": 24734402211.43322, + "b_counts_w025_l2_error": -0.0011144187393798588, + "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": 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": 1860688766.491437, + "b_with_fsa_l2_error": 0.0019055856827512301, + "b_counts_w0": 1856926688.1344564, + "b_counts_w0_error": -0.00012014123489035005, + "b_counts_w010": 1855729186.2926354, + "b_counts_w010_error": -0.0007649475054458181, + "b_counts_w025": 1860413623.6224594, + "b_counts_w025_error": 0.001757432384760838, + "b_counts_w0_l2": 1798122482.7919505, + "b_counts_w0_l2_error": -0.03178382559484175, + "b_counts_w010_l2": 1809112535.625581, + "b_counts_w010_l2_error": -0.02586612698814482, + "b_counts_w025_l2": 1843494792.2643263, + "b_counts_w025_l2_error": -0.007352673478296206, + "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": 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, + "b_counts_w0": 590654.4175201391, + "b_counts_w0_error": -0.14927695138214525, + "b_counts_w010": 656554.7607618676, + "b_counts_w010_error": -0.05436029750703093, + "b_counts_w025": 695888.6503899161, + "b_counts_w025_error": 0.002292536207246187, + "b_counts_w0_l2": 548069.1770257872, + "b_counts_w0_l2_error": -0.21061272496627215, + "b_counts_w010_l2": 575800.543390797, + "b_counts_w010_l2_error": -0.1706710740844765, + "b_counts_w025_l2": 623331.2911157109, + "b_counts_w025_l2_error": -0.1022122572057452, + "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": 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, + "b_counts_w0": 71355.09193716716, + "b_counts_w0_error": 0.05800587099542246, + "b_counts_w010": 70075.9287616181, + "b_counts_w010_error": 0.03903928973330616, + "b_counts_w025": 67465.39103659174, + "b_counts_w025_error": 0.0003319716632095104, + "b_counts_w0_l2": 63040.12014218853, + "b_counts_w0_l2_error": -0.06528300352519804, + "b_counts_w010_l2": 65292.697648735004, + "b_counts_w010_l2_error": -0.03188328162592558, + "b_counts_w025_l2": 67377.72966374221, + "b_counts_w025_l2_error": -0.0009678129017937706, + "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": 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, + "b_counts_w0": 968099.0518652354, + "b_counts_w0_error": 0.010647564826710488, + "b_counts_w010": 994129.6743275869, + "b_counts_w010_error": 0.03782224819388432, + "b_counts_w025": 986338.9258320504, + "b_counts_w025_error": 0.029689091798347028, + "b_counts_w0_l2": 824042.0340097321, + "b_counts_w0_l2_error": -0.13974084223902586, + "b_counts_w010_l2": 855976.9369798391, + "b_counts_w010_l2_error": -0.10640238182267497, + "b_counts_w025_l2": 918349.7409624956, + "b_counts_w025_l2_error": -0.04128825704894205, + "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": 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, + "b_counts_w0": 316973.57228712493, + "b_counts_w0_error": -0.2577330166515671, + "b_counts_w010": 361496.3554014875, + "b_counts_w010_error": -0.15347261514831914, + "b_counts_w025": 404854.99597555597, + "b_counts_w025_error": -0.05193832284508024, + "b_counts_w0_l2": 295944.6432843328, + "b_counts_w0_l2_error": -0.30697712107744546, + "b_counts_w010_l2": 303664.12520761363, + "b_counts_w010_l2_error": -0.2889001674725687, + "b_counts_w025_l2": 316699.3737476807, + "b_counts_w025_l2_error": -0.2583751159951915, + "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": 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, + "b_counts_w0": 5665077.313261506, + "b_counts_w0_error": 0.38228627127361925, + "b_counts_w010": 5566796.690797398, + "b_counts_w010_error": 0.3583056708948136, + "b_counts_w025": 5331170.025621886, + "b_counts_w025_error": 0.3008124565205545, + "b_counts_w0_l2": 3980763.455643351, + "b_counts_w0_l2_error": -0.02868851215102005, + "b_counts_w010_l2": 4100330.855178376, + "b_counts_w010_l2_error": 0.00048608966460806697, + "b_counts_w025_l2": 4102435.7755572605, + "b_counts_w025_l2_error": 0.0009996929891460534, + "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": 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, + "b_counts_w0": 613149.1836573075, + "b_counts_w0_error": -0.23307184264748748, + "b_counts_w010": 636858.4126659271, + "b_counts_w010_error": -0.20341629420922672, + "b_counts_w025": 684490.3998041435, + "b_counts_w025_error": -0.14383811470476232, + "b_counts_w0_l2": 626532.0241313535, + "b_counts_w0_l2_error": -0.21633256049810584, + "b_counts_w010_l2": 633609.4466467045, + "b_counts_w010_l2_error": -0.2074801070444012, + "b_counts_w025_l2": 647619.2343825971, + "b_counts_w025_l2_error": -0.18995663807539875, + "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": 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, + "b_counts_w0": 343666.3092332841, + "b_counts_w0_error": -0.362301541892264, + "b_counts_w010": 358590.1946705069, + "b_counts_w010_error": -0.3346091598443242, + "b_counts_w025": 388548.8039311755, + "b_counts_w025_error": -0.2790187268594833, + "b_counts_w0_l2": 334911.5668024005, + "b_counts_w0_l2_error": -0.3785466191643428, + "b_counts_w010_l2": 339591.08013634407, + "b_counts_w010_l2_error": -0.36986343330184746, + "b_counts_w025_l2": 347390.203502893, + "b_counts_w025_l2_error": -0.35539157844782915, + "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": 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, + "b_counts_w0": 101620.86203997511, + "b_counts_w0_error": -0.29472826456947354, + "b_counts_w010": 103260.32036652051, + "b_counts_w010_error": -0.2833500534825231, + "b_counts_w025": 105546.12407021888, + "b_counts_w025_error": -0.2674860594895701, + "b_counts_w0_l2": 88343.50472175327, + "b_counts_w0_l2_error": -0.38687612328444776, + "b_counts_w010_l2": 90812.47749136346, + "b_counts_w010_l2_error": -0.3697408946020862, + "b_counts_w025_l2": 94802.98170866458, + "b_counts_w025_l2_error": -0.3420458940079003, + "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": 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, + "b_counts_w0": 101982.55417700866, + "b_counts_w0_error": -0.14893233713234427, + "b_counts_w010": 104925.05101532646, + "b_counts_w010_error": -0.12437653023584302, + "b_counts_w025": 109559.07622746282, + "b_counts_w025_error": -0.08570453345375219, + "b_counts_w0_l2": 87114.55650355291, + "b_counts_w0_l2_error": -0.27300916707236567, + "b_counts_w010_l2": 88925.91287248909, + "b_counts_w010_l2_error": -0.2578929852511567, + "b_counts_w025_l2": 90624.84975489158, + "b_counts_w025_l2_error": -0.24371496967256753, + "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": 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, + "b_counts_w0": 2296622.648001773, + "b_counts_w0_error": -0.20063863900443665, + "b_counts_w010": 2409120.3754526465, + "b_counts_w010_error": -0.16148273474551073, + "b_counts_w025": 2560176.1555170114, + "b_counts_w025_error": -0.10890633346184456, + "b_counts_w0_l2": 2084395.755070887, + "b_counts_w0_l2_error": -0.2745062280577349, + "b_counts_w010_l2": 2166890.387104589, + "b_counts_w010_l2_error": -0.2457931865858747, + "b_counts_w025_l2": 2303474.9260552945, + "b_counts_w025_l2_error": -0.19825363844043506, + "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": 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, + "b_counts_w0": 1500517.0307085023, + "b_counts_w0_error": -0.15719788808186866, + "b_counts_w010": 1662864.6317142409, + "b_counts_w010_error": -0.06601138490177962, + "b_counts_w025": 1791509.1072201203, + "b_counts_w025_error": 0.0062449330366857025, + "b_counts_w0_l2": 1360930.171798304, + "b_counts_w0_l2_error": -0.2356002634484349, + "b_counts_w010_l2": 1410573.7982868818, + "b_counts_w010_l2_error": -0.20771670572027456, + "b_counts_w025_l2": 1499494.3269100895, + "b_counts_w025_l2_error": -0.1577723146985143, + "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": 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, + "b_counts_w0": 90898.46450697133, + "b_counts_w0_error": -0.28155421872105824, + "b_counts_w010": 92661.46553847559, + "b_counts_w010_error": -0.26761976272837734, + "b_counts_w025": 97175.39321897799, + "b_counts_w025_error": -0.23194245710341302, + "b_counts_w0_l2": 87039.16999596953, + "b_counts_w0_l2_error": -0.3120574167143486, + "b_counts_w010_l2": 88871.8469326573, + "b_counts_w010_l2_error": -0.2975722543878765, + "b_counts_w025_l2": 91773.22682053538, + "b_counts_w025_l2_error": -0.2746402483123095, + "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": 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, + "b_counts_w0": 212887.34530871522, + "b_counts_w0_error": -0.05959534992406461, + "b_counts_w010": 226959.7840681387, + "b_counts_w010_error": 0.0025679826501656443, + "b_counts_w025": 226567.73715578456, + "b_counts_w025_error": 0.0008361618183961777, + "b_counts_w0_l2": 206202.6019860738, + "b_counts_w0_l2_error": -0.08912441233056874, + "b_counts_w010_l2": 211332.50205675277, + "b_counts_w010_l2_error": -0.0664636859548621, + "b_counts_w025_l2": 221819.7831822923, + "b_counts_w025_l2_error": -0.020137362880987844, + "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": 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, + "b_counts_w0": 1689265.1330908993, + "b_counts_w0_error": 0.008773575344744412, + "b_counts_w010": 1689056.0576688517, + "b_counts_w010_error": 0.008648722379461337, + "b_counts_w025": 1678296.6033010136, + "b_counts_w025_error": 0.0022235301234990977, + "b_counts_w0_l2": 1446671.4579007057, + "b_counts_w0_l2_error": -0.13609538825592957, + "b_counts_w010_l2": 1498424.044259386, + "b_counts_w010_l2_error": -0.10519044589270246, + "b_counts_w025_l2": 1587183.423658124, + "b_counts_w025_l2_error": -0.0521862639277228, + "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": 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, + "b_counts_w0": 722892.6661872924, + "b_counts_w0_error": -0.23055326770661988, + "b_counts_w010": 763567.9343199742, + "b_counts_w010_error": -0.18725852477483831, + "b_counts_w025": 817677.6290868002, + "b_counts_w025_error": -0.12966418225187862, + "b_counts_w0_l2": 694085.9225032972, + "b_counts_w0_l2_error": -0.26121515685341107, + "b_counts_w010_l2": 718187.423109923, + "b_counts_w010_l2_error": -0.23556152699582109, + "b_counts_w025_l2": 752505.5759460222, + "b_counts_w025_l2_error": -0.19903329563700436, + "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": 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, + "b_counts_w0": 399823.57123182365, + "b_counts_w0_error": -0.09689060023358345, + "b_counts_w010": 415563.99245198775, + "b_counts_w010_error": -0.06133661246738765, + "b_counts_w025": 428510.3035790376, + "b_counts_w025_error": -0.032093876139668465, + "b_counts_w0_l2": 387429.2365059082, + "b_counts_w0_l2_error": -0.12488654894751117, + "b_counts_w010_l2": 396464.1776863673, + "b_counts_w010_l2_error": -0.10447869685097161, + "b_counts_w025_l2": 408455.7352143691, + "b_counts_w025_l2_error": -0.07739252909949873, + "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": 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, + "b_counts_w0": 338082.99403845, + "b_counts_w0_error": -0.1475610109582887, + "b_counts_w010": 346088.5595615379, + "b_counts_w010_error": -0.12737586026587577, + "b_counts_w025": 363815.2126162738, + "b_counts_w025_error": -0.0826800593071513, + "b_counts_w0_l2": 325324.3407209625, + "b_counts_w0_l2_error": -0.17973054840108538, + "b_counts_w010_l2": 339919.0874513379, + "b_counts_w010_l2_error": -0.1429315038837912, + "b_counts_w025_l2": 356398.63999469357, + "b_counts_w025_l2_error": -0.101380129346685, + "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.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, + "b_counts_w0": 409957.1396804069, + "b_counts_w0_error": -0.3631125876451273, + "b_counts_w010": 428097.38105340616, + "b_counts_w010_error": -0.3349308821220841, + "b_counts_w025": 450655.67669372517, + "b_counts_w025_error": -0.299885524578856, + "b_counts_w0_l2": 388725.23751530185, + "b_counts_w0_l2_error": -0.3960973314645599, + "b_counts_w010_l2": 400784.11629339505, + "b_counts_w010_l2_error": -0.37736330452001604, + "b_counts_w025_l2": 418635.8148852288, + "b_counts_w025_l2_error": -0.34962986357749326, + "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": 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, + "b_counts_w0": 741321.042992686, + "b_counts_w0_error": 0.02157364407494555, + "b_counts_w010": 751773.1513406233, + "b_counts_w010_error": 0.03597711813547312, + "b_counts_w025": 763871.7010158132, + "b_counts_w025_error": 0.05264946218469961, + "b_counts_w0_l2": 506952.79887045495, + "b_counts_w0_l2_error": -0.3013963072930156, + "b_counts_w010_l2": 531248.5994563337, + "b_counts_w010_l2_error": -0.26791560446548346, + "b_counts_w025_l2": 566932.2953952181, + "b_counts_w025_l2_error": -0.21874187111618187, + "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": 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, + "b_counts_w0": 130538.93471044795, + "b_counts_w0_error": -0.33096128897062327, + "b_counts_w010": 132324.68261484418, + "b_counts_w010_error": -0.3218089661113113, + "b_counts_w025": 137740.40726924734, + "b_counts_w025_error": -0.29405227076130774, + "b_counts_w0_l2": 138842.51377045715, + "b_counts_w0_l2_error": -0.2884037497692984, + "b_counts_w010_l2": 140198.8101977092, + "b_counts_w010_l2_error": -0.2814524534723337, + "b_counts_w025_l2": 142788.7166904579, + "b_counts_w025_l2_error": -0.268178653548666, + "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": 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, + "b_counts_w0": 711423.6210444173, + "b_counts_w0_error": -0.19223635626629937, + "b_counts_w010": 735009.8234106569, + "b_counts_w010_error": -0.16545614233802913, + "b_counts_w025": 800839.886526023, + "b_counts_w025_error": -0.0907114612839716, + "b_counts_w0_l2": 660442.7326672358, + "b_counts_w0_l2_error": -0.25012100746171156, + "b_counts_w010_l2": 689863.3881455574, + "b_counts_w010_l2_error": -0.21671624668737233, + "b_counts_w025_l2": 720920.1747735577, + "b_counts_w025_l2_error": -0.18145379210023774, + "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": 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, + "b_counts_w0": 799928.7428344073, + "b_counts_w0_error": -0.15054147020579356, + "b_counts_w010": 875816.5939528921, + "b_counts_w010_error": -0.06995481418449051, + "b_counts_w025": 943995.8066349388, + "b_counts_w025_error": 0.00244590186204732, + "b_counts_w0_l2": 699736.7366374183, + "b_counts_w0_l2_error": -0.25693713987464134, + "b_counts_w010_l2": 720869.7208289604, + "b_counts_w010_l2_error": -0.2344956488764516, + "b_counts_w025_l2": 756547.2806583798, + "b_counts_w025_l2_error": -0.19660901485957996, + "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": 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, + "b_counts_w0": 1298753.6503552091, + "b_counts_w0_error": -0.09817752188777504, + "b_counts_w010": 1431254.5388571273, + "b_counts_w010_error": -0.00617217538638863, + "b_counts_w025": 1440627.3403277677, + "b_counts_w025_error": 0.0003360666091545574, + "b_counts_w0_l2": 1164806.4690332562, + "b_counts_w0_l2_error": -0.19118713842504004, + "b_counts_w010_l2": 1227326.7363290167, + "b_counts_w010_l2_error": -0.14777460798134814, + "b_counts_w025_l2": 1330462.4777806879, + "b_counts_w025_l2_error": -0.07615969478172058, + "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": 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, + "b_counts_w0": 633378.3725291484, + "b_counts_w0_error": -0.21597240565780862, + "b_counts_w010": 674430.6248231118, + "b_counts_w010_error": -0.1651558637543611, + "b_counts_w025": 753099.5342641514, + "b_counts_w025_error": -0.06777553235420189, + "b_counts_w0_l2": 586623.2883335722, + "b_counts_w0_l2_error": -0.2738481996145042, + "b_counts_w010_l2": 609832.864862527, + "b_counts_w010_l2_error": -0.24511821886218546, + "b_counts_w025_l2": 649032.5777126121, + "b_counts_w025_l2_error": -0.196594843423845, + "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": 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, + "b_counts_w0": 414431.3138404877, + "b_counts_w0_error": -0.13138981760842183, + "b_counts_w010": 454260.565725539, + "b_counts_w010_error": -0.047911343398072036, + "b_counts_w025": 472883.20759441325, + "b_counts_w025_error": -0.00887998690998125, + "b_counts_w0_l2": 366549.28462094476, + "b_counts_w0_l2_error": -0.23174617762438848, + "b_counts_w010_l2": 376859.07027961686, + "b_counts_w010_l2_error": -0.21013780851151773, + "b_counts_w025_l2": 392680.1958833371, + "b_counts_w025_l2_error": -0.1769781742432035, + "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": 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, + "b_counts_w0": 732076.00951658, + "b_counts_w0_error": -0.15289715682271765, + "b_counts_w010": 758226.2751008648, + "b_counts_w010_error": -0.12263805252435862, + "b_counts_w025": 797326.7310988336, + "b_counts_w025_error": -0.07739396992249946, + "b_counts_w0_l2": 645866.2331911887, + "b_counts_w0_l2_error": -0.2526525724975741, + "b_counts_w010_l2": 665411.539283031, + "b_counts_w010_l2_error": -0.23003622645434954, + "b_counts_w025_l2": 696906.6814134342, + "b_counts_w025_l2_error": -0.19359243633130643, + "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": 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, + "b_counts_w0": 97384.31811959196, + "b_counts_w0_error": -0.26317428195222115, + "b_counts_w010": 103014.84668915809, + "b_counts_w010_error": -0.22057277961213906, + "b_counts_w025": 116901.42605198684, + "b_counts_w025_error": -0.11550464330626631, + "b_counts_w0_l2": 100524.29484546886, + "b_counts_w0_l2_error": -0.23941670321293848, + "b_counts_w010_l2": 102909.61607428458, + "b_counts_w010_l2_error": -0.22136897169790756, + "b_counts_w025_l2": 107369.7880677272, + "b_counts_w025_l2_error": -0.1876225791047063, + "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": 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, + "b_counts_w0": 226894.13197867555, + "b_counts_w0_error": -0.10885757286921088, + "b_counts_w010": 241393.7921147969, + "b_counts_w010_error": -0.05190915285679239, + "b_counts_w025": 255031.6563160362, + "b_counts_w025_error": 0.0016545038988380989, + "b_counts_w0_l2": 189674.74818412482, + "b_counts_w0_l2_error": -0.2550392820290826, + "b_counts_w010_l2": 194908.13238656818, + "b_counts_w010_l2_error": -0.23448480289997223, + "b_counts_w025_l2": 204285.71792931386, + "b_counts_w025_l2_error": -0.19765368581328444, + "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": 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, + "b_counts_w0": 332939.63646634604, + "b_counts_w0_error": -0.13451701270707017, + "b_counts_w010": 345656.25246997544, + "b_counts_w010_error": -0.101459924870096, + "b_counts_w025": 361742.3005440258, + "b_counts_w025_error": -0.05964393357320503, + "b_counts_w0_l2": 297533.2865019578, + "b_counts_w0_l2_error": -0.22655650028972435, + "b_counts_w010_l2": 304026.2849076375, + "b_counts_w010_l2_error": -0.20967782607634652, + "b_counts_w025_l2": 315027.16137731104, + "b_counts_w025_l2_error": -0.18108083615088913, + "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": 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, + "b_counts_w0": 168782.16998666586, + "b_counts_w0_error": -0.14002640670955716, + "b_counts_w010": 180520.84924104522, + "b_counts_w010_error": -0.08021585812098223, + "b_counts_w025": 192970.74379436506, + "b_counts_w025_error": -0.016781547755429872, + "b_counts_w0_l2": 157031.41295197417, + "b_counts_w0_l2_error": -0.19989849362374426, + "b_counts_w010_l2": 160279.9341511821, + "b_counts_w010_l2_error": -0.1833467307877544, + "b_counts_w025_l2": 166054.90616733572, + "b_counts_w025_l2_error": -0.15392227537119155, + "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": 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, + "b_counts_w0": 930437.4726529266, + "b_counts_w0_error": -0.27977653697618643, + "b_counts_w010": 1036426.5304423939, + "b_counts_w010_error": -0.19773361793283856, + "b_counts_w025": 1119139.105949985, + "b_counts_w025_error": -0.13370831873907155, + "b_counts_w0_l2": 845013.4198983734, + "b_counts_w0_l2_error": -0.3459007085715013, + "b_counts_w010_l2": 885459.1054111746, + "b_counts_w010_l2_error": -0.3145929285856582, + "b_counts_w025_l2": 946697.0675590048, + "b_counts_w025_l2_error": -0.2671904770905822, + "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": 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, + "b_counts_w0": 166167.70899755482, + "b_counts_w0_error": -0.2968288965486888, + "b_counts_w010": 204976.81013487044, + "b_counts_w010_error": -0.13260060794009199, + "b_counts_w025": 237627.4176259337, + "b_counts_w025_error": 0.005566812411021193, + "b_counts_w0_l2": 144078.60075157997, + "b_counts_w0_l2_error": -0.3903032708015477, + "b_counts_w010_l2": 152948.5724018857, + "b_counts_w010_l2_error": -0.3527682539769545, + "b_counts_w025_l2": 166459.70437196808, + "b_counts_w025_l2_error": -0.29559326111225226, + "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": 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, + "b_counts_w0": 2439971.68474336, + "b_counts_w0_error": -0.0501103377472169, + "b_counts_w010": 2593765.043612218, + "b_counts_w010_error": 0.009761964306987498, + "b_counts_w025": 2578206.520150303, + "b_counts_w025_error": 0.0037049757407677263, + "b_counts_w0_l2": 2119954.278965743, + "b_counts_w0_l2_error": -0.17469425295813706, + "b_counts_w010_l2": 2223311.320263922, + "b_counts_w010_l2_error": -0.13445698886853305, + "b_counts_w025_l2": 2391040.9852822437, + "b_counts_w025_l2_error": -0.0691592332223302, + "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": 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, + "b_counts_w0": 1385369.8157095753, + "b_counts_w0_error": -0.039428256622360006, + "b_counts_w010": 1456022.433738275, + "b_counts_w010_error": 0.009560040729319779, + "b_counts_w025": 1459342.5338441855, + "b_counts_w025_error": 0.011862093445322774, + "b_counts_w0_l2": 1122152.1133286902, + "b_counts_w0_l2_error": -0.22193511103535388, + "b_counts_w010_l2": 1168884.7776670349, + "b_counts_w010_l2_error": -0.18953215527066986, + "b_counts_w025_l2": 1250115.4326779202, + "b_counts_w025_l2_error": -0.1332093806478169, + "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": 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, + "b_counts_w0": 74568.71445075242, + "b_counts_w0_error": -0.19327184674780015, + "b_counts_w010": 84249.18941263916, + "b_counts_w010_error": -0.08854278247293326, + "b_counts_w025": 87229.49822275172, + "b_counts_w025_error": -0.05630005118525304, + "b_counts_w0_l2": 72018.61736470973, + "b_counts_w0_l2_error": -0.2208602949058504, + "b_counts_w010_l2": 73551.05233123664, + "b_counts_w010_l2_error": -0.20428151331317837, + "b_counts_w025_l2": 75735.52951735396, + "b_counts_w025_l2_error": -0.18064855599108512, + "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": 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, + "b_counts_w0": 1170496.4264270167, + "b_counts_w0_error": -0.36784525656258465, + "b_counts_w010": 1261388.4698500205, + "b_counts_w010_error": -0.3187568227209167, + "b_counts_w025": 1378003.9873107022, + "b_counts_w025_error": -0.25577580812165923, + "b_counts_w0_l2": 1121426.1571902123, + "b_counts_w0_l2_error": -0.3943468355161289, + "b_counts_w010_l2": 1160161.2126390426, + "b_counts_w010_l2_error": -0.37342703731218607, + "b_counts_w025_l2": 1225972.825841702, + "b_counts_w025_l2_error": -0.33788389295050303, + "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": 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, + "b_counts_w0": 370563.8084835236, + "b_counts_w0_error": -0.306063125641513, + "b_counts_w010": 413377.76348505245, + "b_counts_w010_error": -0.2258875082916421, + "b_counts_w025": 475193.1720791795, + "b_counts_w025_error": -0.11012879023834207, + "b_counts_w0_l2": 336066.5306372917, + "b_counts_w0_l2_error": -0.3706645049841339, + "b_counts_w010_l2": 349808.15379317495, + "b_counts_w010_l2_error": -0.34493123367404643, + "b_counts_w025_l2": 373477.92133868433, + "b_counts_w025_l2_error": -0.3006060078120258, + "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": 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, + "b_counts_w0": 600150.245121324, + "b_counts_w0_error": 0.08993840417267158, + "b_counts_w010": 593919.6994125772, + "b_counts_w010_error": 0.07862305255510536, + "b_counts_w025": 578250.829442747, + "b_counts_w025_error": 0.05016667305857891, + "b_counts_w0_l2": 598468.2189430795, + "b_counts_w0_l2_error": 0.08688366089230876, + "b_counts_w010_l2": 596386.4206745612, + "b_counts_w010_l2_error": 0.0831028878258251, + "b_counts_w025_l2": 590442.3892508923, + "b_counts_w025_l2_error": 0.07230787744812187, + "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": 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, + "b_counts_w0": 1296653.3787909828, + "b_counts_w0_error": -0.33110120458042364, + "b_counts_w010": 1435461.000485587, + "b_counts_w010_error": -0.2594951358613108, + "b_counts_w025": 1639669.3934843473, + "b_counts_w025_error": -0.154151062938136, + "b_counts_w0_l2": 1178510.21298801, + "b_counts_w0_l2_error": -0.3920471926025646, + "b_counts_w010_l2": 1238383.234670197, + "b_counts_w010_l2_error": -0.36116076394212543, + "b_counts_w025_l2": 1330762.5826618762, + "b_counts_w025_l2_error": -0.3135054417072069, + "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": 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, + "b_counts_w0": 120083.21613605965, + "b_counts_w0_error": -0.23284462396375147, + "b_counts_w010": 126975.25536185791, + "b_counts_w010_error": -0.18881461615705572, + "b_counts_w025": 136407.6784280018, + "b_counts_w025_error": -0.12855528685959813, + "b_counts_w0_l2": 119489.66469897087, + "b_counts_w0_l2_error": -0.2366365458539911, + "b_counts_w010_l2": 122937.53688635184, + "b_counts_w010_l2_error": -0.214609706720717, + "b_counts_w025_l2": 127319.3669802368, + "b_counts_w025_l2_error": -0.18661624833771961, + "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": 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, + "b_counts_w0": 576068.4862458403, + "b_counts_w0_error": -0.2957552633593713, + "b_counts_w010": 639781.6832246522, + "b_counts_w010_error": -0.21786576810285158, + "b_counts_w025": 701529.2385688873, + "b_counts_w025_error": -0.14237927319841429, + "b_counts_w0_l2": 450479.6969573277, + "b_counts_w0_l2_error": -0.44928777893558264, + "b_counts_w010_l2": 469897.9976609666, + "b_counts_w010_l2_error": -0.42554887220565135, + "b_counts_w025_l2": 503776.56037479354, + "b_counts_w025_l2_error": -0.3841322697602605, + "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": 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, + "b_counts_w0": 72817.52181479966, + "b_counts_w0_error": -0.4032562751804122, + "b_counts_w010": 81288.2988138149, + "b_counts_w010_error": -0.33383777682276733, + "b_counts_w025": 96008.79324887709, + "b_counts_w025_error": -0.21320248930629945, + "b_counts_w0_l2": 61117.53302909549, + "b_counts_w0_l2_error": -0.4991383474388709, + "b_counts_w010_l2": 62953.70461642367, + "b_counts_w010_l2_error": -0.4840908170489062, + "b_counts_w025_l2": 66204.18566157295, + "b_counts_w025_l2_error": -0.4574529403676427, + "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": 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, + "b_counts_w0": 870937.5041651995, + "b_counts_w0_error": -0.06924515276453327, + "b_counts_w010": 936778.2172051629, + "b_counts_w010_error": 0.0011176029031356603, + "b_counts_w025": 934919.2480425359, + "b_counts_w025_error": -0.0008690431543616529, + "b_counts_w0_l2": 807443.0677836005, + "b_counts_w0_l2_error": -0.13710048584185075, + "b_counts_w010_l2": 853991.4716187968, + "b_counts_w010_l2_error": -0.08735506519630117, + "b_counts_w025_l2": 929278.3872135071, + "b_counts_w025_l2_error": -0.006897327082990508, + "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": 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, + "b_counts_w0": 4185377.978539479, + "b_counts_w0_error": 0.01340350424679208, + "b_counts_w010": 4308135.312663344, + "b_counts_w010_error": 0.04312667697121354, + "b_counts_w025": 4205579.340351645, + "b_counts_w025_error": 0.01829485001197198, + "b_counts_w0_l2": 3368117.842610275, + "b_counts_w0_l2_error": -0.18447928910628925, + "b_counts_w010_l2": 3501544.494127564, + "b_counts_w010_l2_error": -0.1521727598272489, + "b_counts_w025_l2": 3738324.7688156553, + "b_counts_w025_l2_error": -0.09484126878013362, + "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": 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, + "b_counts_w0": 374783.2955072303, + "b_counts_w0_error": 0.1440438031566088, + "b_counts_w010": 350265.46940670867, + "b_counts_w010_error": 0.0692019749496951, + "b_counts_w025": 327291.7604103394, + "b_counts_w025_error": -0.0009263624866046821, + "b_counts_w0_l2": 344384.86262212123, + "b_counts_w0_l2_error": 0.05125114354563596, + "b_counts_w010_l2": 339633.30658181885, + "b_counts_w010_l2_error": 0.03674679314255235, + "b_counts_w025_l2": 330366.7535732666, + "b_counts_w025_l2_error": 0.008460200134962202, + "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": 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, + "b_counts_w0": 87708.83538730488, + "b_counts_w0_error": 0.12141037250854975, + "b_counts_w010": 86133.68805844523, + "b_counts_w010_error": 0.10127116367043978, + "b_counts_w025": 82048.79017863532, + "b_counts_w025_error": 0.04904327998199602, + "b_counts_w0_l2": 79895.7214595913, + "b_counts_w0_l2_error": 0.021514997527921416, + "b_counts_w010_l2": 78830.60676475248, + "b_counts_w010_l2_error": 0.007896863602996278, + "b_counts_w025_l2": 78302.13027244041, + "b_counts_w025_l2_error": 0.0011399728349372738, + "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": 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, + "b_counts_w0": 796926.0916052968, + "b_counts_w0_error": -0.2978804909984449, + "b_counts_w010": 875721.8373134178, + "b_counts_w010_error": -0.22845870788609285, + "b_counts_w025": 997798.2503459409, + "b_counts_w025_error": -0.1209051567074499, + "b_counts_w0_l2": 683502.5418123984, + "b_counts_w0_l2_error": -0.3978105697456294, + "b_counts_w010_l2": 713799.8598946314, + "b_counts_w010_l2_error": -0.3711175823782422, + "b_counts_w025_l2": 769574.7166590753, + "b_counts_w025_l2_error": -0.3219780003535154, + "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": 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, + "b_counts_w0": 749139.6627721715, + "b_counts_w0_error": -0.07685923382274543, + "b_counts_w010": 817658.999641645, + "b_counts_w010_error": 0.007574946182591768, + "b_counts_w025": 810702.520811478, + "b_counts_w025_error": -0.000997299443026903, + "b_counts_w0_l2": 657048.2028472882, + "b_counts_w0_l2_error": -0.19034058462834683, + "b_counts_w010_l2": 688169.4106249957, + "b_counts_w010_l2_error": -0.15199091897860326, + "b_counts_w025_l2": 742475.8211544809, + "b_counts_w025_l2_error": -0.08507087200230026, + "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": 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, + "b_counts_w0": 153719.16582800468, + "b_counts_w0_error": -0.3560607019799096, + "b_counts_w010": 165978.65592478155, + "b_counts_w010_error": -0.30470492337884886, + "b_counts_w025": 176554.16379316937, + "b_counts_w025_error": -0.260403452730776, + "b_counts_w0_l2": 127868.67702955774, + "b_counts_w0_l2_error": -0.4643500328560177, + "b_counts_w010_l2": 131476.35800448252, + "b_counts_w010_l2_error": -0.4492372293096282, + "b_counts_w025_l2": 137190.02165630244, + "b_counts_w025_l2_error": -0.4253023312684008, + "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": 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, + "b_counts_w0": 555408.2470725082, + "b_counts_w0_error": -0.2509209327545682, + "b_counts_w010": 611377.7122186213, + "b_counts_w010_error": -0.17543491869759167, + "b_counts_w025": 670041.5338259223, + "b_counts_w025_error": -0.09631502625402014, + "b_counts_w0_l2": 487846.3929975319, + "b_counts_w0_l2_error": -0.3420416010172565, + "b_counts_w010_l2": 512132.5025545075, + "b_counts_w010_l2_error": -0.30928692661361074, + "b_counts_w025_l2": 550983.0209727938, + "b_counts_w025_l2_error": -0.2568892349117587, + "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": 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, + "b_counts_w0": 50608.29249555427, + "b_counts_w0_error": -0.11679005948285161, + "b_counts_w010": 56783.220284393086, + "b_counts_w010_error": -0.009025949370717145, + "b_counts_w025": 58268.9278015363, + "b_counts_w025_error": 0.016902442660237268, + "b_counts_w0_l2": 43699.12802527016, + "b_counts_w0_l2_error": -0.2373679813986894, + "b_counts_w010_l2": 44973.7770310807, + "b_counts_w010_l2_error": -0.2151229575678406, + "b_counts_w025_l2": 47303.817217298136, + "b_counts_w025_l2_error": -0.1744593715665456, + "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": 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, + "b_counts_w0": 84864024991.15439, + "b_counts_w0_error": -0.00037277665541835973, + "b_counts_w010": 84880855279.1616, + "b_counts_w010_error": -0.00017452994168426616, + "b_counts_w025": 84876040586.19499, + "b_counts_w025_error": -0.00023124299721014383, + "b_counts_w0_l2": 84857081275.59116, + "b_counts_w0_l2_error": -0.0004545678161474446, + "b_counts_w010_l2": 84874673331.21538, + "b_counts_w010_l2_error": -0.0002473481171242454, + "b_counts_w025_l2": 84881689735.51572, + "b_counts_w025_l2_error": -0.00016470074387814177, + "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": 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, + "b_counts_w0": 461867726215.8062, + "b_counts_w0_error": -0.0002156236184916067, + "b_counts_w010": 462100832742.7373, + "b_counts_w010_error": 0.00028897163774711484, + "b_counts_w025": 461714068792.95557, + "b_counts_w025_error": -0.0005482389582552328, + "b_counts_w0_l2": 446449240679.0373, + "b_counts_w0_l2_error": -0.03359132854904815, + "b_counts_w010_l2": 449002822602.45685, + "b_counts_w010_l2_error": -0.028063704153720257, + "b_counts_w025_l2": 451125282217.4422, + "b_counts_w025_l2_error": -0.02346931090622245, + "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": 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, + "b_counts_w0": 677984055091.856, + "b_counts_w0_error": -0.0021765034967255437, + "b_counts_w010": 678125054549.5139, + "b_counts_w010_error": -0.001968987448540209, + "b_counts_w025": 677960363977.4291, + "b_counts_w025_error": -0.0022113709105768702, + "b_counts_w0_l2": 678998929317.4452, + "b_counts_w0_l2_error": -0.0006828616615185166, + "b_counts_w010_l2": 679175560514.0724, + "b_counts_w010_l2_error": -0.000422904577149875, + "b_counts_w025_l2": 679413125343.4645, + "b_counts_w025_l2_error": -7.326837710959121e-05, + "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": 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, + "b_counts_w0": 309959157906.5603, + "b_counts_w0_error": -0.0008609303609791591, + "b_counts_w010": 309870914304.93097, + "b_counts_w010_error": -0.0011453795465718865, + "b_counts_w025": 310011783040.3425, + "b_counts_w025_error": -0.0006912956660021729, + "b_counts_w0_l2": 310205876202.9396, + "b_counts_w0_l2_error": -6.564529577188525e-05, + "b_counts_w010_l2": 309832418265.2807, + "b_counts_w010_l2_error": -0.0012694697573620163, + "b_counts_w025_l2": 310206688373.2819, + "b_counts_w025_l2_error": -6.302730207968145e-05, + "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": 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, + "b_counts_w0": 142216772256.67993, + "b_counts_w0_error": -0.0021109357609109093, + "b_counts_w010": 142502555010.02444, + "b_counts_w010_error": -0.00010569067071915453, + "b_counts_w025": 142479600580.49, + "b_counts_w025_error": -0.0002667544738473602, + "b_counts_w0_l2": 142500562390.83725, + "b_counts_w0_l2_error": -0.00011967223466933273, + "b_counts_w010_l2": 142438043390.92526, + "b_counts_w010_l2_error": -0.0005583478235565386, + "b_counts_w025_l2": 142420795791.57224, + "b_counts_w025_l2_error": -0.0006793686462461405, + "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": 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, + "b_counts_w0": 4626377.399111205, + "b_counts_w0_error": -0.24554859898672898, + "b_counts_w010": 5053722.339133179, + "b_counts_w010_error": -0.17585886965823744, + "b_counts_w025": 5446772.455897446, + "b_counts_w025_error": -0.11176180500497326, + "b_counts_w0_l2": 3754043.586403406, + "b_counts_w0_l2_error": -0.38780536067570925, + "b_counts_w010_l2": 3981383.676657705, + "b_counts_w010_l2_error": -0.35073163434465154, + "b_counts_w025_l2": 4322327.3126130765, + "b_counts_w025_l2_error": -0.2951318893125006, + "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": 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, + "b_counts_w0": 13165153.01990849, + "b_counts_w0_error": -0.049220570930325516, + "b_counts_w010": 13775455.495923419, + "b_counts_w010_error": -0.005144893357280782, + "b_counts_w025": 14119733.862889644, + "b_counts_w025_error": 0.019718683138198703, + "b_counts_w0_l2": 10905193.639563339, + "b_counts_w0_l2_error": -0.21243347746592714, + "b_counts_w010_l2": 11351040.03658093, + "b_counts_w010_l2_error": -0.1802347189579077, + "b_counts_w025_l2": 11986035.951299785, + "b_counts_w025_l2_error": -0.1343756961007495, + "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": 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, + "b_counts_w0": 14317277.064170187, + "b_counts_w0_error": -0.034947208019707264, + "b_counts_w010": 14912924.436211457, + "b_counts_w010_error": 0.005202267110776877, + "b_counts_w025": 14990857.476039495, + "b_counts_w025_error": 0.010455325868840265, + "b_counts_w0_l2": 12364692.20760537, + "b_counts_w0_l2_error": -0.16656074451555433, + "b_counts_w010_l2": 12803074.88592382, + "b_counts_w010_l2_error": -0.13701166016307245, + "b_counts_w025_l2": 13469528.501682369, + "b_counts_w025_l2_error": -0.09208950633937495, + "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": 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, + "b_counts_w0": 5231418.394747636, + "b_counts_w0_error": -0.17354086889865897, + "b_counts_w010": 5431292.877144662, + "b_counts_w010_error": -0.14196471142346537, + "b_counts_w025": 5756655.875941356, + "b_counts_w025_error": -0.09056388644872845, + "b_counts_w0_l2": 4818428.485041473, + "b_counts_w0_l2_error": -0.23878498744824062, + "b_counts_w010_l2": 4920201.946376748, + "b_counts_w010_l2_error": -0.22270682277519976, + "b_counts_w025_l2": 5084365.091198929, + "b_counts_w025_l2_error": -0.1967723400420236, + "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": 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, + "b_counts_w0": 2409108.9681172054, + "b_counts_w0_error": -0.2388182499348186, + "b_counts_w010": 2533419.709215914, + "b_counts_w010_error": -0.1995410446636243, + "b_counts_w025": 2661069.9858645233, + "b_counts_w025_error": -0.15920868018297954, + "b_counts_w0_l2": 2270372.3391970308, + "b_counts_w0_l2_error": -0.2826534568088916, + "b_counts_w010_l2": 2322720.486315336, + "b_counts_w010_l2_error": -0.2661135431879139, + "b_counts_w025_l2": 2406927.7391708735, + "b_counts_w025_l2_error": -0.23950743074342243, + "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": 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, + "b_counts_w0": 11498660275.708708, + "b_counts_w0_error": -0.3853620713764649, + "b_counts_w010": 13841488750.363064, + "b_counts_w010_error": -0.2601308525862361, + "b_counts_w025": 15658720826.43758, + "b_counts_w025_error": -0.16299433995908608, + "b_counts_w0_l2": 8557697646.855496, + "b_counts_w0_l2_error": -0.5425653572389263, + "b_counts_w010_l2": 9518315385.500238, + "b_counts_w010_l2_error": -0.49121745383778515, + "b_counts_w025_l2": 10958106856.379944, + "b_counts_w025_l2_error": -0.41425627522284497, + "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": 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, + "b_counts_w0": 36270022599.99283, + "b_counts_w0_error": -0.3020530070559734, + "b_counts_w010": 42651675852.066055, + "b_counts_w010_error": -0.17925033482116598, + "b_counts_w025": 47934480402.504524, + "b_counts_w025_error": -0.0775928974670939, + "b_counts_w0_l2": 24716643420.28718, + "b_counts_w0_l2_error": -0.5243756216776493, + "b_counts_w010_l2": 27334506413.468277, + "b_counts_w010_l2_error": -0.4739998713181622, + "b_counts_w025_l2": 31333916098.41538, + "b_counts_w025_l2_error": -0.39703890567595723, + "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": 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, + "b_counts_w0": 131188756348.65515, + "b_counts_w0_error": 0.00026403645506526096, + "b_counts_w010": 131140878507.16736, + "b_counts_w010_error": -0.00010101375439063892, + "b_counts_w025": 131154679651.08328, + "b_counts_w025_error": 4.214683665066413e-06, + "b_counts_w0_l2": 84614008536.35278, + "b_counts_w0_l2_error": -0.35485058266517205, + "b_counts_w010_l2": 92410772335.5201, + "b_counts_w010_l2_error": -0.29540324398993373, + "b_counts_w025_l2": 103287071501.5779, + "b_counts_w025_l2_error": -0.21247562726170818, + "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": 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, + "b_counts_w0": 271145451984.25845, + "b_counts_w0_error": 0.011550529910056208, + "b_counts_w010": 273091969289.9866, + "b_counts_w010_error": 0.018812317255848445, + "b_counts_w025": 268140541363.52774, + "b_counts_w025_error": 0.0003402407147612199, + "b_counts_w0_l2": 268158687850.78488, + "b_counts_w0_l2_error": 0.0004079390245305199, + "b_counts_w010_l2": 267914108263.555, + "b_counts_w010_l2_error": -0.0005045033906273055, + "b_counts_w025_l2": 268123946295.36957, + "b_counts_w025_l2_error": 0.00027833021666344036, + "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": 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, + "b_counts_w0": 204281314507.56677, + "b_counts_w0_error": -0.00010851837342862311, + "b_counts_w010": 204505723839.69812, + "b_counts_w010_error": 0.0009898932954826376, + "b_counts_w025": 204372008989.66754, + "b_counts_w025_error": 0.00033540201303302496, + "b_counts_w0_l2": 204077705841.66113, + "b_counts_w0_l2_error": -0.0011051174559984513, + "b_counts_w010_l2": 204249933484.17776, + "b_counts_w010_l2_error": -0.0002621184128988538, + "b_counts_w025_l2": 204366881266.20743, + "b_counts_w025_l2_error": 0.0003103034521574813, + "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": 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, + "b_counts_w0": 175839332962.2255, + "b_counts_w0_error": 0.0013740432245310534, + "b_counts_w010": 175695720764.05447, + "b_counts_w010_error": 0.0005561970400839642, + "b_counts_w025": 175614022758.37354, + "b_counts_w025_error": 9.094128135291217e-05, + "b_counts_w0_l2": 176029405345.5612, + "b_counts_w0_l2_error": 0.0024564719837841067, + "b_counts_w010_l2": 176016067484.49826, + "b_counts_w010_l2_error": 0.0023805152132734967, + "b_counts_w025_l2": 178517616835.0641, + "b_counts_w025_l2_error": 0.016626398345916706, + "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": 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, + "b_counts_w0": 126341647321.38672, + "b_counts_w0_error": -0.00048444872026641694, + "b_counts_w010": 126395912266.50566, + "b_counts_w010_error": -5.514723745645904e-05, + "b_counts_w025": 126522895668.24562, + "b_counts_w025_error": 0.0009494453690545911, + "b_counts_w0_l2": 126335990411.17874, + "b_counts_w0_l2_error": -0.000529201735957936, + "b_counts_w010_l2": 126325445368.68504, + "b_counts_w010_l2_error": -0.0006126258022481712, + "b_counts_w025_l2": 126392027765.55751, + "b_counts_w025_l2_error": -8.587834781439872e-05, + "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": 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, + "b_counts_w0": 356796513237.4034, + "b_counts_w0_error": 0.017380400809741212, + "b_counts_w010": 351404451922.26575, + "b_counts_w010_error": 0.0020053136144935124, + "b_counts_w025": 350780421609.9706, + "b_counts_w025_error": 0.0002259346528559209, + "b_counts_w0_l2": 351284701962.5785, + "b_counts_w0_l2_error": 0.0016638549469798326, + "b_counts_w010_l2": 350914008404.5611, + "b_counts_w010_l2_error": 0.0006068480911353939, + "b_counts_w025_l2": 351120009936.0127, + "b_counts_w025_l2_error": 0.001194247106708727, + "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": 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, + "b_counts_w0": 363530037224.8583, + "b_counts_w0_error": 0.03221050548112439, + "b_counts_w010": 358752390694.2621, + "b_counts_w010_error": 0.018644812318590817, + "b_counts_w025": 356864085707.6025, + "b_counts_w025_error": 0.013283141905708746, + "b_counts_w0_l2": 419236848850.5924, + "b_counts_w0_l2_error": 0.19038493482373736, + "b_counts_w010_l2": 410640360963.98615, + "b_counts_w010_l2_error": 0.16597598866199925, + "b_counts_w025_l2": 393948004906.6924, + "b_counts_w025_l2_error": 0.11857956052884715, + "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": 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, + "b_counts_w0": 4215127.840672646, + "b_counts_w0_error": -0.3823484134401148, + "b_counts_w010": 5084123.063951487, + "b_counts_w010_error": -0.2550127077013569, + "b_counts_w025": 5685137.01189173, + "b_counts_w025_error": -0.16694486432352162, + "b_counts_w0_l2": 3246433.8537696972, + "b_counts_w0_l2_error": -0.5242931896170927, + "b_counts_w010_l2": 3611471.712441172, + "b_counts_w010_l2_error": -0.47080342107738454, + "b_counts_w025_l2": 4161319.6724020285, + "b_counts_w025_l2_error": -0.3902330380015669, + "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": 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, + "b_counts_w0": 4951543.288210648, + "b_counts_w0_error": -0.30467157304049597, + "b_counts_w010": 5892147.062559223, + "b_counts_w010_error": -0.1725857757968017, + "b_counts_w025": 6690516.659988287, + "b_counts_w025_error": -0.06047344152025899, + "b_counts_w0_l2": 3429424.07949546, + "b_counts_w0_l2_error": -0.5184176100711535, + "b_counts_w010_l2": 3796352.490779061, + "b_counts_w010_l2_error": -0.46689109799722284, + "b_counts_w025_l2": 4360341.918469828, + "b_counts_w025_l2_error": -0.3876919758746882, + "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": 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, + "b_counts_w0": 8855419.398160169, + "b_counts_w0_error": -0.026797517002357576, + "b_counts_w010": 8901468.978770863, + "b_counts_w010_error": -0.02173671026059683, + "b_counts_w025": 8956430.71693605, + "b_counts_w025_error": -0.015696465564412364, + "b_counts_w0_l2": 5728129.715344594, + "b_counts_w0_l2_error": -0.3704837895013599, + "b_counts_w010_l2": 6267460.900881824, + "b_counts_w010_l2_error": -0.31121178607349914, + "b_counts_w025_l2": 7020551.042810599, + "b_counts_w025_l2_error": -0.22844786907614012, + "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": 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, + "b_counts_w0": 9384514.95750926, + "b_counts_w0_error": -0.0012193342718693932, + "b_counts_w010": 9527180.623042082, + "b_counts_w010_error": 0.013964370910826295, + "b_counts_w025": 9377442.001971358, + "b_counts_w025_error": -0.001972098935018948, + "b_counts_w0_l2": 9320184.74367651, + "b_counts_w0_l2_error": -0.008065908025464964, + "b_counts_w010_l2": 9340687.89801562, + "b_counts_w010_l2_error": -0.005883786282033008, + "b_counts_w025_l2": 9386892.41002419, + "b_counts_w025_l2_error": -0.0009663053602687524, + "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": 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, + "b_counts_w0": 4213454.578035157, + "b_counts_w0_error": 0.014310514040932037, + "b_counts_w010": 4226662.904284837, + "b_counts_w010_error": 0.017490171953413992, + "b_counts_w025": 4218914.505120811, + "b_counts_w025_error": 0.015624889536456694, + "b_counts_w0_l2": 4183440.899829752, + "b_counts_w0_l2_error": 0.0070852814426064425, + "b_counts_w010_l2": 4189884.4925679415, + "b_counts_w010_l2_error": 0.00863645607650779, + "b_counts_w025_l2": 4193785.748782805, + "b_counts_w025_l2_error": 0.009575610664130993, + "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": 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, + "b_counts_w0": 2539535.4378224714, + "b_counts_w0_error": -0.012441501371295098, + "b_counts_w010": 2544944.9654261568, + "b_counts_w010_error": -0.010337878449156717, + "b_counts_w025": 2549137.7622992937, + "b_counts_w025_error": -0.008707410087336734, + "b_counts_w0_l2": 2533678.378748229, + "b_counts_w0_l2_error": -0.014719157504614628, + "b_counts_w010_l2": 2535022.739733617, + "b_counts_w010_l2_error": -0.014196370897043911, + "b_counts_w025_l2": 2570550.084167783, + "b_counts_w025_l2_error": -0.0003807216223269, + "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": 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, + "b_counts_w0": 1459996.5983638142, + "b_counts_w0_error": 0.05440075792272322, + "b_counts_w010": 1459508.7357904224, + "b_counts_w010_error": 0.05404842650789466, + "b_counts_w025": 1459396.508315154, + "b_counts_w025_error": 0.0539673765005758, + "b_counts_w0_l2": 1456006.690842214, + "b_counts_w0_l2_error": 0.05151927071958082, + "b_counts_w010_l2": 1455405.843624887, + "b_counts_w010_l2_error": 0.05108534247477853, + "b_counts_w025_l2": 1455539.2521549203, + "b_counts_w025_l2_error": 0.05118168931239308, + "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": 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, + "b_counts_w0": 2713758.494315489, + "b_counts_w0_error": 0.05530926025787829, + "b_counts_w010": 2662719.6005432275, + "b_counts_w010_error": 0.03546157766415807, + "b_counts_w025": 2643261.1875080992, + "b_counts_w025_error": 0.027894712923280284, + "b_counts_w0_l2": 2657168.8146397094, + "b_counts_w0_l2_error": 0.033303023106719794, + "b_counts_w010_l2": 2653857.6591849993, + "b_counts_w010_l2_error": 0.032015401890304086, + "b_counts_w025_l2": 2653337.699477029, + "b_counts_w025_l2_error": 0.03181320324369223, + "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": 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, + "b_counts_w0": 1415984.25296505, + "b_counts_w0_error": 0.1930511914026888, + "b_counts_w010": 1408058.9232603572, + "b_counts_w010_error": 0.18637362840956684, + "b_counts_w025": 1394853.3026016653, + "b_counts_w025_error": 0.17524710533766563, + "b_counts_w0_l2": 1558263.081464506, + "b_counts_w0_l2_error": 0.3129295908250053, + "b_counts_w010_l2": 1528277.2946254585, + "b_counts_w010_l2_error": 0.28766477687064024, + "b_counts_w025_l2": 1466866.7676758403, + "b_counts_w025_l2_error": 0.23592274500235408, + "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": 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, + "b_counts_w0": 114707368024.82025, + "b_counts_w0_error": -0.0011606535684899012, + "b_counts_w010": 114786674544.01065, + "b_counts_w010_error": -0.0004700748100377328, + "b_counts_w025": 114712338741.74426, + "b_counts_w025_error": -0.0011173699701546912, + "b_counts_w0_l2": 114801586272.25407, + "b_counts_w0_l2_error": -0.0003402276942918416, + "b_counts_w010_l2": 114855103732.74512, + "b_counts_w010_l2_error": 0.00012578722855061296, + "b_counts_w025_l2": 114882657580.5738, + "b_counts_w025_l2_error": 0.0003657183491995187, + "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": 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, + "b_counts_w0": 1562184368437.231, + "b_counts_w0_error": -0.0013071934740834191, + "b_counts_w010": 1562693537342.3547, + "b_counts_w010_error": -0.0009816855934979226, + "b_counts_w025": 1562329518235.6638, + "b_counts_w025_error": -0.001214400291350065, + "b_counts_w0_l2": 1548210103593.5955, + "b_counts_w0_l2_error": -0.010240836684063817, + "b_counts_w010_l2": 1550468414371.2092, + "b_counts_w010_l2_error": -0.008797115460070887, + "b_counts_w025_l2": 1553164923880.7036, + "b_counts_w025_l2_error": -0.0070732570575221775, + "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.5756802954013409, + "black_non_hispanic": 0.18825388229277845, + "hispanic": 0.1443853499362584, + "other_or_multiple": 0.09168047236962222 + }, + "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.5990341566934774, + "black_non_hispanic": 0.19215923207947666, + "hispanic": 0.12359991141666021, + "other_or_multiple": 0.08520669981038569 + }, + "b_counts_w0": { + "white_non_hispanic": 0.5711240797492504, + "black_non_hispanic": 0.17604698003376026, + "hispanic": 0.1561414250785691, + "other_or_multiple": 0.09668751513842015 + }, + "b_counts_w010": { + "white_non_hispanic": 0.5720607711186478, + "black_non_hispanic": 0.1800062851948109, + "hispanic": 0.15310052254870712, + "other_or_multiple": 0.09483242113783415 + }, + "b_counts_w025": { + "white_non_hispanic": 0.5693246783458327, + "black_non_hispanic": 0.18457923000260537, + "hispanic": 0.15289788811164648, + "other_or_multiple": 0.09319820353991544 + }, + "b_counts_w0_l2": { + "white_non_hispanic": 0.6078697725123159, + "black_non_hispanic": 0.1838038444215145, + "hispanic": 0.12163196457965712, + "other_or_multiple": 0.0866944184865125 + }, + "b_counts_w010_l2": { + "white_non_hispanic": 0.6063627487849372, + "black_non_hispanic": 0.18423474086708239, + "hispanic": 0.12270518921293327, + "other_or_multiple": 0.08669732113504709 + }, + "b_counts_w025_l2": { + "white_non_hispanic": 0.6045998196163177, + "black_non_hispanic": 0.18571403163302533, + "hispanic": 0.1237077353217687, + "other_or_multiple": 0.08597841342888815 + } + }, + "people": { + "release": { + "borrowers": { + "white_non_hispanic": 0.6024446842882388, + "black_non_hispanic": 0.16604397388821024, + "hispanic": 0.13503772953249454, + "other_or_multiple": 0.09647361229105646 + }, + "balance": { + "white_non_hispanic": 0.5891875758483623, + "black_non_hispanic": 0.17815405372334245, + "hispanic": 0.12436741146546251, + "other_or_multiple": 0.10829095896283272 + }, + "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.07690720274916459, + "black_non_hispanic": 0.12865767250540616, + "hispanic": 0.06372626194559652, + "other_or_multiple": 0.08076847627552444 + } + }, + "a_no_fsa": { + "borrowers": { + "white_non_hispanic": 0.5928697150190028, + "black_non_hispanic": 0.16188633976571526, + "hispanic": 0.1390614019168493, + "other_or_multiple": 0.1061825432984327 + }, + "balance": { + "white_non_hispanic": 0.5940032003684192, + "black_non_hispanic": 0.20788645902194117, + "hispanic": 0.09866219129880544, + "other_or_multiple": 0.0994481493108341 + }, + "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.07871411164924272, + "black_non_hispanic": 0.12364481318592514, + "hispanic": 0.06552371974756858, + "other_or_multiple": 0.08510279651662007 + } + }, + "b_with_fsa": { + "borrowers": { + "white_non_hispanic": 0.5722250524603602, + "black_non_hispanic": 0.18370445754116826, + "hispanic": 0.1468628772780964, + "other_or_multiple": 0.09720761272037508 + }, + "balance": { + "white_non_hispanic": 0.5542220247836326, + "black_non_hispanic": 0.20214557869122174, + "hispanic": 0.14222924512798896, + "other_or_multiple": 0.10140315139715672 + }, + "adults": { + "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.15734619508370437, + "black_non_hispanic": 0.2681779534753427, + "hispanic": 0.147721461558332, + "other_or_multiple": 0.15394266989878125 + } + }, + "a_no_fsa_l2": { + "borrowers": { + "white_non_hispanic": 0.6140017335731585, + "black_non_hispanic": 0.16420051098668248, + "hispanic": 0.12562002014064638, + "other_or_multiple": 0.09617773529951264 + }, + "balance": { + "white_non_hispanic": 0.6044350970274939, + "black_non_hispanic": 0.19698401198319707, + "hispanic": 0.09904508600912193, + "other_or_multiple": 0.09953580498018708 + }, + "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.0770780849568202, + "black_non_hispanic": 0.12846775415704056, + "hispanic": 0.06686913109817934, + "other_or_multiple": 0.08152779519871957 + } + }, + "b_with_fsa_l2": { + "borrowers": { + "white_non_hispanic": 0.5944690600561665, + "black_non_hispanic": 0.18419234434779, + "hispanic": 0.12742621446706232, + "other_or_multiple": 0.09391238112898115 + }, + "balance": { + "white_non_hispanic": 0.5746507517286273, + "black_non_hispanic": 0.20948387976863445, + "hispanic": 0.11270971732797055, + "other_or_multiple": 0.10315565117476758 + }, + "adults": { + "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.1488846622969502, + "black_non_hispanic": 0.2647752501322496, + "hispanic": 0.14561020809771355, + "other_or_multiple": 0.15490117679651583 + } + }, + "b_counts_w0": { + "borrowers": { + "white_non_hispanic": 0.5688499548757691, + "black_non_hispanic": 0.17009841945589896, + "hispanic": 0.15766098217215266, + "other_or_multiple": 0.10339064349617941 + }, + "balance": { + "white_non_hispanic": 0.5688032176710254, + "black_non_hispanic": 0.19826813440805374, + "hispanic": 0.14101170695756332, + "other_or_multiple": 0.09191694096335755 + }, + "adults": { + "white_non_hispanic": 0.6169921601432596, + "black_non_hispanic": 0.11209150293526003, + "hispanic": 0.1687643360850068, + "other_or_multiple": 0.10215200083647354 + }, + "borrower_share_of_adults_by_race": { + "white_non_hispanic": 0.13913714715441278, + "black_non_hispanic": 0.2290090251488392, + "hispanic": 0.1409835897454173, + "other_or_multiple": 0.15274231648027195 + } + }, + "b_counts_w010": { + "borrowers": { + "white_non_hispanic": 0.567768901228617, + "black_non_hispanic": 0.17509950583612752, + "hispanic": 0.15648995755803632, + "other_or_multiple": 0.10064163537721896 + }, + "balance": { + "white_non_hispanic": 0.566594527301231, + "black_non_hispanic": 0.19890981195855023, + "hispanic": 0.14279209979475194, + "other_or_multiple": 0.09170356094546679 + }, + "adults": { + "white_non_hispanic": 0.6171016946036094, + "black_non_hispanic": 0.11336300030151605, + "hispanic": 0.16706286263935258, + "other_or_multiple": 0.1024724424555219 + }, + "borrower_share_of_adults_by_race": { + "white_non_hispanic": 0.14574187697931396, + "black_non_hispanic": 0.24467133146242068, + "hispanic": 0.14838023354401667, + "other_or_multiple": 0.15557510176910122 + } + }, + "b_counts_w025": { + "borrowers": { + "white_non_hispanic": 0.5657284533996161, + "black_non_hispanic": 0.18057060485048806, + "hispanic": 0.1553934038307981, + "other_or_multiple": 0.09830753791909794 + }, + "balance": { + "white_non_hispanic": 0.5606555661246525, + "black_non_hispanic": 0.19746394804741207, + "hispanic": 0.15161766926925935, + "other_or_multiple": 0.09026281655867605 + }, + "adults": { + "white_non_hispanic": 0.6138097388162962, + "black_non_hispanic": 0.11398328131564651, + "hispanic": 0.16752589603592113, + "other_or_multiple": 0.10468108383213616 + }, + "borrower_share_of_adults_by_race": { + "white_non_hispanic": 0.15044866760203474, + "black_non_hispanic": 0.25859492417884244, + "hispanic": 0.15141354539671834, + "other_or_multiple": 0.15329666518714719 + } + }, + "b_counts_w0_l2": { + "borrowers": { + "white_non_hispanic": 0.6036560937670964, + "black_non_hispanic": 0.17255980183699732, + "hispanic": 0.12539215245644916, + "other_or_multiple": 0.0983919519394572 + }, + "balance": { + "white_non_hispanic": 0.5785155592915957, + "black_non_hispanic": 0.19790762323308317, + "hispanic": 0.11726084702679662, + "other_or_multiple": 0.10631597044852463 + }, + "adults": { + "white_non_hispanic": 0.649770659515963, + "black_non_hispanic": 0.10851770579579069, + "hispanic": 0.1455399797025354, + "other_or_multiple": 0.09617165498571077 + }, + "borrower_share_of_adults_by_race": { + "white_non_hispanic": 0.12029173377097982, + "black_non_hispanic": 0.20589477330265785, + "hispanic": 0.11155635994240216, + "other_or_multiple": 0.1324703778660983 + } + }, + "b_counts_w010_l2": { + "borrowers": { + "white_non_hispanic": 0.6022017267124797, + "black_non_hispanic": 0.17361368615666034, + "hispanic": 0.1263438059094057, + "other_or_multiple": 0.09784078122145431 + }, + "balance": { + "white_non_hispanic": 0.5786000486655173, + "black_non_hispanic": 0.1988457876105907, + "hispanic": 0.11715017959210322, + "other_or_multiple": 0.10540398413178899 + }, + "adults": { + "white_non_hispanic": 0.649856847136479, + "black_non_hispanic": 0.10890061261949682, + "hispanic": 0.14508668805450792, + "other_or_multiple": 0.09615585218951636 + }, + "borrower_share_of_adults_by_race": { + "white_non_hispanic": 0.1244471828774137, + "black_non_hispanic": 0.21409888620712922, + "hispanic": 0.1169464806654115, + "other_or_multiple": 0.13664852871937005 + } + }, + "b_counts_w025_l2": { + "borrowers": { + "white_non_hispanic": 0.6004211018546801, + "black_non_hispanic": 0.17592508590936534, + "hispanic": 0.12719698996613676, + "other_or_multiple": 0.09645682226981775 + }, + "balance": { + "white_non_hispanic": 0.5792100609516005, + "black_non_hispanic": 0.20136828531938694, + "hispanic": 0.11557096995395373, + "other_or_multiple": 0.10385068377505874 + }, + "adults": { + "white_non_hispanic": 0.6497355383464953, + "black_non_hispanic": 0.10967589245164194, + "hispanic": 0.14427398251274168, + "other_or_multiple": 0.09631458668912114 + }, + "borrower_share_of_adults_by_race": { + "white_non_hispanic": 0.13075756189775464, + "black_non_hispanic": 0.22696771411053196, + "hispanic": 0.12474877796139576, + "other_or_multiple": 0.14170604313755772 + } + } + } + }, + "support": { + "borrower_records": 10008, + "people": 166321, + "borrower_records_by_age_band": { + "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, + "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.09068330207742185 + }, + "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": 27237098.830047637, + "mean_balance": 36930.783211342365, + "median_balance": 21000.0, + "balance_bands": { + "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.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.47206971539270537, + "ibr_new_borrower_share": 0.5952213780001776 + } + }, + "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.10691085971286082 + }, + "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": 21177503.938145176, + "mean_balance": 40534.57912047568, + "median_balance": 22224.0, + "balance_bands": { + "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.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.4995084468534534, + "ibr_new_borrower_share": 0.6132625665271612 + } + }, + "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.11563076658292412 + }, + "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": 21589996.24192015, + "mean_balance": 41039.65083248869, + "median_balance": 24000.0, + "balance_bands": { + "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.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.49676322471095574, + "ibr_new_borrower_share": 0.6042552792434042 + } + }, + "b_with_fsa": { + "households": { + "household_weight": 122537091.8856833, + "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": 1677332270434.8613, + "parent_plus_share_of_total": 0.06846980810645852 + }, + "household_balance_bands": { + "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": 3847176.057577575, + "share_with_federal_education_debt": 0.5767111055129247, + "mean_among_borrowers": 15664.324914787016, + "median_among_borrowers": 6000.0 + }, + "25_to_34": { + "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": 32991356.470968604, + "share_with_federal_education_debt": 0.4513258179323375, + "mean_among_borrowers": 45142.324926269954, + "median_among_borrowers": 19073.0 + }, + "50_to_61": { + "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": 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": 78624715.69281693, + "share_with_federal_education_debt": 0.3023032990029397, + "mean_among_borrowers": 39933.94147052817, + "median_among_borrowers": 21000.0 + }, + "black_non_hispanic": { + "household_weight": 15990487.204444192, + "share_with_federal_education_debt": 0.48607451913383065, + "mean_among_borrowers": 43263.47914032129, + "median_among_borrowers": 24800.0 + }, + "hispanic": { + "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": 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": 24519312.930006135, + "share_with_federal_education_debt": 0.37160119581737394, + "mean_among_borrowers": 41520.510029656325, + "median_among_borrowers": 19300.0 + }, + "2": { + "household_weight": 24488609.03927902, + "share_with_federal_education_debt": 0.3644520881120006, + "mean_among_borrowers": 36447.034230393336, + "median_among_borrowers": 17000.0 + }, + "3": { + "household_weight": 24515013.423280142, + "share_with_federal_education_debt": 0.2795901654964384, + "mean_among_borrowers": 32106.89164645145, + "median_among_borrowers": 16000.0 + }, + "4": { + "household_weight": 24505919.600144904, + "share_with_federal_education_debt": 0.4073163476136399, + "mean_among_borrowers": 42277.80653946196, + "median_among_borrowers": 25000.0 + }, + "5": { + "household_weight": 24508236.89297309, + "share_with_federal_education_debt": 0.2617709042738302, + "mean_among_borrowers": 51697.3491788981, + "median_among_borrowers": 20000.0 + } + }, + "borrowers": { + "borrower_weight": 44260352.59952934, + "mean_balance": 37896.947762966935, + "median_balance": 19000.0, + "balance_bands": { + "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.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.508285507012338, + "ibr_new_borrower_share": 0.6105831277596138 + } + }, + "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.10887015989497843 + }, + "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": 21420219.92046372, + "mean_balance": 39950.592411993486, + "median_balance": 22000.0, + "balance_bands": { + "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.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.49174957523668006, + "ibr_new_borrower_share": 0.6080491171993825 + } + }, + "b_with_fsa_l2": { + "households": { + "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.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": 4020461.628401902, + "share_with_federal_education_debt": 0.480939342799211, + "mean_among_borrowers": 16453.978132854223, + "median_among_borrowers": 7940.0 + }, + "25_to_34": { + "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": 33023047.529334612, + "share_with_federal_education_debt": 0.45133617587243646, + "mean_among_borrowers": 44694.318601981875, + "median_among_borrowers": 20000.0 + }, + "50_to_61": { + "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": 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": 82602036.26210862, + "share_with_federal_education_debt": 0.28724019854653243, + "mean_among_borrowers": 41559.885843689495, + "median_among_borrowers": 22000.0 + }, + "black_non_hispanic": { + "household_weight": 15572373.555481266, + "share_with_federal_education_debt": 0.4887545648518058, + "mean_among_borrowers": 47047.79247612714, + "median_among_borrowers": 25500.0 + }, + "hispanic": { + "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": 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": 24507462.887031876, + "share_with_federal_education_debt": 0.3292505672134323, + "mean_among_borrowers": 42300.941960541815, + "median_among_borrowers": 19716.0 + }, + "2": { + "household_weight": 24506590.787594683, + "share_with_federal_education_debt": 0.33916996611938816, + "mean_among_borrowers": 40663.62325966678, + "median_among_borrowers": 18000.0 + }, + "3": { + "household_weight": 24510366.85735613, + "share_with_federal_education_debt": 0.2702289062515029, + "mean_among_borrowers": 32955.67888464545, + "median_among_borrowers": 19073.0 + }, + "4": { + "household_weight": 24509151.04761634, + "share_with_federal_education_debt": 0.4127223962067935, + "mean_among_borrowers": 42712.965436412225, + "median_among_borrowers": 25500.0 + }, + "5": { + "household_weight": 24503520.306084275, + "share_with_federal_education_debt": 0.2647886248297161, + "mean_among_borrowers": 52634.16824386155, + "median_among_borrowers": 20000.0 + } + }, + "borrowers": { + "borrower_weight": 42673022.28692794, + "mean_balance": 39162.14434190018, + "median_balance": 20000.0, + "balance_bands": { + "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.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.510849288503444, + "ibr_new_borrower_share": 0.6107068389047522 + } + }, + "b_counts_w0": { + "households": { + "household_weight": 122537091.8856833, + "share_with_federal_education_debt": 0.301984185857176, + "mean_among_borrowers": 45316.175984904825, + "median_among_borrowers": 25000.0, + "total_household_weight": 122537091.8856833, + "federal_education_debt_total": 1676891736462.055, + "parent_plus_share_of_total": 0.06840475477971665 + }, + "household_balance_bands": { + "under_5k": 0.09390280523906608, + "5k_to_10k": 0.1199698360676753, + "10k_to_20k": 0.2238378989244155, + "20k_to_40k": 0.22259908246600774, + "40k_to_60k": 0.10600279278454744, + "60k_to_80k": 0.07613205378879068, + "80k_to_100k": 0.03948289575278319, + "100k_to_200k": 0.07960853940254098, + "200k_plus": 0.03846409557417298 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 3704320.1499234475, + "share_with_federal_education_debt": 0.43801774892659007, + "mean_among_borrowers": 24326.215012053635, + "median_among_borrowers": 18660.0 + }, + "25_to_34": { + "household_weight": 20489203.86563397, + "share_with_federal_education_debt": 0.5339133401032814, + "mean_among_borrowers": 37215.94070765625, + "median_among_borrowers": 22000.0 + }, + "35_to_49": { + "household_weight": 33082455.43256008, + "share_with_federal_education_debt": 0.43423925893149384, + "mean_among_borrowers": 47973.90245410632, + "median_among_borrowers": 21000.0 + }, + "50_to_61": { + "household_weight": 24798414.483534943, + "share_with_federal_education_debt": 0.28523776922483124, + "mean_among_borrowers": 50393.601928322845, + "median_among_borrowers": 29000.0 + }, + "62_and_older": { + "household_weight": 40462697.95403086, + "share_with_federal_education_debt": 0.07421900858464567, + "mean_among_borrowers": 61490.997711474505, + "median_among_borrowers": 40000.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 78847242.34645367, + "share_with_federal_education_debt": 0.2680376073419001, + "mean_among_borrowers": 46609.59654349027, + "median_among_borrowers": 25347.0 + }, + "black_non_hispanic": { + "household_weight": 15505649.535643116, + "share_with_federal_education_debt": 0.4201364733766787, + "mean_among_borrowers": 50239.15677811181, + "median_among_borrowers": 29405.0 + }, + "hispanic": { + "household_weight": 17870803.45862135, + "share_with_federal_education_debt": 0.32331498230927985, + "mean_among_borrowers": 37245.2838884081, + "median_among_borrowers": 18000.0 + }, + "other_or_multiple": { + "household_weight": 10313396.544965167, + "share_with_federal_education_debt": 0.3469129023942829, + "mean_among_borrowers": 41746.1293913747, + "median_among_borrowers": 16000.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 24507446.190851234, + "share_with_federal_education_debt": 0.31112734603188075, + "mean_among_borrowers": 48375.58726577193, + "median_among_borrowers": 23000.0 + }, + "2": { + "household_weight": 24515874.340836473, + "share_with_federal_education_debt": 0.32201582573779075, + "mean_among_borrowers": 39850.25138870682, + "median_among_borrowers": 20500.0 + }, + "3": { + "household_weight": 24505578.900384218, + "share_with_federal_education_debt": 0.25715355911231924, + "mean_among_borrowers": 34058.11579990259, + "median_among_borrowers": 19073.0 + }, + "4": { + "household_weight": 24513917.52620609, + "share_with_federal_education_debt": 0.3848026226341192, + "mean_among_borrowers": 49321.800716925434, + "median_among_borrowers": 30000.0 + }, + "5": { + "household_weight": 24494274.927405283, + "share_with_federal_education_debt": 0.23475326985822934, + "mean_among_borrowers": 54530.37472472908, + "median_among_borrowers": 22000.0 + } + }, + "borrowers": { + "borrower_weight": 39749334.84605471, + "mean_balance": 42186.66156192281, + "median_balance": 23000.0, + "balance_bands": { + "under_5k": 0.10604272642542135, + "5k_to_10k": 0.12456921121793607, + "10k_to_20k": 0.222781574395052, + "20k_to_40k": 0.23609237723988505, + "40k_to_60k": 0.10600063106347447, + "60k_to_80k": 0.06388875304851885, + "80k_to_100k": 0.03673008879313927, + "100k_to_200k": 0.06827179636654569, + "200k_plus": 0.035622841450027226 + }, + "age_bands": { + "24_and_younger": 0.11638880039197423, + "25_to_34": 0.3312043602967409, + "35_to_49": 0.36018909799672316, + "50_to_61": 0.13161021222137184, + "62_and_older": 0.06060752909318985 + }, + "graduate_share_of_own_original_principal": 0.5149956353386688, + "ibr_new_borrower_share": 0.5997239514974807 + } + }, + "b_counts_w010": { + "households": { + "household_weight": 122537091.8856833, + "share_with_federal_education_debt": 0.3170171574080812, + "mean_among_borrowers": 43182.42914601523, + "median_among_borrowers": 22000.0, + "total_household_weight": 122537091.8856833, + "federal_education_debt_total": 1677480211886.3687, + "parent_plus_share_of_total": 0.06842803493635864 + }, + "household_balance_bands": { + "under_5k": 0.10934079044846455, + "5k_to_10k": 0.13686916261474227, + "10k_to_20k": 0.2145784106826107, + "20k_to_40k": 0.21621560211303542, + "40k_to_60k": 0.1015779952404072, + "60k_to_80k": 0.07312835332281399, + "80k_to_100k": 0.037626519569783974, + "100k_to_200k": 0.07421969850726882, + "200k_plus": 0.036443467500873065 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 3780841.59519008, + "share_with_federal_education_debt": 0.48216235909176797, + "mean_among_borrowers": 21309.56951010073, + "median_among_borrowers": 16000.0 + }, + "25_to_34": { + "household_weight": 20529066.601891346, + "share_with_federal_education_debt": 0.5555621908566076, + "mean_among_borrowers": 35236.13528803535, + "median_among_borrowers": 20100.0 + }, + "35_to_49": { + "household_weight": 33106948.82450337, + "share_with_federal_education_debt": 0.4510086345704656, + "mean_among_borrowers": 46359.370872334955, + "median_among_borrowers": 20000.0 + }, + "50_to_61": { + "household_weight": 24857132.82380213, + "share_with_federal_education_debt": 0.30197878351591195, + "mean_among_borrowers": 47780.90517226846, + "median_among_borrowers": 28000.0 + }, + "62_and_older": { + "household_weight": 40263102.04029636, + "share_with_federal_education_debt": 0.07898947545157652, + "mean_among_borrowers": 58447.48747662129, + "median_among_borrowers": 37100.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 78885053.8693442, + "share_with_federal_education_debt": 0.2817070899929602, + "mean_among_borrowers": 43960.44337444862, + "median_among_borrowers": 24000.0 + }, + "black_non_hispanic": { + "household_weight": 15639657.142102957, + "share_with_federal_education_debt": 0.44710628831604143, + "mean_among_borrowers": 46868.51567084205, + "median_among_borrowers": 28000.0 + }, + "hispanic": { + "household_weight": 17665112.98018436, + "share_with_federal_education_debt": 0.3366747841057882, + "mean_among_borrowers": 36647.758674142824, + "median_among_borrowers": 17000.0 + }, + "other_or_multiple": { + "household_weight": 10347267.894051766, + "share_with_federal_education_debt": 0.35602580901089725, + "mean_among_borrowers": 42042.22101387039, + "median_among_borrowers": 16000.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 24505354.953052238, + "share_with_federal_education_debt": 0.32981425796044234, + "mean_among_borrowers": 44897.0471847927, + "median_among_borrowers": 20000.0 + }, + "2": { + "household_weight": 24499190.382967897, + "share_with_federal_education_debt": 0.338290228461376, + "mean_among_borrowers": 38918.05685757941, + "median_among_borrowers": 19000.0 + }, + "3": { + "household_weight": 24514399.904652677, + "share_with_federal_education_debt": 0.27507947631815427, + "mean_among_borrowers": 32255.716312289907, + "median_among_borrowers": 19000.0 + }, + "4": { + "household_weight": 24498991.729523115, + "share_with_federal_education_debt": 0.3966096210612507, + "mean_among_borrowers": 47573.65314344019, + "median_among_borrowers": 27000.0 + }, + "5": { + "household_weight": 24519154.91548737, + "share_with_federal_education_debt": 0.24537404659596534, + "mean_among_borrowers": 51908.68093208027, + "median_among_borrowers": 22000.0 + } + }, + "borrowers": { + "borrower_weight": 41706814.85762861, + "mean_balance": 40220.770097468616, + "median_balance": 20500.0, + "balance_bands": { + "under_5k": 0.12190149454727628, + "5k_to_10k": 0.14127540265716265, + "10k_to_20k": 0.21342960399054964, + "20k_to_40k": 0.22843222757633933, + "40k_to_60k": 0.10134226070039327, + "60k_to_80k": 0.06101988306020591, + "80k_to_100k": 0.03499449048728936, + "100k_to_200k": 0.06384375334421366, + "200k_plus": 0.03376088363656975 + }, + "age_bands": { + "24_and_younger": 0.12117257950252676, + "25_to_34": 0.3302926762196454, + "35_to_49": 0.3575656517314631, + "50_to_61": 0.13022554936609398, + "62_and_older": 0.06074354318027057 + }, + "graduate_share_of_own_original_principal": 0.507323076628454, + "ibr_new_borrower_share": 0.6064894228837396 + } + }, + "b_counts_w025": { + "households": { + "household_weight": 122537091.8856833, + "share_with_federal_education_debt": 0.32670237970830907, + "mean_among_borrowers": 41891.31902199835, + "median_among_borrowers": 20000.0, + "total_household_weight": 122537091.8856833, + "federal_education_debt_total": 1677041856977.4133, + "parent_plus_share_of_total": 0.06840159550250818 + }, + "household_balance_bands": { + "under_5k": 0.1203046891269699, + "5k_to_10k": 0.1513978259268919, + "10k_to_20k": 0.21034504549827956, + "20k_to_40k": 0.20556863144966525, + "40k_to_60k": 0.09887957368620108, + "60k_to_80k": 0.07005080901791354, + "80k_to_100k": 0.0366782782106932, + "100k_to_200k": 0.07171912548755185, + "200k_plus": 0.035056021595833604 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 3795609.0118272956, + "share_with_federal_education_debt": 0.5273258017941556, + "mean_among_borrowers": 19089.921513376623, + "median_among_borrowers": 7940.0 + }, + "25_to_34": { + "household_weight": 20582549.953155424, + "share_with_federal_education_debt": 0.5679483170215607, + "mean_among_borrowers": 33756.88204045559, + "median_among_borrowers": 19000.0 + }, + "35_to_49": { + "household_weight": 32841244.961371876, + "share_with_federal_education_debt": 0.4561140982188343, + "mean_among_borrowers": 45650.89578756062, + "median_among_borrowers": 20000.0 + }, + "50_to_61": { + "household_weight": 24973329.36761558, + "share_with_federal_education_debt": 0.31921807161443017, + "mean_among_borrowers": 44949.063500727025, + "median_among_borrowers": 25000.0 + }, + "62_and_older": { + "household_weight": 40344358.59171311, + "share_with_federal_education_debt": 0.08403949389982056, + "mean_among_borrowers": 59598.183618202944, + "median_among_borrowers": 34000.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 78462488.38890919, + "share_with_federal_education_debt": 0.2904810456026453, + "mean_among_borrowers": 42490.52701073278, + "median_among_borrowers": 22224.0 + }, + "black_non_hispanic": { + "household_weight": 15809954.484579386, + "share_with_federal_education_debt": 0.4673821019708555, + "mean_among_borrowers": 43829.35270367567, + "median_among_borrowers": 25000.0 + }, + "hispanic": { + "household_weight": 17717497.056672733, + "share_with_federal_education_debt": 0.34547687665523, + "mean_among_borrowers": 38199.08231527154, + "median_among_borrowers": 16000.0 + }, + "other_or_multiple": { + "household_weight": 10547151.955521982, + "share_with_federal_education_debt": 0.35374654363309166, + "mean_among_borrowers": 40449.987964503984, + "median_among_borrowers": 16000.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 24503501.720050868, + "share_with_federal_education_debt": 0.352397045491353, + "mean_among_borrowers": 42855.7609951821, + "median_among_borrowers": 19716.0 + }, + "2": { + "household_weight": 24500232.026039176, + "share_with_federal_education_debt": 0.3481276741834968, + "mean_among_borrowers": 37574.56377472688, + "median_among_borrowers": 18000.0 + }, + "3": { + "household_weight": 24512518.08556454, + "share_with_federal_education_debt": 0.27884790737085186, + "mean_among_borrowers": 33234.79272473349, + "median_among_borrowers": 17000.0 + }, + "4": { + "household_weight": 24516224.121223487, + "share_with_federal_education_debt": 0.4052650758321035, + "mean_among_borrowers": 45546.67900995344, + "median_among_borrowers": 26000.0 + }, + "5": { + "household_weight": 24504615.932805218, + "share_with_federal_education_debt": 0.24885741264571581, + "mean_among_borrowers": 50310.61101381617, + "median_among_borrowers": 20000.0 + } + }, + "borrowers": { + "borrower_weight": 42975089.656632446, + "mean_balance": 39023.580180445104, + "median_balance": 20000.0, + "balance_bands": { + "under_5k": 0.13228912510283336, + "5k_to_10k": 0.15568359981200686, + "10k_to_20k": 0.2084098203982172, + "20k_to_40k": 0.21820645580722176, + "40k_to_60k": 0.09817116238336228, + "60k_to_80k": 0.05931663628084792, + "80k_to_100k": 0.033959126553908696, + "100k_to_200k": 0.061506821943305874, + "200k_plus": 0.032457251718296144 + }, + "age_bands": { + "24_and_younger": 0.1267425501474626, + "25_to_34": 0.3285562398055524, + "35_to_49": 0.34882667135345735, + "50_to_61": 0.13395331858377907, + "62_and_older": 0.06192122010974874 + }, + "graduate_share_of_own_original_principal": 0.50227149500946, + "ibr_new_borrower_share": 0.6126157818332968 + } + }, + "b_counts_w0_l2": { + "households": { + "household_weight": 122537091.8856833, + "share_with_federal_education_debt": 0.2574945570424808, + "mean_among_borrowers": 52705.95410562469, + "median_among_borrowers": 29405.0, + "total_household_weight": 122537091.8856833, + "federal_education_debt_total": 1663011689865.8518, + "parent_plus_share_of_total": 0.06903233872127189 + }, + "household_balance_bands": { + "under_5k": 0.0823895169223864, + "5k_to_10k": 0.09468425676189303, + "10k_to_20k": 0.1696155669814634, + "20k_to_40k": 0.2572000292355249, + "40k_to_60k": 0.12151106138257664, + "60k_to_80k": 0.08829827042660549, + "80k_to_100k": 0.04617872702899335, + "100k_to_200k": 0.09053706578198444, + "200k_plus": 0.04958550547857246 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 3943039.5413031876, + "share_with_federal_education_debt": 0.30736092938585535, + "mean_among_borrowers": 26852.083718501315, + "median_among_borrowers": 19200.0 + }, + "25_to_34": { + "household_weight": 20262008.424694058, + "share_with_federal_education_debt": 0.4372461509421416, + "mean_among_borrowers": 43326.448257723336, + "median_among_borrowers": 27000.0 + }, + "35_to_49": { + "household_weight": 32912026.923129052, + "share_with_federal_education_debt": 0.37598552727029383, + "mean_among_borrowers": 53540.36846959637, + "median_among_borrowers": 29838.0 + }, + "50_to_61": { + "household_weight": 25637035.128972046, + "share_with_federal_education_debt": 0.2537358207282723, + "mean_among_borrowers": 57452.46140713118, + "median_among_borrowers": 31000.0 + }, + "62_and_older": { + "household_weight": 39782981.86758496, + "share_with_federal_education_debt": 0.06539813348447818, + "mean_among_borrowers": 80852.28447185604, + "median_among_borrowers": 48000.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 82689929.16878822, + "share_with_federal_education_debt": 0.23194955859698627, + "mean_among_borrowers": 51538.301082631435, + "median_among_borrowers": 29215.0 + }, + "black_non_hispanic": { + "household_weight": 14916504.107368052, + "share_with_federal_education_debt": 0.38879722924189075, + "mean_among_borrowers": 59282.57893722089, + "median_among_borrowers": 33500.0 + }, + "hispanic": { + "household_weight": 15472846.28627054, + "share_with_federal_education_debt": 0.24803509412318595, + "mean_among_borrowers": 43421.4271873648, + "median_among_borrowers": 22000.0 + }, + "other_or_multiple": { + "household_weight": 9457812.323256478, + "share_with_federal_education_debt": 0.28922515904087703, + "mean_among_borrowers": 59975.941151602216, + "median_among_borrowers": 26000.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 24498002.969906747, + "share_with_federal_education_debt": 0.24653355579887196, + "mean_among_borrowers": 55195.752421948295, + "median_among_borrowers": 32000.0 + }, + "2": { + "household_weight": 24505555.814873997, + "share_with_federal_education_debt": 0.2625440622105874, + "mean_among_borrowers": 50638.41120636637, + "median_among_borrowers": 29000.0 + }, + "3": { + "household_weight": 24514769.810232606, + "share_with_federal_education_debt": 0.21140948386441052, + "mean_among_borrowers": 39766.952431351245, + "median_among_borrowers": 25300.0 + }, + "4": { + "household_weight": 24519644.08579984, + "share_with_federal_education_debt": 0.3505253069859987, + "mean_among_borrowers": 51868.88661207279, + "median_among_borrowers": 31000.0 + }, + "5": { + "household_weight": 24499119.204870112, + "share_with_federal_education_debt": 0.21641005117512924, + "mean_among_borrowers": 66383.72517545668, + "median_among_borrowers": 28000.0 + } + }, + "borrowers": { + "borrower_weight": 34112730.25781064, + "mean_balance": 48750.471665488556, + "median_balance": 29000.0, + "balance_bands": { + "under_5k": 0.09516781064530534, + "5k_to_10k": 0.10053209032455691, + "10k_to_20k": 0.1679176563134534, + "20k_to_40k": 0.2732172028810997, + "40k_to_60k": 0.12263576876470887, + "60k_to_80k": 0.0742736907775977, + "80k_to_100k": 0.042682209246761735, + "100k_to_200k": 0.07789375973596568, + "200k_plus": 0.04567981131055075 + }, + "age_bands": { + "24_and_younger": 0.11004817140204891, + "25_to_34": 0.31968105622581816, + "35_to_49": 0.3624656283492382, + "50_to_61": 0.14125015642622796, + "62_and_older": 0.06655498759666689 + }, + "graduate_share_of_own_original_principal": 0.5448550173500203, + "ibr_new_borrower_share": 0.5900659510818743 + } + }, + "b_counts_w010_l2": { + "households": { + "household_weight": 122537091.8856833, + "share_with_federal_education_debt": 0.26715217443405004, + "mean_among_borrowers": 50871.24104233456, + "median_among_borrowers": 28000.0, + "total_household_weight": 122537091.8856833, + "federal_education_debt_total": 1665323518103.9524, + "parent_plus_share_of_total": 0.06896864332013564 + }, + "household_balance_bands": { + "under_5k": 0.0892335415458156, + "5k_to_10k": 0.10159281076199447, + "10k_to_20k": 0.1788070467993904, + "20k_to_40k": 0.24915733784986363, + "40k_to_60k": 0.11741751508817368, + "60k_to_80k": 0.08519852754829317, + "80k_to_100k": 0.044534769287946384, + "100k_to_200k": 0.0871829096115464, + "200k_plus": 0.04687554150697621 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 3946982.143819683, + "share_with_federal_education_debt": 0.3294612715616797, + "mean_among_borrowers": 24954.835602817973, + "median_among_borrowers": 16000.0 + }, + "25_to_34": { + "household_weight": 20301009.8156069, + "share_with_federal_education_debt": 0.4549795315215606, + "mean_among_borrowers": 41769.40131208982, + "median_among_borrowers": 26000.0 + }, + "35_to_49": { + "household_weight": 32935808.657989547, + "share_with_federal_education_debt": 0.3888280962551471, + "mean_among_borrowers": 51844.07935108335, + "median_among_borrowers": 28000.0 + }, + "50_to_61": { + "household_weight": 25614572.153142095, + "share_with_federal_education_debt": 0.26188896367541137, + "mean_among_borrowers": 55586.71053117232, + "median_among_borrowers": 30000.0 + }, + "62_and_older": { + "household_weight": 39738719.115125075, + "share_with_federal_education_debt": 0.06755596001393722, + "mean_among_borrowers": 78316.77999984322, + "median_among_borrowers": 41000.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 82710714.41047175, + "share_with_federal_education_debt": 0.23999214291605464, + "mean_among_borrowers": 49841.18063823543, + "median_among_borrowers": 29000.0 + }, + "black_non_hispanic": { + "household_weight": 14982225.733804591, + "share_with_federal_education_debt": 0.40255152315330844, + "mean_among_borrowers": 57233.03694155382, + "median_among_borrowers": 31000.0 + }, + "hispanic": { + "household_weight": 15392007.48790541, + "share_with_federal_education_debt": 0.2609720193742039, + "mean_among_borrowers": 41684.59979056137, + "median_among_borrowers": 20000.0 + }, + "other_or_multiple": { + "household_weight": 9452144.253501546, + "share_with_federal_education_debt": 0.3002628621368855, + "mean_among_borrowers": 57558.5871395595, + "median_among_borrowers": 21725.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 24521704.248743296, + "share_with_federal_education_debt": 0.25745273194004525, + "mean_among_borrowers": 52835.845490653424, + "median_among_borrowers": 28000.0 + }, + "2": { + "household_weight": 24482904.05609198, + "share_with_federal_education_debt": 0.2744886159013965, + "mean_among_borrowers": 48731.98137063119, + "median_among_borrowers": 29000.0 + }, + "3": { + "household_weight": 24517779.77511761, + "share_with_federal_education_debt": 0.2206015423784664, + "mean_among_borrowers": 38475.472004386225, + "median_among_borrowers": 25000.0 + }, + "4": { + "household_weight": 24512555.727540135, + "share_with_federal_education_debt": 0.35953989830316435, + "mean_among_borrowers": 50500.81193739463, + "median_among_borrowers": 30000.0 + }, + "5": { + "household_weight": 24502148.078190275, + "share_with_federal_education_debt": 0.22368204219525675, + "mean_among_borrowers": 64059.85317672333, + "median_among_borrowers": 26000.0 + } + }, + "borrowers": { + "borrower_weight": 35378421.03185457, + "mean_balance": 47071.73100248037, + "median_balance": 28000.0, + "balance_bands": { + "under_5k": 0.10208120111379243, + "5k_to_10k": 0.1073070074936594, + "10k_to_20k": 0.1771549073724525, + "20k_to_40k": 0.2640221814762538, + "40k_to_60k": 0.11843051132201154, + "60k_to_80k": 0.07165449066963994, + "80k_to_100k": 0.04113823628008854, + "100k_to_200k": 0.07501345684126147, + "200k_plus": 0.043198007430840485 + }, + "age_bands": { + "24_and_younger": 0.11253706526565674, + "25_to_34": 0.3208464285718266, + "35_to_49": 0.36188938094201606, + "50_to_61": 0.13907353134688002, + "62_and_older": 0.06565359387362055 + }, + "graduate_share_of_own_original_principal": 0.5395427793081895, + "ibr_new_borrower_share": 0.5934250243618643 + } + }, + "b_counts_w025_l2": { + "households": { + "household_weight": 122537091.8856833, + "share_with_federal_education_debt": 0.2817087355208398, + "mean_among_borrowers": 48321.51603729176, + "median_among_borrowers": 26000.0, + "total_household_weight": 122537091.8856833, + "federal_education_debt_total": 1668047581461.2764, + "parent_plus_share_of_total": 0.0688725302907319 + }, + "household_balance_bands": { + "under_5k": 0.09867967300266876, + "5k_to_10k": 0.11156264410328583, + "10k_to_20k": 0.19030813729959759, + "20k_to_40k": 0.23810574116058447, + "40k_to_60k": 0.11165639283299739, + "60k_to_80k": 0.08193805541892, + "80k_to_100k": 0.04237592546241424, + "100k_to_200k": 0.08270303543188133, + "200k_plus": 0.042670395287650244 + }, + "by_head_age_band": { + "24_and_younger": { + "household_weight": 3960088.1686002016, + "share_with_federal_education_debt": 0.36415159328547597, + "mean_among_borrowers": 22635.98926920618, + "median_among_borrowers": 16000.0 + }, + "25_to_34": { + "household_weight": 20357375.16736338, + "share_with_federal_education_debt": 0.48050549615612886, + "mean_among_borrowers": 39564.79174700702, + "median_among_borrowers": 25300.0 + }, + "35_to_49": { + "household_weight": 32968938.57529564, + "share_with_federal_education_debt": 0.40834194785327665, + "mean_among_borrowers": 49559.207036058026, + "median_among_borrowers": 25000.0 + }, + "50_to_61": { + "household_weight": 25597925.7883477, + "share_with_federal_education_debt": 0.27414191759966183, + "mean_among_borrowers": 52926.05683031921, + "median_among_borrowers": 29215.0 + }, + "62_and_older": { + "household_weight": 39652764.18607639, + "share_with_federal_education_debt": 0.07101147012711116, + "mean_among_borrowers": 74503.21023734406, + "median_among_borrowers": 40000.0 + } + }, + "by_race": { + "white_non_hispanic": { + "household_weight": 82725255.55756812, + "share_with_federal_education_debt": 0.2522886885824969, + "mean_among_borrowers": 47455.97438254421, + "median_among_borrowers": 27000.0 + }, + "black_non_hispanic": { + "household_weight": 15110551.47769025, + "share_with_federal_education_debt": 0.42426019463327175, + "mean_among_borrowers": 54398.86849838952, + "median_among_borrowers": 31000.0 + }, + "hispanic": { + "household_weight": 15257253.033147419, + "share_with_federal_education_debt": 0.27989065026723964, + "mean_among_borrowers": 39066.95185130798, + "median_among_borrowers": 19200.0 + }, + "other_or_multiple": { + "household_weight": 9444031.817277519, + "share_with_federal_education_debt": 0.31426778795216165, + "mean_among_borrowers": 54596.55481094458, + "median_among_borrowers": 20000.0 + } + }, + "by_income_quintile": { + "1": { + "household_weight": 24499680.774458177, + "share_with_federal_education_debt": 0.27559554682764514, + "mean_among_borrowers": 49675.420337688396, + "median_among_borrowers": 25000.0 + }, + "2": { + "household_weight": 24512393.40055476, + "share_with_federal_education_debt": 0.2924615092486347, + "mean_among_borrowers": 46235.62577744471, + "median_among_borrowers": 25000.0 + }, + "3": { + "household_weight": 24509068.556611452, + "share_with_federal_education_debt": 0.2343492823788628, + "mean_among_borrowers": 36810.36434424431, + "median_among_borrowers": 21000.0 + }, + "4": { + "household_weight": 24511081.40899915, + "share_with_federal_education_debt": 0.3717719739140795, + "mean_among_borrowers": 48352.6559963585, + "median_among_borrowers": 30000.0 + }, + "5": { + "household_weight": 24504867.745059762, + "share_with_federal_education_debt": 0.23434605049455526, + "mean_among_borrowers": 60797.47468411337, + "median_among_borrowers": 24000.0 + } + }, + "borrowers": { + "borrower_weight": 37269184.59596503, + "mean_balance": 44756.75010184872, + "median_balance": 25300.0, + "balance_bands": { + "under_5k": 0.11165577453638602, + "5k_to_10k": 0.11699590333784501, + "10k_to_20k": 0.1883741519681833, + "20k_to_40k": 0.251867394250436, + "40k_to_60k": 0.11252689840809799, + "60k_to_80k": 0.06897253352964659, + "80k_to_100k": 0.03905476516147085, + "100k_to_200k": 0.07119387580495368, + "200k_plus": 0.03935870300298047 + }, + "age_bands": { + "24_and_younger": 0.11597590232980394, + "25_to_34": 0.3216071422340021, + "35_to_49": 0.36141194522245146, + "50_to_61": 0.13642276176198903, + "62_and_older": 0.06458224845175344 + }, + "graduate_share_of_own_original_principal": 0.5312915715752343, + "ibr_new_borrower_share": 0.5975685879127545 + } + } + }, + "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.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.0528032039345945, + "other_households_weighted_mean_ratio": 0.7932632569927957, + "borrower_household_weight_share": { + "initial": 0.16413671000206656, + "final": 0.33694036417552564 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 3045.454372921042 + }, + "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.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.323233835865687 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 4424.347224536957 + }, + "total_weight": { + "initial": 122537091.8856833, + "final": 122537091.8856833 + } + }, + "b_counts_w0": { + "ratio_quantiles": { + "0.01": 0.0023063177270685286, + "0.05": 0.0023071462406145478, + "0.25": 0.0023093505029155876, + "0.5": 0.0023229760214762522, + "0.75": 0.008558789164356944, + "0.95": 1.8517011601364581, + "0.99": 4.979693253775841 + }, + "share_at_cap": 0.0, + "borrower_households_weighted_mean_ratio": 1.8398333063540377, + "other_households_weighted_mean_ratio": 0.8350837062655903, + "borrower_household_weight_share": { + "initial": 0.16413671000206656, + "final": 0.301984185857176 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 3363.6010332502683 + }, + "total_weight": { + "initial": 122537091.8856833, + "final": 122537091.8856833 + } + }, + "b_counts_w010": { + "ratio_quantiles": { + "0.01": 0.0018542996979319221, + "0.05": 0.0018549098881699205, + "0.25": 0.0018566898865097169, + "0.5": 0.0018677294277472522, + "0.75": 0.007017494167839212, + "0.95": 1.851885224999274, + "0.99": 4.979164274545842 + }, + "share_at_cap": 0.0, + "borrower_households_weighted_mean_ratio": 1.931421419401484, + "other_households_weighted_mean_ratio": 0.817098741821294, + "borrower_household_weight_share": { + "initial": 0.16413671000206656, + "final": 0.3170171574080812 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 3292.280992471257 + }, + "total_weight": { + "initial": 122537091.8856833, + "final": 122537091.8856833 + } + }, + "b_counts_w025": { + "ratio_quantiles": { + "0.01": 0.0012385654298549043, + "0.05": 0.001238951755039716, + "0.25": 0.0012401417796712752, + "0.5": 0.0012474974458574367, + "0.75": 0.00473931374769539, + "0.95": 1.924818742893801, + "0.99": 4.985037114456594 + }, + "share_at_cap": 0.0, + "borrower_households_weighted_mean_ratio": 1.9904284648095827, + "other_households_weighted_mean_ratio": 0.8055116528605479, + "borrower_household_weight_share": { + "initial": 0.16413671000206656, + "final": 0.32670237970830907 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 3169.819899716007 + }, + "total_weight": { + "initial": 122537091.8856833, + "final": 122537091.8856833 + } + }, + "b_counts_w0_l2": { + "ratio_quantiles": { + "0.01": 0.05340589544025153, + "0.05": 0.053846453620343085, + "0.25": 0.053856798418767976, + "0.5": 0.05385738216236184, + "0.75": 0.05420242018336567, + "0.95": 1.3687233838476174, + "0.99": 2.3843890468855427 + }, + "share_at_cap": 0.00029699510831586305, + "borrower_households_weighted_mean_ratio": 1.568781030393742, + "other_households_weighted_mean_ratio": 0.8883096695864643, + "borrower_household_weight_share": { + "initial": 0.16413671000206656, + "final": 0.2574945570424808 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 5232.317587738355 + }, + "total_weight": { + "initial": 122537091.8856833, + "final": 122537091.8856833 + } + }, + "b_counts_w010_l2": { + "ratio_quantiles": { + "0.01": 0.046650892611324775, + "0.05": 0.04692988437044632, + "0.25": 0.0469361705104786, + "0.5": 0.04693698005528266, + "0.75": 0.047349211377231123, + "0.95": 1.3804934635906958, + "0.99": 2.437315812093071 + }, + "share_at_cap": 0.0002795248078266946, + "borrower_households_weighted_mean_ratio": 1.6276198933845236, + "other_households_weighted_mean_ratio": 0.8767556062520244, + "borrower_household_weight_share": { + "initial": 0.16413671000206656, + "final": 0.26715217443405004 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 5159.028058580616 + }, + "total_weight": { + "initial": 122537091.8856833, + "final": 122537091.8856833 + } + }, + "b_counts_w025_l2": { + "ratio_quantiles": { + "0.01": 0.03619632040917671, + "0.05": 0.036324912477632997, + "0.25": 0.036327649565902245, + "0.5": 0.03632854511565157, + "0.75": 0.03681828753049909, + "0.95": 1.393731643839819, + "0.99": 2.5074666358046245 + }, + "share_at_cap": 0.00029699510831586305, + "borrower_households_weighted_mean_ratio": 1.7163054841131695, + "other_households_weighted_mean_ratio": 0.8593406039891238, + "borrower_household_weight_share": { + "initial": 0.16413671000206656, + "final": 0.2817087355208398 + }, + "effective_sample_size": { + "initial": 9174.432030037513, + "final": 5011.420939300949 + }, + "total_weight": { + "initial": 122537091.8856833, + "final": 122537091.8856833 + } + } + }, + "seconds": 2428.055426427, + "borrower_count_weighting": { + "targets": { + "balance": 67, + "borrower_count": 65, + "age_bands": 5 + }, + "fsa_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.13839285714285715, + "Federal student loan borrowers, borrower age 25 to 34": 0.3125, + "Federal student loan borrowers, borrower age 35 to 49": 0.33482142857142855, + "Federal student loan borrowers, borrower age 50 to 61": 0.14285714285714285, + "Federal student loan borrowers, borrower age 62 and Older": 0.07142857142857142 + }, + "arms": { + "release": { + "balance_targets": { + "targets": 67, + "mean_capped_abs_rel_error": 0.47210130500214864, + "mean_abs_rel_error": 0.47210130500214864, + "median_abs_rel_error": 0.49107556607463815, + "max_abs_rel_error": 0.7656073975800927, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "borrower_count_targets": { + "targets": 65, + "mean_capped_abs_rel_error": 0.4949843177416066, + "mean_abs_rel_error": 0.4949843177416066, + "median_abs_rel_error": 0.5082195361277102, + "max_abs_rel_error": 0.674786513275884, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "non_fsa_mean_capped_abs_rel_error": 0.05303823079681869, + "households_with_federal_education_debt": 0.16413671000206656, + "borrowers": 21177503.938145176, + "parent_plus_share": 0.10691085971286082, + "borrower_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.12191368948550362, + "Federal student loan borrowers, borrower age 25 to 34": 0.3111513455503958, + "Federal student loan borrowers, borrower age 35 to 49": 0.3717160125133406, + "Federal student loan borrowers, borrower age 50 to 61": 0.13719732675785876, + "Federal student loan borrowers, borrower age 62 and Older": 0.058021625692901285 + }, + "borrower_age_tvd_vs_fsa": 0.036894583941911994, + "effective_sample_size": 9174.432030037513 + }, + "a_no_fsa": { + "balance_targets": { + "targets": 67, + "mean_capped_abs_rel_error": 0.46507000406839005, + "mean_abs_rel_error": 0.46507000406839005, + "median_abs_rel_error": 0.499055649535622, + "max_abs_rel_error": 0.7908842397953412, + "share_within_5pct": 0.014925373134328358, + "share_within_10pct": 0.029850746268656716 + }, + "borrower_count_targets": { + "targets": 65, + "mean_capped_abs_rel_error": 0.4970774869231364, + "mean_abs_rel_error": 0.4970774869231364, + "median_abs_rel_error": 0.5135473964066687, + "max_abs_rel_error": 0.7464418676869138, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "non_fsa_mean_capped_abs_rel_error": 0.03301639302929685, + "households_with_federal_education_debt": 0.1662222969167077, + "borrowers": 21589996.24192015, + "parent_plus_share": 0.11563076658292412, + "borrower_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.11883225902939225, + "Federal student loan borrowers, borrower age 25 to 34": 0.3110491034244556, + "Federal student loan borrowers, borrower age 35 to 49": 0.37436078161805797, + "Federal student loan borrowers, borrower age 50 to 61": 0.13809685252640103, + "Federal student loan borrowers, borrower age 62 and Older": 0.0576610034016932 + }, + "borrower_age_tvd_vs_fsa": 0.039539353046629394, + "effective_sample_size": 4149.419863864658 + }, + "b_with_fsa": { + "balance_targets": { + "targets": 67, + "mean_capped_abs_rel_error": 0.002437134216167754, + "mean_abs_rel_error": 0.002437134216167754, + "median_abs_rel_error": 0.000700089474394004, + "max_abs_rel_error": 0.07347017637112539, + "share_within_5pct": 0.9850746268656716, + "share_within_10pct": 1.0 + }, + "borrower_count_targets": { + "targets": 65, + "mean_capped_abs_rel_error": 0.01256798083872556, + "mean_abs_rel_error": 0.01256798083872556, + "median_abs_rel_error": 0.0008732741716540846, + "max_abs_rel_error": 0.14264923040127336, + "share_within_5pct": 0.9230769230769231, + "share_within_10pct": 0.9384615384615385 + }, + "non_fsa_mean_capped_abs_rel_error": 0.0361566212336172, + "households_with_federal_education_debt": 0.33694036417552564, + "borrowers": 44260352.59952934, + "parent_plus_share": 0.06846980810645852, + "borrower_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.13858414533074442, + "Federal student loan borrowers, borrower age 25 to 34": 0.31258859488509944, + "Federal student loan borrowers, borrower age 35 to 49": 0.3350839163925317, + "Federal student loan borrowers, borrower age 50 to 61": 0.14301921331865358, + "Federal student loan borrowers, borrower age 62 and Older": 0.07072413007297079 + }, + "borrower_age_tvd_vs_fsa": 0.0007044413556006185, + "effective_sample_size": 3045.454372921042 + }, + "a_no_fsa_l2": { + "balance_targets": { + "targets": 67, + "mean_capped_abs_rel_error": 0.4715779186204916, + "mean_abs_rel_error": 0.4715779186204916, + "median_abs_rel_error": 0.49542706080686916, + "max_abs_rel_error": 0.7444172537466162, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "borrower_count_targets": { + "targets": 65, + "mean_capped_abs_rel_error": 0.49330848802721183, + "mean_abs_rel_error": 0.49330848802721183, + "median_abs_rel_error": 0.5030112054538538, + "max_abs_rel_error": 0.6924811961501464, + "share_within_5pct": 0.0, + "share_within_10pct": 0.0 + }, + "non_fsa_mean_capped_abs_rel_error": 0.03849863610403729, + "households_with_federal_education_debt": 0.16563645838046798, + "borrowers": 21420219.92046372, + "parent_plus_share": 0.10887015989497842, + "borrower_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.12366909509991605, + "Federal student loan borrowers, borrower age 25 to 34": 0.3110692340793589, + "Federal student loan borrowers, borrower age 35 to 49": 0.3733860802237812, + "Federal student loan borrowers, borrower age 50 to 61": 0.1343097733559214, + "Federal student loan borrowers, borrower age 62 and Older": 0.05756581724102244 + }, + "borrower_age_tvd_vs_fsa": 0.03856465165235266, + "effective_sample_size": 6434.762084227589 + }, + "b_with_fsa_l2": { + "balance_targets": { + "targets": 67, + "mean_capped_abs_rel_error": 0.012502488552587005, + "mean_abs_rel_error": 0.012502488552587005, + "median_abs_rel_error": 0.0015931222182398897, + "max_abs_rel_error": 0.21376478193206117, + "share_within_5pct": 0.9402985074626866, + "share_within_10pct": 0.9402985074626866 + }, + "borrower_count_targets": { + "targets": 65, + "mean_capped_abs_rel_error": 0.06069276492989698, + "mean_abs_rel_error": 0.06069276492989698, + "median_abs_rel_error": 0.01694140322718439, + "max_abs_rel_error": 0.3139045998065022, + "share_within_5pct": 0.6153846153846154, + "share_within_10pct": 0.7538461538461538 + }, + "non_fsa_mean_capped_abs_rel_error": 0.03853532531745583, + "households_with_federal_education_debt": 0.323233835865687, + "borrowers": 42673022.28692794, + "parent_plus_share": 0.06870063338085393, + "borrower_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.12934012242194107, + "Federal student loan borrowers, borrower age 25 to 34": 0.32420224030769873, + "Federal student loan borrowers, borrower age 35 to 49": 0.3477221485726111, + "Federal student loan borrowers, borrower age 50 to 61": 0.13436003520416756, + "Federal student loan borrowers, borrower age 62 and Older": 0.06437545349358152 + }, + "borrower_age_tvd_vs_fsa": 0.024602960308881268, + "effective_sample_size": 4424.347224536957 + }, + "b_counts_w0": { + "balance_targets": { + "targets": 67, + "mean_capped_abs_rel_error": 0.013010914682328236, + "mean_abs_rel_error": 0.013010914682328236, + "median_abs_rel_error": 0.0009155791661401671, + "max_abs_rel_error": 0.3853620713764649, + "share_within_5pct": 0.9552238805970149, + "share_within_10pct": 0.9701492537313433 + }, + "borrower_count_targets": { + "targets": 65, + "mean_capped_abs_rel_error": 0.17696377806248997, + "mean_abs_rel_error": 0.17696377806248997, + "median_abs_rel_error": 0.15289715682271765, + "max_abs_rel_error": 0.4032562751804122, + "share_within_5pct": 0.16923076923076924, + "share_within_10pct": 0.3230769230769231 + }, + "non_fsa_mean_capped_abs_rel_error": 0.034464733811132374, + "households_with_federal_education_debt": 0.301984185857176, + "borrowers": 39749334.84605471, + "parent_plus_share": 0.06840475477971662, + "borrower_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.11638880039197412, + "Federal student loan borrowers, borrower age 25 to 34": 0.33120436029674044, + "Federal student loan borrowers, borrower age 35 to 49": 0.36018909799672366, + "Federal student loan borrowers, borrower age 50 to 61": 0.13161021222137192, + "Federal student loan borrowers, borrower age 62 and Older": 0.06060752909318982 + }, + "borrower_age_tvd_vs_fsa": 0.044072029722035555, + "effective_sample_size": 3363.6010332502683 + }, + "b_counts_w010": { + "balance_targets": { + "targets": 67, + "mean_capped_abs_rel_error": 0.008902396586757216, + "mean_abs_rel_error": 0.008902396586757216, + "median_abs_rel_error": 0.0007670489871717916, + "max_abs_rel_error": 0.2601308525862361, + "share_within_5pct": 0.9552238805970149, + "share_within_10pct": 0.9701492537313433 + }, + "borrower_count_targets": { + "targets": 65, + "mean_capped_abs_rel_error": 0.13063594475920848, + "mean_abs_rel_error": 0.13063594475920848, + "median_abs_rel_error": 0.12263805252435862, + "max_abs_rel_error": 0.3583056708948136, + "share_within_5pct": 0.3076923076923077, + "share_within_10pct": 0.46153846153846156 + }, + "non_fsa_mean_capped_abs_rel_error": 0.03466775200287553, + "households_with_federal_education_debt": 0.3170171574080812, + "borrowers": 41706814.85762861, + "parent_plus_share": 0.06842803493635864, + "borrower_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.121172579502527, + "Federal student loan borrowers, borrower age 25 to 34": 0.33029267621964514, + "Federal student loan borrowers, borrower age 35 to 49": 0.3575656517314633, + "Federal student loan borrowers, borrower age 50 to 61": 0.13022554936609404, + "Federal student loan borrowers, borrower age 62 and Older": 0.06074354318027055 + }, + "borrower_age_tvd_vs_fsa": 0.04053689937967987, + "effective_sample_size": 3292.280992471257 + }, + "b_counts_w025": { + "balance_targets": { + "targets": 67, + "mean_capped_abs_rel_error": 0.0055584196162287575, + "mean_abs_rel_error": 0.0055584196162287575, + "median_abs_rel_error": 0.001002292317583817, + "max_abs_rel_error": 0.16299433995908608, + "share_within_5pct": 0.9552238805970149, + "share_within_10pct": 0.9850746268656716 + }, + "borrower_count_targets": { + "targets": 65, + "mean_capped_abs_rel_error": 0.08602789916661781, + "mean_abs_rel_error": 0.08602789916661781, + "median_abs_rel_error": 0.05630005118525304, + "max_abs_rel_error": 0.3008124565205545, + "share_within_5pct": 0.4307692307692308, + "share_within_10pct": 0.6461538461538462 + }, + "non_fsa_mean_capped_abs_rel_error": 0.035018188662881325, + "households_with_federal_education_debt": 0.32670237970830907, + "borrowers": 42975089.656632446, + "parent_plus_share": 0.0684015955025082, + "borrower_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.12674255014746272, + "Federal student loan borrowers, borrower age 25 to 34": 0.32855623980555226, + "Federal student loan borrowers, borrower age 35 to 49": 0.34882667135345735, + "Federal student loan borrowers, borrower age 50 to 61": 0.13395331858377904, + "Federal student loan borrowers, borrower age 62 and Older": 0.0619212201097487 + }, + "borrower_age_tvd_vs_fsa": 0.030061482587581016, + "effective_sample_size": 3169.819899716007 + }, + "b_counts_w0_l2": { + "balance_targets": { + "targets": 67, + "mean_capped_abs_rel_error": 0.04081518532726859, + "mean_abs_rel_error": 0.04081518532726859, + "median_abs_rel_error": 0.0013321765649983218, + "max_abs_rel_error": 0.5425653572389263, + "share_within_5pct": 0.8656716417910447, + "share_within_10pct": 0.8955223880597015 + }, + "borrower_count_targets": { + "targets": 65, + "mean_capped_abs_rel_error": 0.24493220427783077, + "mean_abs_rel_error": 0.24493220427783077, + "median_abs_rel_error": 0.23878498744824062, + "max_abs_rel_error": 0.5242931896170927, + "share_within_5pct": 0.09230769230769231, + "share_within_10pct": 0.16923076923076924 + }, + "non_fsa_mean_capped_abs_rel_error": 0.038446195835670716, + "households_with_federal_education_debt": 0.2574945570424808, + "borrowers": 34112730.25781064, + "parent_plus_share": 0.06903233872127189, + "borrower_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.11004817140204902, + "Federal student loan borrowers, borrower age 25 to 34": 0.3196810562258186, + "Federal student loan borrowers, borrower age 35 to 49": 0.36246562834923746, + "Federal student loan borrowers, borrower age 50 to 61": 0.14125015642622807, + "Federal student loan borrowers, borrower age 62 and Older": 0.06655498759666695 + }, + "borrower_age_tvd_vs_fsa": 0.03482525600362745, + "effective_sample_size": 5232.317587738355 + }, + "b_counts_w010_l2": { + "balance_targets": { + "targets": 67, + "mean_capped_abs_rel_error": 0.03550099622596733, + "mean_abs_rel_error": 0.03550099622596733, + "median_abs_rel_error": 0.0012767837728331981, + "max_abs_rel_error": 0.49121745383778515, + "share_within_5pct": 0.8805970149253731, + "share_within_10pct": 0.8955223880597015 + }, + "borrower_count_targets": { + "targets": 65, + "mean_capped_abs_rel_error": 0.22057744533637835, + "mean_abs_rel_error": 0.22057744533637835, + "median_abs_rel_error": 0.21671624668737233, + "max_abs_rel_error": 0.4840908170489062, + "share_within_5pct": 0.12307692307692308, + "share_within_10pct": 0.18461538461538463 + }, + "non_fsa_mean_capped_abs_rel_error": 0.03845490837383332, + "households_with_federal_education_debt": 0.26715217443405004, + "borrowers": 35378421.03185457, + "parent_plus_share": 0.06896864332013564, + "borrower_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.11253706526565696, + "Federal student loan borrowers, borrower age 25 to 34": 0.3208464285718267, + "Federal student loan borrowers, borrower age 35 to 49": 0.36188938094201545, + "Federal student loan borrowers, borrower age 50 to 61": 0.13907353134688022, + "Federal student loan borrowers, borrower age 62 and Older": 0.06565359387362062 + }, + "borrower_age_tvd_vs_fsa": 0.03541438094241362, + "effective_sample_size": 5159.028058580616 + }, + "b_counts_w025_l2": { + "balance_targets": { + "targets": 67, + "mean_capped_abs_rel_error": 0.028926226664045075, + "mean_abs_rel_error": 0.028926226664045075, + "median_abs_rel_error": 0.001194247106708727, + "max_abs_rel_error": 0.41425627522284497, + "share_within_5pct": 0.8805970149253731, + "share_within_10pct": 0.8955223880597015 + }, + "borrower_count_targets": { + "targets": 65, + "mean_capped_abs_rel_error": 0.18248307546444154, + "mean_abs_rel_error": 0.18248307546444154, + "median_abs_rel_error": 0.1876225791047063, + "max_abs_rel_error": 0.4574529403676427, + "share_within_5pct": 0.16923076923076924, + "share_within_10pct": 0.3076923076923077 + }, + "non_fsa_mean_capped_abs_rel_error": 0.0384097100837355, + "households_with_federal_education_debt": 0.2817087355208398, + "borrowers": 37269184.59596503, + "parent_plus_share": 0.0688725302907319, + "borrower_age_distribution": { + "Federal student loan borrowers, borrower age 24 and Younger": 0.115975902329804, + "Federal student loan borrowers, borrower age 25 to 34": 0.3216071422340015, + "Federal student loan borrowers, borrower age 35 to 49": 0.36141194522245207, + "Federal student loan borrowers, borrower age 50 to 61": 0.136422761761989, + "Federal student loan borrowers, borrower age 62 and Older": 0.06458224845175337 + }, + "borrower_age_tvd_vs_fsa": 0.03569765888502504, + "effective_sample_size": 5011.420939300949 + } + } + } +} 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 53795c944..ed4bf1864 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, @@ -1032,6 +1037,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. @@ -1053,6 +1059,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: @@ -1060,6 +1073,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, @@ -1069,12 +1087,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) @@ -3139,6 +3165,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 000000000..c685cac60 --- /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 a8296fa47..4625f82a3 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 fbd818317..27a251a81 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 @@ -4186,7 +4186,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() @@ -4195,7 +4195,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 aa84057ec..dff13a62b 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 000000000..4662add56 --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/us/test_us_fsa_student_loan_targets.py @@ -0,0 +1,544 @@ +"""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 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 +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 4dea270c6..3339eaa0e 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 @@ -276,6 +276,10 @@ "esi_premiums.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 000000000..63a720d11 Binary files /dev/null and b/packages/microcosm-build/tests/fixtures/us_fsa_portfolio_chronicle_347_facts.jsonl.gz differ diff --git a/packages/microcosm-calibrate/src/microcosm/calibrate/provider_labels.py b/packages/microcosm-calibrate/src/microcosm/calibrate/provider_labels.py index 6c2190f17..25a1fdaf1 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 5e0449377..ca1796f11 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 5aafb56d0..06593e9b8 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 41654f183..b639eccc1 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 7d3e7a5db..ff5bbf9ec 100644 --- a/tools/build_us_fiscal_refresh_release.py +++ b/tools/build_us_fiscal_refresh_release.py @@ -261,6 +261,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, @@ -797,6 +805,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 @@ -879,7 +888,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. @@ -902,6 +924,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", @@ -5921,6 +5944,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, @@ -6022,6 +6071,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." @@ -6310,6 +6363,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 @@ -10131,6 +10195,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]: @@ -12549,6 +12616,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, *, @@ -12924,6 +13007,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 @@ -12955,8 +13048,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: " @@ -16296,6 +16393,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" )