For the skeptics — please, be one

Methodology, assumptions, and known limitations

This page is written for finance professionals, economists, and data scientists who should not take our outputs on faith. The parameter tables below are rendered from the same constants the engine executes, and the coverage counts are queried live from the production database — this documentation cannot drift from the code.

1 · Data provenance & coverage (live from this database)

SourceProvidesIn this build
College Scorecard, Field of Study (ED) Program-level median earnings (IRS records) at 1/4/5 years post-completion; median federal debt (Stafford+Grad PLUS) 69,096 programs with observed earnings (37,846 fully observed at 1/4/5 yr) across 5,443 institutions, 56 states/territories
College Scorecard, Institution (ED) Cost of attendance, average net price, admission and completion rates, OPEID bridge joined on IPEDS UNITID
Census PSEO (experimental) 25th/50th/75th percentile earnings from state UI wage records at 1/5/10 years — the only public source with a distribution 19,369 programs with observed percentile bands; 14,483 with observed 10-year earnings
ACS 5-Year PUMS (Census) Age-earnings curves by education level (national and per-state) — counterfactuals and lifetime extension shapes 47 national and 2,377 state curve cells from ~5.8M full-time workers

All sources are public federal data. The pipeline (five scripts, DuckDB/SQLite) is deterministic and re-runnable; every ingestion validates against an independently hand-pulled oracle of program medians and currently reproduces it at 0.0% drift. Suppressed cells (23,108 programs lack publishable median debt, for example) are stored as NULL and displayed as absent — never imputed. Different agencies key differently: PSEO joins via 8-digit OPEID with explicit credential-level mapping, so a bachelor's program can only match bachelor's earnings.

2 · Earnings path construction

Years 1–5 post-completion: linear interpolation of the observed Scorecard medians (e1 → e4 → e5). Years 6+: the level anchors to observed year-5 and the shape follows the ACS age-earnings curve for the credential level (5-year age bands, annualized band-to-band growth, clamped to [-3%, +6%]/yr). Where PSEO covers a program, percentile paths interpolate observed y1 → y5 → y10 at each percentile before ACS-shaped extension; Scorecard (IRS) and PSEO (UI wage records) figures are never blended into a single number — they are shown as labeled, parallel reads. Note their known measurement differences: UI records exclude self-employment, some federal employment, and graduates who move out of covered employment.

3 · Loan verdict model

Standard plan: 10-year annuity at the federal rate. Burden = annual payment / median earnings, evaluated per year over years 1–10; the tier thresholds adopt the retired federal Gainful Employment debt-to-earnings framework (≤8% sound, 8–12% heavy) — a citable rubric, not one we invented. RAP simulation (post-July-2026 law): bracketed payment on AGI (table below), $10/mo minimum, unpaid interest waived (balances cannot grow), $50/mo federal principal match, cancellation at 360 payments with the canceled balance taxed as income at an assumed 24% marginal rate. "Never amortizes" is a computed binary: the simulated balance survives all 360 payments.

AGI up toPayment (% of AGI)
$10,000 0%
$20,000 1%
$30,000 2%
$40,000 3%
$50,000 4%
$60,000 5%
$70,000 6%
$80,000 7%
$90,000 8%
$100,000 9%
$inf 10%

4 · Degree NPV model

Differential cash flows only: for school years, −(annual net price) − (counterfactual wage); for working years to age 65, (program path) − (counterfactual); discounted at a 3% real rate (disclosed, adjustable in the assumption registry). The counterfactual is the ACS median for the user's state, age, and current education level — or, when the user supplies current pay, their actual wage grown along the matching ACS curve shape. Older enrollees mechanically face a shorter recoupment window (the clock stops at 65); this is reflected, not asserted. Cash-flow simplifications currently in force and disclosed on-page: on-time completion (4 years for a bachelor's), borrowing approximated as (net price − family cash) × years in the comparison view, ACS pooled-dollar levels compared against Scorecard vintage dollars without a bridge adjustment.

5 · Assumption registry (live from the engine)

ParameterValue in productionBasis
Federal undergrad rate6.52%2026–27 Direct/Stafford published rate
Sound / heavy thresholds8% / 12%Retired federal GE debt-to-earnings framework
RAP term / min / match360 payments / $10 / $50Statute (2025 reconciliation law)
Tax rate at cancellation24%Assumed marginal bracket; forgiveness taxable again since Jan 2026
Real discount rate3%Disclosed choice; sensitivity direction stated in §7
Working-life horizonto age 65Convention; conservative for late retirees
Curve growth clamp[-3%, +6%]/yrGuards against thin ACS cells

6 · Known biases & structural limits

Selection vs. causation. Program medians describe who attends and completes, not the causal effect of attending; the selection-adjusted literature (Dale & Krueger) finds elite causal premia far smaller than raw gaps. We report outcomes and say so; we do not apply a selection discount in the current build. Survivorship. On-time completion is assumed and labeled; completion adjustment flips a material share of marginal programs negative (FREOPP's adjustment moved ~28% of programs) and is the highest-priority planned scenario. Scope. Title IV institutions only (~70% of students); small-cohort programs are suppressed at the source and therefore absent here. Vintage. Ten-year observed earnings describe students who enrolled ~15 years ago; single-vintage cohort noise is visible in the data (some programs show year-5 below year-4) and vintage pooling is the planned pipeline fix. Horizon mixing. Where PSEO cohorts differ by horizon, each horizon reports its most recent available cohort. Medians bound expectations; they do not predict an individual.

7 · Uncertainty, sensitivity, and what would flip a verdict

The federal sources publish medians without cell-level standard errors, so per-program confidence intervals cannot be honestly computed from the released files — and we decline to print invented error bars. Uncertainty is displayed the only observed way available: PSEO 25th/75th percentile bands, with verdicts evaluated at each band. Directional sensitivities: a higher discount rate compresses lifetime values toward zero; completion adjustment moves marginal verdicts down, never up; a selection discount moves elite programs down most. Loan verdicts are least fragile — they depend on years 1–10, where the data is strongest and mostly observed. Our decision-accuracy claim is deliberately modest: when the gap between options is six figures, no plausible parameter choice reverses the ranking; where options are within the noise band, the tool should and does show them as close rather than manufacturing a winner.

Adversarial review is invited. The data is public, the parameters are on this page, and replication requires nothing we haven't disclosed. If you believe an output is wrong, the assumption registry above tells you exactly which number to attack — write to us with your alternative and your source.

← Back to the tool