Methodology
How this dashboard is built, where the data comes from, and the assumptions behind the projections.
Scope
This dashboard covers the four pension funds sponsored by the City of Chicago:
- MEABF — Municipal Employees’ Annuity and Benefit Fund
- LABF — Laborers’ and Retirement Board Employees’ Annuity and Benefit Fund
- PABF — Policemen’s Annuity and Benefit Fund
- FABF — Firemen’s Annuity and Benefit Fund
The Chicago Teachers’ Pension Fund (CTPF) is not included. It has a different sponsor (CPS), a different fiscal year, and a different statutory funding framework.
Primary data source
Historical data comes from the Public Plans Database (PPD), a joint project of the Center for Retirement Research at Boston College, the MissionSquare Research Institute, the National Association of State Retirement Administrators, and the Government Finance Officers Association. PPD aggregates annual actuarial valuation and financial statement data for over 250 major U.S. public pension plans, with coverage back to 2001.
The four Chicago city funds have PPD plan IDs 145 (MEABF), 215 (LABF), 146 (PABF), and 206 (FABF). The full dataset is pulled via the PPD API and stored as raw JSON in the project repository, then normalized into a typed schema.
Supplemental sources (pre-2001 and gap-filling)
PPD covers 2001 forward. To extend the series back to 1997 and to close a few remaining gaps within the PPD era, we transcribe numbers directly from each fund’s own actuarial valuations and audited financial statements.
- Pre-2001 history (1997–2000): per-fund actuarial valuations (AVs) and the comparative multi-year schedules they contain (Tables 1–10 and Exhibits A–W), cross-referenced against the City of Chicago’s annual Comprehensive Financial Reports (aggregated pension disclosures in Note 8).
- LABF FY 2001 and FY 2002: market value of assets, cashflow breakdown, and membership counts came from the LABF 2001 and 2002 AVs (Table 9 “Reconciliation of Asset Values” and Exhibits M/N). PPD left these fields blank.
- LABF FY 2020: total benefit payments from the audited 2020 financial statements; average benefit from the 2020 AV Exhibit N.
- PABF FY 2001–2002 discount rate: 8.0% (the fund’s assumption held steady at 8.0% from 1999 through 2007 per adjacent AVs).
Supplemental values are stored in data/manual/historical-pre2001.csv and data/manual/ppd-patches.csv with a source note on every row identifying the specific document and table the value came from. PPD remains authoritative where it reports a value; supplemental rows only fill genuine gaps.
Display window
The dashboard shows fiscal years 1997 onwards. Earlier years exist in the underlying data but are truncated for display because pre-1997 coverage is patchy (aggregate-only cashflow, missing asset values for some funds) and would give a misleading impression of completeness.
Known data gaps
- GASB 67 fields (Net Position, Total Pension Liability) are only available from FY 2014 onward, when GASB 67 took effect.
- Some fields (e.g. COLA benefits, disability retiree counts) are not reported consistently across all funds and years.
Market vs. actuarial basis
This dashboard anchors on market value of assets, with actuarial values shown as a secondary reference. The actuarial (smoothed) value intentionally spreads investment gains and losses over several years to stabilize the contribution schedule. That smoothing is appropriate for funding policy decisions, but it hides the fund’s real economic position. Market value is closer to the truth.
The market-basis funded ratio here is computed as:
fundedRatioMVA = marketValueOfAssets / actuarialAccruedLiability
using the GASB 25 AAL (since TPL is not available pre-2014). This gives a consistent ratio definition across the full time series.
Actuary baseline projections
Alongside the scenario engine, the dashboard overlays each fund actuary’s own forward projection from the 2024 actuarial valuation. These are the fund’s “if we follow the statutory funding schedule and all assumptions are met” glide path to 90% funded by 2055 (Police/Fire) or 2058 (Municipal/Laborers) per P.A. 100-0023.
- LABF — 2024 AV Table 4, 50-Year Projections (2024–2073). GRS.
- MEABF — 2024 AV Exhibit 8, 50-Year Projection (2024–2074). Segal.
- PABF — 2024 AV Table 3A, 32-Year Projection (2024–2055) at a 6.75% discount rate. GRS.
- FABF — 2024 AV Exhibit 9, 38-Year Projection (2024–2061). Segal.
The aggregate (all four combined) baseline sums the four fund projections for years where all four are present — 2025–2055, the horizon of the shortest (PABF) projection. Transcribed values are stored in data/manual/projections/{fundId}.csv (dollar values in thousands to match the AV format).
Projection engine
Separate from the actuary baselines, the scenario engine is a simplified actuarial roll-forward that users drive with sliders. Starting from the latest observed year, each subsequent year applies the standard pension recurrence:
AAL[t] = AAL[t-1] * (1 + discountRate) + normalCost - benefits MVA[t] = MVA[t-1] * (1 + actualReturn) + contribs - benefits UAAL[t] = AAL[t] - MVA[t]
The employer contribution each year is:
employerContribution = normalCost_ER + amortPayment(UAAL, yearsRemainingToTarget)
The amortization payment uses either level-dollar or level-percent-of-pay schedules, based on the policy setting. Payroll and benefit payments are grown at stylized default rates (3% each). These defaults are rough — real actuarial projections use detailed assumptions about retirement ages, mortality, termination rates, tier mix, and more.
Re-pricing liabilities at non-baseline discount rates
When the user moves the “assumed return” slider on the Scenarios page away from the fund’s baseline rate, the projection’s starting AAL and normal cost are re-priced before the year-by-year roll-forward begins. Otherwise the engine would inconsistently roll a baseline-discounted starting AAL forward at a different rate, understating the impact of the change.
The re-pricing uses the GASB 67/68 sensitivity disclosure that each fund publishes alongside its annual actuarial valuation. GASB requires plans to report Net Pension Liability at the baseline discount rate as well as 1pp above and 1pp below. Adding back the (rate-invariant) Plan Fiduciary Net Position gives Total Pension Liability at three anchor points; the engine linearly interpolates between adjacent anchors for any rate within the disclosed range.
This is why the assumed-return slider is bounded at ±1pp around each fund’s baseline. We don’t extrapolate beyond what the funds have actually disclosed. The four FY2024 baselines are:
- FABF — 6.75% (the long-term investment return assumption; assets are not projected to deplete, so no blending is required).
- MEABF — 6.62% (single equivalent rate, blending the 7.0% long-term return assumption with a 4.30% 20-year tax-exempt municipal bond rate because assets are projected to deplete before all benefits are paid).
- LABF — 6.64% (blended single equivalent rate).
- PABF — 6.66% (blended single equivalent rate).
For the aggregate view, the four anchor sets are summed and the baseline rate is the TPL-weighted average of the four fund baselines. Because the four baselines all cluster within 13 bps of each other, treating the aggregate as a single fund with one baseline is a close approximation.
GASB does not require disclosure of normal-cost sensitivity to the discount rate, and the funds’ FY2024 reports do not provide it. The engine approximates NC sensitivity by scaling NC by the same percentage change as TPL. This understates the true effect (NC has longer duration than TPL because new accruals pay out further into the future), but the dominant scenario impact comes from re-pricing the AAL/UAAL anyway.
What the projections don’t model
This is a scenario exploration tool, not a replacement for a full actuarial valuation. It does not capture:
- Cohort-level dynamics (Tier 1 vs Tier 2 differences)
- Specific mortality table updates
- Discount rate changes mid-projection
- Benefit enhancements or cuts from future legislation
- Asset allocation shifts and their correlation with returns
For authoritative projections, see each fund’s annual actuarial valuation.
Source code
This dashboard is open source. The data pipeline, projection engine, and UI are all in a public repository. Issues and PRs welcome.