This is the fun step! Previously you’ve set up your example account with an address, a utility, a tariff, and profiles for electricity usage and solar production. Now you’re ready to estimate savings.

Savings Analysis

The Savings Analysis endpoint is used to calculate the results for an entire project in one step, 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.

To do a savings analysis, you pass in the usage profiles that you want to use to do the calculation, PPA rates, cost escalation assumptions, and other important parameters. It returns the complete results of the scenarios that you specify over the life of the project.

In a Savings Analysis request, there are three series’: one for each of the without solar (“before”), solar itself (“solar”) and with solar (“after”) scenarios. The first series contains the monthly results for the first year of the analysis, the second one contains annual results for the entire analysis period, and the third one has the total for the entire analysis period.

Here’s an example of a request that contains the most common inputs for a Savings Analysis. It includes a solar lease, the tariff, and a solar profile.

POST /rest/v1/accounts/analysis
{
  "providerAccountId" : "gdn-fst-eg-01",
  "fromDateTime" : "2017-01-01",
  "propertyInputs" : [ {
    "scenarios" : "before,after",
    "keyName" : "providerProfileId",
    "dataValue" : "gdn-fst-eg-01-bills",
    "dataFactor" : 1
  }, {
    "scenarios" : "after,solar",
    "keyName" : "providerProfileId",
    "dataValue" : "gdn-fst-eg-01-pvwatts",
    "dataFactor" : 1
  }, {
    "scenarios" : "after",
    "keyName" : "masterTariffId",
    "dataValue" : "3200687"
  }, {
    "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
    } ]
  } ]
}

Let’s take a quick look at each input to find out what it does.

  • scenarios - On each input, you’ll see a scenarios property that is populated with before, after, solar, or some combination of the three. You use this input to tell Savings Analysis which portion of the analysis that input should be applied to: before solar, after solar, or the solar itself. In this request, for example, we’ve specified a masterTariffId property for the after scenario. This means that we want our customer to switch tariffs after going solar. In this case, we have them switching from RES-1, which we set up earlier, to RES-6, SCP’s residential time-of-use tariff.
  • providerProfileId - We use this input to specify which profile(s) we want to use in each scenario. Here, we’re using example_account_electricity_profile for both the before, and after scenarios. This means that we do not expect our customer’s baseline usage to change after going solar. If that was not the case – for example, we’re also implementing energy efficiency – we could use a different providerProfileId for the after scenario. We also specify example_solar_profile for the after and solar scenarios. There’s a good reason to have it in both: in the after scenario, our solar profile gets subtracted from our electricity profile in order to calculate post-solar cost. In the solar scenario, it’s used to calculate the cost of solar energy.
  • masterTariffId - As described above, we have our customer switching from RES-1 to RES-6 in this Savings Analysis. That tariff change is represented by having the masterTariffId property in the after scenario. What about the before scenario? We don’t need a separate input for that; the Savings Analysis API is smart enough to look at the account, see what its current tariff is, and use that in the analysis. If you wanted, you could specify a different tariff for the before scenario, but we leave it out here.
  • rateInflation - How much electricity rates rise each year, as a percentage. Here we’re using different values for the utility costs (the before and after scenarios) than we do for the solar cost (solar).
  • solarDegradation - How much estimated solar production should be reduced each year, as a percentage. We need this in both the after and solar scenarios because it will affect the post-solar utility costs and solar costs separately.
  • rateInputs - Here we define the cost of solar energy. rateInputs accepts a simplified version of a TariffRate. You can have a chargeType of either FIXED_PRICE or CONSUMPTION_BASED (representing a lease/loan vs a PPA) and one rateBand with one rateAmount.

Intelligent Baselining

Now that we understand all of the inputs, we can actually do the analysis. Unfortunately, when we run the request we get an error:

{
    "status": "error",
    "count": 1,
    "type": "Error",
    "results": [
        {
            "code": "InvalidError",
            "message": "Less than a year's worth of ReadingData",
            "objectName": "UsageProfile",
            "propertyName": "profileId",
            "propertyValue": "599cd2544e2822336ba3535a"
        }
    ]
}

What happened?

Because electricity usage and charges vary from month to month, we need data for the whole year to get an accurate picture of savings from solar.

But what if you don’t have a year’s worth of data? In our setup, for example, we only had three months of usage data. If that’s the case, Genability’s API still has you covered.

Since we only have three bills from our prospective customer, we can still do a savings analysis by turning on Intelligent Baselining. Intelligent Baselining can extrapolate a full year of data from as little as one electricity bill.

To use intelligent baselining, just repeat the above API call with the following property added to it: "useIntelligentBaselining": true.

The new result should look like this:

{
    "status": "success",
    "count": 1,
    "type": "AccountAnalysis",
    "results": [
        {
            "designId": null,
            "dataStatus": 2,
            "currency": "USD",
            "summary": {
                "lifeTimeUtilityAfterCost": 10424.395,
                "lifeTimeUtilityAvoidedRate": 0.341,
                "lifetimeAvoidedCost": -1803.135,
                "lifetimeSolarCost": 28865.31,
                "lifetimeWithoutCost": 37486.57,
                "netAvoidedCost": 1028.56,
                "netAvoidedCostPctOffset": 0.7759,
                "netAvoidedKWh": 4561.92,
                "netAvoidedKWhPctOffset": 0.673,
                "netAvoidedRate": 0.225467,
                "postTotalCost": 297,
                "postTotalKWh": 2216.145801,
                "postTotalKWhCost": 239.458381,
                "postTotalKWhRate": 0.108052,
                "postTotalMinCost": 119.9171,
                "postTotalNonMinCost": 296.996081,
                "postTotalRate": 0.134017,
                "preTotalCost": 1325.56,
                "preTotalKWh": 6778.064004,
                "preTotalKWhCost": 1360.364613,
                "preTotalKWhRate": 0.200702,
                "preTotalMinCost": 119.9171,
                "preTotalNonMinCost": 1325.564613,
                "preTotalRate": 0.195567
            },
            "scenarios": [
                {
                    "id": null,
                    "name": "before",
                    "serviceType": "ELECTRICITY",
                    "inputs": [
                        {
                            "keyName": "lseId",
                            "displayName": "Utility or Load Serving Entity",
                            "dataType": "INTEGER",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "100747",
                            "scenarios": "before"
                        },
                        {
                            "keyName": "masterTariffId",
                            "displayName": "Residential",
                            "dataType": "INTEGER",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "3200682",
                            "scenarios": "before"
                        },
                        {
                            "keyName": "profileId",
                            "displayName": "Electricity Bills",
                            "dataType": "STRING",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "599cd2544e2822336ba3535a",
                            "scenarios": "before"
                        },
                        {
                            "keyName": "rateInflation",
                            "displayName": "Rate Inflation",
                            "dataType": "DECIMAL",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "3.5",
                            "scenarios": "before"
                        },
                        {
                            "keyName": "tariffCode",
                            "displayName": "tariffCode",
                            "dataType": "INTEGER",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "E-1",
                            "scenarios": "before"
                        },
                        {
                            "keyName": "territoryId",
                            "displayName": "Territory",
                            "description": "Territory where tariff is operational",
                            "dataType": "INTEGER",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "7573",
                            "accuracy": 100,
                            "scenarios": "before"
                        }
                    ]
                },
                {
                    "id": null,
                    "name": "after",
                    "serviceType": "ELECTRICITY",
                    "inputs": [
                        {
                            "keyName": "lseId",
                            "displayName": "Sonoma Clean Power",
                            "dataType": "INTEGER",
                            "dataValue": "100747",
                            "scenarios": "after"
                        },
                        {
                            "keyName": "masterTariffId",
                            "displayName": "Residential - Time of Use",
                            "dataType": "INTEGER",
                            "dataValue": "3200687",
                            "scenarios": "after"
                        },
                        {
                            "keyName": "profileId",
                            "displayName": "3.0 kW | PVWatts",
                            "dataType": "STRING",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "f836f03e-fe32-46f0-a1f9-b2b869770787",
                            "scenarios": "after",
                            "operator": "-"
                        },
                        {
                            "keyName": "profileId",
                            "displayName": "Electricity Bills",
                            "dataType": "STRING",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "599cd2544e2822336ba3535a",
                            "scenarios": "after"
                        },
                        {
                            "keyName": "rateInflation",
                            "displayName": "Rate Inflation",
                            "dataType": "DECIMAL",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "3.5",
                            "scenarios": "after"
                        },
                        {
                            "keyName": "solarDegradation",
                            "displayName": "Solar Degradation",
                            "dataType": "DECIMAL",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "1.5",
                            "scenarios": "after"
                        },
                        {
                            "keyName": "tariffCode",
                            "displayName": "E-6",
                            "dataType": "STRING",
                            "dataValue": "E-6",
                            "scenarios": "after"
                        },
                        {
                            "keyName": "territoryId",
                            "displayName": "Territory",
                            "description": "Territory where tariff is operational",
                            "dataType": "INTEGER",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "7573",
                            "accuracy": 100,
                            "scenarios": "after"
                        }
                    ],
                    "rates": []
                },
                {
                    "id": null,
                    "name": "solar",
                    "serviceType": "SOLAR_PV",
                    "inputs": [
                        {
                            "keyName": "profileId",
                            "displayName": "3.0 kW | PVWatts",
                            "dataType": "STRING",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "f836f03e-fe32-46f0-a1f9-b2b869770787",
                            "scenarios": "solar",
                            "operator": "+"
                        },
                        {
                            "keyName": "rateInflation",
                            "displayName": "Rate Inflation",
                            "dataType": "DECIMAL",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "1.9",
                            "scenarios": "solar"
                        },
                        {
                            "keyName": "solarDegradation",
                            "displayName": "Solar Degradation",
                            "dataType": "DECIMAL",
                            "fromDateTime": "2017-01-01T00:00:00-08:00",
                            "toDateTime": "2018-01-01T00:00:00-08:00",
                            "dataValue": "1.5",
                            "scenarios": "solar"
                        }
                    ],
                    "rates": [
                        {
                            "fromDateTime": null,
                            "toDateTime": null,
                            "chargeType": "FIXED_PRICE",
                            "chargePeriod": "MONTHLY",
                            "rateBands": [
                                {
                                    "tariffRateBandId": null,
                                    "tariffRateId": null,
                                    "rateSequenceNumber": null,
                                    "hasConsumptionLimit": null,
                                    "hasDemandLimit": null,
                                    "hasPropertyLimit": false,
                                    "rateAmount": 99.99,
                                    "rateUnit": null,
                                    "isCredit": null,
                                    "prevUpperLimit": null
                                }
                            ],
                            "scenarios": "solar"
                        }
                    ]
                }
            ],
            "series": [
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2018-01-01T00:00:00-08:00",
                    "scenario": "before",
                    "displayLabel": "Before Solar Utility (Mo/Year 1)",
                    "seriesPeriod": "MONTH",
                    "seriesDuration": 12,
                    "designId": null,
                    "key": null,
                    "rate": 0.19556617,
                    "qty": 6778.064004,
                    "cost": 1325.56
                },
                {
                    "seriesId": 2,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2018-01-01T00:00:00-08:00",
                    "scenario": "after",
                    "displayLabel": "After Solar Utility (Mo/Year 1)",
                    "seriesPeriod": "MONTH",
                    "seriesDuration": 12,
                    "designId": null,
                    "key": null,
                    "rate": 0.13401645,
                    "qty": 2216.145801,
                    "cost": 297
                },
                {
                    "seriesId": 3,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2018-01-01T00:00:00-08:00",
                    "scenario": "solar",
                    "displayLabel": "Solar (Mo/Year 1)",
                    "seriesPeriod": "MONTH",
                    "seriesDuration": 12,
                    "designId": null,
                    "key": null,
                    "rate": 0.263021,
                    "qty": 4561.918203,
                    "cost": 1199.88
                },
                {
                    "seriesId": 4,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2018-01-01T00:00:00-08:00",
                    "scenario": "savings",
                    "displayLabel": "Total Savings (Mo/Year 1)",
                    "seriesPeriod": "MONTH",
                    "seriesDuration": 12,
                    "designId": null,
                    "key": null,
                    "qty": 0,
                    "cost": -171.31146786507081
                },
                {
                    "seriesId": 5,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2037-01-01T00:00:00-08:00",
                    "scenario": "before",
                    "displayLabel": "Before Solar Utility (Annual)",
                    "seriesPeriod": "YEAR",
                    "seriesDuration": 20,
                    "designId": null,
                    "key": null,
                    "rate": 0.276529,
                    "qty": 135561.28008,
                    "cost": 37486.57
                },
                {
                    "seriesId": 6,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2037-01-01T00:00:00-08:00",
                    "scenario": "after",
                    "displayLabel": "After Solar Utility (Annual/Lifetime)",
                    "seriesPeriod": "YEAR",
                    "seriesDuration": 20,
                    "designId": null,
                    "key": null,
                    "rate": 0.185403,
                    "qty": 56225.50008,
                    "cost": 10424.395081
                },
                {
                    "seriesId": 7,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2037-01-01T00:00:00-08:00",
                    "scenario": "solar",
                    "displayLabel": "Solar (Annual/Lifetime)",
                    "seriesPeriod": "YEAR",
                    "seriesDuration": 20,
                    "designId": null,
                    "key": null,
                    "rate": 0.363837,
                    "qty": 79335.778203,
                    "cost": 28865.31
                },
                {
                    "seriesId": 8,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2037-01-01T00:00:00-08:00",
                    "scenario": "savings",
                    "displayLabel": "Total Year Savings (Annual/Lifetime)",
                    "seriesPeriod": "YEAR",
                    "seriesDuration": 20,
                    "designId": null,
                    "key": null,
                    "rate": 0,
                    "qty": 0,
                    "cost": -1803.135081
                },
                {
                    "seriesId": 9,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2037-01-01T00:00:00-08:00",
                    "scenario": "before",
                    "displayLabel": "Before Solar Utility (Lifetime)",
                    "seriesPeriod": "ALL",
                    "seriesDuration": 20,
                    "designId": null,
                    "key": null,
                    "rate": 0.276529,
                    "qty": 135561.28008,
                    "cost": 37486.57
                },
                {
                    "seriesId": 10,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2037-01-01T00:00:00-08:00",
                    "scenario": "after",
                    "displayLabel": "After Solar Utility (Lifetime)",
                    "seriesPeriod": "ALL",
                    "seriesDuration": 20,
                    "designId": null,
                    "key": null,
                    "rate": 0.185403,
                    "qty": 56225.50008,
                    "cost": 10424.395081
                },
                {
                    "seriesId": 11,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2037-01-01T00:00:00-08:00",
                    "scenario": "solar",
                    "displayLabel": "Solar (Lifetime)",
                    "seriesPeriod": "ALL",
                    "seriesDuration": 20,
                    "designId": null,
                    "key": null,
                    "rate": 0.363837,
                    "qty": 79335.778203,
                    "cost": 28865.31
                },
                {
                    "seriesId": 12,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2037-01-01T00:00:00-08:00",
                    "scenario": "savings",
                    "displayLabel": "Total Savings (Lifetime)",
                    "seriesPeriod": "ALL",
                    "seriesDuration": 20,
                    "designId": null,
                    "key": null,
                    "rate": 0,
                    "qty": 0,
                    "cost": -1803.135081
                }
            ],
            "seriesData": [
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2017-02-01T00:00:00-08:00",
                    "rate": 0.18269773,
                    "qty": 599.980637,
                    "cost": 109.61510042385401
                },
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-02-01T00:00:00-08:00",
                    "toDateTime": "2017-03-01T00:00:00-08:00",
                    "rate": 0.18149252,
                    "qty": 522.946951,
                    "cost": 94.91095996330652
                },
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-03-01T00:00:00-08:00",
                    "toDateTime": "2017-04-01T00:00:00-07:00",
                    "rate": 0.20246761,
                    "qty": 573.760544,
                    "cost": 116.16792605597984
                },
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-04-01T00:00:00-07:00",
                    "toDateTime": "2017-05-01T00:00:00-07:00",
                    "rate": 0.16940692,
                    "qty": 542.984688,
                    "cost": 91.98536222666976
                },
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-05-01T00:00:00-07:00",
                    "toDateTime": "2017-06-01T00:00:00-07:00",
                    "rate": 0.20388622,
                    "qty": 548.974228,
                    "cost": 111.92828022433816
                },
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-06-01T00:00:00-07:00",
                    "toDateTime": "2017-07-01T00:00:00-07:00",
                    "rate": 0.20421133,
                    "qty": 535.262656,
                    "cost": 109.30669888109248
                },
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-07-01T00:00:00-07:00",
                    "toDateTime": "2017-08-01T00:00:00-07:00",
                    "rate": 0.20543869,
                    "qty": 569.275344,
                    "cost": 116.95118092065936
                },
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-08-01T00:00:00-07:00",
                    "toDateTime": "2017-09-01T00:00:00-07:00",
                    "rate": 0.2053946,
                    "qty": 568.677996,
                    "cost": 116.8033895172216
                },
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-09-01T00:00:00-07:00",
                    "toDateTime": "2017-10-01T00:00:00-07:00",
                    "rate": 0.20738566,
                    "qty": 577.703732,
                    "cost": 119.80746974528312
                },
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-10-01T00:00:00-07:00",
                    "toDateTime": "2017-11-01T00:00:00-07:00",
                    "rate": 0.17631508,
                    "qty": 580.816686,
                    "cost": 102.4067421896094
                },
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-11-01T00:00:00-07:00",
                    "toDateTime": "2017-12-01T00:00:00-08:00",
                    "rate": 0.20286446,
                    "qty": 560.197724,
                    "cost": 113.64420877248904
                },
                {
                    "seriesId": 1,
                    "fromDateTime": "2017-12-01T00:00:00-08:00",
                    "toDateTime": "2018-01-01T00:00:00-08:00",
                    "rate": 0.20425239,
                    "qty": 597.482818,
                    "cost": 122.03729356043502
                },
                {
                    "seriesId": 2,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2017-02-01T00:00:00-08:00",
                    "rate": 0.15744981,
                    "qty": 371.666069,
                    "cost": 58.51875270540963
                },
                {
                    "seriesId": 2,
                    "fromDateTime": "2017-02-01T00:00:00-08:00",
                    "toDateTime": "2017-03-01T00:00:00-08:00",
                    "rate": 0.15994072,
                    "qty": 251.000398,
                    "cost": 40.14518529008
                },
              <!-- we have removed some series data entries to keep the page shorter -->
                {
                    "seriesId": 10,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2037-01-01T00:00:00-08:00",
                    "rate": 0.185403,
                    "qty": 56225.50008,
                    "cost": 10424.395081
                },
                {
                    "seriesId": 11,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2037-01-01T00:00:00-08:00",
                    "rate": 0.363837,
                    "qty": 79335.778203,
                    "cost": 28865.31
                },
                {
                    "seriesId": 12,
                    "fromDateTime": "2017-01-01T00:00:00-08:00",
                    "toDateTime": "2037-01-01T00:00:00-08:00",
                    "rate": 0,
                    "qty": 0,
                    "cost": -1803.135081
                }
            ]
        }
    ]
}

The above example is a very basic savings analysis: it specifies an account and a solar profile, and then sets a new post-solar tariff. There’s a lot more that you can do with this endpoint, though. Savings analysis 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.

Summary

That’s it! You’ve now completed every step in the tutorial. You’ve created an account, populated it with the customers tariff and electricity bill data, and ran a savings analysis to determine savings from your modelled solar system.


Previous: Step 4 - Model Solar Production