Savings Analysis

The Savings Analysis endpoint is the recommended place to go when you want to figure out how much money your residential customer can save by installing rooftop solar, answering the question, “What happens if I install a solar system with this configuration and these assumptions?” A savings analysis can tell you how much your customer’s electricity bill will be reduced by (“avoided cost”), how expensive your solar power will be over the life of the system (PPA or lease cost), and any number of other things, depending on how you configure the calculation. We have a great tutorial that defines the end to end steps you should follow. Read that before you continue here. Once you are familiar, this page dives into some of the details of how to get more out of your Savings Analysis call.

Running a Savings Analysis

Lets start with a common example of running a Savings Analysis to get our feet wet. For this example, your account would already have electricity usage and a solar model. You pass in the usage and solar profiles, PPA rate, cost escalation assumptions, and other important parameters you want to use for the calculation. Savings Analysis returns the complete results of the scenarios that you specify over the life of the project. Specifically, it returns a number of data series, each of which contains your cost and savings numbers for the corresponding scenario. By default, there are two series for each of these scenarios: without solar (“before”), solar itself (“solar”), and with solar (“after”). The first set of series contains monthly results for the first year of the analysis, while the second set of series contains annual results for the entire analysis period.

Here’s an example of a request. It includes load and solar profiles, a post solar tariff, a solar lease, and utility and solar cost escalators.

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
{
  "providerAccountId" : "example_account",
  "fromDateTime" : "2018-01-01",
  "propertyInputs" : [
  {
    "scenarios" : "before,after",
    "keyName" : "providerProfileId",
    "dataValue" : "load_profile"
  },
  {
    "scenarios" : "after,solar",
    "keyName" : "providerProfileId",
    "dataValue" : "solar_profile"
  },
  {
    "scenarios" : "after",
    "keyName" : "masterTariffId",
    "dataValue" : "518"
  },
  {
    "scenarios" : "before,after",
    "keyName" : "rateInflation",
    "dataValue" : "3.5"
  },
  {
    "scenarios" : "solar",
    "keyName" : "rateInflation",
    "dataValue" : "1.9"
  },
  {
    "scenarios" : "after,solar",
    "keyName" : "solarDegradation",
    "dataValue" : "1.5"
  }],
  "rateInputs" : [
  {
    "scenarios" : "solar",
    "chargeType" : "FIXED_PRICE",
    "rateBands" : [
    {
      "rateAmount" : 99.99
    }]
  }]
}

Switching Tariffs After Going Solar

Set the masterTariffId property on the after scenario:

1
2
3
4
5
{
    "scenarios" : "after",
    "keyName" : "masterTariffId",
    "dataValue" : "518"
}

Model Different System Sizes Efficiently

Sometimes you want to know what will happen if your PV system is half (or twice) the size that it is now. With the dataFactor parameter, you can do this without having to create an entirely new solar profile:

1
2
3
4
5
6
{
    "scenarios" : "after,solar",
    "keyName" : "providerProfileId",
    "dataValue" : "{providerProfileId}",
    "dataFactor" "0.5"
}

This also works for consumption profiles.

Set A Solar Lease or PPA Price

Add an item to the rateInputs array, set its scenario to solar, and set the charge type to FIXED_PRICE for a lease or CONSUMPTION_BASED for a PPA:

1
2
3
4
5
6
7
"rateInputs" : [ {
    "scenarios" : "solar",
    "chargeType" : "FIXED_PRICE",
    "rateBands" : [ {
      "rateAmount" : 137.05
    } ]
} ]

This example would set your first-year lease rate to $137.05 per month. These inputs are structured just like TariffRates.

Extend the Duration of the Projection

The default duration of a savings analysis is 20 years. For some customers, you may want to go longer – 25 years, for example. To do that, you can use the projectDuration property input parameter.

1
2
3
4
5
{
    "scenarios" : "before,solar,after",
    "keyName" : "projectDuration",
    "dataValue" : "25"
}

Run an Accurate Analysis with Annual Usage or Cost

It can often be difficult to get detailed usage data from a potential solar customer. Most of the time, this means that you have to do what you can with limited data. The savings analysis endpoint helps you here by giving you a simple way to do a detailed calculation if you only have one number: the customer’s annual energy consumption. If you instead know your customer’s annual electric cost, you can turn that cost into consumption with a simple Annual Bill Solve Request, and then run a saving analysis against the resulting annual kWh.

Here’s a bare-bones example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "providerAccountId" : "api-eg-01",
  "fromDateTime" : "2014-09-01",
  "propertyInputs" : [ {
    "scenarios" : "before,after",
    "keyName" : "baselineType",
    "dataValue" : "typicalElectricity"
  }, {
    "scenarios" : "before,after",
    "keyName" : "loadSize",
    "dataValue" : "5000",
    "unit":"kWh"
  } ]
}

The two input parameters that we use are baselineType and loadSize. baselineType tells the API that you want to use our database of hourly Typicals to do your analysis. It will automatically choose an appropriate load profile based on your account’s location, customer type and building type. loadSize tells the API how much energy your customer is using in a year. In this case, they’re using 5,000 kWh. The typical profile is scaled up or down to meet the target load.

Run an Analysis with Limited Customer Usage

Do you need to run a Solar Savings Analysis but have incomplete usage data for your customer? Genability’s APIs and tools can fill gaps in customer usage data. Building on the previous example, below are the most common usage scenarios we’ve come across along with our suggested approaches in Savings Analysis.

Usage Scenario Solution Summary of API Steps
No data Use a typical load profile for your
customer’s location.
- Create account with customer’s zip code
- Include SA parameter:

{“scenarios” : “before,after”,
“keyName” : “baselineType”,
“dataValue” : “typicalElectricity”,
“dataFactor” : “1””}


- Optionally scale typical up/down using dataFactor
Annual Usage Use a typical load profile scaled to
your customer’s annual usage.
- Create account with customer’s zip code
- Include SA parameters:

{“scenarios” : “before,after”,
“keyName” : “baselineType”,
“dataValue” : “typicalElectricity”,
{“scenarios” : “before,after”,
“keyName” : “loadSize”,
“dataValue” : “12000””,
“unit” : “kWh”}
Monthly Usage Use Intelligent Baselining (aka IB)
to extrapolate one or more months of
usage to rest of year and interpolate
to hourly.
- Create account with customer’s zip code
- Create profile with 1 or more months of usage
- Include top level SA parameter:

{“providerAccountId” : “api-eg-01”,
“fromDateTime” : “2018-01-01”,
“useIntelligentBaselining” : “true”,


- Use IB is true by default
Annual Bill Use Bill Solve to turn annual cost
to usage, then scale typical load
profile to annual usage.
- Create account with customer’s zip code and tariff
- Run Annual Bill Solve (input: annual cost,
output: annual usage)
- Include SA parameters:

{{“scenarios” : “before,after”,
“keyName” : “baselineType”,
“dataValue” : “typicalElectricity”,
{“scenarios” : “before,after”,
“keyName” : “loadSize”,
“dataValue” : “usage_from_bill_solve””,
“unit” : “kWh”}


- Alternatively, but less accurate, create a profile on
account with annual usage output from Bill Solve and
include the profile id in your SA call.
Monthly Bill Use Bill Solve to turn monthly cost
to usage, then use Intelligent Baselining
to extrapolate one or more months of
usage to rest of year and interpolate to
hourly.
- Create account with customer’s zip code and tariff
- Run Monthly Bill Solve for each bill (input: monthly
cost, output: monthly usage)
- Create profile with 1 or more months of usage
from Bill Solve
- Include top level SA parameter:

“useIntelligentBaselining” : “true”

- Use IB is true by default
Hourly Usage Use Intelligent Baselining to align
your customer’s past hourly usage
with future Savings Analysis dates.
This aligns weekdays and weekends
in past usage with a future analysis
year and may result in small
differences from the actual load profile.
- Create profile with customer’s past hourly usage
- Include top level SA parameter:

“autoBaseline” : “true”

- Alternatively, run an SA on non-IB’d past hourly
usage with the latest tariff rates using:

“autoBaseline” : “false”
“tariffEffectiveOn” : “YYYY-MM-DD”

Further Reading

The Savings Analysis endpoint provides a lot of flexibility, which allows you to set up complex pre- and post-solar parameters when the situation calls for it. Consult the Savings Analysis documentation for details.