This How-To is for Signal customers and gives a strategy for now to model usage when you have access to less than a years worth of bills. With the help of Genability’s Typical Baseline API, you can turn three (or two, or one) bills into twelve with just two calls and a little bit of code.

Switch and Conduct customers have a simpler approach! They can take advantage of our Inteligent Baselining capabilities, and should stop, and instead read our Inteligent Baselining How To rather than continue reading this page.

Problem: Not Enough Data

It’s common to run into potential customers who don’t know how much electricity they use. Sometimes, these customers have access to their utility’s online bill service or they have good bill records, and you can use that data to develop a usage model for them. Other times, this isn’t possible. Maybe your customer’s utility has an online service that isn’t very good, or maybe the customer throws out their electricity bills as soon as they pay them. Either way, this can be a major impediment to doing an accurate savings analysis.

Based on how many bills you have access to, and what those bills contain, we have some strategies in this page in order to estimate a good quality full year of usage data.

Primer on our Typical Baselines

We are going to use our Typical Baselines quite heavily in this How To, so its worth taking a detour and getting up to speed with them before we go too much further. The typical baseline service provides a collection of building usage profiles from around the country, organized by location, customer type, and building type. They’ve been developed by taking reputable building usage models (such as RECS and CEBECS), as well as dynamic profiles published by certain Utilities, and calebrating them with the data from thousands of analyses that have been done with the Genability API.

Get the best Typical Baseline

So lets get a typical baseline for the building. For our example we are assuming the following scenario: a residential customer living in San Francisco, with ZIP code 94123. We can get a baseline for this person with the following request:

GET /rest/v1/typicals/baselines/best?addressString=94123&buildingType=singleFamilyAttached&excludeMeasures=false&groupBy=MONTH&measureUnit=proportion

This request returns a baseline profile with a couple of special options. First, we’ve grouped the result by month. You can also choose to group by hour, but month is good enough for this scenario. We’ve also specified that we want the results to be returned as proportion rather than monthly consumption. This will make the scaling of our usage data a little more straightforward.

Among other things, this request will return a series of measurements:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"measures": [
{
    "i": 1,
    "v": 8.84306292
},
{
    "i": 2,
    "v": 7.72489182
},
{
    "i": 3,
    "v": 8.47541736
},
{
    "i": 4,
    "v": 8.01065365
},

/* edited for length */

{
    "i": 12,
    "v": 8.81430209
}]

Each measurement is indexed by the month of the year that it corresponds to, with 1 representing January, 2 representing February, and so on. Since we chose to have the results returned as proportions, each value represents the proportion of a typical customer’s annual usage that is used in that month. So, in this example, a typical customer in ZIP code 94123 uses 8.84% of their annual total in January.

If you want to know more about Typical Baselines, take a look at their API Reference page.

Now you know enough about Typical Baselines to be dangerous, lets get back to the problem at hand!

Case 1 : I don’t have ANY bills!

If you don’t have access to any bills at all, then you can use the typical baseline by itself without having to do any factoring.

Here’s how you request an on-demand calc purely using a typical baseline for usage:

POST /rest/v1/calculate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "fromDateTime" : "2018-01-01",
  "toDateTime" : "2019-01-01",
  "tariffEffectiveOn" : "2017-10-01",
  "masterTariffId" : 522,
  "detailLevel" : "CHARGE_TYPE",
  "groupBy" : "MONTH",
  "tariffInputs" : [ {
    "keyName" : "baselineType",
    "dataValue" : "typicalElectricity",
    "operator" : "+",
    "dataFactor" : 1
  }]
}

… and when you do this you get back the following (note the typical baseline has been projected into the future)…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
{
    "status": "success",
    "count": 1,
    "type": "CalculatedCost",
    "requestId": "36f86e22-4575-4ee1-9614-1133d9faf071",
    "results": [
        {
            "calculatedCostId": "ade01e6b-b067-401c-ac61-3a98437614f1",
            "masterTariffId": 522,
            "tariffName": "Residential",
            "totalCost": 1500.01,
            "fromDateTime": "2018-01-01T00:00:00-08:00",
            "toDateTime": "2019-01-01T00:00:00-08:00",
            "currency": "USD",
            "summary": {
                "subTotalCost": 1500.01,
                "taxCost": 0,
                "totalCost": 1500.01,
                "adjustedTotalCost": 1467.17,
                "kWh": 6749.83,
                "kW": 2.01
            },
            "accuracy": 100,
            "items": [
                {
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2018-02-01T00:00:00-08:00",
                    "quantityKey": "fixed",
                    "rateAmount": 0,
                    "itemQuantity": 0,
                    "cost": 0,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2018-02-01T00:00:00-08:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.22060799,
                    "itemQuantity": 521.569558,
                    "cost": 115.06241184,
                    "chargeType": "CONSUMPTION_BASED"
                },
                {
                    "fromDateTime": "2018-02-01T00:00:00-08:00",
                    "toDateTime": "2018-03-01T00:00:00-08:00",
                    "quantityKey": "fixed",
                    "rateAmount": 0,
                    "itemQuantity": 0,
                    "cost": 0,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-02-01T00:00:00-08:00",
                    "toDateTime": "2018-03-01T00:00:00-08:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.22041558,
                    "itemQuantity": 469.476287,
                    "cost": 103.4798881,
                    "chargeType": "CONSUMPTION_BASED"
                },
                {
                    "fromDateTime": "2018-03-01T00:00:00-08:00",
                    "toDateTime": "2018-04-01T00:00:00-07:00",
                    "quantityKey": "fixed",
                    "rateAmount": -17.4,
                    "itemQuantity": 1,
                    "cost": -17.4,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-03-01T00:00:00-08:00",
                    "toDateTime": "2018-04-01T00:00:00-07:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.21161512,
                    "itemQuantity": 449.181008,
                    "cost": 95.05349291,
                    "chargeType": "CONSUMPTION_BASED"
                },
                {
                    "fromDateTime": "2018-04-01T00:00:00-07:00",
                    "toDateTime": "2018-05-01T00:00:00-07:00",
                    "quantityKey": "fixed",
                    "rateAmount": 0,
                    "itemQuantity": 0,
                    "cost": 0,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-04-01T00:00:00-07:00",
                    "toDateTime": "2018-05-01T00:00:00-07:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.21444547,
                    "itemQuantity": 454.546621,
                    "cost": 97.47546378,
                    "chargeType": "CONSUMPTION_BASED"
                },
                {
                    "fromDateTime": "2018-05-01T00:00:00-07:00",
                    "toDateTime": "2018-06-01T00:00:00-07:00",
                    "quantityKey": "fixed",
                    "rateAmount": 0,
                    "itemQuantity": 0,
                    "cost": 0,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-05-01T00:00:00-07:00",
                    "toDateTime": "2018-06-01T00:00:00-07:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.21177138,
                    "itemQuantity": 505.177483,
                    "cost": 106.98213272,
                    "chargeType": "CONSUMPTION_BASED"
                },
                {
                    "fromDateTime": "2018-06-01T00:00:00-07:00",
                    "toDateTime": "2018-07-01T00:00:00-07:00",
                    "quantityKey": "fixed",
                    "rateAmount": 0,
                    "itemQuantity": 0,
                    "cost": 0,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-06-01T00:00:00-07:00",
                    "toDateTime": "2018-07-01T00:00:00-07:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.22472482,
                    "itemQuantity": 611.405771,
                    "cost": 137.39805183,
                    "chargeType": "CONSUMPTION_BASED"
                },
                {
                    "fromDateTime": "2018-07-01T00:00:00-07:00",
                    "toDateTime": "2018-08-01T00:00:00-07:00",
                    "quantityKey": "fixed",
                    "rateAmount": 0,
                    "itemQuantity": 0,
                    "cost": 0,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-07-01T00:00:00-07:00",
                    "toDateTime": "2018-08-01T00:00:00-07:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.23135542,
                    "itemQuantity": 724.764803,
                    "cost": 167.6782654,
                    "chargeType": "CONSUMPTION_BASED"
                },
                {
                    "fromDateTime": "2018-08-01T00:00:00-07:00",
                    "toDateTime": "2018-09-01T00:00:00-07:00",
                    "quantityKey": "fixed",
                    "rateAmount": 0,
                    "itemQuantity": 0,
                    "cost": 0,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-08-01T00:00:00-07:00",
                    "toDateTime": "2018-09-01T00:00:00-07:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.23358733,
                    "itemQuantity": 762.539459,
                    "cost": 178.11955625,
                    "chargeType": "CONSUMPTION_BASED"
                },
                {
                    "fromDateTime": "2018-09-01T00:00:00-07:00",
                    "toDateTime": "2018-10-01T00:00:00-07:00",
                    "quantityKey": "fixed",
                    "rateAmount": 0,
                    "itemQuantity": 0,
                    "cost": 0,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-09-01T00:00:00-07:00",
                    "toDateTime": "2018-10-01T00:00:00-07:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.2311805,
                    "itemQuantity": 698.672772,
                    "cost": 161.51952077,
                    "chargeType": "CONSUMPTION_BASED"
                },
                {
                    "fromDateTime": "2018-10-01T00:00:00-07:00",
                    "toDateTime": "2018-11-01T00:00:00-07:00",
                    "quantityKey": "fixed",
                    "rateAmount": -17.4,
                    "itemQuantity": 1,
                    "cost": -17.4,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-10-01T00:00:00-07:00",
                    "toDateTime": "2018-11-01T00:00:00-07:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.21641369,
                    "itemQuantity": 544.266359,
                    "cost": 117.78669109,
                    "chargeType": "CONSUMPTION_BASED"
                },
                {
                    "fromDateTime": "2018-11-01T00:00:00-07:00",
                    "toDateTime": "2018-12-01T00:00:00-08:00",
                    "quantityKey": "fixed",
                    "rateAmount": 0,
                    "itemQuantity": 0,
                    "cost": 0,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-11-01T00:00:00-07:00",
                    "toDateTime": "2018-12-01T00:00:00-08:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.21839729,
                    "itemQuantity": 485.510307,
                    "cost": 106.03413532,
                    "chargeType": "CONSUMPTION_BASED"
                },
                {
                    "fromDateTime": "2018-12-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "quantityKey": "fixed",
                    "rateAmount": 0,
                    "itemQuantity": 0,
                    "cost": 0,
                    "chargeType": "FIXED_PRICE"
                },
                {
                    "fromDateTime": "2018-12-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "quantityKey": "consumption",
                    "rateAmount": 0.22073111,
                    "itemQuantity": 522.72286,
                    "cost": 115.38119711,
                    "chargeType": "CONSUMPTION_BASED"
                }
            ],
            "assumptions": [
                {
                    "keyName": "tariffId",
                    "dataType": "INTEGER",
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "dataValue": "3288101"
                },
                {
                    "keyName": "dailyMedicalAllowance",
                    "displayName": "Daily Medical Allowance ",
                    "description": "Residential customers on a medical allowance get additional quantities of energy at the lowest (baseline) price. The medical allowance is a daily value. ",
                    "dataType": "DECIMAL",
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "dataValue": "0",
                    "accuracy": 80
                },
                {
                    "keyName": "hasCaliforniaClimateCredit",
                    "displayName": "Has California Climate Credit",
                    "description": "Small Business Customer California Climate Credit: For purposes of receiving the California Climate Credit from the State of California, non-residential customers receiving service on a General Service or Agricultural Pumping rate schedule with an electric Billing Demand that does not exceed 20 kW in more than three months within the previous twelve-month period are designated as Small Business Customers and are eligible to receive the California Climate Credit. The credit is applied monthly, per billing period, on a $/kWh basis. For customers that lack twelve months of billing data, eligibility is based on the customer's rate schedule and the number of times the customer has exceeded 20 kW. Customers who meet the eligibility criteria for Small Business Customers but who are designated as Emissions-Intensive and Trade-Exposed (EITE) are not considered Small Business Customers under this Special Condition and are not eligible to receive the California Climate Credit. Customers receiving generation services from the City of Cerritos, the City of Corona and the Eastside Power Authority are not eligible to receive the California Climate Credit.\r\n",
                    "dataType": "BOOLEAN",
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "dataValue": "true",
                    "accuracy": 80
                },
                {
                    "keyName": "hasCAEnergySurchargeExemption",
                    "displayName": "Has Energy Surcharge Exemption",
                    "description": "Exemptions for CA Energy Surcharge apply to the following:\r\n1. Federal Agencies\r\n2. American National Red Cross facilities\r\n3. Energy consumed on Indian reservations\r\n4. Foreign consular employees\r\n5. Federal Credit Unions",
                    "dataType": "BOOLEAN",
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "dataValue": "false",
                    "accuracy": 80
                },
                {
                    "keyName": "smartMeterOptOut",
                    "displayName": "Has Smart Meter Opt-Out",
                    "description": "Customers  who elect to opt-out of receiving a smart meter and choose to retain a non-smart meter, are subject to the Smart Meter Opt-Out fees.\r\n\r\nSmart Meter Opt-Out Customers are subject to one-time, up-front fee and a recurring monthly fee ",
                    "dataType": "BOOLEAN",
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "dataValue": "false",
                    "accuracy": 80
                },
                {
                    "keyName": "isSmartRateCustomer",
                    "displayName": "Is SmartRate Customer",
                    "description": "The residential SmartRate program is a voluntary rate supplement to the customer's \r\notherwise applicable rate schedule (OAS).\r\nThe customer will be billed for all regular charges applicable under the customer's OAS.  \r\nAdditional charges (based on usage during SmartDay High-Price Periods) and \r\nSmartRate credits will be determined according to the rates specified in this schedule.  The customer must have a SmartMeter system to participate in the residential \r\nSmartRate program",
                    "dataType": "BOOLEAN",
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "dataValue": "false",
                    "accuracy": 80
                },
                {
                    "keyName": "utilityEmployee",
                    "displayName": "Is Utility Employee",
                    "description": "Applicable to domestic service utility employees ",
                    "dataType": "BOOLEAN",
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "dataValue": "false",
                    "accuracy": 80
                },
                {
                    "keyName": "powerChargeIndifferenceAdjustmentVintageYear",
                    "displayName": "Power Charge Indifference Adjustment  Vintage Year ",
                    "description": "The adjustment (either a \r\ncharge or credit) is intended to ensure that customers that purchase electricity from \r\nnon-utility suppliers pay their share of cost for generation acquired prior to 2003",
                    "dataType": "STRING",
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "dataValue": "None",
                    "accuracy": 80
                },
                {
                    "keyName": "solarChoiceCustomerCategory",
                    "displayName": "Solar Choice Customer Category",
                    "description": "The customer is a solar choice customer  taking service under Schedule E-GT. The customer will pay the applicable Program Charge based on the year service under this schedule was started. ",
                    "dataType": "STRING",
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "dataValue": "None",
                    "accuracy": 80
                },
                {
                    "keyName": "territoryId",
                    "displayName": "Territory",
                    "description": "Territory where tariff is operational",
                    "dataType": "INTEGER",
                    "fromDateTime": "2018-01-01T00:00:00-08:00",
                    "toDateTime": "2019-01-01T00:00:00-08:00",
                    "dataValue": "3534",
                    "accuracy": 80
                }
            ]
        }
    ]
}

Case 2 : I just have one simple bill

If you have on recent bill that has one kWh value on it, then we recommend simply factoring the best typical baseline up or down to the size of consumption this bill represents. i.e.

  1. Get the typical baseline, making sure to request intervals for the date range of your bill (example below).
  2. determine a scale factor by dividing the bills usage by the sum of the intervals returned in 1.
  3. pass this scale factor into the calculation via the dataFactor property (see example from Case 1 above). This will scale the whole year by the same factor.

Here’s an example of the API reqest from #1 above, with the key arguments being the intervalFromDateTime and intervalToDateTime that should match the date range of your bill:

POST /rest/v1/typicals/baselines/best?postCode=94105&country=US&buildingType=largeHotel&excludeMeasures=false&intervalFromDateTime=2014-04-15&intervalToDateTime=2014-05-21&groupBy=DAY

Case 3 : I have multiple bills or TOU usage

When you have more than one usage value, such as if you have a split bill, a TOU bill, or more than one bill, then the computation gets a little more involved. What we are suggesting here is just one way of doing things.

  1. For each bill you have, run a bill matching calculation. This will break the TOU usage inputs into specific “frames” (date and time intervals with pro-rated usage). If you use a detailLevel of CHARGE_TYPE and groupBy of ALL you will get results back that are suitable for the next step.
  2. For each “frame” above, perform the scale factor logic similar to Case #2, but just over the hours of the frame.
  3. Take the sum of all the factored frames, and use it to determine what needs to be used to factor all the remaining hours that you have not yet touched.

Contact us for more details!