HomeGuidesAPI ReferenceChangelog
Log In
Guides

Savings Analysis Tips & Tricks

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

Let's 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.

{  
  "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:

{  
    "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:

{  
    "scenarios" : "after,solar",  
    "keyName" : "providerProfileId",  
    "dataValue" : "{providerProfileId}",  
    "dataFactor" "0.5"  
}  

This also works for consumption profiles.

Applying Solar Equipment Costs (Lease/Loan, PPA, & Cash Purchases)

In your Switch analysis you can capture the cost of DER system in a few different ways. Below are examples for each, which are controlled via an object inside the rateInputs list. Regardless of the approach the scenarios field should be solar for this specific object.

Lease/Loan Example

Add an item to the rateInputs array set its scenario to solar, and set the charge type to FIXED_PRICE for a lease. Inside the rateBands list we provide the rateAmount set to our monthly cost. In the Savings Analysis, this value will be applied to each month in our simulation over the life of the project represented by our projectDuration in the request.

"rateInputs": [
    {
        "scenarios": "solar",
        "chargeType": "FIXED_PRICE",
        "rateBands": [
            {
                "rateAmount": 137.05
            }
        ]
    }
]

PPA Example

Add an item to the rateInputs array set its scenario to solar, and set the charge type to CONSUMPTION_BASED for a lease. Inside the rateBands list we provide the rateAmount set to our monthly cost. In the Savings Analysis, this value will be applied to each kWh produced by our solar system over the life of the project represented by our projectDuration in the request.

"rateInputs": [
    {
        "scenarios": "solar",
        "chargeType": "CONSUMPTION_BASED",
        "rateBands": [
            {
                "rateAmount": 0.025
            }
        ]
    }
]

Cash Purchase Example

With a cash purchase example we do not include the cost of solar in the simulation. The achieve this via a savings analysis request, you simple avoid passing a solar object to the rateInputs. This will be interpreted as a CASH purchase by our calculation engine (i.e. our DER system cost will be $0.00 over the projectDuration.

"rateInputs": []

Extend the Duration of the Projection

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

{  
    "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:

{  
  "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? Arcadia'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 accurately, 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.