Forecasting
The Economy and Electric Sales
Traditionally, the end of the year is a time to reflect and remember. So when the Federal Reserve raised interest rates in December as a vote of confidence in the economy, we should consider how this progressing economy will impact our industry. What is the relationship between the economy and electric sales? How will this relationship impact our future? What should we remember? We are forecasters and these are the questions we ask.
Looking backward, Brian Cary from Salt River Project came to Itron’s 2011 Energy Forecasting Group Meeting in Las Vegas and presented on the state of the economy. In 2011, we were slowly recovering from the 2008 recession with unemployment hovering around 9 percent and GDP growth floating about 1.5 percent. Brian presented a version the chart below which created a buzz of conversation.
In this chart, post-1960 recessions are plotted showing the duration and percent change in non-agriculture employment from pre-recession highs (Source: U.S. Bureau of Labor Stastistics). The Y-axis, plots the employment loss from the pre-recession high. The X-axis shows the number of months from the pre-recession high. The lines show the length and depth of each recession.
While Brian’s chart data ended in May 2011 (indicated on the graph), I completed the chart. In 2011, the chart challenged our notions of recovery patterns and the optimism of our economic forecasts. Today, the chart shows a 76-month recovery (6 years and 4 months) with a fairly predictable pattern.
Hindsight tells us that the economic forecast through the recession were overly aggressive resulting in a series of high electric sales forecast. But in 2011, the historic relationship between electric sales and employment was firmly entrenched in our econometric models. We did not have many alternatives.
The graph below shows the relationship between electric sales and employment plotted as indices with 2011 highlighted. Through 2009, movement in sales and employment are closely aligned. But recent history shows the relationship is slowly deteriorating -- employment continues to rise in the face of flattening electric sales.
What have we learned? The relationship between employment and electric sales is changing. But, we are forecasters and have been watching this relationship evolve. We are no longer trapped into using only macroeconomic drivers in our models. Today, we understand the weakening relationship between electric sales and the economy (employment and GDP), the advances in energy efficiency, and the penetration of distributed generation. As we look to tomorrow, we are adapting our techniques to capture these effects which offer us better insight into the future, and a better forecast.
May all your 2017 forecasts be accurate!
Looking backward, Brian Cary from Salt River Project came to Itron’s 2011 Energy Forecasting Group Meeting in Las Vegas and presented on the state of the economy. In 2011, we were slowly recovering from the 2008 recession with unemployment hovering around 9 percent and GDP growth floating about 1.5 percent. Brian presented a version the chart below which created a buzz of conversation.
In this chart, post-1960 recessions are plotted showing the duration and percent change in non-agriculture employment from pre-recession highs (Source: U.S. Bureau of Labor Stastistics). The Y-axis, plots the employment loss from the pre-recession high. The X-axis shows the number of months from the pre-recession high. The lines show the length and depth of each recession.
While Brian’s chart data ended in May 2011 (indicated on the graph), I completed the chart. In 2011, the chart challenged our notions of recovery patterns and the optimism of our economic forecasts. Today, the chart shows a 76-month recovery (6 years and 4 months) with a fairly predictable pattern.
Hindsight tells us that the economic forecast through the recession were overly aggressive resulting in a series of high electric sales forecast. But in 2011, the historic relationship between electric sales and employment was firmly entrenched in our econometric models. We did not have many alternatives.
The graph below shows the relationship between electric sales and employment plotted as indices with 2011 highlighted. Through 2009, movement in sales and employment are closely aligned. But recent history shows the relationship is slowly deteriorating -- employment continues to rise in the face of flattening electric sales.
What have we learned? The relationship between employment and electric sales is changing. But, we are forecasters and have been watching this relationship evolve. We are no longer trapped into using only macroeconomic drivers in our models. Today, we understand the weakening relationship between electric sales and the economy (employment and GDP), the advances in energy efficiency, and the penetration of distributed generation. As we look to tomorrow, we are adapting our techniques to capture these effects which offer us better insight into the future, and a better forecast.
May all your 2017 forecasts be accurate!
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>