Intelligent Baselining


What is Intelligent Baselining?

Intelligent Baselining is a capability available in our various account calculators and usage profile APIs that allows you to move usage data from one time period to another in an inteligent way. In other words you can take historical usage, such as actual bills or meter data, and move that into a period of time that you don't have data for, such as the future. This allows you to make forecasts. It also enables better estimates from small samples of customer usage data. As such one populate use case for Inteligent Baseline is running savings calculations without having to obtain hourly meter data or even 12 months of bills from customers.

There are two main aspects to Intelligent Baselining: Interpolating hourly (time-of-use) usage from monthly readings, and extrapolating annual usage from less than 12 months of bills.

Interpolating Time-of-Use

With Intelligent Baselining off, our code will assume an even usage rate: a monthly bill reading is divided by the number of hours in the interval and each hour is assumed to have the same number of kWh. While this works well for most residential tariffs, residential time-of-use tariffs are becoming more popular. Intelligent Baselining uses our Typical Baselines to interpolate hourly use more realistically.

Extrapolating from less than 12 months of bills

Previously, running a Savings Analysis required a full year of usage coverage. With Intelligent Baselining on, you can use as little as one monthly bill to estimate usage. (Using two or more months of billing data if available will increase accuracy.) We use our Typical Baselines which vary by Utility Climate Zone.

How to Enable Intelligent Baselining

You use the autoBaseline property to enable or disable this feature. Below shows you how it defaults :-

API Default Value Notes
Savings Analysis true You usually want to run a Savings Analsysis with this feature on. Only when you explicitly want it off should you pass in this property.
On Demand Cost Calculation false Unlike Savings Analysis, this defaults to false (off), so explicitly switch it on.
On Demand Mass Calculation false Again, unlike Savings Analysis, this defaults to false (off). Note you can set it for each "inner" calc
Usage Profile false We also support IB when requesting usage data from a profile.

The method of Intelligent Baselining by Default

There is a second property, useIntelligentBaselining, that can be used to explicitly control which method (algorthm) we use to actually move usage data when autoBaseline is true. Set the useIntelligentBaselining property to true and we will intelligently interpolate and extrapolate usage into hourly intervals based on what is typical for the calcs circumstances. This is what you need to do if you have less that 12 months of usage data. Setting useIntelligentBaselining to false, and we will use a simple time-weighted proration approach to interpolating larger usage intervals. In this case, we do not extrapolate usage data, so you need at least 12 months of historical usage data in order for us to move it.

For more details of the actual logic we apply, please read our blog : Smarter Savings Forecasts with Intelligent Baselining.

Note also that the useIntelligentBaselining properties default can actually be set at an organizations level. If you would like to change the default for a given appId, contact us and we can set a flag on our end that will cause all future requests that dont explicitly setuseIntelligentBaseliningto the value you want. You'll still be able to control whether Inteligent Baselining actually occurs on a given request by settingautoBaselinetofalse`.

Maximizing the Accuracy of Intelligent Baselining

There are a few things you can do to make sure that you take the best advantage of the data you have.

  1. Enter the dates with as much accuracy as you have. If you have a "July bill", don't just enter "2015-07-01" and "2015-08-01" for the fromDateTime and the toDateTime. Most likely, the actual billing period is not the exact month; it might start on June 26th or July 8th, for example. Enter the correct billing dates.
  2. Some utilities, such as PG&E, represent billing periods differently than we do. This difference is captured in the Billing Period Representation object, which is returned when you obtain the LSE object with extended fields. Make sure that you take this difference into account when entering billing dates.
  3. Don't enter a value of zero for months that you don't know about and want us to extrapolate. For instance if you have one bill from July 15th through August 15th, enter just that one bill. Do not enter bills for August 15th through September 15th, etc. with a value of zero kWh.
  4. Non-contiguous months work as long as you enter the dates correctly. If you have an April bill and a June bill, enter them both to increase the accuracy. (As above, just leave May and June out, don't enter them with values of zero.)

Of course, if you want the absolute best accuracy, especially for TOU tariffs, upload an 8760 of hourly meter data. But that can be difficult and time-consuming to get; Intelligent Baselining squeezes as much accuracy as we can out of whatever data you can give us.


You can determine from the results of a Savings Analysis call whether Intelligent Baselining was used or not. If you ask for extended fields (by setting the top-level parameter "fields" to "ext"), you can examine the assumptions field of the Scenarios. The intelligentBaselining Assumption will be true if Intelligent Baselining was used, false if not. If the Assumption is not present, that means that Intelligent Baselining was not relevant (e.g. a full year of hourly data was available).

If Intelligent Baselining was used, an additional typicalBaseline Assumption is present; its value is a UUID string that identifies the baselineId of the Typical Baseline that was used in combination with your data.