Industry Insights

The Self-Generation Incentive Program: Behind-the-Meter Energy Storage Evaluation Results

November 01, 2019

The Self-Generation Incentive Program (SGIP) evaluation found that behind-the-meter (BTM) storage provides tangible benefits – load reduction during system peak hours, customer bill savings and system-level and localized demand response options. However, by optimizing for bill savings, the evaluation findings indicate that BTM AES systems are increasing GHG emissions overall.

Under current retail rates, the incentives for customers to dispatch AES to minimize bills are not well aligned with the goals of minimizing utility (and ratepayer) costs or GHG emissions. We observed that energy storage systems installed at facilities on TOU rates with demand charges largely ignored the TOU price differential while prioritizing non-coincident demand charge reduction. Storage systems were discharged to reduce non-coincident peak, but storage systems do not wait for off-peak energy pricing to recharge.

There is a strong relationship between utilization (measured as capacity factor) and roundtrip efficiency (RTE), which is the total energy discharged from the system divided by the total energy charged. We observe that the projects with the highest RTEs also tend to have the highest CFs. This in turn might suggest that if projects increased their annual capacity factor, the annual RTE would also increase. While this may be true, we find that even if all parasitic loads were removed leaving just the influence of single cycle RTE, GHG emissions would remain positive. We found in examining storage projects participating in DR programs that a storage system can be utilized identically across days (i.e., an equal capacity factor), but lead to increases or decreases in marginal emissions. The timing of charging and discharging in relation to the marginal emissions on the grid is paramount to just utilizing the system more often.

SGIP AES projects represented a combination of standalone projects and projects either co-located or paired directly with solar PV systems. Our analysis indicated that AES projects paired with PV were not prioritizing charging from PV. Going forward, the program administrators have modified SGIP eligibility rules to encourage AES charging from PV. Projects that are shown to charge from PV will have priority in a potential lottery. Furthermore, eligibility for investment tax credits might promote increased pairing of SGIP AES projects with PV or other renewable generators.

To date, the SGIP has provided incentives to over 4,000 residential and non-residential customers representing over 200 MW of storage capacity. As the program continues to mature and ratepayer dollars are expended to help fund the program, impact evaluations, like the ones conducted by our team, are critical exercises in the feedback loop from policy to design to implementation to policy again. Our findings and conclusions have helped spur new policy interventions and program design improvements in the SGIP and will hopefully benefit others as BTM storage continues to generate societal interest and utility programs are being developed to best capture the benefits of storage as an electric resource.

If you have additional questions, please contact us at StrategicAnalytics@itron.com.

Wystąpił błąd podczas przetwarzania szablonu.
The following has evaluated to null or missing:
==> authorContent.contentFields  [in template "44616#44647#114455" at line 9, column 17]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: contentFields = authorContent.content...  [in template "44616#44647#114455" at line 9, column 1]
----
1<#assign 
2	webContentData = jsonFactoryUtil.createJSONObject(author.getData()) 
3	classPK = webContentData.classPK 
4/> 
5 
6<#assign 
7authorContent = restClient.get("/headless-delivery/v1.0/structured-contents/" + classPK + "?fields=contentFields%2CfriendlyUrlPath%2CtaxonomyCategoryBriefs") 
8contentFields = authorContent.contentFields 
9categories=authorContent.taxonomyCategoryBriefs 
10authorContentData = jsonFactoryUtil.createJSONObject(authorContent) 
11friendlyURL = authorContentData.friendlyUrlPath 
12authorCategoryId = "0" 
13/> 
14 
15<#list contentFields as contentField > 
16   <#assign  
17	 contentFieldData = jsonFactoryUtil.createJSONObject(contentField)  
18	 name = contentField.name 
19	 /> 
20	 <#if name == 'authorImage'> 
21	    <#if (contentField.contentFieldValue.image)??> 
22	        <#assign authorImageURL = contentField.contentFieldValue.image.contentUrl />	 
23			</#if> 
24	 </#if> 
25	 <#if name == 'authorName'> 
26	    <#assign authorName = contentField.contentFieldValue.data /> 
27			<#list categories as category > 
28         <#if authorName == category.taxonomyCategoryName> 
29				     <#assign authorCategoryId = category.taxonomyCategoryId /> 
30				 </#if> 
31      </#list> 
32	 </#if> 
33	 <#if name == 'authorDescription'> 
34	    <#assign authorDescription = contentField.contentFieldValue.data /> 
35			 
36	 </#if> 
37	  
38	 <#if name == 'authorJobTitle'> 
39	    <#assign authorJobTitle = contentField.contentFieldValue.data /> 
40			 
41	 </#if> 
42 
43</#list> 
44 
45<div class="blog-author-info"> 
46	<#if authorImageURL??> 
47		<img class="blog-author-img" id="author-image" src="${authorImageURL}" alt="" /> 
48	</#if> 
49	<#if authorName??> 
50		<#if authorName != ""> 
51			<p class="blog-author-name">By <a id="author-detail-page" href="/w/${friendlyURL}?filter_category_552298=${authorCategoryId}"><span id="author-full-name">${authorName}</span></a></p> 
52			<hr /> 
53		</#if> 
54	</#if> 
55	<#if authorJobTitle??> 
56		<#if authorJobTitle != ""> 
57			<p class="blog-author-title" id="author-job-title" >${authorJobTitle}</p> 
58			<hr /> 
59		</#if> 
60	</#if> 
61	<#if authorDescription??> 
62		<#if authorDescription != "" && authorDescription != "null" > 
63			<p class="blog-author-desc" id="author-job-desc">${authorDescription}</p> 
64			<hr /> 
65		</#if> 
66	</#if> 
67</div>