Forecasting
Latest Trends in Estimated Load Impacts of COVID-19 Mitigation Policies
As shelter-in-place policies are enacted to help reduce the spread of coronavirus (COVID-19), the Itron Forecasting group is leveraging publicly available hourly load data for most North American Independent System Operators (ISOs) to build a picture of the load impacts by region.
To assess the load impact of COVID-19 mitigation strategies, actual loads since March 22, 2020, when many of the shelter-in-place policies began, were compared to baseline loads without COVID-19 policy impacts. The Forecasting team recently conducted a special webinar on this topic - we encourage you to view the recording if you missed it.
Although shelter-in-place policies vary across the U.S., in general, the policies have led to school closures and reduced operations or closures for many non-essential businesses. Many other businesses have a large portion of their employees working remotely. The net effect is a shift of weekday loads from the non-residential sector to the residential sector. In some control regions, that is leading to an evolution of the system load shape toward a residential load pattern. The net impact on system loads depends on the original mix of residential and nonresidential loads, prevailing weather conditions and the specific shelter-in-place policy.
Baseline Loads: Estimates of the load impacts resulting from the shelter-in-place policies are developed by comparing Actual loads to Baseline loads. For this initial set of impact estimates, baseline loads are computed as the average hourly load by day-of-the-week over the time period March to April 2017, 2018 and 2019. It is important to note that the baseline loads are not adjusted for prevailing temperature and solar conditions. As a result, the hot spell that rolled through ERCOT the week of March 22, 2020 drove actual loads above the baseline, reducing the estimated shelter-in-place policy impacts.
Estimated Load Impacts: The estimated net impact of the shelter-in-place policies for the time period March 22, 2020 to April 6, 2020 by ISO and for the aggregate ISO load is presented below. The values in this table represent the percent difference between Actual loads and Baseline loads. The percentage difference is computed by day (d) and hour (h) as:
Again, these estimated impacts do not control for differences between the weather that prevailed over the comparison period and the period over which the baseline load is computed.
Estimated Load Impact by ISO Control Region and Time-of-Use Period: March 22, 2020 to April 6, 2020:
Total ISO Impacts: Total ISO load is computed as the sum of the hourly loads across the eight (8) ISOs for which hourly load data are publicly available. The estimated maximum impact in one hour is a reduction of -10.7%. On average, hourly loads at the aggregate ISO level are down by about -4.7% across all hours. The morning hour loads (i.e. 6 a.m. to Noon) have the biggest average load reduction of -6.1%. A comparison of Actual versus Baseline loads for the week of March 29, 2020 are shown in the following figure.
New York ISO (NYISO): The NYISO control region spans New York state, including New York City which is the epicenter of the COVID-19 impact in the United States. Like California, New York began shelter-in-place policies around mid-March. On average, the policies have reduced NYISO hourly loads by about -8.6%. The mid-day hours, 6 a.m. to 6 p.m., show the biggest load reductions with average loads down by about -11%.
California ISO (CAISO): The CAISO control region spans California. On average, the shelter-in-place policies that were enacted in mid-March have led to an average hourly load reduction of about -8.5%. The afternoon hours show the biggest load reduction of about -12%. The impact in the morning hours is also significant, at roughly -8.4%, but this region has had significant growth in solar PV installations year over year which muddies a straight comparison of baseline to actual loads.
PJM Interconnection (PJM): The PJM control region spans a large geographical footprint from the eastern seaboard across to Chicago. Certain areas within the PJM control region have been hard hit by the COVID-19 virus including parts of New Jersey, Detroit and Chicago. There has also been a mix of shelter-in-place policies for each area. The net load impact of the various shelter-in-place policies is estimated to be an average load reduction of -6.8%.
Midcontinent Independent System Operator (MISO): The MISO control region also spans a large geographical footprint from Canada down to Louisiana. The impact of COVID-19 and shelter-in-place policies is mixed across this control region. Cities like New Orleans, which is a growing epicenter, have enacted severe shelter-in-place policies while other areas have little to no policies in place. The average non-weather adjusted net load impact is estimated to be a reduction in loads of about -6.0%.
ISO New England (ISO NE): The ISO NE control region spans the New England states. Boston and other government jurisdictions have enacted a mix of shelter-in-place policies. The average non-weather adjusted net load impact is estimated to be a reduction in loads of about -4.7%.
Independent Electricity System Operator (IESO): The IESO control region spans the province of Ontario, with Toronto as the largest city. Like many areas with large international cities, the province of Ontario has put in place shelter-in-place policies to help mitigate the spread of the COVID-19 virus. The average non-weather adjusted net load impact is estimated to be a reduction in loads of about -2.4%.
The Electric Reliability Council of Texas (ERCOT): ERCOT operates the electric grid and manages the deregulated market for 75% of Texas. During the week of March 22, 2020, there was a significant heat wave that rolled through Texas. With weather-driven actual loads significantly above baseline loads, the average estimated impact of COVID-19 mitigation polices is an increase in average loads of 2.8%. Removing the week of March 22 from the analysis leads to a non-weather adjusted estimated reduction in average hourly loads of -1.2%.
Alberta Electric System Operator (AESO): The AESO is responsible for the operation of the Alberta Interconnected Electric System. In this case, the non-weather adjusted baseline leads to a positive increase in loads over this period. Additional work on the baseline model is required to estimate the impact the mitigation strategies are having on AESO’s loads.
Model Recommendation: If you are responsible for developing operational load forecasts in a control region impacted by COVID-19 mitigation strategies, the recommendation is to add an Endshift variable to the set of explanatory variables. Specifically, the Endshift variable should be designed based on the forecast modeler’s best estimate of when the mitigation strategies started and when the strategies are expected to be removed. The Endshift variable can contain a phased in period. For example, if mitigation policies were set to begin on March 15, the value of the Endshift variable could be something like: 0.0 on March 14, 0.2 on March 15, 0.4 on March 16, 0.6 on March 17, 0.8 on March 18 and 1.0 on March 19. From March 20, the value of the Endshift variable would be 1.0.
The recommendation is to add the Endshift variable to each forecast equation. The effect would be to shift the intercept down(up) as the impact of COVID-19 mitigation strategies hit. As additional weeks of data are gathered, it is recommended that interactions between the Endshift variable, Temperature variables and Day-of-the-Week binary variables be added to allow the load impacts of the mitigation policies to vary with weather conditions and day-of-the-week. For areas with significant solar PV generation, it is recommended that interactions between the Endshift variable and the behind-the-meter solar PV generation variables be evaluated since the net load impact of solar PV could be dampened with people working at home.
To assess the load impact of COVID-19 mitigation strategies, actual loads since March 22, 2020, when many of the shelter-in-place policies began, were compared to baseline loads without COVID-19 policy impacts. The Forecasting team recently conducted a special webinar on this topic - we encourage you to view the recording if you missed it.
Although shelter-in-place policies vary across the U.S., in general, the policies have led to school closures and reduced operations or closures for many non-essential businesses. Many other businesses have a large portion of their employees working remotely. The net effect is a shift of weekday loads from the non-residential sector to the residential sector. In some control regions, that is leading to an evolution of the system load shape toward a residential load pattern. The net impact on system loads depends on the original mix of residential and nonresidential loads, prevailing weather conditions and the specific shelter-in-place policy.
Baseline Loads: Estimates of the load impacts resulting from the shelter-in-place policies are developed by comparing Actual loads to Baseline loads. For this initial set of impact estimates, baseline loads are computed as the average hourly load by day-of-the-week over the time period March to April 2017, 2018 and 2019. It is important to note that the baseline loads are not adjusted for prevailing temperature and solar conditions. As a result, the hot spell that rolled through ERCOT the week of March 22, 2020 drove actual loads above the baseline, reducing the estimated shelter-in-place policy impacts.
Estimated Load Impacts: The estimated net impact of the shelter-in-place policies for the time period March 22, 2020 to April 6, 2020 by ISO and for the aggregate ISO load is presented below. The values in this table represent the percent difference between Actual loads and Baseline loads. The percentage difference is computed by day (d) and hour (h) as:
Again, these estimated impacts do not control for differences between the weather that prevailed over the comparison period and the period over which the baseline load is computed.
Estimated Load Impact by ISO Control Region and Time-of-Use Period: March 22, 2020 to April 6, 2020:
Total ISO Impacts: Total ISO load is computed as the sum of the hourly loads across the eight (8) ISOs for which hourly load data are publicly available. The estimated maximum impact in one hour is a reduction of -10.7%. On average, hourly loads at the aggregate ISO level are down by about -4.7% across all hours. The morning hour loads (i.e. 6 a.m. to Noon) have the biggest average load reduction of -6.1%. A comparison of Actual versus Baseline loads for the week of March 29, 2020 are shown in the following figure.
New York ISO (NYISO): The NYISO control region spans New York state, including New York City which is the epicenter of the COVID-19 impact in the United States. Like California, New York began shelter-in-place policies around mid-March. On average, the policies have reduced NYISO hourly loads by about -8.6%. The mid-day hours, 6 a.m. to 6 p.m., show the biggest load reductions with average loads down by about -11%.
California ISO (CAISO): The CAISO control region spans California. On average, the shelter-in-place policies that were enacted in mid-March have led to an average hourly load reduction of about -8.5%. The afternoon hours show the biggest load reduction of about -12%. The impact in the morning hours is also significant, at roughly -8.4%, but this region has had significant growth in solar PV installations year over year which muddies a straight comparison of baseline to actual loads.
PJM Interconnection (PJM): The PJM control region spans a large geographical footprint from the eastern seaboard across to Chicago. Certain areas within the PJM control region have been hard hit by the COVID-19 virus including parts of New Jersey, Detroit and Chicago. There has also been a mix of shelter-in-place policies for each area. The net load impact of the various shelter-in-place policies is estimated to be an average load reduction of -6.8%.
Midcontinent Independent System Operator (MISO): The MISO control region also spans a large geographical footprint from Canada down to Louisiana. The impact of COVID-19 and shelter-in-place policies is mixed across this control region. Cities like New Orleans, which is a growing epicenter, have enacted severe shelter-in-place policies while other areas have little to no policies in place. The average non-weather adjusted net load impact is estimated to be a reduction in loads of about -6.0%.
ISO New England (ISO NE): The ISO NE control region spans the New England states. Boston and other government jurisdictions have enacted a mix of shelter-in-place policies. The average non-weather adjusted net load impact is estimated to be a reduction in loads of about -4.7%.
Independent Electricity System Operator (IESO): The IESO control region spans the province of Ontario, with Toronto as the largest city. Like many areas with large international cities, the province of Ontario has put in place shelter-in-place policies to help mitigate the spread of the COVID-19 virus. The average non-weather adjusted net load impact is estimated to be a reduction in loads of about -2.4%.
The Electric Reliability Council of Texas (ERCOT): ERCOT operates the electric grid and manages the deregulated market for 75% of Texas. During the week of March 22, 2020, there was a significant heat wave that rolled through Texas. With weather-driven actual loads significantly above baseline loads, the average estimated impact of COVID-19 mitigation polices is an increase in average loads of 2.8%. Removing the week of March 22 from the analysis leads to a non-weather adjusted estimated reduction in average hourly loads of -1.2%.
Alberta Electric System Operator (AESO): The AESO is responsible for the operation of the Alberta Interconnected Electric System. In this case, the non-weather adjusted baseline leads to a positive increase in loads over this period. Additional work on the baseline model is required to estimate the impact the mitigation strategies are having on AESO’s loads.
Model Recommendation: If you are responsible for developing operational load forecasts in a control region impacted by COVID-19 mitigation strategies, the recommendation is to add an Endshift variable to the set of explanatory variables. Specifically, the Endshift variable should be designed based on the forecast modeler’s best estimate of when the mitigation strategies started and when the strategies are expected to be removed. The Endshift variable can contain a phased in period. For example, if mitigation policies were set to begin on March 15, the value of the Endshift variable could be something like: 0.0 on March 14, 0.2 on March 15, 0.4 on March 16, 0.6 on March 17, 0.8 on March 18 and 1.0 on March 19. From March 20, the value of the Endshift variable would be 1.0.
The recommendation is to add the Endshift variable to each forecast equation. The effect would be to shift the intercept down(up) as the impact of COVID-19 mitigation strategies hit. As additional weeks of data are gathered, it is recommended that interactions between the Endshift variable, Temperature variables and Day-of-the-Week binary variables be added to allow the load impacts of the mitigation policies to vary with weather conditions and day-of-the-week. For areas with significant solar PV generation, it is recommended that interactions between the Endshift variable and the behind-the-meter solar PV generation variables be evaluated since the net load impact of solar PV could be dampened with people working at home.
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>
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>