Skip to content

Time-of-use rate what-if (flat vs TOU from interval usage) #79

Description

@delabrcd

Sub-issue of #76 (depends on interval ingest). Recommended first-wave — highest "real dollars" payoff. Related: #48 (supply/ESCO what-if).

What

Compute what the bill would have been under National Grid's optional time-of-use (TOU) rate plans vs. the current flat rate, using actual hourly usage.

  • Define the available TOU rate schedules (peak / off-peak / super-off-peak windows + per-window $/kWh) as data.
  • Replay stored interval usage against each schedule → hypothetical monthly/annual cost.
  • Output a defensible "switch to plan X and save ~$Y/yr" (or "stay put") number, with the comparison charted.
  • Load-shift advice: estimate savings from moving discretionary loads (EV charging, dishwasher, laundry) into off-peak windows.

Why interval data

A TOU bill depends entirely on when energy is used. Monthly totals physically cannot produce this — this feature is impossible without interval data.

Implementation notes

  • TOU schedules as structured config (windows + rates + effective dates), not hardcoded in logic — NY TOU windows change.
  • Replay/costing engine in app/src/lib/series.ts (or a sibling), pure + tested against a hand-worked example day.
  • Keep this clearly separate from billed-cost logic — it's a hypothetical; do not wire it into /api/verify or the real bill numbers (AGENTS.md rule 1).
  • Charts via chartSpec.ts.

Open question

  • Which TOU plans does NG Upstate-NY actually offer residential, and their current windows/rates? (research task within this issue)

Acceptance criteria

  • TOU rate schedule(s) defined as config.
  • Replay engine producing hypothetical cost per plan, unit-tested.
  • Flat-vs-TOU comparison surfaced with a clear $ delta.
  • Optional load-shift savings estimate.
  • No coupling to real billed-cost / /api/verify.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:analyticsDerived metrics / insightsarea:uiDashboard UI / layoutenhancementNew feature or requestpriority:mediumSolid backlog: self-contained value, no urgency

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions