Question: how do the adaptive learning-rate settings change WIS and
coverage? The paper’s tracker sets
eta = mult × 90th percentile of |outcome − forecast| over
the last lr_window observed rounds; the settings are the
multiplier (lr_mult), the window (lr_window),
and the summer policy (season_policy: carry offsets into
the next season, or reset them to zero).
This re-asks the original E01 (a pre-fix, count-scale sweep on the submitted ensemble with finalized truth, since deleted) on the current setup.
Setup:
windowed_seasonal replay (all 53 locations, the 55 hub
rounds; 27 in 2024-25, 28 in 2025-26). Horizons h0–h3.lr_mult {0.3, 0.1, 0.03, 0.01} ×
lr_window {8, 20, Inf} × season_policy {carry,
reset}, 24 runs, plus one count-scale run at mult 0.03, window 20,
carry.WIS reduction % = 100 × (base − calibrated) / base, so positive = calibrated WIS lower than base. L1 coverage bias: lower is better.
source(here::here("scripts/calibration/calibration_ws_replay.R"))
wi <- ws_inputs("flu")
MULTS <- c(0.3, 0.1, 0.03, 0.01)
WINDOWS <- c(8, 20, Inf)
POLICIES <- c("carry", "reset")
# The sqrt single-term tracker, cold; E02 builds its configs the same way so runs are shared.
sqrt_cfg <- function(mult = 0.03, window = 20, policy = "carry") {
list(
ref = "paper", transform = "sqrt", lr_args = list(mult = mult, floor = 1e-3),
burn_in_seasons = character(0), slow_init = NULL, lr_window = window, season_policy = policy
)
}
run <- function(cfg) {
do.call(cal_run_cached, c(list(wi$fc, wi$truth), cfg, list(learn = "exact", vintages = wi$vintages, workers = params$workers)))
}
grid <- tidyr::expand_grid(mult = MULTS, window = WINDOWS, policy = POLICIES)
sweep <- purrr::pmap(grid, \(mult, window, policy) run(sqrt_cfg(mult, window, policy)))
count_ref <- run(list(ref = "paper", burn_in_seasons = character(0), slow_init = NULL))
GEOS <- c(states = "states only (US excluded)")
SEASONS <- c(LIVE, "both")
score <- function(cal) {
fc <- cal$forecasts %>% mutate(season = season_of(reference_date))
purrr::imap(WS_GEOS[names(GEOS)], function(keep, g) ws_scores(fc %>% filter(keep(location))) %>% mutate(geos = g)) %>%
bind_rows() %>%
select(geos, season, horizon, which, wis, cal_err) %>%
tidyr::pivot_wider(names_from = which, values_from = c(wis, cal_err)) %>%
mutate(wis_pct = 100 * (wis_base - wis_cal) / wis_base)
}
label <- function(df) {
df %>% mutate(
geos = factor(geos, levels = names(GEOS), labels = GEOS),
season = factor(season, levels = SEASONS, labels = c(LIVE, "both seasons")),
h = factor(paste0("h", horizon), levels = paste0("h", 0:3))
)
}
sweep_m <- purrr::map2(sweep, seq_len(nrow(grid)), \(cal, i) score(cal) %>% mutate(grid[i, ])) %>%
bind_rows() %>%
label() %>%
mutate(window_f = factor(as.character(window), levels = as.character(WINDOWS)), policy = factor(policy, levels = POLICIES))
count_m <- score(count_ref) %>% label()
WINDOW_COLS <- c(`8` = "#E69F00", `20` = "#0072B2", `Inf` = "#009E73")
One line per window and season policy, tracing the multiplier from 0.01 (near the base, the open circle) to 0.3. Labels mark the multiplier on the window-20 carry line. The cross is the count-scale run at mult 0.03, window 20, carry. The y axis is clipped at −15%.
curve_plot <- function(g) {
d <- sweep_m %>% filter(geos == g) %>% arrange(mult)
base <- d %>% distinct(h, season, cal_err_base)
ggplot(d, aes(cal_err_cal, wis_pct, colour = window_f)) +
geom_hline(yintercept = 0, colour = "grey60", linewidth = 0.3) +
geom_path(aes(linetype = policy, group = interaction(window_f, policy)), linewidth = 0.7) +
geom_point(size = 1) +
geom_text(data = d %>% filter(window == 20, policy == "carry"), aes(label = mult),
size = 2.4, vjust = -0.8, show.legend = FALSE) +
geom_point(data = base, aes(cal_err_base, 0, shape = "base (uncalibrated)"), colour = "black", fill = "white", size = 2.2) +
geom_point(data = count_m %>% filter(geos == g), aes(cal_err_cal, wis_pct, shape = "count scale, mult 0.03"), colour = "black", size = 2.4) +
scale_shape_manual(values = c(`base (uncalibrated)` = 21, `count scale, mult 0.03` = 4), name = NULL) +
scale_colour_manual(values = WINDOW_COLS, name = "lr_window") +
scale_linetype_manual(values = c(carry = "solid", reset = "22"), name = "season policy") +
facet_grid(season ~ h) +
coord_cartesian(ylim = c(max(-15, min(d$wis_pct)), max(d$wis_pct) + 0.5)) +
labs(x = "L1 coverage bias (lower is better)", y = "WIS reduction % (positive = calibrated WIS lower than base)", title = g) +
theme(legend.position = "bottom")
}
curve_plot(GEOS[["states"]])
For each season and horizon, how far WIS reduction % moves when one setting changes and the other two stay fixed: the range over the four multipliers, over the three windows, and the carry-vs-reset gap, each averaged over the settings held fixed. States only. The policy gap is zero in 2024-25 by construction (no summer crossed yet).
st <- sweep_m %>% filter(geos == GEOS[["states"]])
spread <- bind_rows(
st %>% group_by(season, h, window, policy) %>% summarize(r = diff(range(wis_pct)), .groups = "drop") %>%
group_by(season, h) %>% summarize(v = mean(r), .groups = "drop") %>% mutate(setting = "multiplier"),
st %>% group_by(season, h, mult, policy) %>% summarize(r = diff(range(wis_pct)), .groups = "drop") %>%
group_by(season, h) %>% summarize(v = mean(r), .groups = "drop") %>% mutate(setting = "window"),
st %>% group_by(season, h, mult, window) %>% summarize(r = diff(range(wis_pct)), .groups = "drop") %>%
group_by(season, h) %>% summarize(v = mean(r), .groups = "drop") %>% mutate(setting = "season policy")
)
spread %>%
transmute(setting = factor(setting, levels = c("multiplier", "window", "season policy")), col = paste(season, h), v = round(v, 1)) %>%
tidyr::pivot_wider(names_from = col, values_from = v) %>%
arrange(setting) %>%
knitr::kable(caption = "Mean range of WIS reduction % (points; positive = calibrated WIS lower than base) when one setting varies, states only")
| setting | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both seasons h0 | both seasons h1 | both seasons h2 | both seasons h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| multiplier | 9.4 | 27.8 | 59.5 | 97.8 | 26.2 | 27.6 | 35.7 | 55.0 | 15.9 | 27.7 | 49.8 | 81.4 |
| window | 0.1 | 0.1 | 0.1 | 0.2 | 1.9 | 2.1 | 3.6 | 6.4 | 0.8 | 0.9 | 1.5 | 2.4 |
| season policy | 0.0 | 0.0 | 0.0 | 0.0 | 1.1 | 0.7 | 1.0 | 4.3 | 0.5 | 0.3 | 0.4 | 1.7 |
Top: WIS reduction % (positive = calibrated WIS lower than base), clipped at −30% (mult 0.3 goes far below). Bottom: L1 coverage bias (lower is better), each season’s base as a thin line. Carry only, states only; colour is the window.
long <- st %>%
filter(policy == "carry", season != "both seasons") %>%
transmute(h, season, mult, window_f, `WIS reduction % (positive = calibrated WIS lower than base)` = pmax(wis_pct, -30), `L1 coverage bias (lower is better)` = cal_err_cal) %>%
tidyr::pivot_longer(c(`WIS reduction % (positive = calibrated WIS lower than base)`, `L1 coverage bias (lower is better)`), names_to = "metric") %>%
mutate(metric = factor(metric, levels = c("WIS reduction % (positive = calibrated WIS lower than base)", "L1 coverage bias (lower is better)")))
base_lines <- st %>%
filter(season != "both seasons") %>%
distinct(h, season, value = cal_err_base) %>%
mutate(metric = factor("L1 coverage bias (lower is better)", levels = levels(long$metric)))
ggplot(long, aes(mult, value, colour = window_f, linetype = season)) +
geom_hline(data = base_lines, aes(yintercept = value, linetype = season), colour = "grey40", linewidth = 0.3) +
geom_line() +
geom_point(size = 1) +
scale_x_log10(breaks = MULTS) +
scale_colour_manual(values = WINDOW_COLS, name = "lr_window") +
scale_linetype_manual(values = c(`2024-2025` = "solid", `2025-2026` = "22"), name = NULL) +
facet_grid(metric ~ h, scales = "free_y", labeller = labeller(metric = label_wrap_gen(28))) +
labs(x = "lr_mult", y = NULL) +
theme(legend.position = "bottom")
# The plots show the multipliers around the elbow and the season policy at window 20, plus the count scale; the tables cover every config.
mv_cals <- c(
setNames(sweep, with(grid, sprintf("sqrt mult %s, window %s, %s", mult, as.character(window), policy))),
list(`count mult 0.03, window 20, carry` = count_ref)
)
mv <- cal_month_view(mv_cals, seasons = LIVE)
mv_plot_cfgs <- c(
"sqrt mult 0.1, window 20, carry", "sqrt mult 0.03, window 20, carry", "sqrt mult 0.01, window 20, carry",
"sqrt mult 0.03, window 20, reset", "count mult 0.03, window 20, carry"
)
Scores by calendar month of the reference date, one figure per season, states only (US excluded). Rows are the three metrics, columns the horizons:
100 × (WIS_base − WIS_cal) / WIS_base within the month, so
positive = calibrated WIS lower than base. Grey bars are the month’s
share of the season’s base WIS, so a large swing in a month with a small
bar costs little overall.100 × (bias_base − bias_cal) / bias_base, so positive =
calibrated coverage bias lower than base. The bias is computed within
the month: the mean over the 23 levels of |share of outcomes at or below
the quantile − level|. A season-pooled bias lets under-prediction on the
ramp cancel over-prediction after the peak; the monthly one does not.
When the base’s bias is already small, a small absolute change shows as
a large percentage; the month-average column of the coverage table below
gives the absolute values.A month holds one to five rounds of about 52 states, and outcomes in the same round move together, so a single month’s coverage bias is noisy and sits above zero even for a calibrated forecaster. That’s why the plot shows it relative to the base.
mv_plot_month <- mv$month
if (!is.null(get0("mv_plot_cfgs"))) {
mv_plot_month <- mv_plot_month %>% filter(config %in% mv_plot_cfgs) %>% mutate(config = droplevels(config))
}
for (s in sort(unique(mv_plot_month$season))) {
cat("\n\n", cal_h(2), " ", s, "\n\n", sep = "")
print(cal_month_plot(mv_plot_month, s, colours = get0("mv_cols"), linetype = get0("mv_linetype"), colour_by = get0("mv_colour_by") %||% "config"))
}
cat("\n\n", cal_h(2), " By horizon\n\n", sep = "")
cat("WIS reduction % (positive = calibrated WIS lower than base), states only; `both` pools the seasons.\n\n")
WIS reduction % (positive = calibrated WIS lower than base), states
only; both pools the seasons.
print(knitr::kable(cal_month_wis_table(mv)))
| config | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| sqrt mult 0.3, window 8, carry | -7.5 | -27.2 | -59.2 | -98.2 | -22.8 | -24.9 | -31.8 | -54.3 | -13.6 | -26.2 | -48.0 | -81.4 |
| sqrt mult 0.3, window 8, reset | -7.5 | -27.2 | -59.2 | -98.2 | -22.1 | -27.6 | -31.2 | -44.0 | -13.3 | -27.3 | -47.8 | -77.5 |
| sqrt mult 0.3, window 20, carry | -7.7 | -27.3 | -59.5 | -97.9 | -23.0 | -24.7 | -33.9 | -44.3 | -13.7 | -26.2 | -49.0 | -77.4 |
| sqrt mult 0.3, window 20, reset | -7.7 | -27.3 | -59.5 | -97.9 | -22.8 | -24.9 | -31.0 | -53.5 | -13.6 | -26.4 | -47.8 | -80.9 |
| sqrt mult 0.3, window Inf, carry | -7.7 | -27.3 | -59.5 | -97.9 | -27.5 | -30.9 | -41.4 | -54.3 | -15.5 | -28.8 | -52.1 | -81.2 |
| sqrt mult 0.3, window Inf, reset | -7.7 | -27.3 | -59.5 | -97.9 | -28.8 | -29.7 | -41.6 | -74.2 | -16.0 | -28.3 | -52.2 | -88.8 |
| sqrt mult 0.1, window 8, carry | +0.2 | -6.2 | -13.7 | -20.6 | -4.5 | -7.8 | -8.5 | -12.2 | -1.7 | -6.8 | -11.5 | -17.4 |
| sqrt mult 0.1, window 8, reset | +0.2 | -6.2 | -13.7 | -20.6 | -4.4 | -7.1 | -8.0 | -10.1 | -1.6 | -6.5 | -11.3 | -16.6 |
| sqrt mult 0.1, window 20, carry | +0.2 | -6.2 | -13.6 | -20.4 | -3.5 | -7.6 | -8.0 | -10.8 | -1.3 | -6.8 | -11.3 | -16.7 |
| sqrt mult 0.1, window 20, reset | +0.2 | -6.2 | -13.6 | -20.4 | -4.2 | -7.2 | -9.4 | -11.5 | -1.6 | -6.6 | -11.9 | -17.0 |
| sqrt mult 0.1, window Inf, carry | +0.2 | -6.2 | -13.6 | -20.4 | -4.9 | -9.6 | -10.5 | -13.7 | -1.8 | -7.6 | -12.3 | -17.8 |
| sqrt mult 0.1, window Inf, reset | +0.2 | -6.2 | -13.6 | -20.4 | -5.7 | -9.6 | -12.5 | -16.0 | -2.1 | -7.6 | -13.2 | -18.7 |
| sqrt mult 0.03, window 8, carry | +1.8 | +0.0 | -1.4 | -2.6 | +1.7 | -0.7 | -0.7 | -0.3 | +1.8 | -0.3 | -1.1 | -1.7 |
| sqrt mult 0.03, window 8, reset | +1.8 | +0.0 | -1.4 | -2.6 | +0.3 | -1.1 | -1.2 | -1.4 | +1.2 | -0.4 | -1.3 | -2.1 |
| sqrt mult 0.03, window 20, carry | +1.8 | +0.0 | -1.4 | -2.6 | +2.2 | -0.6 | -0.7 | -0.2 | +1.9 | -0.2 | -1.1 | -1.7 |
| sqrt mult 0.03, window 20, reset | +1.8 | +0.0 | -1.4 | -2.6 | +0.7 | -0.9 | -1.3 | -1.6 | +1.4 | -0.3 | -1.3 | -2.2 |
| sqrt mult 0.03, window Inf, carry | +1.8 | +0.0 | -1.4 | -2.6 | +1.9 | -1.1 | -1.4 | -1.1 | +1.8 | -0.4 | -1.4 | -2.0 |
| sqrt mult 0.03, window Inf, reset | +1.8 | +0.0 | -1.4 | -2.6 | +0.5 | -1.3 | -1.9 | -2.3 | +1.3 | -0.5 | -1.6 | -2.5 |
| sqrt mult 0.01, window 8, carry | +1.1 | +0.5 | +0.1 | -0.2 | +2.5 | +0.9 | +1.0 | +1.5 | +1.6 | +0.7 | +0.5 | +0.5 |
| sqrt mult 0.01, window 8, reset | +1.1 | +0.5 | +0.1 | -0.2 | +0.5 | -0.0 | -0.1 | +0.0 | +0.9 | +0.3 | +0.1 | -0.1 |
| sqrt mult 0.01, window 20, carry | +1.0 | +0.5 | +0.1 | -0.2 | +2.7 | +1.0 | +1.1 | +1.6 | +1.7 | +0.7 | +0.5 | +0.5 |
| sqrt mult 0.01, window 20, reset | +1.0 | +0.5 | +0.1 | -0.2 | +0.8 | +0.1 | +0.1 | +0.3 | +0.9 | +0.3 | +0.1 | +0.0 |
| sqrt mult 0.01, window Inf, carry | +1.0 | +0.5 | +0.1 | -0.2 | +2.7 | +0.9 | +0.9 | +1.4 | +1.7 | +0.7 | +0.5 | +0.4 |
| sqrt mult 0.01, window Inf, reset | +1.0 | +0.5 | +0.1 | -0.2 | +0.8 | +0.1 | +0.1 | +0.2 | +1.0 | +0.3 | +0.1 | -0.0 |
| count mult 0.03, window 20, carry | +0.2 | -1.8 | -4.5 | -7.2 | -1.3 | -3.5 | -5.5 | -6.8 | -0.4 | -2.5 | -4.9 | -7.0 |
print(knitr::kable(cal_month_cov_table(mv), caption = CAL_MONTH_COV_CAPTION))
| config | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| base | 0.127 / 0.130 | 0.129 / 0.144 | 0.148 / 0.179 | 0.169 / 0.211 | 0.090 / 0.097 | 0.081 / 0.112 | 0.084 / 0.130 | 0.086 / 0.146 | 0.108 / 0.112 | 0.105 / 0.127 | 0.115 / 0.153 | 0.127 / 0.177 |
| sqrt mult 0.3, window 8, carry | 0.047 / 0.097 | 0.056 / 0.136 | 0.043 / 0.188 | 0.038 / 0.247 | 0.025 / 0.092 | 0.030 / 0.111 | 0.056 / 0.147 | 0.056 / 0.162 | 0.032 / 0.094 | 0.038 / 0.123 | 0.041 / 0.166 | 0.021 / 0.201 |
| sqrt mult 0.3, window 8, reset | 0.047 / 0.097 | 0.056 / 0.136 | 0.043 / 0.188 | 0.038 / 0.247 | 0.034 / 0.093 | 0.030 / 0.116 | 0.037 / 0.148 | 0.039 / 0.183 | 0.041 / 0.095 | 0.040 / 0.125 | 0.039 / 0.167 | 0.038 / 0.213 |
| sqrt mult 0.3, window 20, carry | 0.041 / 0.094 | 0.046 / 0.131 | 0.042 / 0.189 | 0.041 / 0.247 | 0.014 / 0.088 | 0.011 / 0.116 | 0.023 / 0.132 | 0.054 / 0.162 | 0.025 / 0.091 | 0.024 / 0.123 | 0.023 / 0.159 | 0.024 / 0.202 |
| sqrt mult 0.3, window 20, reset | 0.041 / 0.094 | 0.046 / 0.131 | 0.042 / 0.189 | 0.041 / 0.247 | 0.025 / 0.096 | 0.020 / 0.110 | 0.039 / 0.137 | 0.054 / 0.188 | 0.033 / 0.095 | 0.028 / 0.120 | 0.029 / 0.161 | 0.047 / 0.216 |
| sqrt mult 0.3, window Inf, carry | 0.042 / 0.095 | 0.047 / 0.131 | 0.042 / 0.189 | 0.041 / 0.247 | 0.012 / 0.088 | 0.013 / 0.103 | 0.020 / 0.129 | 0.040 / 0.164 | 0.024 / 0.091 | 0.020 / 0.116 | 0.023 / 0.157 | 0.020 / 0.203 |
| sqrt mult 0.3, window Inf, reset | 0.042 / 0.095 | 0.047 / 0.131 | 0.042 / 0.189 | 0.041 / 0.247 | 0.020 / 0.094 | 0.016 / 0.102 | 0.034 / 0.130 | 0.050 / 0.183 | 0.031 / 0.094 | 0.027 / 0.115 | 0.027 / 0.157 | 0.044 / 0.213 |
| sqrt mult 0.1, window 8, carry | 0.057 / 0.115 | 0.050 / 0.145 | 0.035 / 0.189 | 0.041 / 0.236 | 0.014 / 0.078 | 0.028 / 0.121 | 0.032 / 0.139 | 0.036 / 0.147 | 0.030 / 0.095 | 0.031 / 0.132 | 0.022 / 0.162 | 0.014 / 0.189 |
| sqrt mult 0.1, window 8, reset | 0.057 / 0.115 | 0.050 / 0.145 | 0.035 / 0.189 | 0.041 / 0.236 | 0.034 / 0.083 | 0.029 / 0.118 | 0.028 / 0.142 | 0.023 / 0.156 | 0.046 / 0.098 | 0.039 / 0.131 | 0.031 / 0.164 | 0.029 / 0.193 |
| sqrt mult 0.1, window 20, carry | 0.059 / 0.117 | 0.052 / 0.146 | 0.038 / 0.189 | 0.039 / 0.237 | 0.008 / 0.079 | 0.016 / 0.116 | 0.025 / 0.138 | 0.036 / 0.148 | 0.029 / 0.097 | 0.027 / 0.130 | 0.026 / 0.161 | 0.017 / 0.190 |
| sqrt mult 0.1, window 20, reset | 0.059 / 0.117 | 0.052 / 0.146 | 0.038 / 0.189 | 0.039 / 0.237 | 0.027 / 0.081 | 0.018 / 0.122 | 0.025 / 0.146 | 0.038 / 0.163 | 0.043 / 0.098 | 0.034 / 0.133 | 0.030 / 0.166 | 0.038 / 0.197 |
| sqrt mult 0.1, window Inf, carry | 0.059 / 0.117 | 0.052 / 0.146 | 0.038 / 0.189 | 0.039 / 0.237 | 0.007 / 0.082 | 0.013 / 0.121 | 0.020 / 0.145 | 0.029 / 0.156 | 0.028 / 0.099 | 0.024 / 0.133 | 0.021 / 0.165 | 0.015 / 0.194 |
| sqrt mult 0.1, window Inf, reset | 0.059 / 0.117 | 0.052 / 0.146 | 0.038 / 0.189 | 0.039 / 0.237 | 0.022 / 0.083 | 0.011 / 0.120 | 0.023 / 0.151 | 0.036 / 0.169 | 0.040 / 0.099 | 0.029 / 0.132 | 0.025 / 0.168 | 0.037 / 0.201 |
| sqrt mult 0.03, window 8, carry | 0.083 / 0.114 | 0.075 / 0.137 | 0.076 / 0.173 | 0.072 / 0.214 | 0.008 / 0.080 | 0.013 / 0.108 | 0.015 / 0.134 | 0.033 / 0.154 | 0.043 / 0.096 | 0.037 / 0.122 | 0.033 / 0.152 | 0.021 / 0.182 |
| sqrt mult 0.03, window 8, reset | 0.083 / 0.114 | 0.075 / 0.137 | 0.076 / 0.173 | 0.072 / 0.214 | 0.053 / 0.078 | 0.046 / 0.104 | 0.041 / 0.121 | 0.036 / 0.141 | 0.067 / 0.095 | 0.060 / 0.119 | 0.058 / 0.145 | 0.054 / 0.175 |
| sqrt mult 0.03, window 20, carry | 0.085 / 0.115 | 0.077 / 0.138 | 0.078 / 0.174 | 0.075 / 0.213 | 0.008 / 0.078 | 0.010 / 0.105 | 0.014 / 0.130 | 0.016 / 0.143 | 0.045 / 0.095 | 0.039 / 0.120 | 0.037 / 0.150 | 0.032 / 0.176 |
| sqrt mult 0.03, window 20, reset | 0.085 / 0.115 | 0.077 / 0.138 | 0.078 / 0.174 | 0.075 / 0.213 | 0.050 / 0.076 | 0.041 / 0.103 | 0.039 / 0.122 | 0.043 / 0.138 | 0.067 / 0.094 | 0.059 / 0.120 | 0.058 / 0.146 | 0.059 / 0.173 |
| sqrt mult 0.03, window Inf, carry | 0.085 / 0.115 | 0.077 / 0.138 | 0.078 / 0.174 | 0.075 / 0.213 | 0.007 / 0.080 | 0.010 / 0.108 | 0.016 / 0.135 | 0.023 / 0.149 | 0.043 / 0.096 | 0.036 / 0.122 | 0.033 / 0.153 | 0.027 / 0.179 |
| sqrt mult 0.03, window Inf, reset | 0.085 / 0.115 | 0.077 / 0.138 | 0.078 / 0.174 | 0.075 / 0.213 | 0.044 / 0.075 | 0.033 / 0.105 | 0.027 / 0.124 | 0.030 / 0.142 | 0.065 / 0.094 | 0.055 / 0.120 | 0.052 / 0.147 | 0.052 / 0.176 |
| sqrt mult 0.01, window 8, carry | 0.108 / 0.120 | 0.106 / 0.137 | 0.118 / 0.170 | 0.128 / 0.203 | 0.043 / 0.071 | 0.034 / 0.095 | 0.027 / 0.119 | 0.016 / 0.138 | 0.075 / 0.094 | 0.070 / 0.115 | 0.071 / 0.143 | 0.071 / 0.169 |
| sqrt mult 0.01, window 8, reset | 0.108 / 0.120 | 0.106 / 0.137 | 0.118 / 0.170 | 0.128 / 0.203 | 0.074 / 0.087 | 0.065 / 0.105 | 0.065 / 0.123 | 0.062 / 0.136 | 0.091 / 0.103 | 0.085 / 0.120 | 0.091 / 0.145 | 0.094 / 0.167 |
| sqrt mult 0.01, window 20, carry | 0.109 / 0.121 | 0.107 / 0.137 | 0.118 / 0.170 | 0.129 / 0.204 | 0.041 / 0.069 | 0.031 / 0.094 | 0.025 / 0.117 | 0.015 / 0.137 | 0.074 / 0.093 | 0.068 / 0.114 | 0.071 / 0.142 | 0.071 / 0.168 |
| sqrt mult 0.01, window 20, reset | 0.109 / 0.121 | 0.107 / 0.137 | 0.118 / 0.170 | 0.129 / 0.204 | 0.072 / 0.086 | 0.062 / 0.104 | 0.061 / 0.121 | 0.060 / 0.134 | 0.090 / 0.102 | 0.084 / 0.119 | 0.089 / 0.144 | 0.094 / 0.166 |
| sqrt mult 0.01, window Inf, carry | 0.109 / 0.121 | 0.107 / 0.137 | 0.118 / 0.170 | 0.129 / 0.204 | 0.038 / 0.070 | 0.027 / 0.096 | 0.019 / 0.121 | 0.011 / 0.140 | 0.073 / 0.094 | 0.066 / 0.115 | 0.068 / 0.144 | 0.068 / 0.170 |
| sqrt mult 0.01, window Inf, reset | 0.109 / 0.121 | 0.107 / 0.137 | 0.118 / 0.170 | 0.129 / 0.204 | 0.069 / 0.084 | 0.058 / 0.102 | 0.056 / 0.119 | 0.054 / 0.133 | 0.089 / 0.101 | 0.082 / 0.118 | 0.086 / 0.143 | 0.090 / 0.166 |
| count mult 0.03, window 20, carry | 0.067 / 0.122 | 0.056 / 0.155 | 0.042 / 0.200 | 0.057 / 0.257 | 0.008 / 0.088 | 0.018 / 0.124 | 0.032 / 0.135 | 0.040 / 0.143 | 0.036 / 0.104 | 0.034 / 0.138 | 0.033 / 0.165 | 0.031 / 0.196 |