Forecasting

Lessons Learned from Itron’s 13th Annual Energy Forecasting Meeting

May 14, 2015

I just returned from Itron’s 13th Annual Energy Forecasting Meeting & Training, which took place in Baltimore on May 6 and 7, 2015.  A total of 57 attendees participated from 42 companies.  For the two days, Baltimore treated us with outstanding hospitality and a beauty hidden from recent media reports.

The 14 presentations and two roundtable sessions offered many issues to consider, including economic and growth trends, changing and future efficiency standards, photovoltaic impacts, alternative economic drivers, peak forecasting methods, weather normalization with extreme weather modeling techniques, and forecast process management.  There were so many issues, that I’m still thinking about a few of them.

Instead of recapping all the presentations, I am highlighting a few things I learned this past week.
  • Richard Lynch, manager of sales and forecasting at Entergy Corp., I learned that going to my “Happy Place” is a reasonable way to deal with the significant risks facing the economy.  If this is too cryptic, I’ll explain.  Richard covered the unintended consequences of Quantitative Easing (QE) as it relates to past and future growth.  The presentation highlighted the past impacts of QE on housing, jobs and GDP growth as well as highlighted the ongoing major threats to the economy.  While there is reason to be optimistic, uncertainty abounds, and if you can’t handle the uncertainty, you can always hide in a “Happy Place.”
  • Erin Boedecker and Kevin Jarzomski from the U.S. Energy Information Administration (EIA) presented the key assumptions behind the 2015 Annual Energy Outlook (AEO).  The assumptions included changes in energy efficiency modeling from the 2014 AEO.  This presentation was followed by John Cymbalsky, U.S. Department of Energy (DOE), explaining the energy efficiency standard adoption process.  Between the EIA assumptions and DOE future standards, I’m certain that the downward trend in average use will continue.
  • Finally, I appreciated the candid discussion of the difficulties in forecasting and model analysis from CPS Energy’s Matt Croucher, Entergy’s Rae Anne Dodd and the New York Independent System Operator’s Arvind Jaggi.  These presenters highlighted potential sources of new data, the challenge of weather normalizing extreme data and potential new model drivers.  I plan on exploring these ideas as I work with individual clients in the coming year.

As I mentioned before, there were numerous other presentations and issues from this past week.  When you get a chance, submit a comment to this blog and tell us something you learned.  In the meantime, I’ll be in my happy place - San Diego.

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>