- Core models: cooling
new cost = current × (SEER2_old ÷ SEER2_new); furnace× (AFUE_old ÷ AFUE_new); heat pumpkWh = delivered BTU ÷ (HSPF2 × 1,000). - Data: 5-yr per-ZIP weather reanalysis (Open-Meteo, CC BY 4.0) → load hours calibrated to 231 anchors (~8% median error, humid climates); rates recomputed monthly for every ZIP and utility (EIA-861 base, EIA monthly trend, OpenEI URDB seasonal marginal; NREL by-ZIP static fallback), with ZIP→utility assignments verified against federal service-territory boundaries (DHS/ORNL HIFLD); CO₂ from EPA eGRID.
- Stance: every judgment call took the side that understates savings — e.g., the keep-vs-replace model assumes the old unit survives all 15 years.
The core savings model
Heating and cooling energy cost scales inversely with rated efficiency. For cooling: new cost = current cost × (current SEER2 ÷ new SEER2). For furnaces: new gas cost = current gas cost × (current AFUE ÷ new AFUE). For heat pumps in heating: delivered heat is held constant at therms × 100,000 BTU × AFUE, and electricity use is delivered BTU ÷ (HSPF2 × 1,000) kWh. Nameplate SEER converts to SEER2 at ×0.95 and HSPF to HSPF2 at ×0.85 (split-system field corrections for the 2023 DOE test procedure). An optional age adjustment degrades the current unit's effective rating by 0.7%/yr (capped at 40%) to reflect coil fouling and refrigerant drift.
Estimating today's cost — two paths
Bills path (preferred). Annual cooling cost = (peak summer monthly bill − 12-month-average bill) × M × 12/(12−M), where M is your area’s equivalent full cooling months (annual cooling ÷ peak-month cooling). The ×12/(12−M) term corrects for the cooling already inside a 12-month average bill — without it the estimate understates by (12−M)/12, about 29% in a typical climate. M is served per ZIP from monthly climate normals, calibrated per climate zone against recent years of daily weather data (Open-Meteo), with a degree-day formula as fallback — and it stays editable. Only the seasonal excess is attributed to HVAC, which stays conservative for homes with pool pumps or other seasonal loads riding the same peak. The heating calculator differs deliberately: it uses winter peak minus the summer gas bill, and a summer gas bill contains no heating — a clean baseline that needs no average-month correction.
ZIP path. kWh = EFLH × tons × 12,000 ÷ (SEER2 × 1,000), then × the local rate. Equivalent full-load hours come from a per-ZIP dataset we built: five years of daily weather for every U.S. ZIP (Open-Meteo historical reanalysis, CC BY 4.0), degree-days computed by the Met Office sinusoid method, with cooling degree-days using a 50% apparent-temperature blend so humid climates carry their real latent load. Degree-days convert to EFLH through power curves fitted by moisture regime (IECC humid/dry) to 231 validated regional anchor points — median error ~8% in humid climates, ~15% in dry. California ZIPs additionally carry CEC Title 24 climate zones.
Prices, projections, and payback
Electricity rates come from a layered pipeline rather than a static table, recomputed monthly for every U.S. ZIP and served precomputed — so the number you see reflects your specific utility and tariff, not a state average. The base layer is each utility’s residential revenue ÷ sales from the latest EIA-861 filing (every U.S. utility), scaled forward by the state’s trailing-12-month price trend from EIA’s monthly retail-sales series (refreshed with each monthly recompute). Where the OpenEI U.S. Utility Rate Database (DOE) carries the utility’s current default tariff, the calculators go a step further and use a seasonal marginal rate — the price of the specific kWh the decision adds or removes — computed by walking the tariff’s tiers upward from a typical household baseline and weighting time-of-use periods by when the load actually runs: winter mornings and evenings for heat-pump heating, summer afternoons (squarely on TOU peak windows) for cooling. The heating calculator therefore prices at the winter marginal and the cooling calculator at the summer marginal; on flat or purely tiered plans the two coincide, and on TOU plans they correctly diverge. Each marginal is sanity-checked against the independently derived average and replaced by it when a stale tariff makes them diverge (outside a 0.62–1.9× band); the NREL “Rates by ZIP” dataset remains the final static fallback. Every ZIP’s utility assignment is cross-checked against the federal HIFLD Electric Retail Service Territories boundaries (DHS/DOE–Oak Ridge National Laboratory): several thousand ZIPs that commercial datasets mapped to the wrong utility were corrected against those official polygons, and previously unmapped ZIPs were filled from them. Where boundaries genuinely overlap, the ZIP resolves to the largest utility by residential customer count (the served utility is shown next to the climate-zone chip). A ZIP outside every mapped territory falls back to a regional estimate built from its three-digit ZIP prefix — labeled as such on screen rather than presented as exact. Known approximations: tier position on combined TOU+tiered plans is taken from total monthly usage, per-territory baseline-allowance variants of a tariff are collapsed to one, demand charges are not modeled, and discounted electrification tariffs (electric-home / heat-pump rates) are detected but not assumed — switching to one typically improves the economics further. The on-screen rate always stays editable; a number from your own bill beats every model. Gas prices default to the state residential winter median (EIA), filled by ZIP; entering your delivered price from a bill (total cost ÷ therms) is preferred. Simple payback = net installed cost after rebates ÷ first-year savings, undiscounted. Multi-year figures escalate fuel prices at a user-editable rate (default 3%/yr) and apply no discount rate — both choices are visible and changeable.
The keep-vs-replace projection
The keep path compounds three effects: utility-price escalation, efficiency degradation of the aging unit, and an expected-repair curve ($40 + $8·age + $0.8·age², capped at $900/yr, rescaled to the user's on-screen repair estimate). The replace path charges the full net install cost in year zero, near-zero repairs during the 10-year parts warranty, then restarts the degradation and repair curves from age zero. The model is deliberately generous to keeping: the old unit is assumed to survive the entire 15-year horizon with no catastrophic failure, and warranty labor charges are ignored on both sides. Units older than ~16 years get an R-22 refrigerant advisory but no cost penalty.
Carbon estimate
Avoided CO₂ = annual kWh saved × 15 years × the state grid intensity from EPA eGRID state output emission rates (U.S. average when the state is unknown), in metric tons; the gasoline-car equivalency uses EPA's ~4.3 t CO₂e per vehicle-year. Grid intensity is held constant over the horizon — on a decarbonizing grid this makes the figure an upper-range estimate, and we say so on the result.
Known limits — read before relying on the numbers
The models exclude: duct condition and installation quality (which can move real results ±10–25%); demand-charge rate structures (time-of-use and tier effects are now reflected in the seasonal marginal rates, with the approximations noted under Local rates); gas-meter fixed charges avoidable by full electrification (understates electrification savings); backup-heat costs for heat pumps in deep cold (overstates cold-climate heat-pump savings — we flag this on the result); AC savings when a heat pump also replaces a cooling system (run both calculators and add them); and home-value effects. HSPF2 is a national-profile seasonal rating; cold-climate results should be verified against the specific unit's capacity and COP at 17°F and 5°F. All outputs are estimates for education, not guarantees or professional advice.
Data sources
| Dataset | Used for | License |
|---|---|---|
| Open-Meteo historical weather reanalysis (5-yr daily, per ZIP) | Cooling/heating load hours | CC BY 4.0 |
| EIA-861 annual & EIA monthly retail sales | Utility average rates (base) and state monthly price trend | Public domain (U.S. gov) |
| OpenEI U.S. Utility Rate Database (DOE) | Default-tariff structures for seasonal marginal rates | CC0 |
| NREL / EIA-861 utility rates by ZIP | ZIP→utility mapping; static rate fallback | CC BY 4.0 |
| EPA eGRID state output emission rates | CO₂ avoided | Public domain |
| DOE/PNNL county climate-zone assignments; CEC Title 24 (JA2) | Zone labels (reference only) | Public domain / state |
Found an error or a better data source? That's exactly the kind of mail this site exists to receive — the correction will ship with attribution.