Forecasting
A Grand View
The view from the 96th floor of the John Hancock Center is amazing. From here, cars are merely dots between the straight rows of lights and people are absent. Even the contours formed by the cluster of high-rise buildings pale in comparison to the largeness of Lake Michigan and the vastness of the city.
Itron’s 15th Annual Energy Forecasting Meeting provided a similar perspective pushing aside our small daily challenges to see the grand view of the energy forecasting world. This year’s meeting was held in Chicago from April 26-28 where 60 attendees from 38 companies spent three days discussing the implication of the economy, new technologies, prices, energy efficiency, and normal weather on the electric and gas forecasting world.
The View. The broadest pictures of the electric industry were covered by Mark Quan and Mike Russo (Itron), Steve Cochran (Moody’s Analytics) and Erin Boedecker (Energy Information Administration). Mark and Mike stepped back and showed historical growth of the industry and preliminary projections based on Itron’s latest Benchmarking and Trend survey. Steve presented the current state of the U.S. economy and forward-looking risks, and Erin provided details about the EIA’s latest forecast for the residential and commercial sectors which go through 2050. These presentations painted a picture of the horizon and direction for the electric and gas industries.
The Contour. The current challenges of the industry shape the horizon. These challenges include the penetration of AMI data, behind-the-meter technology such as solar and batteries, and changing weather patterns. Andy Sukenik, Mike Russo, and William Marin (Itron) discussed solar penetration, solar shape modeling, and battery technology. Kristin Larson (Storm Geo) showed alternative climate normal calculations, and Dennis Kelter (ComEd) addressed the uses of AMI data.
The Details. Within the broad view and the contours of the industry, several attendees addressed specific issues and techniques useful in our current situation. Bo Xing (Salt River Project), Abdul Razack (Nevada Power), and Reynaldo Guerra (CPS Energy) showed modeling techniques including peak calibration, model selection tests, and incremental change techniques. Andrew Trachsell (IESO) and Chad Burnett (AEP) discussed time-of-use pricing and price elasticities, and Markus Leuker (DTE) showed the power of daily tracking and weather normalization with AMI data.
With the broad array of topics and multiple perspectives, attendees found the discussion challenging and informative. When reflecting on the experience, Nicole Fan (Alectra Utilities) said, “The meeting was a great success; the topics have been expanded so much including regulations, pricing, economics and new technologies. I enjoyed it a lot.”
I agree. The view is amazing.
Itron’s 15th Annual Energy Forecasting Meeting provided a similar perspective pushing aside our small daily challenges to see the grand view of the energy forecasting world. This year’s meeting was held in Chicago from April 26-28 where 60 attendees from 38 companies spent three days discussing the implication of the economy, new technologies, prices, energy efficiency, and normal weather on the electric and gas forecasting world.
The View. The broadest pictures of the electric industry were covered by Mark Quan and Mike Russo (Itron), Steve Cochran (Moody’s Analytics) and Erin Boedecker (Energy Information Administration). Mark and Mike stepped back and showed historical growth of the industry and preliminary projections based on Itron’s latest Benchmarking and Trend survey. Steve presented the current state of the U.S. economy and forward-looking risks, and Erin provided details about the EIA’s latest forecast for the residential and commercial sectors which go through 2050. These presentations painted a picture of the horizon and direction for the electric and gas industries.
The Contour. The current challenges of the industry shape the horizon. These challenges include the penetration of AMI data, behind-the-meter technology such as solar and batteries, and changing weather patterns. Andy Sukenik, Mike Russo, and William Marin (Itron) discussed solar penetration, solar shape modeling, and battery technology. Kristin Larson (Storm Geo) showed alternative climate normal calculations, and Dennis Kelter (ComEd) addressed the uses of AMI data.
The Details. Within the broad view and the contours of the industry, several attendees addressed specific issues and techniques useful in our current situation. Bo Xing (Salt River Project), Abdul Razack (Nevada Power), and Reynaldo Guerra (CPS Energy) showed modeling techniques including peak calibration, model selection tests, and incremental change techniques. Andrew Trachsell (IESO) and Chad Burnett (AEP) discussed time-of-use pricing and price elasticities, and Markus Leuker (DTE) showed the power of daily tracking and weather normalization with AMI data.
With the broad array of topics and multiple perspectives, attendees found the discussion challenging and informative. When reflecting on the experience, Nicole Fan (Alectra Utilities) said, “The meeting was a great success; the topics have been expanded so much including regulations, pricing, economics and new technologies. I enjoyed it a lot.”
I agree. The view is amazing.
Si è verificato un errore nell'elaborarazione del modello.
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>
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>