Files
PHD-Presentation/index.html

3513 lines
253 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en"><head>
<script src="index_files/libs/clipboard/clipboard.min.js"></script>
<script src="index_files/libs/quarto-html/tabby.min.js"></script>
<script src="index_files/libs/quarto-html/popper.min.js"></script>
<script src="index_files/libs/quarto-html/tippy.umd.min.js"></script>
<link href="index_files/libs/quarto-html/tippy.css" rel="stylesheet">
<link href="index_files/libs/quarto-html/light-border.css" rel="stylesheet">
<link href="index_files/libs/quarto-html/quarto-syntax-highlighting-662ae1889177880cb371f83234c0a158.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<link href="index_files/libs/quarto-contrib/fontawesome6-1.2.0/all.min.css" rel="stylesheet">
<link href="index_files/libs/quarto-contrib/fontawesome6-1.2.0/latex-fontsize.css" rel="stylesheet"><meta charset="utf-8">
<meta name="generator" content="quarto-1.7.30">
<meta name="author" content="Jonathan Berrisch">
<meta name="dcterms.date" content="2025-06-30">
<title>De-Fence</title>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="index_files/libs/revealjs/dist/reset.css">
<link rel="stylesheet" href="index_files/libs/revealjs/dist/reveal.css">
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for syntax highlighting */
html { -webkit-text-size-adjust: 100%; }
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
}
pre.numberSource { margin-left: 3em; padding-left: 4px; }
div.sourceCode
{ color: #24292e; }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span { color: #24292e; } /* Normal */
code span.al { color: #ff5555; font-weight: bold; } /* Alert */
code span.an { color: #6a737d; } /* Annotation */
code span.at { color: #d73a49; } /* Attribute */
code span.bn { color: #005cc5; } /* BaseN */
code span.bu { color: #d73a49; } /* BuiltIn */
code span.cf { color: #d73a49; } /* ControlFlow */
code span.ch { color: #032f62; } /* Char */
code span.cn { color: #005cc5; } /* Constant */
code span.co { color: #6a737d; } /* Comment */
code span.cv { color: #6a737d; } /* CommentVar */
code span.do { color: #6a737d; } /* Documentation */
code span.dt { color: #d73a49; } /* DataType */
code span.dv { color: #005cc5; } /* DecVal */
code span.er { color: #ff5555; text-decoration: underline; } /* Error */
code span.ex { color: #d73a49; font-weight: bold; } /* Extension */
code span.fl { color: #005cc5; } /* Float */
code span.fu { color: #6f42c1; } /* Function */
code span.im { color: #032f62; } /* Import */
code span.in { color: #6a737d; } /* Information */
code span.kw { color: #d73a49; } /* Keyword */
code span.op { color: #24292e; } /* Operator */
code span.ot { color: #6f42c1; } /* Other */
code span.pp { color: #d73a49; } /* Preprocessor */
code span.re { color: #6a737d; } /* RegionMarker */
code span.sc { color: #005cc5; } /* SpecialChar */
code span.ss { color: #032f62; } /* SpecialString */
code span.st { color: #032f62; } /* String */
code span.va { color: #e36209; } /* Variable */
code span.vs { color: #032f62; } /* VerbatimString */
code span.wa { color: #ff5555; } /* Warning */
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
} </style>
<link rel="stylesheet" href="index_files/libs/revealjs/dist/theme/quarto-5784e2c73f96e890d3d7e10685030278.css">
<link href="index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css" rel="stylesheet">
<link href="index_files/libs/revealjs/plugin/reveal-menu/menu.css" rel="stylesheet">
<link href="index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css" rel="stylesheet">
<link href="index_files/libs/revealjs/plugin/reveal-pointer/pointer.css" rel="stylesheet">
<link href="index_files/libs/revealjs/plugin/quarto-support/footer.css" rel="stylesheet">
<style type="text/css">
.reveal div.sourceCode {
margin: 0;
overflow: auto;
}
.reveal div.hanging-indent {
margin-left: 1em;
text-indent: -1em;
}
.reveal .slide:not(.center) {
height: 100%;
}
.reveal .slide.scrollable {
overflow-y: auto;
}
.reveal .footnotes {
height: 100%;
overflow-y: auto;
}
.reveal .slide .absolute {
position: absolute;
display: block;
}
.reveal .footnotes ol {
counter-reset: ol;
list-style-type: none;
margin-left: 0;
}
.reveal .footnotes ol li:before {
counter-increment: ol;
content: counter(ol) ". ";
}
.reveal .footnotes ol li > p:first-child {
display: inline-block;
}
.reveal .slide ul,
.reveal .slide ol {
margin-bottom: 0.5em;
}
.reveal .slide ul li,
.reveal .slide ol li {
margin-top: 0.4em;
margin-bottom: 0.2em;
}
.reveal .slide ul[role="tablist"] li {
margin-bottom: 0;
}
.reveal .slide ul li > *:first-child,
.reveal .slide ol li > *:first-child {
margin-block-start: 0;
}
.reveal .slide ul li > *:last-child,
.reveal .slide ol li > *:last-child {
margin-block-end: 0;
}
.reveal .slide .columns:nth-child(3) {
margin-block-start: 0.8em;
}
.reveal blockquote {
box-shadow: none;
}
.reveal .tippy-content>* {
margin-top: 0.2em;
margin-bottom: 0.7em;
}
.reveal .tippy-content>*:last-child {
margin-bottom: 0.2em;
}
.reveal .slide > img.stretch.quarto-figure-center,
.reveal .slide > img.r-stretch.quarto-figure-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.reveal .slide > img.stretch.quarto-figure-left,
.reveal .slide > img.r-stretch.quarto-figure-left {
display: block;
margin-left: 0;
margin-right: auto;
}
.reveal .slide > img.stretch.quarto-figure-right,
.reveal .slide > img.r-stretch.quarto-figure-right {
display: block;
margin-left: auto;
margin-right: 0;
}
</style>
<script type="module" src="index_files/libs/quarto-ojs/quarto-ojs-runtime.js"></script>
<link href="index_files/libs/quarto-ojs/quarto-ojs.css" rel="stylesheet">
<script src="index_files/libs/kePrint-0.0.1/kePrint.js"></script>
<link href="index_files/libs/lightable-0.0.1/lightable.css" rel="stylesheet">
<script src="assets/revealjs/custom.js"></script>
</head><body class="quarto-light"><div style="position: fixed; bottom: 10px; right: 20px; display: flex; justify-content: flex-end; align-items: center; gap: 20px; flex-wrap: wrap;">
<a href="https://www.uni-due.de/">
<img src="assets/ude_signet.svg" alt="Uni Duisburg-Essen Logo" style="height: 4vh; width: auto;">
</a>
<a href="https://www.hemf.wiwi.uni-due.de/en/">
<img src="assets/hecf_signet.svg" alt="HECF Logo" style="height: 4vh; width: auto;">
</a>
</div>
<div class="reveal">
<div class="slides">
<section id="title-slide" class="quarto-title-block center">
<h1 class="title">Data Science Methods for Forecasting in Energy and Economics</h1>
<div class="quarto-title-authors">
<div class="quarto-title-author">
<div class="quarto-title-author-name">
Jonathan Berrisch
</div>
<p class="quarto-title-affiliation">
University of Duisburg-Essen, House of Energy, Climate, and Finance
</p>
</div>
</div>
<p class="date">2025-06-30</p>
</section>
<section id="outline" class="slide level2 center">
<h2>Outline</h2>
<!--
Render with: quarto preview /home/jonathan/git/PHD-Presentation/25_07_phd_defense/index.qmd --no-browser --port 6074
-->
<div class="hidden">
<p><span class="math display">\[
\newcommand{\A}{{\mathbb A}}
\]</span></p>
</div>
<div style="font-size: 150%;">
<p><i class="fa fa-fw fa-rocket" style="color:var(--col_grey_9);"></i> <a href="#/motivation">Research Motivation</a></p>
<p><i class="fa fa-fw fa-book" style="color:var(--col_grey_9);"></i> <a href="#/sec-overview">Overview of the Thesis</a></p>
<p><i class="fa fa-fw fa-layer-group" style="color:var(--col_grey_9);"></i> <a href="#/sec-crps-learning">Online Aggregation</a></p>
<p><i class="fa fa-fw fa-chart-line" style="color:var(--col_grey_9);"></i> <a href="#/sec-voldep">Probabilistic Forecasting of European Carbon and Energy Prices</a></p>
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_grey_9);"></i> <a href="#/sec-contributions">Contributions</a></p>
</div>
</section>
<section id="the-beginning-june-2020" class="slide level2">
<h2>The beginning: June 2020</h2>
<img data-src="assets/allisonhorst/the_beginning_cropped.png" class="r-stretch quarto-figure-center"><p class="caption">Artwork by <a href="https://allisonhorst.com/">@allison_horst</a></p></section>
<section id="motivation" class="slide level2">
<h2>Motivation</h2>
<div class="columns">
<div class="column" style="width:53%;">
<table style="width: 100%; border-collapse: separate; border-spacing: 0 0.8em; border: none;">
<tbody><tr style="border: none;">
<td style="vertical-align: top; width: 1.5em; border: none;">
<i class="fa fa-fw fa-network-wired" style="color:var(--col_grey_9);"></i>
</td>
<td style="border: none;">
Energy market liberalization created complex, interconnected trading systems
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-wind" style="color:var(--col_grey_9);"></i>
</td>
<td style="border: none;">
Renewable energy transition introduces uncertainty and volatility from weather-dependent generation
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-chart-line" style="color:var(--col_grey_9);"></i>
</td>
<td style="border: none;">
Traditional point forecasts are inadequate for modern energy markets with increasing uncertainty
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-percent" style="color:var(--col_grey_9);"></i>
</td>
<td style="border: none;">
Risk inherently <em>is</em> a probabilistic concept
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-dice" style="color:var(--col_grey_9);"></i>
</td>
<td style="border: none;">
<strong>Probabilistic forecasting</strong> essential for risk management, planning and decision making in volatile energy environments
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-sync-alt" style="color:var(--col_grey_9);"></i>
</td>
<td style="border: none;">
<strong>Online learning</strong> methods needed for fast-updating models with streaming energy data
</td>
</tr>
</tbody></table>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:43%;">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="assets/Renewable_Energy_Forecasting.png"></p>
<figcaption>Image generated by Sora (OpenAI)</figcaption>
</figure>
</div>
</div></div>
</section>
<section id="sec-overview" class="slide level2">
<h2>Overview of the Thesis</h2>
<div class="r-stack">
<div class="fragment fade-in-then-out">
<table style="width: 100%; border-collapse: separate; border-spacing: 0 1em; border: none;">
<tbody><tr style="border: none;">
<td style="vertical-align: top; width: 2em; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH2023105221">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. CRPS learning. <em>Journal of Econometrics</em>, 237(2), 105221.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH20241568">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Multivariate probabilistic CRPS learning with an application to day-ahead electricity prices. <em>International Journal of Forecasting</em>, 40(4), 15681586.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Hirsch, S., Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="hirsch2024online">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Online Distributional Regression. <em>arXiv preprint</em> arXiv:2407.08750.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="berrisch2022distributional">(<a href="#/references" role="doc-biblioref" onclick="">2022</a>)</span>. Distributional modeling and forecasting of natural gas prices. <em>Journal of Forecasting</em>, 41(6), 10651086.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., Pappert, S., Ziel, F., &amp; Arsova, A. <span class="citation" data-cites="berrisch2023modeling">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. Modeling volatility and dependence of European carbon and energy prices. <em>Finance Research Letters</em>, 52, 103503.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., Narajewski, M., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH2023100236">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. High-resolution peak demand estimation using generalized additive models and deep neural networks. <em>Energy and AI</em>, 13, 100236.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J. <span class="citation" data-cites="berrisch2025rcpptimer">(<a href="#/references" role="doc-biblioref" onclick="">2025</a>)</span>. rcpptimer: Rcpp Tic-Toc Timer with OpenMP Support. <em>arXiv preprint</em> arXiv:2501.15856.
</td>
</tr>
</tbody></table>
</div>
<div class="fragment fade-in-then-out">
<table style="width: 100%; border-collapse: separate; border-spacing: 0 1em; border: none;">
<tbody><tr style="border: none;">
<td style="vertical-align: top; width: 2em; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH2023105221">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. CRPS learning. <em>Journal of Econometrics</em>, 237(2), 105221.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH20241568">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Multivariate probabilistic CRPS learning with an application to day-ahead electricity prices. <em>International Journal of Forecasting</em>, 40(4), 15681586.
</td>
</tr>
<tr class="greyed-out" style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Hirsch, S., Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="hirsch2024online">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Online Distributional Regression. <em>arXiv preprint</em> arXiv:2407.08750.
</td>
</tr>
<tr class="greyed-out" style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="berrisch2022distributional">(<a href="#/references" role="doc-biblioref" onclick="">2022</a>)</span>. Distributional modeling and forecasting of natural gas prices. <em>Journal of Forecasting</em>, 41(6), 10651086.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., Pappert, S., Ziel, F., &amp; Arsova, A. <span class="citation" data-cites="berrisch2023modeling">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. Modeling volatility and dependence of European carbon and energy prices. <em>Finance Research Letters</em>, 52, 103503.
</td>
</tr>
<tr class="greyed-out" style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., Narajewski, M., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH2023100236">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. High-resolution peak demand estimation using generalized additive models and deep neural networks. <em>Energy and AI</em>, 13, 100236.
</td>
</tr>
<tr class="greyed-out" style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J. <span class="citation" data-cites="berrisch2025rcpptimer">(<a href="#/references" role="doc-biblioref" onclick="">2025</a>)</span>. rcpptimer: Rcpp Tic-Toc Timer with OpenMP Support. <em>arXiv preprint</em> arXiv:2501.15856.
</td>
</tr>
</tbody></table>
</div>
<div class="fragment fade-in-then-out">
<table style="width: 100%; border-collapse: separate; border-spacing: 0 1em; border: none;">
<tbody><tr class="greyed-out" style="border: none;">
<td style="vertical-align: top; width: 2em; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH2023105221">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. CRPS learning. <em>Journal of Econometrics</em>, 237(2), 105221.
</td>
</tr>
<tr class="greyed-out" style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH20241568">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Multivariate probabilistic CRPS learning with an application to day-ahead electricity prices. <em>International Journal of Forecasting</em>, 40(4), 15681586.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Hirsch, S., Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="hirsch2024online">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Online Distributional Regression. <em>arXiv preprint</em> arXiv:2407.08750.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="berrisch2022distributional">(<a href="#/references" role="doc-biblioref" onclick="">2022</a>)</span>. Distributional modeling and forecasting of natural gas prices. <em>Journal of Forecasting</em>, 41(6), 10651086.
</td>
</tr>
<tr class="greyed-out" style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., Pappert, S., Ziel, F., &amp; Arsova, A. <span class="citation" data-cites="berrisch2023modeling">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. Modeling volatility and dependence of European carbon and energy prices. <em>Finance Research Letters</em>, 52, 103503.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J., Narajewski, M., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH2023100236">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. High-resolution peak demand estimation using generalized additive models and deep neural networks. <em>Energy and AI</em>, 13, 100236.
</td>
</tr>
<tr style="border: none;">
<td style="vertical-align: top; border: none;">
<i class="fa fa-fw fa-newspaper"></i>
</td>
<td style="border: none;">
Berrisch, J. <span class="citation" data-cites="berrisch2025rcpptimer">(<a href="#/references" role="doc-biblioref" onclick="">2025</a>)</span>. rcpptimer: Rcpp Tic-Toc Timer with OpenMP Support. <em>arXiv preprint</em> arXiv:2501.15856.
</td>
</tr>
</tbody></table>
</div>
</div>
</section>
<section id="overview" class="slide level2">
<h2>Overview</h2>
<div class="columns">
<div class="column" style="width:48%;">
<h4 id="online-distributional-regression">Online Distributional Regression</h4>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<h4 id="distributional-modeling-and-forecasting-of-natural-gas-prices">Distributional Modeling and Forecasting of Natural Gas Prices</h4>
</div></div>
<div class="columns">
<div class="column" style="width:48%;">
<center>
<img src="assets/ondir/ondir_flow.svg">
</center>
<p>Reduces estimation time by 2-3 orders of magnitude</p>
<p>Maintainins competitive forecasting accuracy</p>
<p>Real-World Validation in Energy Markets</p>
<p><i class="fa-brands fa-fw fa-python" style="color: #FFD43B;"></i> Python Package <em>ondil</em> on <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_10);"></i> <a href="https://github.com/simon-hirsch/ondil">Github</a> and <a href="https://pypi.org/project/ondil/">PyPi</a></p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p>Forecasting of Day-Ahead and Month-Ahead prices</p>
<p>To capture the full distribution of future prices</p>
<p>Extensive data analysis from 2011-2020</p>
<p>State-Space models, skewed Students <em>t</em> distribution</p>
<p><i class="fa-brands fa-fw fa-python" style="color: #306998;"></i> Python Package <em>sstudentt</em> on <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_10);"></i> <a href="https://github.com/BerriJ/sstudentt">Github</a> and <a href="https://pypi.org/project/sstudentt/">PyPi</a></p>
<div class="cell" data-layout-align="left">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-left">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-1-1.svg" class="quarto-figure quarto-figure-left"></p>
</figure>
</div>
</div>
</div>
</div></div>
</section>
<section id="overview-1" class="slide level2">
<h2>Overview</h2>
<div class="columns">
<div class="column" style="width:48%;">
<h4 id="high-resolution-peak-demand-estimation-using-generalized-additive-models-and-deep-neural-networks">High-Resolution Peak Demand Estimation Using Generalized Additive Models and Deep Neural Networks</h4>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<h4 id="rcpptimer-rcpp-tic-toc-timer-with-openmp-support">rcpptimer: Rcpp Tic-Toc Timer with OpenMP Support</h4>
</div></div>
<div class="columns">
<div class="column" style="width:48%;">
<p>Predict high-resolution electricity peaks using only low-resolution data</p>
<p>Combine GAMs and DNNs for superior accuracy</p>
<p><i class="fa fa-fw fa-award" style="color:var(--col_red_9);"></i> Won Western Power Distribution Competition</p>
<p><i class="fa fa-fw fa-award" style="color:var(--col_amber_9);"></i> Won Best-Student-Presentation Award</p>
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-2-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p><i class="fa-brands fa-fw fa-r-project" style="color: #276DC3;"></i> R Package <em>rcpptimer</em> on <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_10);"></i> <a href="https://github.com/BerriJ/rcpptimer">Github</a> and <a href="https://cran.r-project.org/web/packages/rcpptimer/">CRAN</a></p>
<p>Provides Rcpp bindings for <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_10);"></i> <a href="https://github.com/BerriJ/rcpptimer">cpptimer</a></p>
<p>tic-toc class for timing C++ code</p>
<p>Supports nested, overlapping and scoped timers</p>
<p>Supports OpenMP parallelism</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode numberSource cpp number-lines code-with-copy"><code class="sourceCode cpp"><span id="cb1-1"><a href=""></a><span class="co">//[[Rcpp::depends(rcpptimer)]]</span></span>
<span id="cb1-2"><a href=""></a><span class="pp">#include </span><span class="im">&lt;rcpptimer.h&gt;</span></span>
<span id="cb1-3"><a href=""></a></span>
<span id="cb1-4"><a href=""></a><span class="dt">void</span> main<span class="op">(){</span></span>
<span id="cb1-5"><a href=""></a> Rcpp<span class="op">::</span>Timer timer<span class="op">;</span></span>
<span id="cb1-6"><a href=""></a> Rcpp<span class="op">::</span>Timer<span class="op">::</span>ScopedTimer _<span class="op">(</span>timer<span class="op">,</span> <span class="st">"ST"</span><span class="op">);</span></span>
<span id="cb1-7"><a href=""></a></span>
<span id="cb1-8"><a href=""></a> timer<span class="op">.</span>tic<span class="op">();</span></span>
<span id="cb1-9"><a href=""></a> <span class="co">// Some more code</span></span>
<span id="cb1-10"><a href=""></a> timer<span class="op">.</span>toc<span class="op">();</span></span>
<span id="cb1-11"><a href=""></a><span class="op">}</span> <span class="co">// ScopedTimer will stop automatically</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div></div>
</section>
<section>
<section id="sec-crps-learning" class="title-slide slide level1 center">
<h1>CRPS Learning</h1>
<p>Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH2023105221">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. <em>Journal of Econometrics</em>, 237(2), 105221.</p>
</section>
<section id="introduction" class="slide level2">
<h2>Introduction</h2>
<div class="columns">
<div class="column" style="width:48%;">
<p>The Idea:</p>
<ul>
<li><p>Combine multiple forecasts instead of choosing one</p></li>
<li><p>Combination weights may vary over <strong>time</strong>, over the <strong>distribution</strong> or <strong>both</strong></p></li>
</ul>
<p>2 Popular options for combining distributions:</p>
<ul>
<li>Combining across quantiles (this paper)
<ul>
<li>Horizontal aggregation, vincentization</li>
</ul></li>
<li>Combining across probabilities
<ul>
<li>Vertical aggregation</li>
</ul></li>
</ul>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<div class="panel-tabset">
<ul id="tabset-1" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-1-1">Time</a></li><li><a href="#tabset-1-2">Distribution</a></li></ul>
<div class="tab-content">
<div id="tabset-1-1">
<div class="cell">
<div class="cell-output-display">
<div>
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-3-1.svg"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-1-2">
<div class="cell">
<div class="cell-output-display">
<div>
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-4-1.svg"></p>
</figure>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div>
</section>
<section id="the-framework-of-prediction-under-expert-advice" class="slide level2">
<h2>The Framework of Prediction under Expert Advice</h2>
<h3 id="the-sequential-framework">The sequential framework</h3>
<div class="columns">
<div class="column" style="width:48%;">
<p>Each day, <span class="math inline">\(t = 1, 2, ... T\)</span></p>
<ul>
<li>The <strong>forecaster</strong> receives predictions <span class="math inline">\(\widehat{X}_{t,k}\)</span> from <span class="math inline">\(K\)</span> <strong>experts</strong></li>
<li>The <strong>forecaster</strong> assings weights <span class="math inline">\(w_{t,k}\)</span> to each <strong>expert</strong></li>
<li>The <strong>forecaster</strong> calculates her prediction: <span class="math display">\[\begin{equation}
\widetilde{X}_{t} = \sum_{k=1}^K w_{t,k} \widehat{X}_{t,k}.
\label{eq_forecast_def}
\end{equation}\]</span></li>
<li>The realization for <span class="math inline">\(t\)</span> is observed</li>
</ul>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<ul>
<li>The experts can be institutions, persons, or models</li>
<li>The forecasts can be point-forecasts (i.e., mean or median) or full predictive distributions</li>
<li>We do not need any assumptions concerning the underlying data</li>
<li><span class="citation" data-cites="cesa2006prediction">Cesa-Bianchi &amp; Lugosi (<a href="#/references" role="doc-biblioref" onclick="">2006</a>)</span></li>
</ul>
</div></div>
</section>
<section id="the-regret" class="slide level2">
<h2>The Regret</h2>
<p>Weights are updated sequentially according to the past performance of the <span class="math inline">\(K\)</span> experts.</p>
<p>That is, a loss function <span class="math inline">\(\ell\)</span> is needed. This is used to compute the <strong>cumulative regret</strong> <span class="math inline">\(R_{t,k}\)</span></p>
<p><span class="math display">\[\begin{equation}
R_{t,k} = \widetilde{L}_{t} - \widehat{L}_{t,k} = \sum_{i = 1}^t \ell(\widetilde{X}_{i},Y_i) - \ell(\widehat{X}_{i,k},Y_i)\label{eq:regret}
\end{equation}\]</span></p>
<p>The cumulative regret:</p>
<ul>
<li>Indicates the predictive accuracy of the expert <span class="math inline">\(k\)</span> until time <span class="math inline">\(t\)</span>.</li>
<li>Measures how much the forecaster <em>regrets</em> not having followed the experts advice</li>
</ul>
<p>Popular loss functions for point forecasting <span class="citation" data-cites="gneiting2011making">Gneiting (<a href="#/references" role="doc-biblioref" onclick="">2011</a>)</span>:</p>
<div class="columns">
<div class="column" style="width:48%;">
<p><span class="math inline">\(\ell_2\)</span> loss:</p>
<p><span class="math display">\[\begin{equation}
\ell_2(x, y) = | x -y|^2 \label{eq:elltwo}
\end{equation}\]</span></p>
<p>Strictly proper for <em>mean</em> prediction</p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p><span class="math inline">\(\ell_1\)</span> loss:</p>
<p><span class="math display">\[\begin{equation}
\ell_1(x, y) = | x -y| \label{eq:ellone}
\end{equation}\]</span></p>
<p>Strictly proper for <em>median</em> predictions</p>
</div></div>
</section>
<section id="popular-algorithms-and-the-risk" class="slide level2">
<h2>Popular Algorithms and the Risk</h2>
<p><br></p>
<div class="columns">
<div class="column" style="width:48%;">
<h3 id="popular-aggregation-algorithms">Popular Aggregation Algorithms</h3>
<p><br></p>
<h4 id="the-naive-combination">The naive combination</h4>
<p><span class="math display">\[\begin{equation}
w_{t,k}^{\text{Naive}} = \frac{1}{K}\label{eq:naive_combination}
\end{equation}\]</span></p>
<h4 id="the-exponentially-weighted-average-forecaster-ewa">The exponentially weighted average forecaster (EWA)</h4>
<p><span class="math display">\[\begin{equation}
\begin{aligned}
w_{t,k}^{\text{EWA}} &amp; = \frac{e^{\eta R_{t,k}} }{\sum_{k = 1}^K e^{\eta R_{t,k}}}\\
&amp; =
\frac{e^{-\eta \ell(\widehat{X}_{t,k},Y_t)} w^{\text{EWA}}_{t-1,k} }{\sum_{k = 1}^K e^{-\eta \ell(\widehat{X}_{t,k},Y_t)} w^{\text{EWA}}_{t-1,k}}
\end{aligned}\label{eq:exp_combination}
\end{equation}\]</span></p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<h3 id="optimality">Optimality</h3>
<p>In stochastic settings, the cumulative Risk should be analyzed <span class="citation" data-cites="wintenberger2017optimal">Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2017</a>)</span>: <span class="math display">\[\begin{align}
&amp;\underbrace{\widetilde{\mathcal{R}}_t = \sum_{i=1}^t \mathbb{E}[\ell(\widetilde{X}_{i},Y_i)|\mathcal{F}_{i-1}]}_{\text{Cumulative Risk of Forecaster}} \\
&amp;\underbrace{\widehat{\mathcal{R}}_{t,k} = \sum_{i=1}^t \mathbb{E}[\ell(\widehat{X}_{i,k},Y_i)|\mathcal{F}_{i-1}]}_{\text{Cumulative Risk of Experts}}
\label{eq_def_cumrisk}
\end{align}\]</span></p>
</div></div>
</section>
<section id="optimal-convergence" class="slide level2">
<h2>Optimal Convergence</h2>
<p><br></p>
<div class="columns">
<div class="column" style="width:48%;">
<h3 id="the-selection-problem">The selection problem</h3>
<p><span class="math display">\[\begin{equation}
\frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\min} \right) \stackrel{t\to \infty}{\rightarrow} a \quad \text{with} \quad a \leq 0.
\label{eq_opt_select}
\end{equation}\]</span> The forecaster is asymptotically not worse than the best expert <span class="math inline">\(\widehat{\mathcal{R}}_{t,\min}\)</span>.</p>
<h3 id="the-convex-aggregation-problem">The convex aggregation problem</h3>
<p><span class="math display">\[\begin{equation}
\frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\pi} \right) \stackrel{t\to \infty}{\rightarrow} b \quad \text{with} \quad b \leq 0 .
\label{eq_opt_conv}
\end{equation}\]</span> The forecaster is asymptotically not worse than the best convex combination <span class="math inline">\(\widehat{X}_{t,\pi}\)</span> in hindsight (<strong>oracle</strong>).</p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p>Optimal rates with respect to selection <span class="math inline">\(\eqref{eq_opt_select}\)</span> and convex aggregation <span class="math inline">\(\eqref{eq_opt_conv}\)</span> <span class="citation" data-cites="wintenberger2017optimal">Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2017</a>)</span>:</p>
<p><span class="math display">\[\begin{align}
\frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\min} \right) &amp; =
\mathcal{O}\left(\frac{\log(K)}{t}\right)\label{eq_optp_select}
\end{align}\]</span></p>
<p><span class="math display">\[\begin{align}
\frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\pi} \right) &amp; =
\mathcal{O}\left(\sqrt{\frac{\log(K)}{t}}\right)
\label{eq_optp_conv}
\end{align}\]</span></p>
<p>Algorithms can statisfy both <span class="math inline">\(\eqref{eq_optp_select}\)</span> and <span class="math inline">\(\eqref{eq_optp_conv}\)</span> depending on:</p>
<ul>
<li>The loss function</li>
<li>Regularity conditions on <span class="math inline">\(Y_t\)</span> and <span class="math inline">\(\widehat{X}_{t,k}\)</span></li>
<li>The weighting scheme</li>
</ul>
</div></div>
</section>
<section id="section" class="slide level2">
<h2></h2>
<div class="columns">
<div class="column" style="width:48%;">
<h3 id="optimal-convergence-1">Optimal Convergence</h3>
<p><br></p>
<p>EWA satisfies optimal selection convergence <span class="math inline">\(\eqref{eq_optp_select}\)</span> in a deterministic setting if:</p>
<ul>
<li>Loss <span class="math inline">\(\ell\)</span> is exp-concave</li>
<li>Learning-rate <span class="math inline">\(\eta\)</span> is chosen correctly</li>
</ul>
<p>Those results can be converted to any stochastic setting <span class="citation" data-cites="wintenberger2017optimal">Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2017</a>)</span>.</p>
<p>Optimal convex aggregation convergence <span class="math inline">\(\eqref{eq_optp_conv}\)</span> can be satisfied by applying the kernel-trick:</p>
<p><span class="math display">\[\begin{align}
\ell^{\nabla}(x,y) = \ell'(\widetilde{X},y) x
\end{align}\]</span></p>
<p><span class="math inline">\(\ell'\)</span> is the subgradient of <span class="math inline">\(\ell\)</span> at forecast combination <span class="math inline">\(\widetilde{X}\)</span>.</p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<h3 id="probabilistic-setting">Probabilistic Setting</h3>
<p><br></p>
<p><strong>An appropriate choice:</strong></p>
<p><span class="math display">\[\begin{equation*}
\text{CRPS}(F, y) = \int_{\mathbb{R}} {(F(x) - \mathbb{1}\{ x &gt; y \})}^2 dx \label{eq:crps}
\end{equation*}\]</span></p>
<p>Its strictly proper <span class="citation" data-cites="gneiting2007strictly">Gneiting &amp; Raftery (<a href="#/references" role="doc-biblioref" onclick="">2007</a>)</span>.</p>
<p>Using the CRPS, we can calculate time-adaptive weights <span class="math inline">\(w_{t,k}\)</span>. However, what if the experts performance varies in parts of the distribution?</p>
<p><i class="fa fa-fw fa-lightbulb" style="color:var(--col_yellow_9);"></i> Utilize this relation:</p>
<p><span class="math display">\[\begin{equation*}
\text{CRPS}(F, y) = 2 \int_0^{1} \text{QL}_p(F^{-1}(p), y) dp.\label{eq_crps_qs}
\end{equation*}\]</span></p>
<p>… to combine quantiles of the probabilistic forecasts individually using the quantile-loss QL.</p>
</div></div>
</section>
<section id="crps-learning-optimality" class="slide level2">
<h2>CRPS Learning Optimality</h2>
<div class="panel-tabset">
<ul id="tabset-2" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-2-1">Almost Optimal Convergence</a></li><li><a href="#tabset-2-2">Conditions + Lemma</a></li><li><a href="#tabset-2-3">Proposition + Theorem</a></li></ul>
<div class="tab-content">
<div id="tabset-2-1">
<div style="font-size: 90%;">
<p><i class="fa fa-fw fa-exclamation" style="color:var(--col_orange_10);"></i> QL is convex, but not exp-concave</p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Bernstein Online Aggregation (BOA) lets us weaken the exp-concavity condition. It satisfies that there exist a <span class="math inline">\(C&gt;0\)</span> such that for <span class="math inline">\(x&gt;0\)</span> it holds that</p>
<p><span class="math display">\[\begin{equation}
P\left( \frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\pi} \right) \leq C \log(\log(t)) \left(\sqrt{\frac{\log(K)}{t}} + \frac{\log(K)+x}{t}\right) \right) \geq
1-e^{-x}
\label{eq_boa_opt_conv}
\end{equation}\]</span></p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Almost optimal w.r.t. <em>convex aggregation</em> <span class="math inline">\(\eqref{eq_optp_conv}\)</span> <span class="citation" data-cites="wintenberger2017optimal">Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2017</a>)</span>.</p>
<p>The same algorithm satisfies that there exist a <span class="math inline">\(C&gt;0\)</span> such that for <span class="math inline">\(x&gt;0\)</span> it holds that <span class="math display">\[\begin{equation}
P\left( \frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\min} \right) \leq
C\left(\frac{\log(K)+\log(\log(Gt))+ x}{\alpha t}\right)^{\frac{1}{2-\beta}} \right) \geq
1-2e^{-x}
\label{eq_boa_opt_select}
\end{equation}\]</span></p>
<p>if <span class="math inline">\(Y_t\)</span> is bounded, the considered loss <span class="math inline">\(\ell\)</span> is convex <span class="math inline">\(G\)</span>-Lipschitz and weak exp-concave in its first coordinate.</p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Almost optimal w.r.t. <em>selection</em> <span class="math inline">\(\eqref{eq_optp_select}\)</span> <span class="citation" data-cites="gaillard2018efficient">Gaillard &amp; Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2018</a>)</span>.</p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> We show that this holds for QL under feasible conditions.</p>
</div>
</div>
<div id="tabset-2-2">
<div class="columns">
<div class="column" style="width:48%;">
<p><strong>Lemma 1</strong></p>
<p><span class="math display">\[\begin{align}
2\overline{\widehat{\mathcal{R}}}^{\text{QL}}_{t,\min}
&amp; \leq \widehat{\mathcal{R}}^{\text{CRPS}}_{t,\min}
\label{eq_risk_ql_crps_expert} \\
2\overline{\widehat{\mathcal{R}}}^{\text{QL}}_{t,\pi}
&amp; \leq \widehat{\mathcal{R}}^{\text{CRPS}}_{t,\pi} .
\label{eq_risk_ql_crps_convex}
\end{align}\]</span></p>
<p>Pointwise can outperform constant procedures</p>
<p>QL is convex but not exp-concave:</p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Almost optimal convergence w.r.t. <em>convex aggregation</em> <span class="math inline">\(\eqref{eq_boa_opt_conv}\)</span> <i class="fa fa-fw fa-check" style="color:var(--col_green_9);"></i> <br></p>
<p>For almost optimal congerence w.r.t. <em>selection</em> <span class="math inline">\(\eqref{eq_boa_opt_select}\)</span> we need to check <strong>A1</strong> and <strong>A2</strong>:</p>
<p>QL is Lipschitz continuous:</p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> <strong>A1</strong> holds <i class="fa fa-fw fa-check" style="color:var(--col_orange_9);"></i></p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p><strong>A1</strong></p>
<p>For some <span class="math inline">\(G&gt;0\)</span> it holds for all <span class="math inline">\(x_1,x_2\in \mathbb{R}\)</span> and <span class="math inline">\(t&gt;0\)</span> that</p>
<p><span class="math display">\[ | \ell(x_1, Y_t)-\ell(x_2, Y_t) | \leq G |x_1-x_2|\]</span></p>
<p><strong>A2</strong> For some <span class="math inline">\(\alpha&gt;0\)</span>, <span class="math inline">\(\beta\in[0,1]\)</span> it holds for all <span class="math inline">\(x_1,x_2 \in \mathbb{R}\)</span> and <span class="math inline">\(t&gt;0\)</span> that</p>
<p><span class="math display">\[\begin{align*}
\mathbb{E}[
&amp; \ell(x_1, Y_t)-\ell(x_2, Y_t) | \mathcal{F}_{t-1}] \leq \\
&amp; \mathbb{E}[ \ell'(x_1, Y_t)(x_1 - x_2) |\mathcal{F}_{t-1}] \\
&amp; +
\mathbb{E}\left[ \left. \left( \alpha(\ell'(x_1, Y_t)(x_1 - x_2))^{2}\right)^{1/\beta} \right|\mathcal{F}_{t-1}\right]
\end{align*}\]</span></p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Almost optimal w.r.t. <em>selection</em> <span class="math inline">\(\eqref{eq_optp_select}\)</span> <span class="citation" data-cites="gaillard2018efficient">Gaillard &amp; Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2018</a>)</span>.</p>
</div></div>
</div>
<div id="tabset-2-3">
<div class="columns">
<div class="column" style="width:48%;">
<p>Conditional quantile risk: <span class="math inline">\(\mathcal{Q}_p(x) = \mathbb{E}[ \text{QL}_p(x, Y_t) | \mathcal{F}_{t-1}]\)</span>.</p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> convexity properties of <span class="math inline">\(\mathcal{Q}_p\)</span> depend on the conditional distribution <span class="math inline">\(Y_t|\mathcal{F}_{t-1}\)</span>.</p>
<p><strong>Proposition 1</strong></p>
<p>Let <span class="math inline">\(Y\)</span> be a univariate random variable with (Radon-Nikodym) <span class="math inline">\(\nu\)</span>-density <span class="math inline">\(f\)</span>, then for the second subderivative of the quantile risk <span class="math inline">\(\mathcal{Q}_p(x) = \mathbb{E}[ \text{QL}_p(x, Y) ]\)</span> of <span class="math inline">\(Y\)</span> it holds for all <span class="math inline">\(p\in(0,1)\)</span> that <span class="math inline">\(\mathcal{Q}_p'' = f.\)</span> Additionally, if <span class="math inline">\(f\)</span> is a continuous Lebesgue-density with <span class="math inline">\(f\geq\gamma&gt;0\)</span> for some constant <span class="math inline">\(\gamma&gt;0\)</span> on its support <span class="math inline">\(\text{spt}(f)\)</span> then is <span class="math inline">\(\mathcal{Q}_p\)</span> is <span class="math inline">\(\gamma\)</span>-strongly convex.</p>
<p>Strong convexity with <span class="math inline">\(\beta=1\)</span> implies weak exp-concavity <strong>A2</strong> <i class="fa fa-fw fa-check" style="color:var(--col_green_9);"></i> <span class="citation" data-cites="gaillard2018efficient">Gaillard &amp; Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2018</a>)</span></p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> <strong>A1</strong> and <strong>A2</strong> give us almost optimal convergence w.r.t. selection <span class="math inline">\(\eqref{eq_boa_opt_select}\)</span> <i class="fa fa-fw fa-check" style="color:var(--col_green_9);"></i> <br></p>
<p><strong>Theorem 1</strong></p>
<p>The gradient based fully adaptive Bernstein online aggregation (BOAG) applied pointwise for all <span class="math inline">\(p\in(0,1)\)</span> on <span class="math inline">\(\text{QL}\)</span> satisfies <span class="math inline">\(\eqref{eq_boa_opt_conv}\)</span> with minimal CRPS given by</p>
<p><span class="math display">\[\widehat{\mathcal{R}}_{t,\pi} = 2\overline{\widehat{\mathcal{R}}}^{\text{QL}}_{t,\pi}.\]</span></p>
<p>If <span class="math inline">\(Y_t|\mathcal{F}_{t-1}\)</span> is bounded and has a pdf <span class="math inline">\(f_t\)</span> satifying <span class="math inline">\(f_t&gt;\gamma &gt;0\)</span> on its support <span class="math inline">\(\text{spt}(f_t)\)</span> then <span class="math inline">\(\ref{eq_boa_opt_select}\)</span> holds with <span class="math inline">\(\beta=1\)</span> and</p>
<p><span class="math display">\[\widehat{\mathcal{R}}_{t,\min} = 2\overline{\widehat{\mathcal{R}}}^{\text{QL}}_{t,\min}\]</span>.</p>
</div></div>
</div>
</div>
</div>
<aside class="notes">
<p>We apply Bernstein Online Aggregation (BOA). It lets us weaken the exp-concavity condition while almost keeping the optimalities <span class="math inline">\(\ref{eq_optp_select}\)</span> and <span class="math inline">\(\ref{eq_optp_conv}\)</span>.</p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="a-probabilistic-example" class="slide level2">
<h2>A Probabilistic Example</h2>
<div class="columns">
<div class="column" style="width:48%;">
<p>Simple Example:</p>
<p><span class="math display">\[\begin{align}
Y_t &amp; \sim \mathcal{N}(0,\,1) \\
\widehat{X}_{t,1} &amp; \sim \widehat{F}_{1} = \mathcal{N}(-1,\,1) \\
\widehat{X}_{t,2} &amp; \sim \widehat{F}_{2} = \mathcal{N}(3,\,4)
\label{eq:dgp_sim1}
\end{align}\]</span></p>
<ul>
<li>True weights vary over <span class="math inline">\(p\)</span></li>
<li>Figures show the ECDF and calculated weights using <span class="math inline">\(T=25\)</span> realizations</li>
<li>Pointwise solution creates rough estimates</li>
<li>Pointwise is better than constant</li>
<li>Smooth solution is better than pointwise</li>
</ul>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<div class="panel-tabset">
<ul id="tabset-3" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-3-1">CDFs</a></li><li><a href="#tabset-3-2">Weights</a></li></ul>
<div class="tab-content">
<div id="tabset-3-1">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-5-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-3-2">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-6-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div>
</section>
<section id="the-smoothing-procedures" class="slide level2">
<h2>The Smoothing Procedures</h2>
<div class="panel-tabset">
<ul id="tabset-4" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-4-1">Penalized Smoothing</a></li><li><a href="#tabset-4-2">Basis Smoothing</a></li></ul>
<div class="tab-content">
<div id="tabset-4-1">
<div class="columns">
<div class="column" style="width:48%;">
<p>Penalized cubic B-Splines for smoothing weights:</p>
<p>Let <span class="math inline">\(\varphi=(\varphi_1,\ldots, \varphi_L)\)</span> be bounded basis functions on <span class="math inline">\((0,1)\)</span> Then we approximate <span class="math inline">\(w_{t,k}\)</span> by</p>
<p><span class="math display">\[\begin{align}
w_{t,k}^{\text{smooth}} = \sum_{l=1}^L \beta_l \varphi_l = \beta'\varphi
\end{align}\]</span></p>
<p>with parameter vector <span class="math inline">\(\beta\)</span>. The latter is estimated to penalize <span class="math inline">\(L_2\)</span>-smoothing which minimizes</p>
<p><span class="math display">\[\begin{equation}
\| w_{t,k} - \beta' \varphi \|^2_2 + \lambda \| \mathcal{D}^{d} (\beta' \varphi) \|^2_2
\label{eq_function_smooth}
\end{equation}\]</span></p>
<p>with differential operator <span class="math inline">\(\mathcal{D}\)</span></p>
<p>Computation is easy, since we have an analytical solution</p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p>We receive the constant solution for high values of <span class="math inline">\(\lambda\)</span> when setting <span class="math inline">\(d=1\)</span></p>
<center>
<img src="assets/crps_learning/weights_lambda.gif">
</center>
</div></div>
</div>
<div id="tabset-4-2">
<div class="columns">
<div class="column" style="width:48%;">
<p>Represent weights as linear combinations of bounded basis functions:</p>
<p><span class="math display">\[\begin{equation}
w_{t,k} = \sum_{l=1}^L \beta_{t,k,l} \varphi_l = \boldsymbol \beta_{t,k}' \boldsymbol \varphi
\end{equation}\]</span></p>
<p>A popular choice are are B-Splines as local basis functions</p>
<p><span class="math inline">\(\boldsymbol \beta_{t,k}\)</span> is calculated using a reduced regret matrix:</p>
<p><span class="math display">\[\begin{equation}
\underbrace{\boldsymbol r_{t}}_{\text{LxK}} = \frac{L}{P} \underbrace{\boldsymbol B'}_{\text{LxP}} \underbrace{\left({\boldsymbol{QL}}_{\mathcal{P}}^{\nabla}(\widetilde{\boldsymbol X}_{t},Y_t)- {\boldsymbol{QL}}_{\mathcal{P}}^{\nabla}(\widehat{\boldsymbol X}_{t},Y_t)\right)}_{\text{PxK}}
\end{equation}\]</span></p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> <span class="math inline">\(\boldsymbol r_{t}\)</span> is transformed from PxK to LxK</p>
<p>If <span class="math inline">\(L = P\)</span> it holds that <span class="math inline">\(\boldsymbol \varphi = \boldsymbol{I}\)</span> For <span class="math inline">\(L = 1\)</span> we receive constant weights</p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p>Weights converge to the constant solution if <span class="math inline">\(L\rightarrow 1\)</span></p>
<center>
<img src="assets/crps_learning/weights_kstep.gif">
</center>
</div></div>
</div>
</div>
</div>
</section>
<section id="the-proposed-crps-learning-algorithm" class="slide level2">
<h2>The Proposed CRPS-Learning Algorithm</h2>
<p><br></p>
<div style="font-size: 85%;">
<div class="columns">
<div class="column" style="width:43%;">
<h3 id="initialization">Initialization:</h3>
<p>Array of expert predicitons: <span class="math inline">\(\widehat{X}_{t,p,k}\)</span></p>
<p>Vector of Prediction targets: <span class="math inline">\(Y_t\)</span></p>
<p>Starting Weights: <span class="math inline">\(\boldsymbol w_0=(w_{0,1},\ldots, w_{0,K})\)</span></p>
<p>Penalization parameter: <span class="math inline">\(\lambda\geq 0\)</span></p>
<p>B-spline and penalty matrices <span class="math inline">\(\boldsymbol B\)</span> and <span class="math inline">\(\boldsymbol D\)</span> on <span class="math inline">\(\mathcal{P}= (p_1,\ldots,p_M)\)</span></p>
<p>Hat matrix: <span class="math display">\[\boldsymbol{\mathcal{H}} = \boldsymbol B(\boldsymbol B'\boldsymbol B+ \lambda (\alpha \boldsymbol D_1'\boldsymbol D_1 + (1-\alpha) \boldsymbol D_2'\boldsymbol D_2))^{-1} \boldsymbol B'\]</span></p>
<p>Cumulative Regret: <span class="math inline">\(R_{0,k} = 0\)</span></p>
<p>Range parameter: <span class="math inline">\(E_{0,k}=0\)</span></p>
<p>Starting pseudo-weights: <span class="math inline">\(\boldsymbol \beta_0 = \boldsymbol B^{\text{pinv}}\boldsymbol w_0(\boldsymbol{\mathcal{P}})\)</span></p>
</div><div class="column" style="width:2%;">
</div><div class="column" style="width:55%;">
<h3 id="core">Core:</h3>
<p>for( t in 1:T ) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span class="math inline">\(\widetilde{\boldsymbol X}_{t} = \text{Sort}\left( \boldsymbol w_{t-1}'(\boldsymbol P) \widehat{\boldsymbol X}_{t} \right)\)</span> <b style="color: var(--col_grey_7);"># Prediction</b></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span class="math inline">\(\boldsymbol r_{t} = \frac{L}{M} \boldsymbol B' \left({\boldsymbol{QL}}_{\boldsymbol{\mathcal P}}^{\nabla}(\widetilde{\boldsymbol X}_{t},Y_t)- {\boldsymbol{QL}}_{\boldsymbol{\mathcal P}}^{\nabla}(\widehat{\boldsymbol X}_{t},Y_t)\right)\)</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span class="math inline">\(\boldsymbol E_{t} = \max(\boldsymbol E_{t-1}, \boldsymbol r_{t}^+ + \boldsymbol r_{t}^-)\)</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span class="math inline">\(\boldsymbol V_{t} = \boldsymbol V_{t-1} + \boldsymbol r_{t}^{ \odot 2}\)</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span class="math inline">\(\boldsymbol \eta_{t} =\min\left( \left(-\log(\boldsymbol \beta_{0}) \odot \boldsymbol V_{t}^{\odot -1} \right)^{\odot\frac{1}{2}} , \frac{1}{2}\boldsymbol E_{t}^{\odot-1}\right)\)</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span class="math inline">\(\boldsymbol R_{t} = \boldsymbol R_{t-1}+ \boldsymbol r_{t} \odot \left( \boldsymbol 1 - \boldsymbol \eta_{t} \odot \boldsymbol r_{t} \right)/2 + \boldsymbol E_{t} \odot \mathbb{1}\{-2\boldsymbol \eta_{t}\odot \boldsymbol r_{t} &gt; 1\}\)</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span class="math inline">\(\boldsymbol \beta_{t} = K \boldsymbol \beta_{0} \odot \boldsymbol {SoftMax}\left( - \boldsymbol \eta_{t} \odot \boldsymbol R_{t} + \log( \boldsymbol \eta_{t}) \right)\)</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span class="math inline">\(\boldsymbol w_{t}(\boldsymbol P) = \underbrace{\boldsymbol B(\boldsymbol B'\boldsymbol B+ \lambda (\alpha \boldsymbol D_1'\boldsymbol D_1 + (1-\alpha) \boldsymbol D_2'\boldsymbol D_2))^{-1} \boldsymbol B'}_{\boldsymbol{\mathcal{H}}} \boldsymbol B \boldsymbol \beta_{t}\)</span></p>
<p>}</p>
</div></div>
</div>
</section>
<section id="simulation-study" class="slide level2">
<h2>Simulation Study</h2>
<div class="panel-tabset">
<ul id="tabset-6" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-6-1">BOA</a></li><li><a href="#tabset-6-2">Comparison to EWA and ML-Poly</a></li><li><a href="#tabset-6-3">Study Forget</a></li></ul>
<div class="tab-content">
<div id="tabset-6-1">
<div class="columns">
<div class="column" style="width:48%;">
<p>Data Generating Process of the <a href="#/simple_example">simple probabilistic example</a>:</p>
<p><span class="math display">\[\begin{align*}
Y_t &amp;\sim \mathcal{N}(0,\,1)\\
\widehat{X}_{t,1} &amp;\sim \widehat{F}_{1}=\mathcal{N}(-1,\,1) \\
\widehat{X}_{t,2} &amp;\sim \widehat{F}_{2}=\mathcal{N}(3,\,4)
\end{align*}\]</span></p>
<ul>
<li>Constant solution <span class="math inline">\(\lambda \rightarrow \infty\)</span></li>
<li>Pointwise Solution of the proposed BOAG</li>
<li>Smoothed Solution of the proposed BOAG
<ul>
<li>Weights are smoothed during learning</li>
<li>Smooth weights are used to calculate Regret, adjust weights, etc.</li>
</ul></li>
</ul>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<div class="panel-tabset">
<ul id="tabset-5" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-5-1">QL Deviation</a></li><li><a href="#tabset-5-2">CRPS vs.&nbsp;Lambda</a></li><li><a href="#tabset-5-3">Knots</a></li></ul>
<div class="tab-content">
<div id="tabset-5-1">
<p>Deviation from best attainable QL (1000 runs).</p>
<p><img data-src="assets/crps_learning/pre_vs_post.gif"></p>
</div>
<div id="tabset-5-2">
<p>CRPS Values for different <span class="math inline">\(\lambda\)</span> (1000 runs)</p>
<p><img data-src="assets/crps_learning/pre_vs_post_lambda.gif"></p>
</div>
<div id="tabset-5-3">
<p>CRPS for different number of knots (1000 runs)</p>
<p><img data-src="assets/crps_learning/pre_vs_post_kstep.gif"></p>
</div>
</div>
</div>
</div></div>
</div>
<div id="tabset-6-2">
<p>The same simulation carried out for different algorithms (1000 runs):</p>
<center>
<img src="assets/crps_learning/algos_constant.gif">
</center>
</div>
<div id="tabset-6-3">
<div class="columns">
<div class="column" style="width:38%;">
<h4 id="new-dgp">New DGP:</h4>
<p><span class="math display">\[\begin{align*}
Y_t &amp;\sim \mathcal{N}\left(\frac{\sin(0.005 \pi t )}{2},\,1\right) \\
\widehat{X}_{t,1} &amp;\sim \widehat{F}_{1} = \mathcal{N}(-1,\,1) \\
\widehat{X}_{t,2} &amp;\sim \widehat{F}_{2} = \mathcal{N}(3,\,4)
\end{align*}\]</span></p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Changing optimal weights</p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Single run example depicted aside</p>
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> No forgetting leads to long-term constant weights</p>
<center>
<img src="assets/crps_learning/forget.png">
</center>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:58%;">
<h3 id="section-1">&nbsp;</h3>
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-7-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div></div>
</div>
</div>
</div>
</section>
<section id="application-study" class="slide level2">
<h2>Application Study</h2>
<div class="panel-tabset">
<ul id="tabset-8" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-8-1">Overview</a></li><li><a href="#tabset-8-2">Experts</a></li><li><a href="#tabset-8-3">Results</a></li></ul>
<div class="tab-content">
<div id="tabset-8-1">
<div class="columns">
<div class="column" style="width:29%;">
<div style="font-size: 85%;">
<p>Data:</p>
<ul>
<li>Forecasting European emission allowances (EUA)</li>
<li>Daily month-ahead prices</li>
<li>Jan 13 - Dec 20 (Phase III, 2092 Obs)</li>
<li>Rolling Window (length 250 ~ 1 year)</li>
</ul>
<p>Combination methods:</p>
<ul>
<li>Online
<ul>
<li>Naive, BOAG, EWAG, ML-PolyG, BMA</li>
</ul></li>
<li>Batch
<ul>
<li>QRlin, QRconv</li>
</ul></li>
</ul>
</div>
</div><div class="column" style="width:2%;">
</div><div class="column" style="width:69%;">
<p>Tuning paramter grids:</p>
<ul>
<li>Smoothing Penalty: <span class="math inline">\(\Lambda= \{0\}\cup \{2^x|x\in \{-4,-3.5,\ldots,12\}\}\)</span></li>
<li>Learning Rates: <span class="math inline">\(\mathcal{E}= \{2^x|x\in \{-1,-0.5,\ldots,9\}\}\)</span></li>
</ul>
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-8-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div></div>
</div>
<div id="tabset-8-2">
<div style="font-size: 90%;">
<p>Simple exponential smoothing with additive errors (<strong>ETS-ANN</strong>):</p>
<p><span class="math display">\[\begin{align*}
Y_{t} = l_{t-1} + \varepsilon_t \quad \text{with} \quad l_t = l_{t-1} + \alpha \varepsilon_t \quad \text{and} \quad \varepsilon_t \sim \mathcal{N}(0,\sigma^2)
\end{align*}\]</span></p>
<p>Quantile regression (<strong>QuantReg</strong>): For each <span class="math inline">\(p \in \mathcal{P}\)</span> we assume:</p>
<p><span class="math display">\[\begin{align*}
F^{-1}_{Y_t}(p) = \beta_{p,0} + \beta_{p,1} Y_{t-1} + \beta_{p,2} |Y_{t-1}-Y_{t-2}|
\end{align*}\]</span></p>
<p>ARIMA(1,0,1)-GARCH(1,1) with Gaussian errors (<strong>ARMA-GARCH</strong>):</p>
<p><span class="math display">\[\begin{align*}
Y_{t} = \mu + \phi(Y_{t-1}-\mu) + \theta \varepsilon_{t-1} + \varepsilon_t \quad \text{with} \quad \varepsilon_t = \sigma_t Z, \quad \sigma_t^2 = \omega + \alpha \varepsilon_{t-1}^2 + \beta \sigma_{t-1}^2 \quad \text{and} \quad Z_t \sim \mathcal{N}(0,1)
\end{align*}\]</span></p>
<p>ARIMA(0,1,0)-I-EGARCH(1,1) with Gaussian errors (<strong>I-EGARCH</strong>):</p>
<p><span class="math display">\[\begin{align*}
Y_{t} = \mu + Y_{t-1} + \varepsilon_t \quad \text{with} \quad \varepsilon_t = \sigma_t Z, \quad \log(\sigma_t^2) = \omega + \alpha Z_{t-1}+ \gamma (|Z_{t-1}|-\mathbb{E}|Z_{t-1}|) + \beta \log(\sigma_{t-1}^2) \quad \text{and} \quad Z_t \sim \mathcal{N}(0,1)
\end{align*}\]</span></p>
<p>ARIMA(0,1,0)-GARCH(1,1) with student-t errors (<strong>I-GARCHt</strong>):</p>
<p><span class="math display">\[\begin{align*}
Y_{t} = \mu + Y_{t-1} + \varepsilon_t \quad \text{with} \quad \varepsilon_t = \sigma_t Z, \quad \sigma_t^2 = \omega + \alpha \varepsilon_{t-1}^2 + \beta \sigma_{t-1}^2 \quad \text{and} \quad Z_t \sim t(0,1, \nu)
\end{align*}\]</span></p>
</div>
</div>
<div id="tabset-8-3">
<div class="panel-tabset">
<ul id="tabset-7" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-7-1">Significance</a></li><li><a href="#tabset-7-2">QL</a></li><li><a href="#tabset-7-3">Cumulative Loss Difference</a></li><li><a href="#tabset-7-4">Weights (BOAG P-Smooth)</a></li><li><a href="#tabset-7-5">Weights (Last)</a></li></ul>
<div class="tab-content">
<div id="tabset-7-1">
<div class="cell" data-layout-align="center">
<table class="lightable-paper caption-top" data-quarto-postprocess="true" style="font-family: &quot;Arial Narrow&quot;, arial, helvetica, sans-serif; margin-left: auto; margin-right: auto;">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">ETS</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">QuantReg</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">ARMA-GARCH</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">I-EGARCH</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">I-GARCHt</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">2.101<sup>(&gt;.999)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">1.358<sup>(&gt;.999)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 174, 128, 255) !important;">0.52<sup>(0.993)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 175, 128, 255) !important;">0.511<sup>(0.999)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(241, 255, 128, 255) !important;">-0.037<sup>(0.406)</sup></td>
</tr>
</tbody>
</table>
</div>
<div class="cell" data-layout-align="center">
<table class="lightable-paper caption-top" data-quarto-postprocess="true" style="font-family: &quot;Arial Narrow&quot;, arial, helvetica, sans-serif; margin-left: auto; margin-right: auto;">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">BOAG</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">EWAG</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">ML-PolyG</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">BMA</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">QRlin</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">QRconv</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important; font-weight: bold;">Pointwise</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(138, 233, 128, 255) !important;">-0.170<sup>(0.055)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(210, 255, 128, 255) !important;">-0.089<sup>(0.175)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(164, 242, 128, 255) !important;">-0.141<sup>(0.112)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 248, 128, 255) !important;">0.032<sup>(0.771)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">3.482<sup>(&gt;.999)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(252, 255, 128, 255) !important;">-0.019<sup>(0.309)</sup></td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important; font-weight: bold;">B-Constant</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(186, 249, 128, 255) !important;">-0.118<sup>(0.146)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(234, 255, 128, 255) !important;">-0.049<sup>(0.305)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(209, 255, 128, 255) !important;">-0.090<sup>(0.218)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 247, 128, 255) !important;">0.038<sup>(0.834)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">4.002<sup>(&gt;.999)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 171, 128, 255) !important;">0.539<sup>(0.996)</sup></td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important; font-weight: bold;">P-Constant</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(168, 243, 128, 255) !important;">-0.138<sup>(0.020)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(221, 255, 128, 255) !important;">-0.070<sup>(0.137)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(172, 244, 128, 255) !important;">-0.133<sup>(0.026)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 247, 128, 255) !important;">0.039<sup>(0.851)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">5.275<sup>(&gt;.999)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 251, 128, 255) !important;">0.009<sup>(0.683)</sup></td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important; font-weight: bold;">B-Smooth</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(136, 232, 128, 255) !important;">-0.173<sup>(0.062)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(224, 255, 128, 255) !important;">-0.065<sup>(0.276)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(165, 242, 128, 255) !important;">-0.141<sup>(0.118)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 255, 128, 255) !important;">-0.042<sup>(0.386)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(244, 244, 244, 255) !important;">-</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(244, 244, 244, 255) !important;">-</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important; font-weight: bold;">P-Smooth</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(128, 230, 128, 255) !important;"><strong>-0.182</strong><sup>(0.039)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(196, 252, 128, 255) !important;">-0.107<sup>(0.121)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(147, 236, 128, 255) !important;">-0.160<sup>(0.065)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 247, 128, 255) !important;">0.040<sup>(0.804)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">3.495<sup>(&gt;.999)</sup></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 255, 128, 255) !important;">-0.012<sup>(0.369)</sup></td>
</tr>
</tbody>
</table>
</div>
<div style="font-size: 0.7em;">
<p>CRPS difference to Naive. Negative values correspond to better performance (the best value is bold). <br> Additionally, we show the p-value of the DM-test, testing against Naive. The cells are colored with respect to their values (the greener better).</p>
</div>
</div>
<div id="tabset-7-2">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-11-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-7-3">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-12-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-7-4">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-13-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-7-5">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-14-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section></section>
<section>
<section id="multivariate-probabilistic-crps-learning-with-an-application-to-day-ahead-electricity-prices" class="title-slide slide level1 center">
<h1>Multivariate Probabilistic CRPS Learning with an Application to Day-Ahead Electricity Prices</h1>
<p>Berrisch, J., &amp; Ziel, F. (2024). <em>International Journal of Forecasting</em>, 40(4), 1568-1586.</p>
</section>
<section id="multivariate-crps-learning" class="slide level2">
<h2>Multivariate CRPS Learning</h2>
<div class="columns">
<div class="column" style="width:45%;">
<p>We extend the <strong>B-Smooth</strong> and <strong>P-Smooth</strong> procedures to the multivariate setting:</p>
<div class="panel-tabset">
<ul id="tabset-9" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-9-1">Penalized Smoothing</a></li><li><a href="#tabset-9-2">Basis Smoothing</a></li></ul>
<div class="tab-content">
<div id="tabset-9-1">
<p>Let <span class="math inline">\(\boldsymbol{\psi}^{\text{mv}}=(\psi_1,\ldots, \psi_{D})\)</span> and <span class="math inline">\(\boldsymbol{\psi}^{\text{pr}}=(\psi_1,\ldots, \psi_{P})\)</span> be two sets of bounded basis functions on <span class="math inline">\((0,1)\)</span>:</p>
<p><span class="math display">\[\begin{equation*}
\boldsymbol w_{t,k} = \boldsymbol{\psi}^{\text{mv}} \boldsymbol{b}_{t,k} {\boldsymbol{\psi}^{pr}}'
\end{equation*}\]</span></p>
<p>with parameter matix <span class="math inline">\(\boldsymbol b_{t,k}\)</span>. The latter is estimated to penalize <span class="math inline">\(L_2\)</span>-smoothing which minimizes</p>
<p><span class="math display">\[\begin{align}
&amp; \| \boldsymbol{\beta}_{t,d, k}' \boldsymbol{\varphi}^{\text{pr}} - \boldsymbol b_{t, d, k}' \boldsymbol{\psi}^{\text{pr}} \|^2_2 + \lambda^{\text{pr}} \| \mathcal{D}_{q} (\boldsymbol b_{t, d, k}' \boldsymbol{\psi}^{\text{pr}}) \|^2_2 + \nonumber \\
&amp; \| \boldsymbol{\beta}_{t, p, k}' \boldsymbol{\varphi}^{\text{mv}} - \boldsymbol b_{t, p, k}' \boldsymbol{\psi}^{\text{mv}} \|^2_2 + \lambda^{\text{mv}} \| \mathcal{D}_{q} (\boldsymbol b_{t, p, k}' \boldsymbol{\psi}^{\text{mv}}) \|^2_2 \nonumber
\end{align}\]</span></p>
<p>with differential operator <span class="math inline">\(\mathcal{D}_q\)</span> of order <span class="math inline">\(q\)</span></p>
<p><span style="color:var(--col_green_10);"><i class="fa-solid fa-calculator" aria-label="calculator"></i></span> We have an analytical solution.</p>
</div>
<div id="tabset-9-2">
<p>Linear combinations of bounded basis functions:</p>
<p><span class="math display">\[\begin{equation}
\underbrace{\boldsymbol w_{t,k}}_{D \text{ x } P} = \sum_{j=1}^{\widetilde D} \sum_{l=1}^{\widetilde P} \beta_{t,j,l,k} \varphi^{\text{mv}}_{j} \varphi^{\text{pr}}_{l} = \underbrace{\boldsymbol \varphi^{\text{mv}}}_{D\text{ x }\widetilde D} \boldsymbol \beta_{t,k} \underbrace{{\boldsymbol\varphi^{\text{pr}}}'}_{\widetilde P \text{ x }P} \nonumber
\end{equation}\]</span></p>
<p>A popular choice: B-Splines</p>
<p><span class="math inline">\(\boldsymbol \beta_{t,k}\)</span> is calculated using a reduced regret matrix:</p>
<p><span class="math inline">\(\underbrace{\boldsymbol r_{t,k}}_{\widetilde P \times \widetilde D} = \boldsymbol \varphi^{\text{pr}} \underbrace{\left({\boldsymbol{QL}}_{\mathcal{P}}^{\nabla}(\widetilde{\boldsymbol X}_{t},Y_t)- {\boldsymbol{QL}}_{\mathcal{P}}^{\nabla}(\widehat{\boldsymbol X}_{t},Y_t)\right)}_{\text{PxD}}\boldsymbol \varphi^{\text{mv}}\)</span></p>
<p>If <span class="math inline">\(\widetilde P = P\)</span> it holds that <span class="math inline">\(\boldsymbol \varphi^{pr} = \boldsymbol{I}\)</span> (pointwise)</p>
<p>For <span class="math inline">\(\widetilde P = 1\)</span> we receive constant weights</p>
</div>
</div>
</div>
</div><div class="column" style="width:2%;">
</div><div class="column" style="width:53%;">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="assets/mcrps_learning/algorithm.svg" class="quarto-figure quarto-figure-center" width="1000"></p>
</figure>
</div>
</div>
</div>
</div></div>
</section>
<section id="application" class="slide level2">
<h2>Application</h2>
<div class="columns">
<div class="column" style="width:48%;">
<h4 id="data">Data</h4>
<ul>
<li>Day-Ahead electricity price forecasts from <span class="citation" data-cites="marcjasz2022distributional">Marcjasz et al. (<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span></li>
<li>Produced using probabilistic neural networks</li>
<li>24-dimensional distributional forecasts</li>
<li>Distribution assumptions: JSU and Normal</li>
<li>8 experts (4 JSU, 4 Normal)</li>
<li>27th Dec.&nbsp;2018 to 31st Dec.&nbsp;2020 (736 days)</li>
<li>We extract 99 quantiles (percentiles)</li>
</ul>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<h4 id="setup">Setup</h4>
<p>Evaluation: Exclude first 182 observations</p>
<p>Extensions: Penalized smoothing | Forgetting</p>
<p>Tuning strategies:</p>
<ul>
<li>Bayesian Fix
<ul>
<li>Sophisticated Baesian Search algorithm</li>
</ul></li>
<li>Online
<ul>
<li>Dynamic based on past performance</li>
</ul></li>
<li>Bayesian Online
<ul>
<li>First Bayesian Fix then Online</li>
</ul></li>
</ul>
<p>Computation Time: ~30 Minutes</p>
</div></div>
</section>
<section id="results-1" class="slide level2">
<h2>Results</h2>
<div class="columns">
<div class="column" style="width:55%;">
<div class="cell">
<div class="cell-output-display">
<table class="lightable-paper table caption-top" data-quarto-postprocess="true" style="font-family: &quot;Arial Narrow&quot;, arial, helvetica, sans-serif; margin-left: auto; margin-right: auto; font-size: 16px; margin-left: auto; margin-right: auto;">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">JSU1</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">JSU2</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">JSU3</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">JSU4</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">Norm1</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">Norm2</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">Norm3</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">Norm4</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">Naive</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.487</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.444</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.499</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(241, 94, 77, 255) !important;">1.374</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.414</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.535</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.420</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.422</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(189, 189, 189, 255) !important;">1.295</td>
</tr>
</tbody>
</table>
</div>
<div class="cell-output-display">
<table class="lightable-paper table caption-top" data-quarto-postprocess="true" style="font-family: &quot;Arial Narrow&quot;, arial, helvetica, sans-serif; margin-left: auto; margin-right: auto; font-size: 16px; margin-left: auto; margin-right: auto;">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Description</th>
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Parameter Tuning</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">BOA</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">ML-Poly</th>
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">EWA</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Constant</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(241, 232, 90, 255) !important;">1.2933</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 232, 84, 255) !important;">1.2966</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 187, 53, 255) !important;">1.3188</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Pointwise</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(239, 232, 91, 255) !important;">1.2936</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 211, 70, 255) !important;">1.3010</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 174, 44, 255) !important;">1.3101</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">FTL</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.3752</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.3692</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.3863</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">B Constant Pr</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(241, 232, 90, 255) !important;">1.2936</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 217, 74, 255) !important;">1.3000</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(241, 96, 76, 255) !important;">1.3432</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">B Constant Mv</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(228, 228, 92, 255) !important;">1.2918</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(250, 235, 89, 255) !important;">1.2945</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 203, 64, 255) !important;">1.3076</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Forget</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Fix</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(233, 230, 92, 255) !important;">1.2930</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 236, 87, 255) !important;">1.2956</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 176, 45, 255) !important;">1.3096</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Full</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Fix</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(221, 226, 93, 255) !important;">1.2905</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(220, 225, 94, 255) !important;">1.2902</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(194, 217, 97, 255) !important;">1.2870<span class="zero-width">.</span></td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth.forget</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Fix</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(215, 224, 94, 255) !important;">1.2911</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(225, 227, 93, 255) !important;">1.2912</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(193, 216, 97, 255) !important;">1.2869<span class="zero-width">.</span></td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Fix</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(221, 226, 93, 255) !important;">1.2918</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(229, 228, 92, 255) !important;">1.2917</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(196, 217, 97, 255) !important;">1.2873<span class="zero-width">.</span></td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Forget</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Online</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(151, 202, 101, 255) !important;">1.2855<span class="sup-zero-width">**</span></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 234, 86, 255) !important;">1.2961</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 176, 45, 255) !important;">1.3098</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Full</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Online</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(233, 230, 92, 255) !important;">1.2919</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(195, 217, 97, 255) !important;">1.2873<span class="zero-width">.</span></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(198, 218, 96, 255) !important;">1.2873<span class="zero-width">.</span></td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth.forget</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Online</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(143, 200, 102, 255) !important;">1.2845<span class="sup-zero-width">**</span></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(180, 212, 99, 255) !important;">1.2862<span class="sup-zero-width">*</span></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(191, 216, 97, 255) !important;">1.2864<span class="zero-width">.</span></td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Online</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(221, 226, 93, 255) !important;">1.2918</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(230, 229, 92, 255) !important;">1.2918</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(198, 218, 96, 255) !important;">1.2874<span class="zero-width">.</span></td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Forget</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Sampling Online</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(150, 202, 102, 255) !important;">1.2855<span class="sup-zero-width">**</span></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 234, 86, 255) !important;">1.2961</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 175, 44, 255) !important;">1.3114</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Full</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Sampling Online</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(208, 221, 95, 255) !important;">1.2886</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(187, 214, 98, 255) !important;">1.2861<span class="sup-zero-width">*</span></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(199, 218, 96, 255) !important;">1.2873<span class="zero-width">.</span></td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth.forget</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Sampling Online</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(143, 199, 102, 255) !important;">1.2845<span class="sup-zero-width">***</span></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(187, 215, 98, 255) !important;">1.2867<span class="sup-zero-width">*</span></td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(194, 217, 97, 255) !important;">1.2866<span class="zero-width">.</span></td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth</td>
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Sampling Online</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(222, 226, 93, 255) !important;">1.2918</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(229, 228, 92, 255) !important;">1.2917</td>
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(201, 219, 96, 255) !important;">1.2877<span class="zero-width">.</span></td>
</tr>
</tbody>
</table>
</div>
</div>
<div style="font-size: 0.6em; margin-top: 0.5em;">
<span style="padding: 2px 6px;">Coloring w.r.t. test statistic: </span>
<span style="background-color: #66BA6A; padding: 2px 6px;">&lt;-5</span>
<span style="background-color: #7CC168; padding: 2px 6px;">-4</span>
<span style="background-color: #91C866; padding: 2px 6px;">-3</span>
<span style="background-color: #B0D363; padding: 2px 6px;">-2</span>
<span style="background-color: #D8E05E; padding: 2px 6px;">-1</span>
<span style="background-color: #FFED58; padding: 2px 6px;">0</span>
<span style="background-color: #FFD145; padding: 2px 6px;">1</span>
<span style="background-color: #FFB531; padding: 2px 6px;">2</span>
<span style="background-color: #FC9733; padding: 2px 6px;">3</span>
<span style="background-color: #F67744; padding: 2px 6px;">4</span>
<span style="background-color: #EE5250; padding: 2px 6px;">&gt;5</span>
</div>
<div style="font-size: 0.7em;">
<span style="padding: 2px 6px;">Significance denoted by: </span><span>.</span> p &lt; 0.1; <span>*</span> p &lt; 0.05; <span>**</span> p &lt; 0.01; <span>***</span> p &lt; 0.001;
</div>
</div><div class="column" style="width:45%;">
<p><br></p>
<div class="panel-tabset">
<ul id="tabset-10" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-10-1">Constant</a></li><li><a href="#tabset-10-2">Pointwise</a></li><li><a href="#tabset-10-3">B Constant PR</a></li><li><a href="#tabset-10-4">B Constant MV</a></li><li><a href="#tabset-10-5">Smooth.Forget</a></li></ul>
<div class="tab-content">
<div id="tabset-10-1">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="assets/mcrps_learning/constant.svg" class="quarto-figure quarto-figure-center" width="400"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-10-2">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="assets/mcrps_learning/pointwise.svg" class="quarto-figure quarto-figure-center" width="400"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-10-3">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="assets/mcrps_learning/constant_pr.svg" class="quarto-figure quarto-figure-center" width="400"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-10-4">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="assets/mcrps_learning/constant_mv.svg" class="quarto-figure quarto-figure-center" width="400"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-10-5">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="assets/mcrps_learning/smooth_best.svg" class="quarto-figure quarto-figure-center" width="400"></p>
</figure>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div>
</section>
<section id="results-2" class="slide level2">
<h2>Results</h2>
<div class="panel-tabset">
<ul id="tabset-11" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-11-1">Chosen Parameters</a></li><li><a href="#tabset-11-2">Weights: Hour 16:00-17:00</a></li><li><a href="#tabset-11-3">Weights: Median</a></li></ul>
<div class="tab-content">
<div id="tabset-11-1">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-22-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-11-2">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-23-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-11-3">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-24-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="non-equidistant-knots" class="slide level2">
<h2>Non-Equidistant Knots</h2>
<div class="panel-tabset">
<ul id="tabset-12" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-12-1">Knot Placement Illustration</a></li><li><a href="#tabset-12-2">Knot Placement Details</a></li></ul>
<div class="tab-content">
<div id="tabset-12-1">
<div class="cell">
<div class="sourceCode cell-code hidden" id="cb2" data-startfrom="2590" data-source-offset="0"><pre class="sourceCode numberSource js number-lines code-with-copy"><code class="sourceCode javascript" style="counter-reset: source-line 2589;"><span id="cb2-2590"><a href=""></a>d3 <span class="op">=</span> <span class="pp">require</span>(<span class="st">"d3@7"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display">
<div id="ojs-cell-1" data-nodetype="declaration">
</div>
</div>
</div>
<div class="cell">
<div class="sourceCode cell-code hidden" id="cb3" data-startfrom="2594" data-source-offset="0"><pre class="sourceCode numberSource js number-lines code-with-copy"><code class="sourceCode javascript" style="counter-reset: source-line 2593;"><span id="cb3-2594"><a href=""></a>bsplineData <span class="op">=</span> <span class="fu">FileAttachment</span>(<span class="st">"assets/mcrps_learning/basis_functions.csv"</span>)<span class="op">.</span><span class="fu">csv</span>({ <span class="dt">typed</span><span class="op">:</span> <span class="kw">true</span> })</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display">
<div id="ojs-cell-2" data-nodetype="declaration">
</div>
</div>
</div>
<div class="cell">
<div class="sourceCode cell-code hidden" id="cb4" data-startfrom="2599" data-source-offset="-0"><pre class="sourceCode numberSource js number-lines code-with-copy"><code class="sourceCode javascript" style="counter-reset: source-line 2598;"><span id="cb4-2599"><a href=""></a><span class="kw">function</span> <span class="fu">updateChartInner</span>(g<span class="op">,</span> x<span class="op">,</span> y<span class="op">,</span> linesGroup<span class="op">,</span> color<span class="op">,</span> line<span class="op">,</span> data) {</span>
<span id="cb4-2600"><a href=""></a> <span class="co">// Update axes with transitions</span></span>
<span id="cb4-2601"><a href=""></a> x<span class="op">.</span><span class="fu">domain</span>([<span class="dv">0</span><span class="op">,</span> d3<span class="op">.</span><span class="fu">max</span>(data<span class="op">,</span> d <span class="kw">=&gt;</span> d<span class="op">.</span><span class="at">x</span>)])<span class="op">;</span></span>
<span id="cb4-2602"><a href=""></a> g<span class="op">.</span><span class="fu">select</span>(<span class="st">".x-axis"</span>)<span class="op">.</span><span class="fu">transition</span>()<span class="op">.</span><span class="fu">duration</span>(<span class="dv">1500</span>)<span class="op">.</span><span class="fu">call</span>(d3<span class="op">.</span><span class="fu">axisBottom</span>(x)<span class="op">.</span><span class="fu">ticks</span>(<span class="dv">10</span>))<span class="op">;</span></span>
<span id="cb4-2603"><a href=""></a> y<span class="op">.</span><span class="fu">domain</span>([<span class="dv">0</span><span class="op">,</span> d3<span class="op">.</span><span class="fu">max</span>(data<span class="op">,</span> d <span class="kw">=&gt;</span> d<span class="op">.</span><span class="at">y</span>)])<span class="op">;</span></span>
<span id="cb4-2604"><a href=""></a> g<span class="op">.</span><span class="fu">select</span>(<span class="st">".y-axis"</span>)<span class="op">.</span><span class="fu">transition</span>()<span class="op">.</span><span class="fu">duration</span>(<span class="dv">1500</span>)<span class="op">.</span><span class="fu">call</span>(d3<span class="op">.</span><span class="fu">axisLeft</span>(y)<span class="op">.</span><span class="fu">ticks</span>(<span class="dv">5</span>))<span class="op">;</span></span>
<span id="cb4-2605"><a href=""></a></span>
<span id="cb4-2606"><a href=""></a> <span class="co">// Group data by basis function</span></span>
<span id="cb4-2607"><a href=""></a> <span class="kw">const</span> dataByFunction <span class="op">=</span> <span class="bu">Array</span><span class="op">.</span><span class="fu">from</span>(d3<span class="op">.</span><span class="fu">group</span>(data<span class="op">,</span> d <span class="kw">=&gt;</span> d<span class="op">.</span><span class="at">b</span>))<span class="op">;</span></span>
<span id="cb4-2608"><a href=""></a> <span class="kw">const</span> keyFn <span class="op">=</span> d <span class="kw">=&gt;</span> d[<span class="dv">0</span>]<span class="op">;</span></span>
<span id="cb4-2609"><a href=""></a></span>
<span id="cb4-2610"><a href=""></a> <span class="co">// Update basis function lines</span></span>
<span id="cb4-2611"><a href=""></a> <span class="kw">const</span> u <span class="op">=</span> linesGroup<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">"path"</span>)<span class="op">.</span><span class="fu">data</span>(dataByFunction<span class="op">,</span> keyFn)<span class="op">;</span></span>
<span id="cb4-2612"><a href=""></a> u<span class="op">.</span><span class="fu">join</span>(</span>
<span id="cb4-2613"><a href=""></a> enter <span class="kw">=&gt;</span> enter<span class="op">.</span><span class="fu">append</span>(<span class="st">"path"</span>)<span class="op">.</span><span class="fu">attr</span>(<span class="st">"fill"</span><span class="op">,</span><span class="st">"none"</span>)<span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke-width"</span><span class="op">,</span><span class="dv">3</span>)</span>
<span id="cb4-2614"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke"</span><span class="op">,</span> (_<span class="op">,</span> i) <span class="kw">=&gt;</span> <span class="fu">color</span>(i))<span class="op">.</span><span class="fu">attr</span>(<span class="st">"d"</span><span class="op">,</span> d <span class="kw">=&gt;</span> <span class="fu">line</span>(d[<span class="dv">1</span>]<span class="op">.</span><span class="fu">map</span>(pt <span class="kw">=&gt;</span> ({<span class="dt">x</span><span class="op">:</span> pt<span class="op">.</span><span class="at">x</span><span class="op">,</span> <span class="dt">y</span><span class="op">:</span> <span class="dv">0</span>}))))</span>
<span id="cb4-2615"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"opacity"</span><span class="op">,</span><span class="dv">0</span>)<span class="op">,</span></span>
<span id="cb4-2616"><a href=""></a> update <span class="kw">=&gt;</span> update<span class="op">,</span></span>
<span id="cb4-2617"><a href=""></a> exit <span class="kw">=&gt;</span> exit<span class="op">.</span><span class="fu">transition</span>()<span class="op">.</span><span class="fu">duration</span>(<span class="dv">1000</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"opacity"</span><span class="op">,</span><span class="dv">0</span>)<span class="op">.</span><span class="fu">remove</span>()</span>
<span id="cb4-2618"><a href=""></a> )</span>
<span id="cb4-2619"><a href=""></a> <span class="op">.</span><span class="fu">transition</span>()<span class="op">.</span><span class="fu">duration</span>(<span class="dv">1000</span>)</span>
<span id="cb4-2620"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"d"</span><span class="op">,</span> d <span class="kw">=&gt;</span> <span class="fu">line</span>(d[<span class="dv">1</span>]))</span>
<span id="cb4-2621"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke"</span><span class="op">,</span> (_<span class="op">,</span> i) <span class="kw">=&gt;</span> <span class="fu">color</span>(i))</span>
<span id="cb4-2622"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"opacity"</span><span class="op">,</span><span class="dv">1</span>)<span class="op">;</span></span>
<span id="cb4-2623"><a href=""></a>}</span>
<span id="cb4-2624"><a href=""></a></span>
<span id="cb4-2625"><a href=""></a>chart <span class="op">=</span> {</span>
<span id="cb4-2626"><a href=""></a> <span class="co">// State variables for selected parameters</span></span>
<span id="cb4-2627"><a href=""></a> <span class="kw">let</span> selectedMu <span class="op">=</span> <span class="fl">0.5</span><span class="op">;</span></span>
<span id="cb4-2628"><a href=""></a> <span class="kw">let</span> selectedSig <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb4-2629"><a href=""></a> <span class="kw">let</span> selectedNonc <span class="op">=</span> <span class="dv">0</span><span class="op">;</span></span>
<span id="cb4-2630"><a href=""></a> <span class="kw">let</span> selectedTailw <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb4-2631"><a href=""></a> <span class="kw">const</span> filteredData <span class="op">=</span> () <span class="kw">=&gt;</span> bsplineData<span class="op">.</span><span class="fu">filter</span>(d <span class="kw">=&gt;</span></span>
<span id="cb4-2632"><a href=""></a> <span class="bu">Math</span><span class="op">.</span><span class="fu">abs</span>(selectedMu <span class="op">-</span> d<span class="op">.</span><span class="at">mu</span>) <span class="op">&lt;</span> <span class="fl">0.001</span> <span class="op">&amp;&amp;</span></span>
<span id="cb4-2633"><a href=""></a> d<span class="op">.</span><span class="at">sig</span> <span class="op">===</span> selectedSig <span class="op">&amp;&amp;</span></span>
<span id="cb4-2634"><a href=""></a> d<span class="op">.</span><span class="at">nonc</span> <span class="op">===</span> selectedNonc <span class="op">&amp;&amp;</span></span>
<span id="cb4-2635"><a href=""></a> d<span class="op">.</span><span class="at">tailw</span> <span class="op">===</span> selectedTailw</span>
<span id="cb4-2636"><a href=""></a> )<span class="op">;</span></span>
<span id="cb4-2637"><a href=""></a> <span class="kw">const</span> container <span class="op">=</span> d3<span class="op">.</span><span class="fu">create</span>(<span class="st">"div"</span>)</span>
<span id="cb4-2638"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"max-width"</span><span class="op">,</span> <span class="st">"none"</span>)</span>
<span id="cb4-2639"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"width"</span><span class="op">,</span> <span class="st">"100%"</span>)<span class="op">;;</span></span>
<span id="cb4-2640"><a href=""></a> <span class="kw">const</span> controlsContainer <span class="op">=</span> container<span class="op">.</span><span class="fu">append</span>(<span class="st">"div"</span>)</span>
<span id="cb4-2641"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"display"</span><span class="op">,</span> <span class="st">"flex"</span>)</span>
<span id="cb4-2642"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"gap"</span><span class="op">,</span> <span class="st">"20px"</span>)<span class="op">;</span></span>
<span id="cb4-2643"><a href=""></a> <span class="co">// slider controls</span></span>
<span id="cb4-2644"><a href=""></a> <span class="kw">const</span> sliders <span class="op">=</span> [</span>
<span id="cb4-2645"><a href=""></a> { <span class="dt">label</span><span class="op">:</span> <span class="st">'Mu'</span><span class="op">,</span> <span class="kw">get</span><span class="op">:</span> () <span class="kw">=&gt;</span> selectedMu<span class="op">,</span> <span class="kw">set</span><span class="op">:</span> v <span class="kw">=&gt;</span> selectedMu <span class="op">=</span> v<span class="op">,</span> <span class="dt">min</span><span class="op">:</span> <span class="fl">0.1</span><span class="op">,</span> <span class="dt">max</span><span class="op">:</span> <span class="fl">0.9</span><span class="op">,</span> <span class="dt">step</span><span class="op">:</span> <span class="fl">0.2</span> }<span class="op">,</span></span>
<span id="cb4-2646"><a href=""></a> { <span class="dt">label</span><span class="op">:</span> <span class="st">'Sigma'</span><span class="op">,</span> <span class="kw">get</span><span class="op">:</span> () <span class="kw">=&gt;</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">log2</span>(selectedSig)<span class="op">,</span> <span class="kw">set</span><span class="op">:</span> v <span class="kw">=&gt;</span> selectedSig <span class="op">=</span> <span class="dv">2</span> <span class="op">**</span> v<span class="op">,</span> <span class="dt">min</span><span class="op">:</span> <span class="op">-</span><span class="dv">2</span><span class="op">,</span> <span class="dt">max</span><span class="op">:</span> <span class="dv">2</span><span class="op">,</span> <span class="dt">step</span><span class="op">:</span> <span class="dv">1</span> }<span class="op">,</span></span>
<span id="cb4-2647"><a href=""></a> { <span class="dt">label</span><span class="op">:</span> <span class="st">'Noncentrality'</span><span class="op">,</span> <span class="kw">get</span><span class="op">:</span> () <span class="kw">=&gt;</span> selectedNonc<span class="op">,</span> <span class="kw">set</span><span class="op">:</span> v <span class="kw">=&gt;</span> selectedNonc <span class="op">=</span> v<span class="op">,</span> <span class="dt">min</span><span class="op">:</span> <span class="op">-</span><span class="dv">4</span><span class="op">,</span> <span class="dt">max</span><span class="op">:</span> <span class="dv">4</span><span class="op">,</span> <span class="dt">step</span><span class="op">:</span> <span class="dv">2</span> }<span class="op">,</span></span>
<span id="cb4-2648"><a href=""></a> { <span class="dt">label</span><span class="op">:</span> <span class="st">'Tailweight'</span><span class="op">,</span> <span class="kw">get</span><span class="op">:</span> () <span class="kw">=&gt;</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">log2</span>(selectedTailw)<span class="op">,</span> <span class="kw">set</span><span class="op">:</span> v <span class="kw">=&gt;</span> selectedTailw <span class="op">=</span> <span class="dv">2</span> <span class="op">**</span> v<span class="op">,</span> <span class="dt">min</span><span class="op">:</span> <span class="op">-</span><span class="dv">2</span><span class="op">,</span> <span class="dt">max</span><span class="op">:</span> <span class="dv">2</span><span class="op">,</span> <span class="dt">step</span><span class="op">:</span> <span class="dv">1</span> }</span>
<span id="cb4-2649"><a href=""></a> ]<span class="op">;</span></span>
<span id="cb4-2650"><a href=""></a> <span class="co">// Build slider controls with D3 data join</span></span>
<span id="cb4-2651"><a href=""></a> <span class="kw">const</span> sliderCont <span class="op">=</span> controlsContainer<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">'div'</span>)<span class="op">.</span><span class="fu">data</span>(sliders)<span class="op">.</span><span class="fu">join</span>(<span class="st">'div'</span>)</span>
<span id="cb4-2652"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'display'</span><span class="op">,</span><span class="st">'flex'</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">'align-items'</span><span class="op">,</span><span class="st">'center'</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">'gap'</span><span class="op">,</span><span class="st">'10px'</span>)</span>
<span id="cb4-2653"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'flex'</span><span class="op">,</span><span class="st">'1'</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">'min-width'</span><span class="op">,</span><span class="st">'0px'</span>)<span class="op">;</span></span>
<span id="cb4-2654"><a href=""></a> sliderCont<span class="op">.</span><span class="fu">append</span>(<span class="st">'label'</span>)<span class="op">.</span><span class="fu">text</span>(d <span class="kw">=&gt;</span> d<span class="op">.</span><span class="at">label</span> <span class="op">+</span> <span class="st">':'</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">'font-size'</span><span class="op">,</span><span class="st">'20px'</span>)<span class="op">;</span></span>
<span id="cb4-2655"><a href=""></a> sliderCont<span class="op">.</span><span class="fu">append</span>(<span class="st">'input'</span>)</span>
<span id="cb4-2656"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">'type'</span><span class="op">,</span><span class="st">'range'</span>)<span class="op">.</span><span class="fu">attr</span>(<span class="st">'min'</span><span class="op">,</span> d <span class="kw">=&gt;</span> d<span class="op">.</span><span class="at">min</span>)<span class="op">.</span><span class="fu">attr</span>(<span class="st">'max'</span><span class="op">,</span> d <span class="kw">=&gt;</span> d<span class="op">.</span><span class="at">max</span>)<span class="op">.</span><span class="fu">attr</span>(<span class="st">'step'</span><span class="op">,</span> d <span class="kw">=&gt;</span> d<span class="op">.</span><span class="at">step</span>)</span>
<span id="cb4-2657"><a href=""></a> <span class="op">.</span><span class="fu">property</span>(<span class="st">'value'</span><span class="op">,</span> d <span class="kw">=&gt;</span> d<span class="op">.</span><span class="fu">get</span>())</span>
<span id="cb4-2658"><a href=""></a> <span class="op">.</span><span class="fu">on</span>(<span class="st">'input'</span><span class="op">,</span> <span class="kw">function</span>(<span class="bu">event</span><span class="op">,</span> d) {</span>
<span id="cb4-2659"><a href=""></a> <span class="kw">const</span> val <span class="op">=</span> <span class="op">+</span><span class="kw">this</span><span class="op">.</span><span class="at">value</span><span class="op">;</span> d<span class="op">.</span><span class="fu">set</span>(val)<span class="op">;</span></span>
<span id="cb4-2660"><a href=""></a> d3<span class="op">.</span><span class="fu">select</span>(<span class="kw">this</span><span class="op">.</span><span class="at">parentNode</span>)<span class="op">.</span><span class="fu">select</span>(<span class="st">'span'</span>)<span class="op">.</span><span class="fu">text</span>(d<span class="op">.</span><span class="at">label</span><span class="op">.</span><span class="fu">match</span>(<span class="ss">/Sigma</span><span class="sc">|</span><span class="ss">Tailweight/</span>) <span class="op">?</span> <span class="dv">2</span><span class="op">**</span>val <span class="op">:</span> val)<span class="op">;</span></span>
<span id="cb4-2661"><a href=""></a> <span class="fu">updateChart</span>(<span class="fu">filteredData</span>())<span class="op">;</span></span>
<span id="cb4-2662"><a href=""></a> })</span>
<span id="cb4-2663"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'width'</span><span class="op">,</span> <span class="st">'100%'</span>)<span class="op">;</span></span>
<span id="cb4-2664"><a href=""></a> sliderCont<span class="op">.</span><span class="fu">append</span>(<span class="st">'span'</span>)<span class="op">.</span><span class="fu">text</span>(d <span class="kw">=&gt;</span> (d<span class="op">.</span><span class="at">label</span><span class="op">.</span><span class="fu">match</span>(<span class="ss">/Sigma</span><span class="sc">|</span><span class="ss">Tailweight/</span>) <span class="op">?</span> d<span class="op">.</span><span class="fu">get</span>() <span class="op">:</span> d<span class="op">.</span><span class="fu">get</span>()))</span>
<span id="cb4-2665"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'font-size'</span><span class="op">,</span><span class="st">'20px'</span>)<span class="op">;</span></span>
<span id="cb4-2666"><a href=""></a> </span>
<span id="cb4-2667"><a href=""></a> <span class="co">// Add Reset button to clear all sliders to their defaults</span></span>
<span id="cb4-2668"><a href=""></a> controlsContainer<span class="op">.</span><span class="fu">append</span>(<span class="st">'button'</span>)</span>
<span id="cb4-2669"><a href=""></a> <span class="op">.</span><span class="fu">text</span>(<span class="st">'Reset'</span>)</span>
<span id="cb4-2670"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'font-size'</span><span class="op">,</span> <span class="st">'20px'</span>)</span>
<span id="cb4-2671"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'align-self'</span><span class="op">,</span> <span class="st">'center'</span>)</span>
<span id="cb4-2672"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'margin-left'</span><span class="op">,</span> <span class="st">'auto'</span>)</span>
<span id="cb4-2673"><a href=""></a> <span class="op">.</span><span class="fu">on</span>(<span class="st">'click'</span><span class="op">,</span> () <span class="kw">=&gt;</span> {</span>
<span id="cb4-2674"><a href=""></a> <span class="co">// reset state vars</span></span>
<span id="cb4-2675"><a href=""></a> selectedMu <span class="op">=</span> <span class="fl">0.5</span><span class="op">;</span></span>
<span id="cb4-2676"><a href=""></a> selectedSig <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb4-2677"><a href=""></a> selectedNonc <span class="op">=</span> <span class="dv">0</span><span class="op">;</span></span>
<span id="cb4-2678"><a href=""></a> selectedTailw <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb4-2679"><a href=""></a> <span class="co">// update input positions</span></span>
<span id="cb4-2680"><a href=""></a> sliderCont<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">'input'</span>)<span class="op">.</span><span class="fu">property</span>(<span class="st">'value'</span><span class="op">,</span> d <span class="kw">=&gt;</span> d<span class="op">.</span><span class="fu">get</span>())<span class="op">;</span></span>
<span id="cb4-2681"><a href=""></a> <span class="co">// update displayed labels</span></span>
<span id="cb4-2682"><a href=""></a> sliderCont<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">'span'</span>)</span>
<span id="cb4-2683"><a href=""></a> <span class="op">.</span><span class="fu">text</span>(d <span class="kw">=&gt;</span> d<span class="op">.</span><span class="at">label</span><span class="op">.</span><span class="fu">match</span>(<span class="ss">/Sigma</span><span class="sc">|</span><span class="ss">Tailweight/</span>) <span class="op">?</span> (<span class="dv">2</span><span class="op">**</span>d<span class="op">.</span><span class="fu">get</span>()) <span class="op">:</span> d<span class="op">.</span><span class="fu">get</span>())<span class="op">;</span></span>
<span id="cb4-2684"><a href=""></a> <span class="co">// redraw chart</span></span>
<span id="cb4-2685"><a href=""></a> <span class="fu">updateChart</span>(<span class="fu">filteredData</span>())<span class="op">;</span></span>
<span id="cb4-2686"><a href=""></a> })<span class="op">;</span></span>
<span id="cb4-2687"><a href=""></a></span>
<span id="cb4-2688"><a href=""></a> <span class="co">// Build SVG</span></span>
<span id="cb4-2689"><a href=""></a> <span class="kw">const</span> width <span class="op">=</span> <span class="dv">1200</span><span class="op">;</span></span>
<span id="cb4-2690"><a href=""></a> <span class="kw">const</span> height <span class="op">=</span> <span class="dv">450</span><span class="op">;</span></span>
<span id="cb4-2691"><a href=""></a> <span class="kw">const</span> margin <span class="op">=</span> {<span class="dt">top</span><span class="op">:</span> <span class="dv">40</span><span class="op">,</span> <span class="dt">right</span><span class="op">:</span> <span class="dv">20</span><span class="op">,</span> <span class="dt">bottom</span><span class="op">:</span> <span class="dv">40</span><span class="op">,</span> <span class="dt">left</span><span class="op">:</span> <span class="dv">40</span>}<span class="op">;</span></span>
<span id="cb4-2692"><a href=""></a> <span class="kw">const</span> innerWidth <span class="op">=</span> width <span class="op">-</span> margin<span class="op">.</span><span class="at">left</span> <span class="op">-</span> margin<span class="op">.</span><span class="at">right</span><span class="op">;</span></span>
<span id="cb4-2693"><a href=""></a> <span class="kw">const</span> innerHeight <span class="op">=</span> height <span class="op">-</span> margin<span class="op">.</span><span class="at">top</span> <span class="op">-</span> margin<span class="op">.</span><span class="at">bottom</span><span class="op">;</span></span>
<span id="cb4-2694"><a href=""></a></span>
<span id="cb4-2695"><a href=""></a> <span class="co">// Set controls container width to match SVG plot width</span></span>
<span id="cb4-2696"><a href=""></a> controlsContainer<span class="op">.</span><span class="fu">style</span>(<span class="st">"max-width"</span><span class="op">,</span> <span class="st">"none"</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"width"</span><span class="op">,</span> <span class="st">"100%"</span>)<span class="op">;</span></span>
<span id="cb4-2697"><a href=""></a> <span class="co">// Distribute each control evenly and make sliders full-width</span></span>
<span id="cb4-2698"><a href=""></a> controlsContainer<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">"div"</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"flex"</span><span class="op">,</span> <span class="st">"1"</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"min-width"</span><span class="op">,</span> <span class="st">"0px"</span>)<span class="op">;</span></span>
<span id="cb4-2699"><a href=""></a> controlsContainer<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">"input"</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"width"</span><span class="op">,</span> <span class="st">"100%"</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"box-sizing"</span><span class="op">,</span> <span class="st">"border-box"</span>)<span class="op">;</span></span>
<span id="cb4-2700"><a href=""></a> </span>
<span id="cb4-2701"><a href=""></a> <span class="co">// Create scales</span></span>
<span id="cb4-2702"><a href=""></a> <span class="kw">const</span> x <span class="op">=</span> d3<span class="op">.</span><span class="fu">scaleLinear</span>()</span>
<span id="cb4-2703"><a href=""></a> <span class="op">.</span><span class="fu">domain</span>([<span class="dv">0</span><span class="op">,</span> <span class="dv">1</span>])</span>
<span id="cb4-2704"><a href=""></a> <span class="op">.</span><span class="fu">range</span>([<span class="dv">0</span><span class="op">,</span> innerWidth])<span class="op">;</span></span>
<span id="cb4-2705"><a href=""></a> </span>
<span id="cb4-2706"><a href=""></a> <span class="kw">const</span> y <span class="op">=</span> d3<span class="op">.</span><span class="fu">scaleLinear</span>()</span>
<span id="cb4-2707"><a href=""></a> <span class="op">.</span><span class="fu">domain</span>([<span class="dv">0</span><span class="op">,</span> <span class="dv">1</span>])</span>
<span id="cb4-2708"><a href=""></a> <span class="op">.</span><span class="fu">range</span>([innerHeight<span class="op">,</span> <span class="dv">0</span>])<span class="op">;</span></span>
<span id="cb4-2709"><a href=""></a> </span>
<span id="cb4-2710"><a href=""></a> <span class="co">// Create a color scale for the basis functions</span></span>
<span id="cb4-2711"><a href=""></a> <span class="kw">const</span> color <span class="op">=</span> d3<span class="op">.</span><span class="fu">scaleOrdinal</span>(d3<span class="op">.</span><span class="at">schemeCategory10</span>)<span class="op">;</span></span>
<span id="cb4-2712"><a href=""></a> </span>
<span id="cb4-2713"><a href=""></a> <span class="co">// Create SVG</span></span>
<span id="cb4-2714"><a href=""></a> <span class="kw">const</span> svg <span class="op">=</span> d3<span class="op">.</span><span class="fu">create</span>(<span class="st">"svg"</span>)</span>
<span id="cb4-2715"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"width"</span><span class="op">,</span> <span class="st">"100%"</span>)</span>
<span id="cb4-2716"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"height"</span><span class="op">,</span> <span class="st">"auto"</span>)</span>
<span id="cb4-2717"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"viewBox"</span><span class="op">,</span> [<span class="dv">0</span><span class="op">,</span> <span class="dv">0</span><span class="op">,</span> width<span class="op">,</span> height])</span>
<span id="cb4-2718"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"preserveAspectRatio"</span><span class="op">,</span> <span class="st">"xMidYMid meet"</span>)</span>
<span id="cb4-2719"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"style"</span><span class="op">,</span> <span class="st">"max-width: 100%; height: auto;"</span>)<span class="op">;</span></span>
<span id="cb4-2720"><a href=""></a> </span>
<span id="cb4-2721"><a href=""></a> <span class="co">// Create the chart group</span></span>
<span id="cb4-2722"><a href=""></a> <span class="kw">const</span> g <span class="op">=</span> svg<span class="op">.</span><span class="fu">append</span>(<span class="st">"g"</span>)</span>
<span id="cb4-2723"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"transform"</span><span class="op">,</span> <span class="vs">`translate(</span><span class="sc">${</span>margin<span class="op">.</span><span class="at">left</span><span class="sc">}</span><span class="vs">,</span><span class="sc">${</span>margin<span class="op">.</span><span class="at">top</span><span class="sc">}</span><span class="vs">)`</span>)<span class="op">;</span></span>
<span id="cb4-2724"><a href=""></a> </span>
<span id="cb4-2725"><a href=""></a> <span class="co">// Add axes</span></span>
<span id="cb4-2726"><a href=""></a> <span class="kw">const</span> xAxis <span class="op">=</span> g<span class="op">.</span><span class="fu">append</span>(<span class="st">"g"</span>)</span>
<span id="cb4-2727"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"transform"</span><span class="op">,</span> <span class="vs">`translate(0,</span><span class="sc">${</span>innerHeight<span class="sc">}</span><span class="vs">)`</span>)</span>
<span id="cb4-2728"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"class"</span><span class="op">,</span> <span class="st">"x-axis"</span>)</span>
<span id="cb4-2729"><a href=""></a> <span class="op">.</span><span class="fu">call</span>(d3<span class="op">.</span><span class="fu">axisBottom</span>(x)<span class="op">.</span><span class="fu">ticks</span>(<span class="dv">10</span>))</span>
<span id="cb4-2730"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"font-size"</span><span class="op">,</span> <span class="st">"20px"</span>)<span class="op">;</span></span>
<span id="cb4-2731"><a href=""></a> </span>
<span id="cb4-2732"><a href=""></a> <span class="kw">const</span> yAxis <span class="op">=</span> g<span class="op">.</span><span class="fu">append</span>(<span class="st">"g"</span>)</span>
<span id="cb4-2733"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"class"</span><span class="op">,</span> <span class="st">"y-axis"</span>)</span>
<span id="cb4-2734"><a href=""></a> <span class="op">.</span><span class="fu">call</span>(d3<span class="op">.</span><span class="fu">axisLeft</span>(y)<span class="op">.</span><span class="fu">ticks</span>(<span class="dv">5</span>))</span>
<span id="cb4-2735"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"font-size"</span><span class="op">,</span> <span class="st">"20px"</span>)<span class="op">;</span></span>
<span id="cb4-2736"><a href=""></a> </span>
<span id="cb4-2737"><a href=""></a> <span class="co">// Add a horizontal line at y = 0</span></span>
<span id="cb4-2738"><a href=""></a> g<span class="op">.</span><span class="fu">append</span>(<span class="st">"line"</span>)</span>
<span id="cb4-2739"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"x1"</span><span class="op">,</span> <span class="dv">0</span>)</span>
<span id="cb4-2740"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"x2"</span><span class="op">,</span> innerWidth)</span>
<span id="cb4-2741"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"y1"</span><span class="op">,</span> <span class="fu">y</span>(<span class="dv">0</span>))</span>
<span id="cb4-2742"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"y2"</span><span class="op">,</span> <span class="fu">y</span>(<span class="dv">0</span>))</span>
<span id="cb4-2743"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke"</span><span class="op">,</span> <span class="st">"#000"</span>)</span>
<span id="cb4-2744"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke-opacity"</span><span class="op">,</span> <span class="fl">0.2</span>)<span class="op">;</span></span>
<span id="cb4-2745"><a href=""></a> </span>
<span id="cb4-2746"><a href=""></a> <span class="co">// Add gridlines</span></span>
<span id="cb4-2747"><a href=""></a> g<span class="op">.</span><span class="fu">append</span>(<span class="st">"g"</span>)</span>
<span id="cb4-2748"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"class"</span><span class="op">,</span> <span class="st">"grid-lines"</span>)</span>
<span id="cb4-2749"><a href=""></a> <span class="op">.</span><span class="fu">selectAll</span>(<span class="st">"line"</span>)</span>
<span id="cb4-2750"><a href=""></a> <span class="op">.</span><span class="fu">data</span>(y<span class="op">.</span><span class="fu">ticks</span>(<span class="dv">5</span>))</span>
<span id="cb4-2751"><a href=""></a> <span class="op">.</span><span class="fu">join</span>(<span class="st">"line"</span>)</span>
<span id="cb4-2752"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"x1"</span><span class="op">,</span> <span class="dv">0</span>)</span>
<span id="cb4-2753"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"x2"</span><span class="op">,</span> innerWidth)</span>
<span id="cb4-2754"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"y1"</span><span class="op">,</span> d <span class="kw">=&gt;</span> <span class="fu">y</span>(d))</span>
<span id="cb4-2755"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"y2"</span><span class="op">,</span> d <span class="kw">=&gt;</span> <span class="fu">y</span>(d))</span>
<span id="cb4-2756"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke"</span><span class="op">,</span> <span class="st">"#ccc"</span>)</span>
<span id="cb4-2757"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke-opacity"</span><span class="op">,</span> <span class="fl">0.5</span>)<span class="op">;</span></span>
<span id="cb4-2758"><a href=""></a> </span>
<span id="cb4-2759"><a href=""></a> <span class="co">// Create a line generator</span></span>
<span id="cb4-2760"><a href=""></a> <span class="kw">const</span> line <span class="op">=</span> d3<span class="op">.</span><span class="fu">line</span>()</span>
<span id="cb4-2761"><a href=""></a> <span class="op">.</span><span class="fu">x</span>(d <span class="kw">=&gt;</span> <span class="fu">x</span>(d<span class="op">.</span><span class="at">x</span>))</span>
<span id="cb4-2762"><a href=""></a> <span class="op">.</span><span class="fu">y</span>(d <span class="kw">=&gt;</span> <span class="fu">y</span>(d<span class="op">.</span><span class="at">y</span>))</span>
<span id="cb4-2763"><a href=""></a> <span class="op">.</span><span class="fu">curve</span>(d3<span class="op">.</span><span class="at">curveBasis</span>)<span class="op">;</span></span>
<span id="cb4-2764"><a href=""></a> </span>
<span id="cb4-2765"><a href=""></a> <span class="co">// Group to contain the basis function lines</span></span>
<span id="cb4-2766"><a href=""></a> <span class="kw">const</span> linesGroup <span class="op">=</span> g<span class="op">.</span><span class="fu">append</span>(<span class="st">"g"</span>)</span>
<span id="cb4-2767"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"class"</span><span class="op">,</span> <span class="st">"basis-functions"</span>)<span class="op">;</span></span>
<span id="cb4-2768"><a href=""></a> </span>
<span id="cb4-2769"><a href=""></a> <span class="co">// Store the current basis functions for transition</span></span>
<span id="cb4-2770"><a href=""></a> <span class="kw">let</span> currentBasisFunctions <span class="op">=</span> <span class="kw">new</span> <span class="bu">Map</span>()<span class="op">;</span></span>
<span id="cb4-2771"><a href=""></a> </span>
<span id="cb4-2772"><a href=""></a> <span class="co">// Function to update the chart with new data</span></span>
<span id="cb4-2773"><a href=""></a> <span class="kw">function</span> <span class="fu">updateChart</span>(data) {</span>
<span id="cb4-2774"><a href=""></a> <span class="fu">updateChartInner</span>(g<span class="op">,</span> x<span class="op">,</span> y<span class="op">,</span> linesGroup<span class="op">,</span> color<span class="op">,</span> line<span class="op">,</span> data)<span class="op">;</span></span>
<span id="cb4-2775"><a href=""></a> }</span>
<span id="cb4-2776"><a href=""></a> </span>
<span id="cb4-2777"><a href=""></a> <span class="co">// Store the update function</span></span>
<span id="cb4-2778"><a href=""></a> svg<span class="op">.</span><span class="fu">node</span>()<span class="op">.</span><span class="at">update</span> <span class="op">=</span> updateChart<span class="op">;</span></span>
<span id="cb4-2779"><a href=""></a> </span>
<span id="cb4-2780"><a href=""></a> <span class="co">// Initial render</span></span>
<span id="cb4-2781"><a href=""></a> <span class="fu">updateChart</span>(<span class="fu">filteredData</span>())<span class="op">;</span></span>
<span id="cb4-2782"><a href=""></a> </span>
<span id="cb4-2783"><a href=""></a> container<span class="op">.</span><span class="fu">node</span>()<span class="op">.</span><span class="fu">appendChild</span>(svg<span class="op">.</span><span class="fu">node</span>())<span class="op">;</span></span>
<span id="cb4-2784"><a href=""></a> <span class="cf">return</span> container<span class="op">.</span><span class="fu">node</span>()<span class="op">;</span></span>
<span id="cb4-2785"><a href=""></a>}</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display">
<div>
<div id="ojs-cell-3-1" data-nodetype="declaration">
</div>
</div>
</div>
<div class="cell-output cell-output-display">
<div>
<div id="ojs-cell-3-2" data-nodetype="declaration">
</div>
</div>
</div>
</div>
</div>
<div id="tabset-12-2">
<div class="columns">
<div class="column" style="width:48%;">
<p>Non-central beta distribution <span class="citation" data-cites="johnson1995continuous">Johnson et al. (<a href="#/references" role="doc-biblioref" onclick="">1995</a>)</span>:</p>
<div style="font-size: 70%;">
<p><span class="math display">\[\begin{equation*}
\mathcal{B}(x, a, b, c) = \sum_{j=0}^{\infty} e^{-c/2} \frac{\left( \frac{c}{2} \right)^j}{j!} I_x \left( a + j , b \right)
\end{equation*}\]</span></p>
</div>
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="assets/mcrps_learning/knot_placement.svg" class="quarto-figure quarto-figure-center" width="1000"></p>
</figure>
</div>
</div>
</div>
<p><i class="fa fa-fw fa-triangle-exclamation" style="color:var(--col_orange_9);"></i> Penalty and <span class="math inline">\(\lambda\)</span> need to be adjusted accordingly <span class="citation" data-cites="li2022general">Li &amp; Cao (<a href="#/references" role="doc-biblioref" onclick="">2022</a>)</span></p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p>Using non equidistant knots in <code>profoc</code> is straightforward:</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb5"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb5-1"><a href=""></a>mod <span class="ot">&lt;-</span> <span class="fu">online</span>(</span>
<span id="cb5-2"><a href=""></a> <span class="at">y =</span> Y,</span>
<span id="cb5-3"><a href=""></a> <span class="at">experts =</span> experts,</span>
<span id="cb5-4"><a href=""></a> <span class="at">tau =</span> <span class="dv">1</span><span class="sc">:</span><span class="dv">99</span> <span class="sc">/</span> <span class="dv">100</span>,</span>
<span id="cb5-5"><a href=""></a> <span class="at">b_smooth_pr =</span> <span class="fu">list</span>(</span>
<span id="cb5-6"><a href=""></a> <span class="at">knots =</span> <span class="dv">9</span>,</span>
<span id="cb5-7"><a href=""></a> <span class="at">mu =</span> <span class="fl">0.3</span>,</span>
<span id="cb5-8"><a href=""></a> <span class="at">sigma =</span> <span class="dv">1</span>,</span>
<span id="cb5-9"><a href=""></a> <span class="at">nonc =</span> <span class="dv">0</span>,</span>
<span id="cb5-10"><a href=""></a> <span class="at">tailweight =</span> <span class="dv">1</span>,</span>
<span id="cb5-11"><a href=""></a> <span class="at">deg =</span> <span class="dv">3</span></span>
<span id="cb5-12"><a href=""></a> )</span>
<span id="cb5-13"><a href=""></a>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>Basis specification <code>b_smooth_pr</code> is internally passed to <code>make_basis_mats()</code>.</p>
<p><i class="fa fa-fw fa-check" style="color:var(--col_green_9);"></i> Profoc adjusts penatly and <span class="math inline">\(\lambda\)</span></p>
</div></div>
</div>
</div>
</div>
</section>
<section id="wrap-up" class="slide level2">
<h2>Wrap-Up</h2>
<div class="columns">
<div class="column" style="width:48%;">
<p><span style="color:var(--col_red_9);"><i class="fa-solid fa-triangle-exclamation" aria-label="triangle-exclamation"></i></span> Potential Downsides:</p>
<ul>
<li>Pointwise optimization can induce quantile crossing
<ul>
<li>Can be solved by sorting the predictions</li>
</ul></li>
</ul>
<p><span style="color:var(--col_orange_9);"><i class="fa-solid fa-magnifying-glass" aria-label="magnifying-glass"></i></span> Important:</p>
<ul>
<li>The choice of the learning rate is crucial</li>
<li>The loss function has to meet certain criteria</li>
</ul>
<p><span style="color:var(--col_green_9);"><i class="fa-solid fa-rocket" aria-label="rocket"></i></span> Upsides:</p>
<ul>
<li>Pointwise learning outperforms the Naive solution significantly</li>
<li>Online learning is much faster than batch methods</li>
<li>Smoothing further improves the predictive performance</li>
<li>Asymptotically not worse than the best convex combination</li>
</ul>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p>The <a href="https://profoc.berrisch.biz/"><i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_10);"></i> profoc</a> R Package:</p>
<ul>
<li>Implements all algorithms discussed above</li>
<li>Is written using RcppArmadillo <i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> its fast</li>
<li>Accepts vectors for most parameters
<ul>
<li>The best parameter combination is chosen online</li>
</ul></li>
<li>Implements
<ul>
<li>Forgetting, Fixed Share</li>
<li>Different loss functions + gradients</li>
</ul></li>
</ul>
<p>Pubications:</p>
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_grey_10);"></i> Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH2023105221">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. CRPS learning. <em>Journal of Econometrics</em>, 237(2), 105221.</p>
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_grey_10);"></i> Berrisch, J., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH20241568">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Multivariate probabilistic CRPS learning with an application to day-ahead electricity prices. <em>International Journal of Forecasting</em>, 40(4), 1568-1586.</p>
</div></div>
</section></section>
<section>
<section id="sec-voldep" class="title-slide slide level1 center">
<h1>Modeling Volatility and Dependence of European Carbon and Energy Prices</h1>
<p>Berrisch, J., Pappert, S., Ziel, F., &amp; Arsova, A. (2023). <em>Finance Research Letters</em>, 52, 103503.</p>
</section>
<section id="section-2" class="slide level2">
<h2>&nbsp;</h2>
<div class="columns">
<div class="column" style="width:48%;">
<h3 id="motivation-1">Motivation</h3>
<p>Understanding European Allowances (EUA) dynamics is important for several fields:</p>
<p><i class="fa fa-fw fa-chart-pie" style="color:var(--col_grey_9);"></i> Portfolio &amp; Risk Management,</p>
<p><i class="fa fa-fw fa-timeline" style="color:var(--col_grey_9);"></i> Sustainability Planing</p>
<p><i class="fa fa-fw fa-handshake" style="color:var(--col_grey_9);"></i> Political decisions</p>
<p>EUA prices are obviously connected to the energy market</p>
<p>How can the dynamics be characterized?</p>
<p>Several Questions arise:</p>
<ul>
<li>Data (Pre)processing</li>
<li>Modeling Approach</li>
<li>Evaluation</li>
</ul>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<h3 id="data-1">Data</h3>
<p>EUA, natural gas, Brent crude oil, coal</p>
<p>March 15, 2010, until October 14, 2022</p>
<p>Data was normalized w.r.t. <span class="math inline">\(\text{CO}_2\)</span> emissions</p>
<p>Emission-adjusted prices reflects one tonne of <span class="math inline">\(\text{CO}_2\)</span></p>
<p>We adjusted for inflation by Eurostats HICP, excluding energy</p>
<p>Log transformation of the data to stabilize the variance</p>
<p>ADF Test: All series are stationary in first differences</p>
<p>Johansens likelihood ratio trace test suggests two cointegrating relationships (levels)</p>
<p>Johansens likelihood ratio trace test suggests no cointegrating relationships (logs)</p>
</div></div>
</section>
<section id="data-2" class="slide level2">
<h2>Data</h2>
<img data-src="index_files/figure-revealjs/unnamed-chunk-30-1.svg" class="quarto-figure quarto-figure-center r-stretch"></section>
<section id="modeling-approach-overview" class="slide level2">
<h2>Modeling Approach: Overview</h2>
<p><br></p>
<h3 id="vecm-vector-error-correction-model">VECM: Vector Error Correction Model</h3>
<ul>
<li>Modeling the expectaion</li>
<li>Captures the long-run cointegrating relationship</li>
<li>Different cointegrating ranks, including rank zero (no cointegration)</li>
</ul>
<h3 id="garch-generalized-autoregressive-conditional-heteroscedasticity">GARCH: Generalized Autoregressive Conditional Heteroscedasticity</h3>
<ul>
<li>Captures dynamics in conditional variance</li>
</ul>
<h3 id="copula-captures-the-dependence-structure">Copula: Captures the dependence structure</h3>
<ul>
<li>Captures: conditional cross-sectional dependencies</li>
<li>Dependence allowed to vary over time</li>
</ul>
</section>
<section id="modeling-approach-notation" class="slide level2">
<h2>Modeling Approach: Notation</h2>
<p><br></p>
<div class="columns">
<div class="column" style="width:48%;">
<ul>
<li>Let <span class="math inline">\(\boldsymbol{X}_t\)</span> be a <span class="math inline">\(K\)</span>-dimensional vector at time <span class="math inline">\(t\)</span></li>
<li>The forecasting target:
<ul>
<li>Conditional joint distribution</li>
<li><span class="math inline">\(F_{\boldsymbol{X}_t|\mathcal{F}_{t-1}}\)</span></li>
<li><span class="math inline">\(\mathcal{F}_{t}\)</span> is the sigma field generated by all information available up to and including time <span class="math inline">\(t\)</span></li>
</ul></li>
</ul>
<p>Sklars theorem: decompose target into - marginal distributions: <span class="math inline">\(F_{X_{k,t}|\mathcal{F}_{t-1}}\)</span> for <span class="math inline">\(k=1,\ldots, K\)</span>, and - copula function: <span class="math inline">\(C_{\boldsymbol{U}_{t}|\mathcal{F}_{t - 1}}\)</span></p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p>Let <span class="math inline">\(\boldsymbol{x}_t= (x_{1,t},\ldots, x_{K,t})^\intercal\)</span> be the realized values</p>
<p>It holds that:</p>
<p><span class="math display">\[\begin{align}
F_{\boldsymbol{X}_t|\mathcal{F}_{t-1}}(\boldsymbol{x}_t) = C_{\boldsymbol{U}_{t}|\mathcal{F}_{t - 1}}(\boldsymbol{u}_t) \nonumber
\end{align}\]</span></p>
<p>with: <span class="math inline">\(\boldsymbol{u}_t =(u_{1,t},\ldots, u_{K,t})^\intercal\)</span>, <span class="math inline">\(u_{k,t} = F_{X_{k,t}|\mathcal{F}_{t-1}}(x_{k,t})\)</span></p>
<p>For brewity we drop the conditioning on <span class="math inline">\(\mathcal{F}_{t-1}\)</span>.</p>
<p>The model can be specified as follows</p>
<p><span class="math display">\[\begin{align}
F(\boldsymbol{x}_t) = C \left[\mathbf{F}(\boldsymbol{x}_t; \boldsymbol{\mu}_t, \boldsymbol{ \sigma }_{t}^2, \boldsymbol{\nu}, \boldsymbol{\lambda}); \Xi_t, \Theta\right] \nonumber
\end{align}\]</span></p>
<p><span class="math inline">\(\Xi_{t}\)</span> denotes time-varying dependence parameters <span class="math inline">\(\Theta\)</span> denotes time-invariant dependence parameters</p>
<p>We take <span class="math inline">\(C\)</span> as the <span class="math inline">\(t\)</span>-copula</p>
</div></div>
</section>
<section id="modeling-approach-mean-and-variance" class="slide level2">
<h2>Modeling Approach: Mean and Variance</h2>
<p><br></p>
<div class="columns">
<div class="column" style="width:48%;">
<h3 id="individual-marginal-distributions">Individual marginal distributions:</h3>
<p><span class="math display">\[\mathbf{F} = (F_1, \ldots, F_K)^{\intercal}\]</span></p>
<h3 id="generalized-non-central-t-distributions">Generalized non-central t-distributions</h3>
<ul>
<li>To account for heavy tails</li>
<li>Time varying
<ul>
<li>expectation: <span class="math inline">\(\boldsymbol{\mu}_t = (\mu_{1,t}, \ldots, \mu_{K,t})^{\intercal}\)</span></li>
<li>variance: <span class="math inline">\(\boldsymbol{\sigma}_{t}^2 = (\sigma_{1,t}^2, \ldots, \sigma_{K,t}^2)^{\intercal}\)</span></li>
</ul></li>
<li>Time invariant
<ul>
<li>degrees of freedom: <span class="math inline">\(\boldsymbol{\nu} = (\nu_1, \ldots, \nu_K)^{\intercal}\)</span></li>
<li>noncentrality: <span class="math inline">\(\boldsymbol{\lambda} = (\lambda_1, \ldots, \lambda_K)^{\intercal}\)</span></li>
</ul></li>
</ul>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<h3 id="vecm-model">VECM Model</h3>
<p><span class="math display">\[\begin{align}
\Delta \boldsymbol{\mu}_t = \Pi \boldsymbol{x}_{t-1} + \Gamma \Delta \boldsymbol{x}_{t-1} \nonumber
\end{align}\]</span></p>
<p>where <span class="math inline">\(\Pi = \alpha \beta^{\intercal}\)</span> is the cointegrating matrix of rank <span class="math inline">\(r\)</span>, <span class="math inline">\(0 \leq r\leq K\)</span>.</p>
<h3 id="garch-model">GARCH model</h3>
<p><span class="math display">\[\begin{align}
\sigma_{i,t}^2 = &amp; \omega_i + \alpha^+_{i} (\epsilon_{i,t-1}^+)^2 + \alpha^-_{i} (\epsilon_{i,t-1}^-)^2 + \beta_i \sigma_{i,t-1}^2 \nonumber
\end{align}\]</span></p>
<p>where <span class="math inline">\(\epsilon_{i,t-1}^+ = \max\{\epsilon_{i,t-1}, 0\}\)</span></p>
<p>Separate coefficients for positive and negative innovations to capture leverage effects.</p>
</div></div>
</section>
<section id="modeling-approach-dependence" class="slide level2">
<h2>Modeling Approach: Dependence</h2>
<p><br></p>
<div class="columns">
<div class="column" style="width:48%;">
<h3 id="time-varying-dependence-parameters">Time-varying dependence parameters</h3>
<p><span class="math display">\[\begin{align*}
\Xi_{t} = &amp; \Lambda\left(\boldsymbol{\xi}_{t}\right)
\\
\xi_{ij,t} = &amp; \eta_{0,ij} + \eta_{1,ij} \xi_{ij,t-1} + \eta_{2,ij} z_{i,t-1} z_{j,t-1},
\end{align*}\]</span></p>
<p><span class="math inline">\(\xi_{ij,t}\)</span> is a latent process</p>
<p><span class="math inline">\(z_{i,t}\)</span> denotes the <span class="math inline">\(i\)</span>-th standardized residual from time series <span class="math inline">\(i\)</span> at time point <span class="math inline">\(t\)</span></p>
<p><span class="math inline">\(\Lambda(\cdot)\)</span> is a link function - ensures that <span class="math inline">\(\Xi_{t}\)</span> is a valid variance covariance matrix - ensures that <span class="math inline">\(\Xi_{t}\)</span> does not exceed its support space and remains semi-positive definite</p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<h3 id="maximum-likelihood-estimation">Maximum Likelihood Estimation</h3>
<p>All parameters can be estimated jointly. Using conditional independence: <span class="math display">\[\begin{align*}
L = f_{X_1} \prod_{i=2}^T f_{X_i|\mathcal{F}_{i-1}},
\end{align*}\]</span> with multivariate conditional density: <span class="math display">\[\begin{align*}
f_{\mathbf{X}_t}(\mathbf{x}_t | \mathcal{F}_{t-1}) = c\left[\mathbf{F}(\mathbf{x}_t;\boldsymbol{\mu}_t, \boldsymbol{\sigma}_{t}^2, \boldsymbol{\nu},
\boldsymbol{\lambda});\Xi_t, \Theta\right] \cdot \\ \prod_{i=1}^K f_{X_{i,t}}(\mathbf{x}_t;\boldsymbol{\mu}_t, \boldsymbol{\sigma}_{t}^2, \boldsymbol{\nu}, \boldsymbol{\lambda})
\end{align*}\]</span> The copula density <span class="math inline">\(c\)</span> can be derived analytically.</p>
</div></div>
</section>
<section id="study-design-and-evaluation" class="slide level2">
<h2>Study Design and Evaluation</h2>
<p><br></p>
<div class="columns">
<div class="column" style="width:48%;">
<h3 id="rolling-window-forecasting-study">Rolling-window forecasting study</h3>
<ul>
<li>3257 observations total</li>
<li>Window size: 1000 days (~ four years)</li>
<li>Forecasting 30-steps-ahead</li>
</ul>
<p>=&gt; 2227 potential starting points</p>
<p>We sample 250 to reduce computational cost</p>
<p>We draw <span class="math inline">\(2^{12}= 2048\)</span> trajectories from the joint predictive distribution</p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<h3 id="evaluation">Evaluation</h3>
<p>Forecasts are evaluated by the energy score (ES)</p>
<p><span class="math display">\[\begin{align*}
\text{ES}_t(F, \mathbf{x}_t) = \mathbb{E}_{F} \left(||\tilde{\mathbf{X}}_t - \mathbf{x}_t||_2\right) - \\ \frac{1}{2} \mathbb{E}_F \left(||\tilde{\mathbf{X}}_t - \tilde{\mathbf{X}}_t'||_2 \right)
\end{align*}\]</span></p>
<p>where <span class="math inline">\(\mathbf{x}_t\)</span> is the observed <span class="math inline">\(K\)</span>-dimensional realization and <span class="math inline">\(\tilde{\mathbf{X}}_t\)</span>, respectively <span class="math inline">\(\tilde{\mathbf{X}}_t'\)</span> are independent random vectors distributed according to <span class="math inline">\(F\)</span></p>
<p>For univariate cases the Energy Score becomes the Continuous Ranked Probability Score (CRPS)</p>
</div></div>
</section>
<section id="results-3" class="slide level2">
<h2>Results</h2>
<div class="panel-tabset">
<ul id="tabset-13" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-13-1">Energy Scores</a></li><li><a href="#tabset-13-2">CRPS Scores</a></li><li><a href="#tabset-13-3">RMSE</a></li><li><a href="#tabset-13-4">Evolution of Linear Dependence <span class="math inline">\(\Xi\)</span></a></li><li><a href="#tabset-13-5">Predictive Quantiles</a></li></ul>
<div class="tab-content">
<div id="tabset-13-1">
<div class="columns">
<div class="column" style="width:55%;">
<p>Relative improvement in ES compared to <span class="math inline">\(\text{RW}^{\sigma, \rho}\)</span></p>
<p>Cellcolor: w.r.t. test statistic of Diebold-Mariano test (testing wether the model outperformes the benchmark, greener = better).</p>
<div class="cell" width="revert-layer">
<table class="lightable-paper table table-condensed caption-top" data-quarto-postprocess="true" style="font-family: &quot;Arial Narrow&quot;, arial, helvetica, sans-serif; margin-left: auto; margin-right: auto; font-size: 14px; margin-left: auto; margin-right: auto;">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Model</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{All}}_{1-30}\)</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{EUA}}_{1-30}\)</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{Oil}}_{1-30}\)</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{NGas}}_{1-30}\)</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{Coal}}_{1-30}\)</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{All}}_{1}\)</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{All}}_{5}\)</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{All}}_{30}\)</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{}\)</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">161.96</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">10.06</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">37.94</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">146.73</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">13.22</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">5.56</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">13.28</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">34.29</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma_t, \rho_t}_{}\)</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(136, 197, 103, 255) !important;">9.40</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(147, 201, 102, 255) !important;">3.75</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 211, 70, 255) !important;">-0.41</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(132, 196, 103, 255) !important;">11.39</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(132, 196, 103, 255) !important;">4.13</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(162, 206, 100, 255) !important;">10.34</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(155, 204, 101, 255) !important;">9.10</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(165, 207, 100, 255) !important;">7.59</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho_t}_{\textrm{ncp}, \textrm{log}}\)</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(109, 188, 105, 255) !important;">12.04</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(127, 194, 104, 255) !important;">6.16</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 216, 73, 255) !important;">-0.56</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(106, 187, 106, 255) !important;">14.33</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(102, 186, 106, 255) !important;">7.35</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(141, 199, 102, 255) !important;">9.22</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(148, 201, 102, 255) !important;">9.82</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(144, 200, 102, 255) !important;">10.02</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{\textrm{log}}\)</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(109, 188, 105, 255) !important;">12.10</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(123, 193, 104, 255) !important;">6.25</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 210, 69, 255) !important;">-0.59</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(106, 187, 106, 255) !important;">14.44</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(102, 186, 106, 255) !important;">7.31</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(142, 199, 102, 255) !important;">9.04</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(147, 201, 102, 255) !important;">9.66</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(145, 200, 102, 255) !important;">9.91</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma_t, \rho_t}_{\textrm{lev}, \textrm{ncp}}\)</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(130, 195, 104, 255) !important;">9.68</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 197, 60, 255) !important;">-0.72</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(230, 229, 92, 255) !important;">0.32</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(127, 194, 104, 255) !important;">11.74</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(136, 197, 103, 255) !important;">3.70</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(155, 204, 101, 255) !important;">10.82</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(156, 204, 101, 255) !important;">10.50</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(153, 203, 101, 255) !important;">8.21</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma, \rho_t}_{\textrm{log}}\)</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(109, 188, 105, 255) !important;">12.15</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(113, 189, 105, 255) !important;">6.10</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 205, 66, 255) !important;">-0.70</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(106, 187, 106, 255) !important;">14.57</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(102, 186, 106, 255) !important;">7.80</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(147, 201, 102, 255) !important;">8.05</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(152, 203, 101, 255) !important;">9.99</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(146, 201, 102, 255) !important;">10.04</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}\)</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(120, 192, 105, 255) !important;">9.94</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(136, 197, 103, 255) !important;">5.75</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(246, 234, 90, 255) !important;">0.08</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(110, 188, 105, 255) !important;">13.05</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(140, 199, 103, 255) !important;">7.83</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(171, 209, 99, 255) !important;">6.96</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(162, 206, 100, 255) !important;">7.74</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(174, 210, 99, 255) !important;">6.21</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}_{\textrm{log}}\)</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(146, 201, 102, 255) !important;">8.12</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(133, 196, 103, 255) !important;">7.80</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 216, 74, 255) !important;">-0.51</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(135, 197, 103, 255) !important;">11.17</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(148, 201, 102, 255) !important;">8.54</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(205, 220, 96, 255) !important;">5.05</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(201, 219, 96, 255) !important;">6.14</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(231, 229, 92, 255) !important;">2.66</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}\)</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(167, 208, 100, 255) !important;">5.50</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 181, 49, 255) !important;">-4.43</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 179, 48, 255) !important;">-3.22</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(165, 207, 100, 255) !important;">6.29</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(188, 215, 98, 255) !important;">4.68</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(251, 143, 56, 255) !important;">-25.99</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 220, 76, 255) !important;">-2.42</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(215, 224, 94, 255) !important;">3.07</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}_{\textrm{log}}\)</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(151, 203, 101, 255) !important;">7.68</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(192, 216, 97, 255) !important;">3.31</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 163, 41, 255) !important;">-4.34</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(149, 202, 102, 255) !important;">9.07</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(133, 196, 103, 255) !important;">8.30</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(252, 151, 51, 255) !important;">-22.11</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(246, 234, 90, 255) !important;">1.07</td>
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(210, 222, 95, 255) !important;">4.32</td>
</tr>
</tbody>
</table>
</div>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:41%;">
<ul>
<li>Benchmarks:
<ul>
<li><span class="math inline">\(\text{RW}^{\sigma, \rho}\)</span>: Random walk with constant volatility and correlation</li>
<li>Univariate <span class="math inline">\(\text{ETS}^{\sigma}\)</span> with constant volatility</li>
<li>Vector ETS <span class="math inline">\(VES^{\sigma}\)</span> with constant volatility</li>
</ul></li>
<li>Heteroscedasticity is a main driver of ES</li>
<li>The VECM model without cointegration (essentially a VAR) is the best performing model in terms of ES overall</li>
<li>For EUA, the ETS Benchmark is the best performing model in terms of ES</li>
</ul>
</div></div>
</div>
<div id="tabset-13-2">
<div class="columns">
<div class="column" style="width:28%;">
<ul>
<li>CRPS solely evaluates the marginal distributions
<ul>
<li>The cross-sectional dependence is ignored</li>
</ul></li>
<li>VES models deliver poor performance in short horizons</li>
<li>For Oil prices the RW Benchmark cant be oupterformed 30 steps ahead</li>
<li>Both VECM models generally deliver good performance</li>
</ul>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:68%;">
<p>Improvement in CRPS of selected models relative to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span> in % (higher = better). Colored according to the test statistic of a DM-Test comparing to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span> (greener means lower test statistic i.e., better performance compared to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span>).</p>
<table class="lightable-paper table table-condensed caption-top" data-quarto-postprocess="true" style="font-family: &quot;Arial Narrow&quot;, arial, helvetica, sans-serif; width: auto !important; margin-left: auto; margin-right: auto; font-size: 16px; width: auto !important; margin-left: auto; margin-right: auto;">
<colgroup>
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
</colgroup>
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th" style="text-align: left; empty-cells: hide;"></th>
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
EUA
</div></th>
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
Oil
</div></th>
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
NGas
</div></th>
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
Coal
</div></th>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Model</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{}\)</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.4</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.1</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.5</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">3.4</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">9.1</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">4.7</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.6</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">29.8</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.3</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.8</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma_t, \rho_t}_{}\)</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(150, 202, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.6</td>
<td style="text-align: right; background-color: rgba(144, 200, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.0</td>
<td style="text-align: right; background-color: rgba(200, 219, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.8</td>
<td style="text-align: right; background-color: rgba(190, 215, 97, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.1</td>
<td style="text-align: right; background-color: rgba(152, 203, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.7</td>
<td style="text-align: right; background-color: rgba(255, 199, 62, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.8</td>
<td style="text-align: right; background-color: rgba(163, 207, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">12.6</td>
<td style="text-align: right; background-color: rgba(162, 206, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">10.5</td>
<td style="text-align: right; background-color: rgba(161, 206, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">9.6</td>
<td style="text-align: right; background-color: rgba(136, 197, 103, 255) !important; color: rgba(65, 65, 65, 255) !important;">10.7</td>
<td style="text-align: right; background-color: rgba(148, 202, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.5</td>
<td style="text-align: right; background-color: rgba(179, 212, 99, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.1</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho_t}_{\textrm{ncp}, \textrm{log}}\)</td>
<td style="text-align: right; background-color: rgba(156, 204, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.1</td>
<td style="text-align: right; background-color: rgba(122, 192, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.7</td>
<td style="text-align: right; background-color: rgba(169, 208, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.0</td>
<td style="text-align: right; background-color: rgba(227, 228, 93, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
<td style="text-align: right; background-color: rgba(227, 228, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.8</td>
<td style="text-align: right; background-color: rgba(255, 224, 79, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.4</td>
<td style="text-align: right; background-color: rgba(142, 199, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.4</td>
<td style="text-align: right; background-color: rgba(150, 202, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.5</td>
<td style="text-align: right; background-color: rgba(143, 200, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">12.4</td>
<td style="text-align: right; background-color: rgba(119, 191, 105, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.0</td>
<td style="text-align: right; background-color: rgba(127, 194, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.3</td>
<td style="text-align: right; background-color: rgba(124, 193, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.7</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{\textrm{log}}\)</td>
<td style="text-align: right; background-color: rgba(163, 207, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">4.7</td>
<td style="text-align: right; background-color: rgba(118, 191, 105, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.9</td>
<td style="text-align: right; background-color: rgba(162, 206, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.2</td>
<td style="text-align: right; background-color: rgba(255, 236, 87, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
<td style="text-align: right; background-color: rgba(243, 233, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.3</td>
<td style="text-align: right; background-color: rgba(255, 216, 74, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.6</td>
<td style="text-align: right; background-color: rgba(142, 199, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.2</td>
<td style="text-align: right; background-color: rgba(149, 202, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.4</td>
<td style="text-align: right; background-color: rgba(143, 200, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">12.4</td>
<td style="text-align: right; background-color: rgba(119, 192, 105, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.7</td>
<td style="text-align: right; background-color: rgba(127, 194, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.5</td>
<td style="text-align: right; background-color: rgba(123, 193, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.6</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma_t, \rho_t}_{\textrm{lev}, \textrm{ncp}}\)</td>
<td style="text-align: right; background-color: rgba(155, 204, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">3.6</td>
<td style="text-align: right; background-color: rgba(231, 229, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.6</td>
<td style="text-align: right; background-color: rgba(255, 169, 40, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.6</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(177, 211, 99, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.7</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(157, 205, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">3.0</td>
<td style="text-align: right; background-color: rgba(255, 237, 88, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(156, 204, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">13.1</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(161, 206, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">12.2</td>
<td style="text-align: right; background-color: rgba(152, 203, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">10.4</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(142, 199, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.8</td>
<td style="text-align: right; background-color: rgba(146, 201, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.2</td>
<td style="text-align: right; background-color: rgba(197, 218, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.5</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma, \rho_t}_{\textrm{log}}\)</td>
<td style="text-align: right; background-color: rgba(178, 211, 99, 255) !important; color: rgba(65, 65, 65, 255) !important;">4.2</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(114, 190, 105, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.9</td>
<td style="text-align: right; background-color: rgba(153, 203, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.1</td>
<td style="text-align: right; background-color: rgba(250, 235, 89, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
<td style="text-align: right; background-color: rgba(239, 232, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.4</td>
<td style="text-align: right; background-color: rgba(255, 208, 68, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.8</td>
<td style="text-align: right; background-color: rgba(148, 201, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">9.9</td>
<td style="text-align: right; background-color: rgba(154, 204, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.8</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(144, 200, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">12.7</td>
<td style="text-align: right; background-color: rgba(123, 193, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.8</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(125, 193, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.9</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(121, 192, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.3</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}\)</td>
<td style="text-align: right; background-color: rgba(252, 236, 88, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
<td style="text-align: right; background-color: rgba(141, 199, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.8</td>
<td style="text-align: right; background-color: rgba(164, 207, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.7</td>
<td style="text-align: right; background-color: rgba(196, 217, 97, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.1</td>
<td style="text-align: right; background-color: rgba(177, 211, 99, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
<td style="text-align: right; background-color: rgba(255, 223, 79, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.2</td>
<td style="text-align: right; background-color: rgba(153, 203, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">10.9</td>
<td style="text-align: right; background-color: rgba(152, 203, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.3</td>
<td style="text-align: right; background-color: rgba(148, 201, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">10.9</td>
<td style="text-align: right; background-color: rgba(183, 213, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.5</td>
<td style="text-align: right; background-color: rgba(188, 215, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.7</td>
<td style="text-align: right; background-color: rgba(199, 218, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.6</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}_{\textrm{log}}\)</td>
<td style="text-align: right; background-color: rgba(239, 232, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.0</td>
<td style="text-align: right; background-color: rgba(128, 194, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.6</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(160, 206, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.0</td>
<td style="text-align: right; background-color: rgba(252, 236, 88, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.1</td>
<td style="text-align: right; background-color: rgba(233, 230, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
<td style="text-align: right; background-color: rgba(255, 218, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.6</td>
<td style="text-align: right; background-color: rgba(184, 213, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.9</td>
<td style="text-align: right; background-color: rgba(187, 215, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">9.4</td>
<td style="text-align: right; background-color: rgba(201, 219, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.1</td>
<td style="text-align: right; background-color: rgba(193, 216, 97, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.3</td>
<td style="text-align: right; background-color: rgba(183, 213, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.8</td>
<td style="text-align: right; background-color: rgba(200, 219, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.7</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}\)</td>
<td style="text-align: right; background-color: rgba(241, 99, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-38.5</td>
<td style="text-align: right; background-color: rgba(255, 190, 56, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.4</td>
<td style="text-align: right; background-color: rgba(255, 188, 54, 255) !important; color: rgba(65, 65, 65, 255) !important;">-5.4</td>
<td style="text-align: right; background-color: rgba(240, 93, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-33.3</td>
<td style="text-align: right; background-color: rgba(255, 185, 52, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.1</td>
<td style="text-align: right; background-color: rgba(255, 196, 59, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.4</td>
<td style="text-align: right; background-color: rgba(254, 158, 45, 255) !important; color: rgba(65, 65, 65, 255) !important;">-26.6</td>
<td style="text-align: right; background-color: rgba(255, 222, 78, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.6</td>
<td style="text-align: right; background-color: rgba(215, 224, 94, 255) !important; color: rgba(65, 65, 65, 255) !important;">3.6</td>
<td style="text-align: right; background-color: rgba(245, 113, 70, 255) !important; color: rgba(65, 65, 65, 255) !important;">-37.5</td>
<td style="text-align: right; background-color: rgba(255, 203, 64, 255) !important; color: rgba(65, 65, 65, 255) !important;">-5.5</td>
<td style="text-align: right; background-color: rgba(203, 220, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">4.7</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}_{\textrm{log}}\)</td>
<td style="text-align: right; background-color: rgba(248, 129, 64, 255) !important; color: rgba(65, 65, 65, 255) !important;">-32.4</td>
<td style="text-align: right; background-color: rgba(227, 228, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.8</td>
<td style="text-align: right; background-color: rgba(232, 229, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.8</td>
<td style="text-align: right; background-color: rgba(242, 101, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-30.4</td>
<td style="text-align: right; background-color: rgba(255, 182, 50, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.2</td>
<td style="text-align: right; background-color: rgba(255, 185, 52, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.2</td>
<td style="text-align: right; background-color: rgba(255, 166, 38, 255) !important; color: rgba(65, 65, 65, 255) !important;">-22.0</td>
<td style="text-align: right; background-color: rgba(242, 233, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.8</td>
<td style="text-align: right; background-color: rgba(207, 221, 95, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.4</td>
<td style="text-align: right; background-color: rgba(252, 151, 51, 255) !important; color: rgba(65, 65, 65, 255) !important;">-27.0</td>
<td style="text-align: right; background-color: rgba(236, 231, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.3</td>
<td style="text-align: right; background-color: rgba(170, 209, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.4</td>
</tr>
</tbody>
</table>
</div></div>
</div>
<div id="tabset-13-3">
<div class="columns">
<div class="column" style="width:28%;">
<p>RMSE measures the performance of the forecasts at their mean</p>
<p><br></p>
<ul>
<li>Some models beat the benchmarks at short horizons</li>
</ul>
<p><br></p>
<p>Conclusion: the Improvements seen before must be attributed to other parts of the multivariate probabilistic predictive distribution</p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:68%;">
<p>Improvement in RMSE score of selected models relative to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span> in % (higher = better). Colored according to the test statistic of a DM-Test comparing to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span> (greener means lower test statistic i.e., better performance compared to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span>).</p>
<table class="lightable-paper table table-condensed caption-top" data-quarto-postprocess="true" style="font-family: &quot;Arial Narrow&quot;, arial, helvetica, sans-serif; width: auto !important; margin-left: auto; margin-right: auto; font-size: 14px; width: auto !important; margin-left: auto; margin-right: auto;">
<colgroup>
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
</colgroup>
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th" style="text-align: left; empty-cells: hide;"></th>
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
EUA
</div></th>
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
Oil
</div></th>
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
NGas
</div></th>
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
Coal
</div></th>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Model</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{}\)</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.0</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.0</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.9</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.4</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">16.7</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">17.8</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">42.8</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">85.4</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.9</td>
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.0</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma_t, \rho_t}_{}\)</td>
<td style="text-align: right; background-color: rgba(255, 230, 83, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
<td style="text-align: right; background-color: rgba(255, 225, 80, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
<td style="text-align: right; background-color: rgba(180, 212, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
<td style="text-align: right; background-color: rgba(251, 236, 89, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
<td style="text-align: right; background-color: rgba(255, 201, 63, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.3</td>
<td style="text-align: right; background-color: rgba(255, 223, 78, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
<td style="text-align: right; background-color: rgba(255, 225, 79, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.2</td>
<td style="text-align: right; background-color: rgba(202, 219, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.3</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(207, 221, 95, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.3</td>
<td style="text-align: right; background-color: rgba(255, 231, 84, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.2</td>
<td style="text-align: right; background-color: rgba(255, 237, 88, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
<td style="text-align: right; background-color: rgba(255, 206, 66, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.8</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho_t}_{\textrm{ncp}, \textrm{log}}\)</td>
<td style="text-align: right; background-color: rgba(255, 209, 69, 255) !important; color: rgba(65, 65, 65, 255) !important;">-270.5</td>
<td style="text-align: right; background-color: rgba(255, 184, 51, 255) !important; color: rgba(65, 65, 65, 255) !important;">-154.1</td>
<td style="text-align: right; background-color: rgba(253, 156, 47, 255) !important; color: rgba(65, 65, 65, 255) !important;">-139.9</td>
<td style="text-align: right; background-color: rgba(192, 216, 97, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.5</td>
<td style="text-align: right; background-color: rgba(255, 221, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.5</td>
<td style="text-align: right; background-color: rgba(255, 213, 71, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.9</td>
<td style="text-align: right; background-color: rgba(255, 208, 68, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.8</td>
<td style="text-align: right; background-color: rgba(229, 228, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
<td style="text-align: right; background-color: rgba(255, 226, 80, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.6</td>
<td style="text-align: right; background-color: rgba(226, 227, 93, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.3</td>
<td style="text-align: right; background-color: rgba(255, 208, 68, 255) !important; color: rgba(65, 65, 65, 255) !important;">-31.2</td>
<td style="text-align: right; background-color: rgba(255, 187, 53, 255) !important; color: rgba(65, 65, 65, 255) !important;">-24.5</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{\textrm{log}}\)</td>
<td style="text-align: right; background-color: rgba(255, 203, 64, 255) !important; color: rgba(65, 65, 65, 255) !important;">-705.0</td>
<td style="text-align: right; background-color: rgba(255, 201, 63, 255) !important; color: rgba(65, 65, 65, 255) !important;">-265.4</td>
<td style="text-align: right; background-color: rgba(255, 173, 43, 255) !important; color: rgba(65, 65, 65, 255) !important;">-125.2</td>
<td style="text-align: right; background-color: rgba(176, 211, 99, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.6</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(245, 234, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
<td style="text-align: right; background-color: rgba(255, 231, 84, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.2</td>
<td style="text-align: right; background-color: rgba(255, 222, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.4</td>
<td style="text-align: right; background-color: rgba(251, 236, 89, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.1</td>
<td style="text-align: right; background-color: rgba(255, 226, 81, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.6</td>
<td style="text-align: right; background-color: rgba(255, 193, 58, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.9</td>
<td style="text-align: right; background-color: rgba(255, 226, 80, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.3</td>
<td style="text-align: right; background-color: rgba(255, 199, 61, 255) !important; color: rgba(65, 65, 65, 255) !important;">-8.3</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma_t, \rho_t}_{\textrm{lev}, \textrm{ncp}}\)</td>
<td style="text-align: right; background-color: rgba(255, 218, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.9</td>
<td style="text-align: right; background-color: rgba(241, 232, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
<td style="text-align: right; background-color: rgba(198, 218, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.5</td>
<td style="text-align: right; background-color: rgba(228, 228, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.5</td>
<td style="text-align: right; background-color: rgba(240, 232, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
<td style="text-align: right; background-color: rgba(255, 235, 86, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
<td style="text-align: right; background-color: rgba(255, 231, 84, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.4</td>
<td style="text-align: right; background-color: rgba(203, 220, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
<td style="text-align: right; background-color: rgba(239, 232, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(224, 227, 93, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.4</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(241, 232, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.1</td>
<td style="text-align: right; background-color: rgba(234, 230, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma, \rho_t}_{\textrm{log}}\)</td>
<td style="text-align: right; background-color: rgba(255, 209, 69, 255) !important; color: rgba(65, 65, 65, 255) !important;">-271.5</td>
<td style="text-align: right; background-color: rgba(255, 185, 52, 255) !important; color: rgba(65, 65, 65, 255) !important;">-191.3</td>
<td style="text-align: right; background-color: rgba(254, 159, 45, 255) !important; color: rgba(65, 65, 65, 255) !important;">-114.3</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(203, 220, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.7</td>
<td style="text-align: right; background-color: rgba(255, 209, 69, 255) !important; color: rgba(65, 65, 65, 255) !important;">-12.3</td>
<td style="text-align: right; background-color: rgba(255, 196, 60, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.6</td>
<td style="text-align: right; background-color: rgba(255, 223, 78, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.6</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(225, 227, 93, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.6</td>
<td style="text-align: right; background-color: rgba(255, 218, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-4.1</td>
<td style="text-align: right; background-color: rgba(255, 235, 87, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
<td style="text-align: right; background-color: rgba(255, 212, 71, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.8</td>
<td style="text-align: right; background-color: rgba(255, 221, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.7</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}\)</td>
<td style="text-align: right; background-color: rgba(255, 228, 82, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.3</td>
<td style="text-align: right; background-color: rgba(240, 232, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.3</td>
<td style="text-align: right; background-color: rgba(216, 224, 94, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.6</td>
<td style="text-align: right; background-color: rgba(208, 221, 95, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
<td style="text-align: right; background-color: rgba(244, 233, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.1</td>
<td style="text-align: right; background-color: rgba(255, 221, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(240, 232, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.1</td>
<td style="text-align: right; background-color: rgba(255, 214, 72, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
<td style="text-align: right; background-color: rgba(229, 228, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
<td style="text-align: right; background-color: rgba(255, 216, 73, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.4</td>
<td style="text-align: right; background-color: rgba(255, 198, 61, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.9</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(230, 229, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.5</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}_{\textrm{log}}\)</td>
<td style="text-align: right; background-color: rgba(255, 206, 67, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.0</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(245, 234, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.4</td>
<td style="text-align: right; font-weight: bold; background-color: rgba(236, 231, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.6</td>
<td style="text-align: right; background-color: rgba(199, 218, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
<td style="text-align: right; background-color: rgba(255, 237, 88, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
<td style="text-align: right; background-color: rgba(255, 234, 86, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
<td style="text-align: right; background-color: rgba(255, 212, 71, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.9</td>
<td style="text-align: right; background-color: rgba(255, 225, 80, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.9</td>
<td style="text-align: right; background-color: rgba(255, 206, 66, 255) !important; color: rgba(65, 65, 65, 255) !important;">-13.9</td>
<td style="text-align: right; background-color: rgba(255, 226, 80, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.3</td>
<td style="text-align: right; background-color: rgba(255, 205, 66, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.6</td>
<td style="text-align: right; background-color: rgba(255, 228, 82, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.8</td>
</tr>
<tr class="odd">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}\)</td>
<td style="text-align: right; background-color: rgba(255, 168, 40, 255) !important; color: rgba(65, 65, 65, 255) !important;">-37.4</td>
<td style="text-align: right; background-color: rgba(255, 188, 54, 255) !important; color: rgba(65, 65, 65, 255) !important;">-8.9</td>
<td style="text-align: right; background-color: rgba(255, 188, 54, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.0</td>
<td style="text-align: right; background-color: rgba(253, 153, 49, 255) !important; color: rgba(65, 65, 65, 255) !important;">-27.9</td>
<td style="text-align: right; background-color: rgba(255, 197, 60, 255) !important; color: rgba(65, 65, 65, 255) !important;">-7.4</td>
<td style="text-align: right; background-color: rgba(255, 180, 48, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.8</td>
<td style="text-align: right; background-color: rgba(255, 171, 42, 255) !important; color: rgba(65, 65, 65, 255) !important;">-27.2</td>
<td style="text-align: right; background-color: rgba(255, 183, 50, 255) !important; color: rgba(65, 65, 65, 255) !important;">-9.5</td>
<td style="text-align: right; background-color: rgba(255, 221, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.4</td>
<td style="text-align: right; background-color: rgba(255, 192, 56, 255) !important; color: rgba(65, 65, 65, 255) !important;">-41.7</td>
<td style="text-align: right; background-color: rgba(255, 218, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.2</td>
<td style="text-align: right; background-color: rgba(212, 223, 95, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.6</td>
</tr>
<tr class="even">
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}_{\textrm{log}}\)</td>
<td style="text-align: right; background-color: rgba(255, 170, 41, 255) !important; color: rgba(65, 65, 65, 255) !important;">-37.6</td>
<td style="text-align: right; background-color: rgba(255, 189, 55, 255) !important; color: rgba(65, 65, 65, 255) !important;">-9.2</td>
<td style="text-align: right; background-color: rgba(255, 186, 53, 255) !important; color: rgba(65, 65, 65, 255) !important;">-7.8</td>
<td style="text-align: right; background-color: rgba(253, 154, 48, 255) !important; color: rgba(65, 65, 65, 255) !important;">-26.8</td>
<td style="text-align: right; background-color: rgba(255, 198, 61, 255) !important; color: rgba(65, 65, 65, 255) !important;">-7.3</td>
<td style="text-align: right; background-color: rgba(255, 190, 55, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.0</td>
<td style="text-align: right; background-color: rgba(255, 172, 42, 255) !important; color: rgba(65, 65, 65, 255) !important;">-27.0</td>
<td style="text-align: right; background-color: rgba(255, 195, 59, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.8</td>
<td style="text-align: right; background-color: rgba(255, 209, 68, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.5</td>
<td style="text-align: right; background-color: rgba(255, 193, 57, 255) !important; color: rgba(65, 65, 65, 255) !important;">-41.2</td>
<td style="text-align: right; background-color: rgba(255, 196, 60, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.2</td>
<td style="text-align: right; background-color: rgba(255, 232, 85, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.3</td>
</tr>
</tbody>
</table>
</div></div>
</div>
<div id="tabset-13-4">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-34-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div>
<div id="tabset-13-5">
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-35-1.svg" class="quarto-figure quarto-figure-center"></p>
</figure>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="conclusion" class="slide level2">
<h2>Conclusion</h2>
<div class="columns">
<div class="column" style="width:48%;">
<p>Accounting for heteroscedasticity or stabilizing the variance via log transformation is crucial for good performance in terms of ES</p>
<ul>
<li>Price dynamics emerged way before the russian invaion into ukraine</li>
<li>Linear dependence between the series reacted only right after the invasion</li>
<li>Improvements in forecasting performance is mainly attributed to:
<ul>
<li>the tails multivariate probabilistic predictive distribution</li>
<li>the dependence structure between the marginals</li>
</ul></li>
</ul>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p><br></p>
<center>
<img src="assets/voldep/frame.png">
</center>
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_grey_10);"></i> <span class="citation" data-cites="berrisch2023modeling">Berrisch, Pappert, et al. (<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span></p>
</div></div>
</section>
<section id="sec-contributions" class="slide level2">
<h2>Contributions</h2>
<div class="columns">
<div class="column" style="width:48%;">
<p style="margin:1.5em;">
</p>
<p><strong>Theoretical</strong></p>
<p>Probabilistic Online Learning:</p>
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_blue-grey_9);"></i> Aggregation <br> <i class="fa fa-fw fa-newspaper" style="color:var(--col_blue-grey_9);"></i> Regression</p>
<p style="margin:1.5em;">
</p>
<p><strong>Practical</strong></p>
<p>Applications</p>
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_blue-grey_9);"></i> Energy Commodities <br> <i class="fa fa-fw fa-newspaper" style="color:var(--col_blue-grey_9);"></i> Electricity Prices <br> <i class="fa fa-fw fa-newspaper" style="color:var(--col_blue-grey_9);"></i> Electricity Load</p>
<p style="margin:1.5em;">
</p>
<p><strong>Well received by the academic community:</strong></p>
<p><i class="fa fa-fw fa-5" style="color:var(--col_green_10);"></i> of <i class="fa fa-fw fa-7" style="color:var(--col_gray_9);"></i> papers already published</p>
<p><i class="fa fa-fw fa-quote-right" style="color:var(--col_green_10);"></i> 104 citations since 2020 (<a href="https://scholar.google.com/citations?user=wfF1oJYAAAAJ&amp;hl=de&amp;oi=sra">Google Scholar</a>)</p>
</div><div class="column" style="width:4%;">
</div><div class="column" style="width:48%;">
<p style="margin:1.5em;">
</p>
<p><strong>Software</strong></p>
<p>R Packages:</p>
<p><i class="fa-brands fa-fw fa-r-project" style="color:#276DC3;"></i> <a href="https://profoc.berrisch.biz/">profoc</a>, <a href="https://rcpptimer.berrisch.biz/">rcpptimer</a>, <a href="https://dccpp.berrisch.biz/">dccpp</a></p>
<p>Python Packages:</p>
<p><i class="fa-brands fa-fw fa-python" style="color: #FFD43B;"></i> <a href="https://github.com/simon-hirsch/ondil">ondil</a>, <a href="https://github.com/BerriJ/sstudentt">sstudentt</a></p>
<p>Contributions to other projects:</p>
<p><i class="fa-brands fa-fw fa-r-project" style="color:#276DC3;"></i> <a href="https://github.com/RcppCore/RcppArmadillo">RcppArmadillo</a> <br> <i class="fa-brands fa-fw fa-r-project" style="color:#276DC3;"></i> <a href="https://github.com/gamlss-dev/gamlss">gamlss</a><br> <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_9);"></i> <a href="https://github.com/NixOS/nixpkgs">NixOS/nixpkgs</a> <br> <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_9);"></i> <a href="https://github.com/OpenPrinting/foomatic-db">OpenPrinting/foomatic-db</a> <br></p>
<p><strong>Awards:</strong></p>
<p>Berrisch, J., Narajewski, M., &amp; Ziel, F. <span class="citation" data-cites="BERRISCH2023100236">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>:</p>
<p><i class="fa fa-fw fa-award" style="color:var(--col_red_9);"></i> Won Western Power Distribution Competition <br> <i class="fa fa-fw fa-award" style="color:var(--col_amber_9);"></i> Won Best-Student-Presentation Award</p>
</div></div>
</section>
<section id="references" class="slide level2 smaller scrollable" data-visibility="uncounted">
<h2>References</h2>
<div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" data-line-spacing="2" role="list">
<div id="ref-berrisch2025rcpptimer" class="csl-entry" role="listitem">
Berrisch, J. (2025). Rcpptimer: Rcpp tic-toc timer with OpenMP support. <em>arXiv Preprint arXiv:2501.15856</em>, abs/2501.15856. DOI: <a href="https://doi.org/10.48550/arXiv.2501.15856">10.48550/arXiv.2501.15856</a>
</div>
<div id="ref-BERRISCH2023100236" class="csl-entry" role="listitem">
Berrisch, J., Narajewski, M., &amp; Ziel, F. (2023). High-resolution peak demand estimation using generalized additive models and deep neural networks. <em>Energy and AI</em>, 13, 100236. DOI: <a href="https://doi.org/10.1016/j.egyai.2023.100236">10.1016/j.egyai.2023.100236</a>
</div>
<div id="ref-berrisch2023modeling" class="csl-entry" role="listitem">
Berrisch, J., Pappert, S., Ziel, F., &amp; Arsova, A. (2023). Modeling volatility and dependence of european carbon and energy prices. <em>Finance Research Letters</em>, 52, 103503. DOI: <a href="https://doi.org/10.1016/j.frl.2022.103503">10.1016/j.frl.2022.103503</a>
</div>
<div id="ref-berrisch2022distributional" class="csl-entry" role="listitem">
Berrisch, J., &amp; Ziel, F. (2022). Distributional modeling and forecasting of natural gas prices. <em>Journal of Forecasting</em>, 41(6), 10651086. DOI: <a href="https://doi.org/10.1002/for.2853">10.1002/for.2853</a>
</div>
<div id="ref-BERRISCH2023105221" class="csl-entry" role="listitem">
Berrisch, J., &amp; Ziel, F. (2023). CRPS learning. <em>Journal of Econometrics</em>, 237(2, Part C), 105221. DOI: <a href="https://doi.org/10.1016/j.jeconom.2021.11.008">10.1016/j.jeconom.2021.11.008</a>
</div>
<div id="ref-BERRISCH20241568" class="csl-entry" role="listitem">
Berrisch, J., &amp; Ziel, F. (2024). Multivariate probabilistic CRPS learning with an application to day-ahead electricity prices. <em>International Journal of Forecasting</em>, 40(4), 15681586. DOI: <a href="https://doi.org/10.1016/j.ijforecast.2024.01.005">10.1016/j.ijforecast.2024.01.005</a>
</div>
<div id="ref-cesa2006prediction" class="csl-entry" role="listitem">
Cesa-Bianchi, N., &amp; Lugosi, G. (2006). <em><span class="nocase">Prediction, learning, and games</span></em> (pp. IXII, 1394). Cambridge university press. DOI: <a href="https://doi.org/10.1017/CBO9780511546921">10.1017/CBO9780511546921</a>
</div>
<div id="ref-gaillard2018efficient" class="csl-entry" role="listitem">
Gaillard, P., &amp; Wintenberger, O. (2018). <span class="nocase">Efficient online algorithms for fast-rate regret bounds under sparsity</span>. In S. Bengio, H. M. Wallach, H. Larochelle, K. Grauman, N. Cesa-Bianchi, &amp; R. Garnett (Eds.), <em>Proceedings of the 32nd international conference on neural information processing systems</em> (pp. 70267036). Cornell University. DOI: <a href="https://doi.org/10.48550/arxiv.1805.09174">10.48550/arxiv.1805.09174</a>
</div>
<div id="ref-gneiting2011making" class="csl-entry" role="listitem">
Gneiting, T. (2011). <span class="nocase">Making and evaluating point forecasts</span>. <em>Journal of the American Statistical Association</em>, 106(494), 746762. DOI: <a href="https://doi.org/10.1198/jasa.2011.r10138">10.1198/jasa.2011.r10138</a>
</div>
<div id="ref-gneiting2007strictly" class="csl-entry" role="listitem">
Gneiting, T., &amp; Raftery, A.E. (2007). <span class="nocase">Strictly proper scoring rules, prediction, and estimation</span>. <em>Journal of the American Statistical Association</em>, 102(477), 359378. DOI: <a href="https://doi.org/10.1198/016214506000001437">10.1198/016214506000001437</a>
</div>
<div id="ref-hirsch2024online" class="csl-entry" role="listitem">
Hirsch, S., Berrisch, J., &amp; Ziel, F. (2024). Online distributional regression. <em>arXiv Preprint arXiv:2407.08750</em>, abs/2407.08750. DOI: <a href="https://doi.org/10.48550/arXiv.2407.08750">10.48550/arXiv.2407.08750</a>
</div>
<div id="ref-johnson1995continuous" class="csl-entry" role="listitem">
Johnson, N.L., Kotz, S., &amp; Balakrishnan, N. (1995). <em>Continuous univariate distributions, volume 2</em> (Vol. 289). John wiley &amp; sons.
</div>
<div id="ref-li2022general" class="csl-entry" role="listitem">
Li, Z., &amp; Cao, J. (2022). General p-splines for non-uniform b-splines. <em>arXiv Preprint</em>. DOI: <a href="https://doi.org/10.48550/arXiv.2201.06808">10.48550/arXiv.2201.06808</a>
</div>
<div id="ref-marcjasz2022distributional" class="csl-entry" role="listitem">
Marcjasz, G., Narajewski, M., Weron, R., &amp; Ziel, F. (2023). Distributional neural networks for electricity price forecasting. <em>Energy Economics</em>, 125, 106843. DOI: <a href="https://doi.org/10.1016/j.eneco.2023.106843">10.1016/j.eneco.2023.106843</a>
</div>
<div id="ref-wintenberger2017optimal" class="csl-entry" role="listitem">
Wintenberger, O. (2017). Optimal learning with bernstein online aggregation. <em>Machine Learning</em>, 106(1), 119141. DOI: <a href="https://doi.org/10.1007/s10994-016-5592-6">10.1007/s10994-016-5592-6</a>
</div>
</div>
</section></section>
</div>
<div class="quarto-auto-generated-content" style="display: none;">
<div class="footer footer-default">
</div>
</div></div>
<script>window.backupDefine = window.define; window.define = undefined;</script>
<script src="index_files/libs/revealjs/dist/reveal.js"></script>
<!-- reveal.js plugins -->
<script src="index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js"></script>
<script src="index_files/libs/revealjs/plugin/pdf-export/pdfexport.js"></script>
<script src="index_files/libs/revealjs/plugin/reveal-menu/menu.js"></script>
<script src="index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js"></script>
<script src="index_files/libs/revealjs/plugin/reveal-pointer/pointer.js"></script>
<script src="index_files/libs/revealjs/plugin/quarto-support/support.js"></script>
<script src="index_files/libs/revealjs/plugin/notes/notes.js"></script>
<script src="index_files/libs/revealjs/plugin/search/search.js"></script>
<script src="index_files/libs/revealjs/plugin/zoom/zoom.js"></script>
<script src="index_files/libs/revealjs/plugin/math/math.js"></script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script>
<script>
// Full list of configuration options available at:
// https://revealjs.com/config/
Reveal.initialize({
'controlsAuto': true,
'previewLinksAuto': false,
'pdfSeparateFragments': false,
'autoAnimateEasing': "ease",
'autoAnimateDuration': 1,
'autoAnimateUnmatched': true,
'jumpToSlide': true,
'menu': {"side":"left","useTextContentForMissingTitles":true,"markers":false,"loadIcons":false,"custom":[{"title":"Tools","icon":"<i class=\"fas fa-gear\"></i>","content":"<ul class=\"slide-menu-items\">\n<li class=\"slide-tool-item active\" data-item=\"0\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.fullscreen(event)\"><kbd>f</kbd> Fullscreen</a></li>\n<li class=\"slide-tool-item\" data-item=\"1\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.speakerMode(event)\"><kbd>s</kbd> Speaker View</a></li>\n<li class=\"slide-tool-item\" data-item=\"2\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.overview(event)\"><kbd>o</kbd> Slide Overview</a></li>\n<li class=\"slide-tool-item\" data-item=\"3\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.togglePdfExport(event)\"><kbd>e</kbd> PDF Export Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"4\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.toggleScrollView(event)\"><kbd>r</kbd> Scroll View Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"5\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.keyboardHelp(event)\"><kbd>?</kbd> Keyboard Help</a></li>\n</ul>"}],"openButton":true},
'pointer': {"key":"q","alwaysVisible":false,"hideDelay":3000,"color":"#202020FF","scaleFactor":0.03,"icon":"fa fa-hand-point-up"},
'smaller': true,
// Display controls in the bottom right corner
controls: false,
// Help the user learn the controls by providing hints, for example by
// bouncing the down arrow when they first encounter a vertical slide
controlsTutorial: false,
// Determines where controls appear, "edges" or "bottom-right"
controlsLayout: 'edges',
// Visibility rule for backwards navigation arrows; "faded", "hidden"
// or "visible"
controlsBackArrows: 'faded',
// Display a presentation progress bar
progress: true,
// Display the page number of the current slide
slideNumber: 'c/t',
// 'all', 'print', or 'speaker'
showSlideNumber: 'all',
// Add the current slide number to the URL hash so that reloading the
// page/copying the URL will return you to the same slide
hash: true,
// Start with 1 for the hash rather than 0
hashOneBasedIndex: false,
// Flags if we should monitor the hash and change slides accordingly
respondToHashChanges: true,
// Push each slide change to the browser history
history: true,
// Enable keyboard shortcuts for navigation
keyboard: true,
// Enable the slide overview mode
overview: true,
// Disables the default reveal.js slide layout (scaling and centering)
// so that you can use custom CSS layout
disableLayout: false,
// Vertical centering of slides
center: false,
// Enables touch navigation on devices with touch input
touch: true,
// Loop the presentation
loop: false,
// Change the presentation direction to be RTL
rtl: false,
// see https://revealjs.com/vertical-slides/#navigation-mode
navigationMode: 'linear',
// Randomizes the order of slides each time the presentation loads
shuffle: false,
// Turns fragments on and off globally
fragments: true,
// Flags whether to include the current fragment in the URL,
// so that reloading brings you to the same fragment position
fragmentInURL: false,
// Flags if the presentation is running in an embedded mode,
// i.e. contained within a limited portion of the screen
embedded: false,
// Flags if we should show a help overlay when the questionmark
// key is pressed
help: true,
// Flags if it should be possible to pause the presentation (blackout)
pause: true,
// Flags if speaker notes should be visible to all viewers
showNotes: false,
// Global override for autoplaying embedded media (null/true/false)
autoPlayMedia: null,
// Global override for preloading lazy-loaded iframes (null/true/false)
preloadIframes: null,
// Number of milliseconds between automatically proceeding to the
// next slide, disabled when set to 0, this value can be overwritten
// by using a data-autoslide attribute on your slides
autoSlide: 0,
// Stop auto-sliding after user input
autoSlideStoppable: true,
// Use this method for navigation when auto-sliding
autoSlideMethod: null,
// Specify the average time in seconds that you think you will spend
// presenting each slide. This is used to show a pacing timer in the
// speaker view
defaultTiming: null,
// Enable slide navigation via mouse wheel
mouseWheel: false,
// The display mode that will be used to show slides
display: 'block',
// Hide cursor if inactive
hideInactiveCursor: true,
// Time before the cursor is hidden (in ms)
hideCursorTime: 5000,
// Opens links in an iframe preview overlay
previewLinks: false,
// Transition style (none/fade/slide/convex/concave/zoom)
transition: 'none',
// Transition speed (default/fast/slow)
transitionSpeed: 'default',
// Transition style for full page slide backgrounds
// (none/fade/slide/convex/concave/zoom)
backgroundTransition: 'none',
// Number of slides away from the current that are visible
viewDistance: 3,
// Number of slides away from the current that are visible on mobile
// devices. It is advisable to set this to a lower number than
// viewDistance in order to save resources.
mobileViewDistance: 2,
// The "normal" size of the presentation, aspect ratio will be preserved
// when the presentation is scaled to fit different resolutions. Can be
// specified using percentage units.
width: 1280,
height: 720,
// Factor of the display size that should remain empty around the content
margin: 0.1,
math: {
mathjax: 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js',
config: 'TeX-AMS_HTML-full',
tex2jax: {
inlineMath: [['\\(','\\)']],
displayMath: [['\\[','\\]']],
balanceBraces: true,
processEscapes: false,
processRefs: true,
processEnvironments: true,
preview: 'TeX',
skipTags: ['script','noscript','style','textarea','pre','code'],
ignoreClass: 'tex2jax_ignore',
processClass: 'tex2jax_process'
},
},
// reveal.js plugins
plugins: [QuartoLineHighlight, PdfExport, RevealMenu, RevealPointer, QuartoSupport,
RevealMath,
RevealNotes,
RevealSearch,
RevealZoom
]
});
</script>
<script type="ojs-module-contents">
eyJjb250ZW50cyI6W3sibWV0aG9kTmFtZSI6ImludGVycHJldCIsImNlbGxOYW1lIjoib2pzLWNlbGwtMSIsImlubGluZSI6ZmFsc2UsInNvdXJjZSI6ImQzID0gcmVxdWlyZShcImQzQDdcIilcbiJ9LHsibWV0aG9kTmFtZSI6ImludGVycHJldCIsImNlbGxOYW1lIjoib2pzLWNlbGwtMiIsImlubGluZSI6ZmFsc2UsInNvdXJjZSI6ImJzcGxpbmVEYXRhID0gRmlsZUF0dGFjaG1lbnQoXCJhc3NldHMvbWNycHNfbGVhcm5pbmcvYmFzaXNfZnVuY3Rpb25zLmNzdlwiKS5jc3YoeyB0eXBlZDogdHJ1ZSB9KVxuIn0seyJtZXRob2ROYW1lIjoiaW50ZXJwcmV0IiwiY2VsbE5hbWUiOiJvanMtY2VsbC0zIiwiaW5saW5lIjpmYWxzZSwic291cmNlIjoiZnVuY3Rpb24gdXBkYXRlQ2hhcnRJbm5lcihnLCB4LCB5LCBsaW5lc0dyb3VwLCBjb2xvciwgbGluZSwgZGF0YSkge1xuICAvLyBVcGRhdGUgYXhlcyB3aXRoIHRyYW5zaXRpb25zXG4gIHguZG9tYWluKFswLCBkMy5tYXgoZGF0YSwgZCA9PiBkLngpXSk7XG4gIGcuc2VsZWN0KFwiLngtYXhpc1wiKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMTUwMCkuY2FsbChkMy5heGlzQm90dG9tKHgpLnRpY2tzKDEwKSk7XG4gIHkuZG9tYWluKFswLCBkMy5tYXgoZGF0YSwgZCA9PiBkLnkpXSk7XG4gIGcuc2VsZWN0KFwiLnktYXhpc1wiKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMTUwMCkuY2FsbChkMy5heGlzTGVmdCh5KS50aWNrcyg1KSk7XG5cbiAgLy8gR3JvdXAgZGF0YSBieSBiYXNpcyBmdW5jdGlvblxuICBjb25zdCBkYXRhQnlGdW5jdGlvbiA9IEFycmF5LmZyb20oZDMuZ3JvdXAoZGF0YSwgZCA9PiBkLmIpKTtcbiAgY29uc3Qga2V5Rm4gPSBkID0+IGRbMF07XG5cbiAgLy8gVXBkYXRlIGJhc2lzIGZ1bmN0aW9uIGxpbmVzXG4gIGNvbnN0IHUgPSBsaW5lc0dyb3VwLnNlbGVjdEFsbChcInBhdGhcIikuZGF0YShkYXRhQnlGdW5jdGlvbiwga2V5Rm4pO1xuICB1LmpvaW4oXG4gICAgZW50ZXIgPT4gZW50ZXIuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZmlsbFwiLFwibm9uZVwiKS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsMylcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIChfLCBpKSA9PiBjb2xvcihpKSkuYXR0cihcImRcIiwgZCA9PiBsaW5lKGRbMV0ubWFwKHB0ID0+ICh7eDogcHQueCwgeTogMH0pKSkpXG4gICAgICAuc3R5bGUoXCJvcGFjaXR5XCIsMCksXG4gICAgdXBkYXRlID0+IHVwZGF0ZSxcbiAgICBleGl0ID0+IGV4aXQudHJhbnNpdGlvbigpLmR1cmF0aW9uKDEwMDApLnN0eWxlKFwib3BhY2l0eVwiLDApLnJlbW92ZSgpXG4gIClcbiAgLnRyYW5zaXRpb24oKS5kdXJhdGlvbigxMDAwKVxuICAgIC5hdHRyKFwiZFwiLCBkID0+IGxpbmUoZFsxXSkpXG4gICAgLmF0dHIoXCJzdHJva2VcIiwgKF8sIGkpID0+IGNvbG9yKGkpKVxuICAgIC5zdHlsZShcIm9wYWNpdHlcIiwxKTtcbn1cblxuY2hhcnQgPSB7XG4gIC8vIFN0YXRlIHZhcmlhYmxlcyBmb3Igc2VsZWN0ZWQgcGFyYW1ldGVyc1xuICBsZXQgc2VsZWN0ZWRNdSA9IDAuNTtcbiAgbGV0IHNlbGVjdGVkU2lnID0gMTtcbiAgbGV0IHNlbGVjdGVkTm9uYyA9IDA7XG4gIGxldCBzZWxlY3RlZFRhaWx3ID0gMTtcbiAgY29uc3QgZmlsdGVyZWREYXRhID0gKCkgPT4gYnNwbGluZURhdGEuZmlsdGVyKGQgPT5cbiAgICBNYXRoLmFicyhzZWxlY3RlZE11IC0gZC5tdSkgPCAwLjAwMSAmJlxuICAgIGQuc2lnID09PSBzZWxlY3RlZFNpZyAmJlxuICAgIGQubm9uYyA9PT0gc2VsZWN0ZWROb25jICYmXG4gICAgZC50YWlsdyA9PT0gc2VsZWN0ZWRUYWlsd1xuICApO1xuICBjb25zdCBjb250YWluZXIgPSBkMy5jcmVhdGUoXCJkaXZcIilcbiAgICAuc3R5bGUoXCJtYXgtd2lkdGhcIiwgXCJub25lXCIpXG4gICAgLnN0eWxlKFwid2lkdGhcIiwgXCIxMDAlXCIpOztcbiAgY29uc3QgY29udHJvbHNDb250YWluZXIgPSBjb250YWluZXIuYXBwZW5kKFwiZGl2XCIpXG4gICAgLnN0eWxlKFwiZGlzcGxheVwiLCBcImZsZXhcIilcbiAgICAuc3R5bGUoXCJnYXBcIiwgXCIyMHB4XCIpO1xuICAvLyBzbGlkZXIgY29udHJvbHNcbiAgY29uc3Qgc2xpZGVycyA9IFtcbiAgICB7IGxhYmVsOiAnTXUnLCBnZXQ6ICgpID0+IHNlbGVjdGVkTXUsIHNldDogdiA9PiBzZWxlY3RlZE11ID0gdiwgbWluOiAwLjEsIG1heDogMC45LCBzdGVwOiAwLjIgfSxcbiAgICB7IGxhYmVsOiAnU2lnbWEnLCBnZXQ6ICgpID0+IE1hdGgubG9nMihzZWxlY3RlZFNpZyksIHNldDogdiA9PiBzZWxlY3RlZFNpZyA9IDIgKiogdiwgbWluOiAtMiwgbWF4OiAyLCBzdGVwOiAxIH0sXG4gICAgeyBsYWJlbDogJ05vbmNlbnRyYWxpdHknLCBnZXQ6ICgpID0+IHNlbGVjdGVkTm9uYywgc2V0OiB2ID0+IHNlbGVjdGVkTm9uYyA9IHYsIG1pbjogLTQsIG1heDogNCwgc3RlcDogMiB9LFxuICAgIHsgbGFiZWw6ICdUYWlsd2VpZ2h0JywgZ2V0OiAoKSA9PiBNYXRoLmxvZzIoc2VsZWN0ZWRUYWlsdyksIHNldDogdiA9PiBzZWxlY3RlZFRhaWx3ID0gMiAqKiB2LCBtaW46IC0yLCBtYXg6IDIsIHN0ZXA6IDEgfVxuICBdO1xuICAvLyBCdWlsZCBzbGlkZXIgY29udHJvbHMgd2l0aCBEMyBkYXRhIGpvaW5cbiAgY29uc3Qgc2xpZGVyQ29udCA9IGNvbnRyb2xzQ29udGFpbmVyLnNlbGVjdEFsbCgnZGl2JykuZGF0YShzbGlkZXJzKS5qb2luKCdkaXYnKVxuICAgIC5zdHlsZSgnZGlzcGxheScsJ2ZsZXgnKS5zdHlsZSgnYWxpZ24taXRlbXMnLCdjZW50ZXInKS5zdHlsZSgnZ2FwJywnMTBweCcpXG4gICAgLnN0eWxlKCdmbGV4JywnMScpLnN0eWxlKCdtaW4td2lkdGgnLCcwcHgnKTtcbiAgc2xpZGVyQ29udC5hcHBlbmQoJ2xhYmVsJykudGV4dChkID0+IGQubGFiZWwgKyAnOicpLnN0eWxlKCdmb250LXNpemUnLCcyMHB4Jyk7XG4gIHNsaWRlckNvbnQuYXBwZW5kKCdpbnB1dCcpXG4gICAgLmF0dHIoJ3R5cGUnLCdyYW5nZScpLmF0dHIoJ21pbicsIGQgPT4gZC5taW4pLmF0dHIoJ21heCcsIGQgPT4gZC5tYXgpLmF0dHIoJ3N0ZXAnLCBkID0+IGQuc3RlcClcbiAgICAucHJvcGVydHkoJ3ZhbHVlJywgZCA9PiBkLmdldCgpKVxuICAgIC5vbignaW5wdXQnLCBmdW5jdGlvbihldmVudCwgZCkge1xuICAgICAgY29uc3QgdmFsID0gK3RoaXMudmFsdWU7IGQuc2V0KHZhbCk7XG4gICAgICBkMy5zZWxlY3QodGhpcy5wYXJlbnROb2RlKS5zZWxlY3QoJ3NwYW4nKS50ZXh0KGQubGFiZWwubWF0Y2goL1NpZ21hfFRhaWx3ZWlnaHQvKSA/IDIqKnZhbCA6IHZhbCk7XG4gICAgICB1cGRhdGVDaGFydChmaWx0ZXJlZERhdGEoKSk7XG4gICAgfSlcbiAgICAuc3R5bGUoJ3dpZHRoJywgJzEwMCUnKTtcbiAgc2xpZGVyQ29udC5hcHBlbmQoJ3NwYW4nKS50ZXh0KGQgPT4gKGQubGFiZWwubWF0Y2goL1NpZ21hfFRhaWx3ZWlnaHQvKSA/IGQuZ2V0KCkgOiBkLmdldCgpKSlcbiAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsJzIwcHgnKTtcbiAgXG4gIC8vIEFkZCBSZXNldCBidXR0b24gdG8gY2xlYXIgYWxsIHNsaWRlcnMgdG8gdGhlaXIgZGVmYXVsdHNcbiAgY29udHJvbHNDb250YWluZXIuYXBwZW5kKCdidXR0b24nKVxuICAgIC50ZXh0KCdSZXNldCcpXG4gICAgLnN0eWxlKCdmb250LXNpemUnLCAnMjBweCcpXG4gICAgLnN0eWxlKCdhbGlnbi1zZWxmJywgJ2NlbnRlcicpXG4gICAgLnN0eWxlKCdtYXJnaW4tbGVmdCcsICdhdXRvJylcbiAgICAub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgLy8gcmVzZXQgc3RhdGUgdmFyc1xuICAgICAgc2VsZWN0ZWRNdSA9IDAuNTtcbiAgICAgIHNlbGVjdGVkU2lnID0gMTtcbiAgICAgIHNlbGVjdGVkTm9uYyA9IDA7XG4gICAgICBzZWxlY3RlZFRhaWx3ID0gMTtcbiAgICAgIC8vIHVwZGF0ZSBpbnB1dCBwb3NpdGlvbnNcbiAgICAgIHNsaWRlckNvbnQuc2VsZWN0QWxsKCdpbnB1dCcpLnByb3BlcnR5KCd2YWx1ZScsIGQgPT4gZC5nZXQoKSk7XG4gICAgICAvLyB1cGRhdGUgZGlzcGxheWVkIGxhYmVsc1xuICAgICAgc2xpZGVyQ29udC5zZWxlY3RBbGwoJ3NwYW4nKVxuICAgICAgICAudGV4dChkID0+IGQubGFiZWwubWF0Y2goL1NpZ21hfFRhaWx3ZWlnaHQvKSA/ICgyKipkLmdldCgpKSA6IGQuZ2V0KCkpO1xuICAgICAgLy8gcmVkcmF3IGNoYXJ0XG4gICAgICB1cGRhdGVDaGFydChmaWx0ZXJlZERhdGEoKSk7XG4gICAgfSk7XG5cbiAgIC8vIEJ1aWxkIFNWR1xuICAgY29uc3Qgd2lkdGggPSAxMjAwO1xuICAgY29uc3QgaGVpZ2h0ID0gNDUwO1xuICAgY29uc3QgbWFyZ2luID0ge3RvcDogNDAsIHJpZ2h0OiAyMCwgYm90dG9tOiA0MCwgbGVmdDogNDB9O1xuICAgY29uc3QgaW5uZXJXaWR0aCA9IHdpZHRoIC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQ7XG4gICBjb25zdCBpbm5lckhlaWdodCA9IGhlaWdodCAtIG1hcmdpbi50b3AgLSBtYXJnaW4uYm90dG9tO1xuXG4gICAvLyBTZXQgY29udHJvbHMgY29udGFpbmVyIHdpZHRoIHRvIG1hdGNoIFNWRyBwbG90IHdpZHRoXG4gICBjb250cm9sc0NvbnRhaW5lci5zdHlsZShcIm1heC13aWR0aFwiLCBcIm5vbmVcIikuc3R5bGUoXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAvLyBEaXN0cmlidXRlIGVhY2ggY29udHJvbCBldmVubHkgYW5kIG1ha2Ugc2xpZGVycyBmdWxsLXdpZHRoXG4gICBjb250cm9sc0NvbnRhaW5lci5zZWxlY3RBbGwoXCJkaXZcIikuc3R5bGUoXCJmbGV4XCIsIFwiMVwiKS5zdHlsZShcIm1pbi13aWR0aFwiLCBcIjBweFwiKTtcbiAgIGNvbnRyb2xzQ29udGFpbmVyLnNlbGVjdEFsbChcImlucHV0XCIpLnN0eWxlKFwid2lkdGhcIiwgXCIxMDAlXCIpLnN0eWxlKFwiYm94LXNpemluZ1wiLCBcImJvcmRlci1ib3hcIik7XG4gICBcbiAgIC8vIENyZWF0ZSBzY2FsZXNcbiAgIGNvbnN0IHggPSBkMy5zY2FsZUxpbmVhcigpXG4gICAgIC5kb21haW4oWzAsIDFdKVxuICAgICAucmFuZ2UoWzAsIGlubmVyV2lkdGhdKTtcbiAgICAgXG4gICBjb25zdCB5ID0gZDMuc2NhbGVMaW5lYXIoKVxuICAgICAuZG9tYWluKFswLCAxXSlcbiAgICAgLnJhbmdlKFtpbm5lckhlaWdodCwgMF0pO1xuICAgXG4gICAvLyBDcmVhdGUgYSBjb2xvciBzY2FsZSBmb3IgdGhlIGJhc2lzIGZ1bmN0aW9uc1xuICAgY29uc3QgY29sb3IgPSBkMy5zY2FsZU9yZGluYWwoZDMuc2NoZW1lQ2F0ZWdvcnkxMCk7XG4gICBcbiAgIC8vIENyZWF0ZSBTVkdcbiAgIGNvbnN0IHN2ZyA9IGQzLmNyZWF0ZShcInN2Z1wiKVxuICAgICAuYXR0cihcIndpZHRoXCIsIFwiMTAwJVwiKVxuICAgICAuYXR0cihcImhlaWdodFwiLCBcImF1dG9cIilcbiAgICAgLmF0dHIoXCJ2aWV3Qm94XCIsIFswLCAwLCB3aWR0aCwgaGVpZ2h0XSlcbiAgICAgLmF0dHIoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwieE1pZFlNaWQgbWVldFwiKVxuICAgICAuYXR0cihcInN0eWxlXCIsIFwibWF4LXdpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87XCIpO1xuICAgXG4gICAvLyBDcmVhdGUgdGhlIGNoYXJ0IGdyb3VwXG4gICBjb25zdCBnID0gc3ZnLmFwcGVuZChcImdcIilcbiAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgYHRyYW5zbGF0ZSgke21hcmdpbi5sZWZ0fSwke21hcmdpbi50b3B9KWApO1xuICAgXG4gICAvLyBBZGQgYXhlc1xuICAgY29uc3QgeEF4aXMgPSBnLmFwcGVuZChcImdcIilcbiAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgYHRyYW5zbGF0ZSgwLCR7aW5uZXJIZWlnaHR9KWApXG4gICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ4LWF4aXNcIilcbiAgICAgLmNhbGwoZDMuYXhpc0JvdHRvbSh4KS50aWNrcygxMCkpXG4gICAgIC5zdHlsZShcImZvbnQtc2l6ZVwiLCBcIjIwcHhcIik7XG4gICBcbiAgIGNvbnN0IHlBeGlzID0gZy5hcHBlbmQoXCJnXCIpXG4gICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ5LWF4aXNcIilcbiAgICAgLmNhbGwoZDMuYXhpc0xlZnQoeSkudGlja3MoNSkpXG4gICAgIC5zdHlsZShcImZvbnQtc2l6ZVwiLCBcIjIwcHhcIik7XG4gICBcbiAgIC8vIEFkZCBhIGhvcml6b250YWwgbGluZSBhdCB5ID0gMFxuICAgZy5hcHBlbmQoXCJsaW5lXCIpXG4gICAgIC5hdHRyKFwieDFcIiwgMClcbiAgICAgLmF0dHIoXCJ4MlwiLCBpbm5lcldpZHRoKVxuICAgICAuYXR0cihcInkxXCIsIHkoMCkpXG4gICAgIC5hdHRyKFwieTJcIiwgeSgwKSlcbiAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCIjMDAwXCIpXG4gICAgIC5hdHRyKFwic3Ryb2tlLW9wYWNpdHlcIiwgMC4yKTtcbiAgIFxuICAgLy8gQWRkIGdyaWRsaW5lc1xuICAgZy5hcHBlbmQoXCJnXCIpXG4gICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmlkLWxpbmVzXCIpXG4gICAgIC5zZWxlY3RBbGwoXCJsaW5lXCIpXG4gICAgIC5kYXRhKHkudGlja3MoNSkpXG4gICAgIC5qb2luKFwibGluZVwiKVxuICAgICAuYXR0cihcIngxXCIsIDApXG4gICAgIC5hdHRyKFwieDJcIiwgaW5uZXJXaWR0aClcbiAgICAgLmF0dHIoXCJ5MVwiLCBkID0+IHkoZCkpXG4gICAgIC5hdHRyKFwieTJcIiwgZCA9PiB5KGQpKVxuICAgICAuYXR0cihcInN0cm9rZVwiLCBcIiNjY2NcIilcbiAgICAgLmF0dHIoXCJzdHJva2Utb3BhY2l0eVwiLCAwLjUpO1xuICAgXG4gICAvLyBDcmVhdGUgYSBsaW5lIGdlbmVyYXRvclxuICAgY29uc3QgbGluZSA9IGQzLmxpbmUoKVxuICAgICAueChkID0+IHgoZC54KSlcbiAgICAgLnkoZCA9PiB5KGQueSkpXG4gICAgIC5jdXJ2ZShkMy5jdXJ2ZUJhc2lzKTtcbiAgIFxuICAgLy8gR3JvdXAgdG8gY29udGFpbiB0aGUgYmFzaXMgZnVuY3Rpb24gbGluZXNcbiAgIGNvbnN0IGxpbmVzR3JvdXAgPSBnLmFwcGVuZChcImdcIilcbiAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImJhc2lzLWZ1bmN0aW9uc1wiKTtcbiAgIFxuICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgYmFzaXMgZnVuY3Rpb25zIGZvciB0cmFuc2l0aW9uXG4gICBsZXQgY3VycmVudEJhc2lzRnVuY3Rpb25zID0gbmV3IE1hcCgpO1xuICAgXG4gICAvLyBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIGNoYXJ0IHdpdGggbmV3IGRhdGFcbiAgIGZ1bmN0aW9uIHVwZGF0ZUNoYXJ0KGRhdGEpIHtcbiAgICAgdXBkYXRlQ2hhcnRJbm5lcihnLCB4LCB5LCBsaW5lc0dyb3VwLCBjb2xvciwgbGluZSwgZGF0YSk7XG4gICB9XG4gICBcbiAgIC8vIFN0b3JlIHRoZSB1cGRhdGUgZnVuY3Rpb25cbiAgIHN2Zy5ub2RlKCkudXBkYXRlID0gdXBkYXRlQ2hhcnQ7XG4gICBcbiAgIC8vIEluaXRpYWwgcmVuZGVyXG4gICB1cGRhdGVDaGFydChmaWx0ZXJlZERhdGEoKSk7XG4gICBcbiAgIGNvbnRhaW5lci5ub2RlKCkuYXBwZW5kQ2hpbGQoc3ZnLm5vZGUoKSk7XG4gICByZXR1cm4gY29udGFpbmVyLm5vZGUoKTtcbn1cbiJ9XX0=
</script>
<script type="module">
if (window.location.protocol === "file:") { alert("The OJS runtime does not work with file:// URLs. Please use a web server to view this document."); }
window._ojs.paths.runtimeToDoc = "../../..";
window._ojs.paths.runtimeToRoot = "../../..";
window._ojs.paths.docToRoot = "";
window._ojs.selfContained = false;
window._ojs.runtime.interpretFromScriptTags();
</script>
<script>
// htmlwidgets need to know to resize themselves when slides are shown/hidden.
// Fire the "slideenter" event (handled by htmlwidgets.js) when the current
// slide changes (different for each slide format).
(function () {
// dispatch for htmlwidgets
function fireSlideEnter() {
const event = window.document.createEvent("Event");
event.initEvent("slideenter", true, true);
window.document.dispatchEvent(event);
}
function fireSlideChanged(previousSlide, currentSlide) {
fireSlideEnter();
// dispatch for shiny
if (window.jQuery) {
if (previousSlide) {
window.jQuery(previousSlide).trigger("hidden");
}
if (currentSlide) {
window.jQuery(currentSlide).trigger("shown");
}
}
}
// hookup for slidy
if (window.w3c_slidy) {
window.w3c_slidy.add_observer(function (slide_num) {
// slide_num starts at position 1
fireSlideChanged(null, w3c_slidy.slides[slide_num - 1]);
});
}
})();
</script>
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const tabsets = window.document.querySelectorAll(".panel-tabset-tabby")
tabsets.forEach(function(tabset) {
const tabby = new Tabby('#' + tabset.id);
});
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copied!");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copied!");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.closest('section.slide') || el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'light-border',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
config['offset'] = [0,0];
config['maxWidth'] = 700;
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</body></html>