HomeGuidesAPI ReferenceChangelog
Log In
Guides

Savings Analysis Tips & Tricks

Use Savings Analysis options for tariff switching, system sizing, solar costs, project duration, and limited customer usage data.

Configure Savings Analysis requests for common rooftop solar scenarios, including tariff switching, system sizing, solar costs, project duration, and limited customer usage data.

The Savings Analysis endpoint helps you estimate how much money a residential customer can save by installing rooftop solar. A Savings Analysis can tell you how much the customer's electricity bill will be reduced by ("avoided cost"), how expensive the solar power will be over the life of the system (PPA or lease cost), and other values depending on how you configure the calculation.

Use this page after you read the Forecasting Savings tutorial, which covers the end-to-end workflow. Once you are familiar with that flow, use these patterns to configure your Savings Analysis call for specific implementation needs.

Run a Savings Analysis

Start with a common Savings Analysis request where your account already has electricity usage and a solar model. In this request, you pass usage and solar profiles, a PPA rate, cost escalation assumptions, and the other parameters you want to use for the calculation.

Savings Analysis returns data series that contain your cost and savings numbers for each 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 contains annual results for the entire analysis period.

Use this example 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  
    }]  
  }]  
}  

Switch tariffs after going solar

Set the masterTariffId property on the after scenario to model the tariff the customer will use after installing solar:

{  
    "scenarios" : "after",  
    "keyName" : "masterTariffId",  
    "dataValue" : "518"  
}  

Model different system sizes efficiently

Use the dataFactor parameter to model a PV system that is larger or smaller than the existing solar profile without creating a new profile:

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

This also works for consumption profiles. Use a decimal fraction, where 1.0 means 100% of the profile, 0.5 means 50%, and 2.0 means 200%.

Apply solar equipment costs

In your Switch analysis, you can capture the cost of a DER system (distributed energy resource, such as a rooftop solar system) in a few ways. Each cost model is controlled by an object inside the rateInputs list. For these examples, set the scenarios field to solar.

Lease or loan example

Add an item to the rateInputs array, set its scenario to solar, and set chargeType to FIXED_PRICE for a lease or loan. Inside rateBands, set rateAmount to the monthly cost. Savings Analysis applies this value to each month in the simulation over the 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 chargeType to CONSUMPTION_BASED for a PPA. Inside rateBands, set rateAmount to the per-kWh cost. Savings Analysis applies this value to each kWh produced by the solar system over the projectDuration in the request.

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

Cash purchase example

For a cash purchase, do not include the cost of solar in the simulation. To model this in a Savings Analysis request, avoid passing a solar object to rateInputs. The calculation engine interprets this as a cash purchase, meaning the DER system cost is $0.00 over the projectDuration.

{
  "rateInputs": []
}

Extend the duration of the projection

The default duration of a Savings Analysis is 20 years. To use a longer or shorter projection, set the projectDuration property input parameter. The minimum is 1 year and the maximum is 25 years.

{  
    "scenarios" : "before,solar,after",  
    "keyName" : "projectDuration",  
    "dataValue" : "25"  
}  

Run an accurate analysis with annual usage or cost

The Savings Analysis endpoint can run a detailed calculation when you only have one usage value: the customer's annual energy consumption. If you know the customer's annual electric cost instead, turn that cost into consumption with an Annual Bill Solve Request, then run a Savings Analysis against the resulting annual kWh.

Use this minimal example:

{
  "providerAccountId" : "api-eg-01",  
  "fromDateTime" : "2014-09-01",  
  "propertyInputs" : [ {  
    "keyName" : "baselineType",  
    "dataValue" : "typicalElectricity",
    "scenarios" : "before,after"  
  }, {    
    "keyName" : "loadSize",  
    "dataValue" : "5000",  
    "unit":"kWh",
    "scenarios" : "before,after"  
  } ]  
}  

This request uses two property inputs: baselineType and loadSize. baselineType tells the API to use hourly Typicals for the analysis. The API chooses an appropriate load profile based on the account's location, customer type, and building type. loadSize tells the API how much energy the customer uses in a year. In this example, the customer uses 5,000 kWh, and the typical profile is scaled up or down to meet that target load.

Run an analysis with limited customer usage

If 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. Use the table below to match the data you have to the recommended Savings Analysis approach.

Usage ScenarioSolutionSummary of API Steps
No dataUse a typical load profile for the customer’s location.
  • Create an account with the customer’s zip code.
  • Include Savings Analysis property input: {"scenarios": "before,after", "keyName": "baselineType", "dataValue": "typicalElectricity", "dataFactor": "1"}
  • Optionally scale the typical profile up or down using dataFactor.
Annual UsageUse a typical load profile scaled to the customer’s annual usage.
  • Create an account with the customer’s zip code.
  • Include Savings Analysis property inputs: {"scenarios": "before,after", "keyName": "baselineType", "dataValue": "typicalElectricity"} and {"scenarios": "before,after", "keyName": "loadSize", "dataValue": "12000", "unit": "kWh"}
Monthly UsageUse Intelligent Baselining to extrapolate one or more months of usage to the rest of the year and interpolate to hourly.
  • Create an account with the customer’s zip code.
  • Create a profile with one or more months of usage.
  • Include top-level Savings Analysis parameter: {"providerAccountId": "api-eg-01", "fromDateTime": "2018-01-01", "useIntelligentBaselining": "true"}
  • Intelligent Baselining is true by default.
Annual BillUse Bill Solve to turn annual cost into usage, then scale a typical load profile to annual usage.
  • Create an account with the customer’s zip code and tariff.
  • Run Annual Bill Solve using annual cost as the input and annual usage as the output.
  • Include Savings Analysis property inputs: {"scenarios": "before,after", "keyName": "baselineType", "dataValue": "typicalElectricity"} and {"scenarios": "before,after", "keyName": "loadSize", "dataValue": "usage_from_bill_solve", "unit": "kWh"}
  • Alternatively, but less accurately, create a profile on the account with the annual usage output from Bill Solve and include the profile ID in your Savings Analysis call.
Monthly BillUse Bill Solve to turn monthly cost into usage, then use Intelligent Baselining to extrapolate one or more months of usage to the rest of the year and interpolate to hourly.
  • Create an account with the customer’s zip code and tariff.
  • Run Monthly Bill Solve for each bill, using monthly cost as the input and monthly usage as the output.
  • Create a profile with one or more months of usage from Bill Solve.
  • Include top-level Savings Analysis parameter: "useIntelligentBaselining": "true"
  • Intelligent Baselining is true by default.
Hourly UsageUse Intelligent Baselining to align the 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 a profile with the customer’s past hourly usage.
  • Include top-level Savings Analysis parameter: "autoBaseline": "true"
  • Alternatively, run a Savings Analysis on non-Intelligent Baselining past hourly usage with the latest tariff rates using "autoBaseline": "false" and "tariffEffectiveOn": "YYYY-MM-DD".

Further reading

The Savings Analysis endpoint provides flexibility for complex pre- and post-solar assumptions. Consult the Savings Analysis reference for all supported request parameters and response fields.