Built around the verified LES 2026 retail tariff, the 65% summer demand ratchet, and power-factor penalties.
Annual total bill (Tier 3, optimized) for each scenario ร rate class. Click any cell to switch the active context. โ flags scenarios that don't meet a rate class's eligibility โ shown for comparison only.
12 months of bills. Note how summer peaks anchor the ratchet floor for the next 11 months โ that's why January's billing demand may still be high.
LLP customers pay $2.60/kVAR above the 0.93 PF threshold. GSD customers don't see this charge.
Modern high-frequency IGBT switch-mode rectifiers vs legacy SCR thyristor units. Numbers are per single-line retrofit.
LES Sustainable Energy Program publishes per-equipment incentives. They reduce net capex on Tiers 2 and 3.
| Equipment | Incentive | Estimated offset for this scenario |
|---|
Every key assumption exposed as a slider. The hero number updates instantly. Drag any slider to its worst case to defend the model floor.
Would extending the day shift to capture cheap overnight hours pay for itself?
Read the full plain-English walkthrough โ explainer.html
Tl;dr: V2's "AI energy arbitrage" premise was wrong โ real industrial customers pay flat retail rates. V3 rebuilds the savings story around the demand ratchet, power-factor penalties, and rectifier modernization. All numbers traceable in the Receipts section below.
DM me on LinkedIn for V4 updates.
Click any of these to see exactly which rows produced the numbers on this page. Each table is straight from the source-of-truth Supabase database. Use the CSV button to pull a copy into Excel and verify the math yourself.
Source: monthly_bills table. 960 rows = 4 scenarios ร 5 rate classes ร 4 tiers ร 12 months. Each row is a fully-computed LES retail bill including customer charge, demand charge, energy charge, and (LLP only) excess-kVAR penalty.
| Month | Scenario | Rate | Tier | Billing demand | Ratchet floor | kWh | PF penalty | Total bill |
|---|
Source: annual_summaries table. 80 rows = 4 scenarios ร 5 rate classes ร 4 tiers. Each shows annual total bill and savings vs current-state.
| Scenario | Rate | Tier | Annual total | vs Current state | Eligible? |
|---|
Source: config/les_rate_schedule.json โ copied verbatim from the LES 2026 Rate Schedules Final PDF, sheets for Schedule LLP (Rates 15/16/39) and Schedule GSD (Rates 11/12).
| Rate | Customer $/mo | Demand + Fac $/kW | Summer ยข/kWh | Winter ยข/kWh | Excess kVAR |
|---|
Source: config/workload_scenarios.json. The plating jobs the scheduler places into the planning window. Each scenario also has continuous loads (chiller, DI/RO, compressed air), default rate class, power factor, and rectifier specs.
| Job ID | kWh required | Duration (h) | Rated kW | Deadline (h) | Lights-out eligible |
|---|
Source: hourly_prices table. 12,119 hourly LMPs from gridstatus (SPP North Hub). Used in V1/V2 for arbitrage modeling โ now parked for V4 demand-response sizing since retail customers don't see wholesale prices.
| Timestamp (UTC) | Node | $/MWh | Source |
|---|
Source: backtest_results table. V1/V2 daily savings rows (363 days ร 4 scenarios ร 2 schedulers + 364 continuous-load rows = 2,904 rows total). These numbers are now superseded by V3's monthly_bills table above โ kept here only so the V2โV3 correction is verifiable.
| Date | Scenario | Scheduler | Optimized | Realistic baseline | Savings | Energy | Demand | Peak kW |
|---|
Source: model_runs table. XGBoost training records from V1/V2. Parked for V4 demand-response sizing.
| Trained at (UTC) | WMAPE | RMSE | Train window | Test window | Artifact |
|---|
Source: rate_schedule table (legacy single-row from V1/V2 with the WRONG $15.03 demand charge). Kept for V2โV3 audit trail. V3 uses config/les_rate_schedule.json (table 3 above).
| Field | Value |
|---|