Rate Engine & Interface
For a commodity like electricity where you can’t tell one electron from another, the real user experience is the cost. So then why are they so often so confusing?
After building rate calculators for behemoths like PG&E, we took a step back and decided to design a rate interface from scratch. Our goals were:
- Transparent to the developer. Unlike software staples like e-commerce or to-do lists, rates can be intimidating. What’s a load profile do, and how does it tie into a rate? What are all these rate components? We wanted there to be minimal confusion.
- Fast. Like, really fast. Calculations happen pretty much instantly because the compiled version is written in javascript and therefore executed locally on the browser, not some distant server.
- Dependenable. We wrote ours in typescript (aka the types of variables we pass around are strictly defined) and have 100% test coverage (aka each function has at least one test).
The result is blazing fast and full featured. Take it for a spin below.
Load Profile
Lost in the discussions about rates is often the most important input - the load profile. It’s like knowing a pencil costs ten cents, but not knowing how many pencils you’re ordering.
We made the load profile a first-class citizen of our rate engine. This means you can filter the load profile without calculating any rates. Here's a sample for ComEd's average 2019 load, graphed by hour and segregated by weekdays and weekends.
ComEd's Average 2019 Load
How do we get here? First and foremost, filtering the load profile is as easy as writing a filter:
The filters available allow you to dig into any month, hour, day, or even holiday. The full list of optional filters are:
Once filtered, the typical sum, average, and count methods are available. These methods can be combined and recombined. For example, to get the average of weekday loads from 1am to 2am, you can simply write:
That's right, you can get any information and describe any behavior with just a few functions.
Costs
When the load profile is so dissectable, rates and their associated costs become a pleasure to work with. Simply slide the rate elements and see the results.
To highlight the way we can segment the rate components from the rate elements, we'll also add a small Fuel Cost Adjustment
of $0.05/kWh.
An Average 2019 ComEd Customer
As you can see, we built the rate engine to be able to quickly and easily differentiate between the cost classifications, the rate elements, and even the rate element components. As time-of-use rates become increasingly popular, seeing the data with such granularity provides power for
Applications
Hopefully we didn’t bury the lede. The point of all of our efforts is to be able to scale the way rate calculations are done today. We already used a primitive version of our rate engine for PG&E's EV Savings Calculator, and the speed really shines. Despite filtering between 36 load profiles and applying it to a number of rates, the graph reacts as fast as a user slides the inputs:

We’re already tinkering on a few other applications that harness this speed and user-friendliness, but if you think this might be useful for you, please reach out to Eugene (our rates person) at eugene@bellawatt.com. He has years of regulatory consulting experience including expert witness testimony on cost of service and rate design, and still thinks this is one of the neatest things he's ever built.