How PennyCalc Builds and Verifies Calculators

Michael · Last updated: May 8, 2026

From the desk of Michael: ex-consultant, builds the calculators and the math. See more by Michael.

Where the numbers come from, who reviews the math, what we update and when, and how we handle conflicts between sources.

This page documents PennyCalc's editorial and engineering process. Last full review: May 8, 2026.

Advertisement

Source hierarchy

For any number that appears on a PennyCalc page, we use the following source hierarchy in order of preference:

  1. Primary statutory or regulatory source. IRS Notices and Revenue Procedures for tax limits. SSA Office of the Chief Actuary for Social Security wage base. CMS for Medicare premiums. DOL Wage and Hour Division for minimum wage. Federal Reserve H.15 for interest rate benchmarks. Freddie Mac PMMS for mortgage rates.
  2. Government statistical agency. BLS for employment, CPI, and wage data. BEA for GDP and personal income aggregates. Census Bureau for demographic baselines. FHFA for conforming loan limits and county-level home price indices.
  3. Industry research with public methodology. EBRI Issue Briefs for retirement plan participation data. ICI Investment Company Fact Book for fund-level statistics. Vanguard "How America Saves" annual report. Fidelity retirement health spending estimates. Black Knight Mortgage Monitor for refinance and rate-lock data. Damodaran/NYU dataset for long-run equity returns.
  4. Tax Foundation, Bankrate, Kiplinger. Used for cross-referencing only, never as primary source for a numerical claim.

Every numerical claim that appears on a PennyCalc page should be traceable to a tier 1 or tier 2 source within two clicks (the calculator page links to a history page; the history page cites the source).

What we update and when

Different categories of content have different update cadences:

Content Cadence Trigger
Tax brackets, standard deduction, AMT thresholds Annual IRS Revenue Procedure release each fall
401(k), IRA, HSA contribution limits Annual IRS Notice (401k/IRA) in October-November; Revenue Procedure (HSA) in May
Social Security wage base Annual SSA OACT release each October
Medicare premiums and IRMAA brackets Annual CMS Federal Register notice each fall
Mortgage rates, savings rates Weekly Freddie Mac PMMS Thursday release; Federal Reserve H.15
State income tax brackets and property tax rates Annual State revenue department releases (varies by state)
Editorial commentary and FAQ Continuous Significant legislative changes, source updates, reader feedback

Every page carries a "Last updated" date. When we change a numerical claim or add a new section, we update that date. When we make minor copy edits without changing factual content, we don't.

Who reviews each calculator

Every calculator that ships on PennyCalc has been reviewed by at least two of the three of us. The review process for a new calculator:

  1. Math implementation by Michael. The pure-JavaScript module that does the calculation lives under src/calculators/ and is independently testable. Each module has a corresponding test file under tests/calculators/.
  2. Test coverage review against published examples. For tax-related calculators, we use IRS Publication examples (e.g., IRS Pub 17 Schedule SE worksheet) as the test cases. For mortgage calculators, we cross-check against bank rate calculator outputs at exact-match input combinations. The tests pass before any code is committed.
  3. Editorial review by Jessie. Every supporting paragraph, FAQ answer, and section heading. Voice consistency, source citation, edge-case coverage. Jessie has veto over copy that reads like generic financial-blog filler.
  4. Domain review by Josh for finance-heavy calculators (mortgage, capital gains, investment return, Roth-vs-Traditional). Josh sanity-checks against his own modeling work for whether the assumptions and edge cases hold up under high-earner scenarios (AMT, NIIT, RSU stacking, K-1 timing).
  5. Live cross-check against at least one independent reference for the headline number. For mortgage payment calculations, we cross-check against Bankrate, NerdWallet, and the lender's own calculators (Wells Fargo, Chase). For tax calculations, we cross-check against TaxAct or H&R Block's free calculator at matching inputs. Numbers must agree to within rounding.

How we handle source conflicts

Different sources sometimes disagree. Examples we've encountered:

  • State tax bracket boundaries sometimes differ between the Tax Foundation summary and the state revenue department's own publication. We use the state department of revenue's most recent publication as the source of truth.
  • Mortgage rate "average" varies between Freddie Mac PMMS, Bankrate's daily aggregator, and Mortgage News Daily. PMMS is our default because it has the longest continuous history (since 1971) and a transparent methodology. We note the source on every rate citation.
  • Long-run equity returns vary widely depending on the start year. We use the Damodaran/NYU dataset (1928-present) for the broadest defensible window. Where a calculator allows the user to set the return assumption, we make the default conservative (6.5 to 7% real for long-run S&P 500) and let users override.
  • Inflation indexation uses different CPI series in different programs. ERTA used regular CPI through 2017; TCJA switched federal tax brackets to chained CPI starting 2018. Social Security uses CPI-W (urban wage earners). We document which CPI series applies on each page that uses inflation-indexed numbers.

What we don't do

  • We don't give financial advice. PennyCalc tools let you run scenarios; they don't tell you what to do. Every calculator carries a disclaimer that the output is for educational purposes and you should consult a qualified professional for advice specific to your situation.
  • We don't fabricate statistics. If a number appears on a PennyCalc page, it has a citation or it's the output of a calculator running on inputs you provided. We don't quote unsourced "studies show" claims.
  • We don't promise precision the math doesn't have. Long-run projections (retirement, compound interest) are framed as ranges or as "what-if" scenarios with stated assumptions, not as forecasts. Tax calculations are framed as estimates that need to be reconciled against your actual return.
  • We don't change calculator outputs based on whether a user clicks an affiliate link. Affiliate revenue, where it exists, comes from the user choosing to navigate to a partner. The calculator math is identical regardless. We disclose affiliate relationships in plain text on every page that has one.

When we make mistakes

We have, and we will. The process when we find one (whether through reader email, a cross-check that comes back wrong, or a legislative change we missed):

  1. Fix the underlying calculator module. Add a regression test if one didn't exist.
  2. Update every page that displays the affected number. Update the "Last updated" date.
  3. If the error materially changed a published example or claim, add a small editor's note at the bottom of the affected page documenting what changed and when.

We don't quietly rewrite history. The history pages on this site are versioned in git; every change to a published claim is in the commit log.

Sources we publish, in full

On the history pages we publish, the underlying data is available in the page source as a structured array (year and value pairs). We do this so anyone can verify the chart against the cited source. The data files live under src/data/ in the GitHub repository:

Implementation by Michael. Editorial review by Jessie. Domain review by Josh on finance-heavy calculators. See /about/ for who we are.

Advertisement