tsfm-lens · cross-architecture comparison

TimesFM vs Chronos-2 vs Sundial vs Chronos-Bolt vs Timer vs Time-MoE vs Chronos-T5-Base

Wide panel — TimesFM 2.5, Chronos-2, Sundial, Chronos-Bolt, Timer, Time-MoE, Chronos-T5-Base  · run panel7_v2_dev · 2026-10-02 · 965 series · 5 families · context 480 · horizon 64 · window 32
Headline: fairness card + L0 + confirmed findings only · Standard: this report as written · Methods: every collapsed detail expanded

At a glance

Scorecard

This is a summary of conclusions drawn from the sections below — it introduces no evidence of its own. Every headline question this run has an artifact for appears as a measured value, the reference it is compared with, and the rule that produced the verdict; each row is computed from the same artifact as the section it summarizes, and that section is where the figures, the caveats and the full numbers are. The rule is printed so a reader can apply a different one to the same numbers; the verdict column is derived from it and is not written by hand anywhere.

Show the 54 scored rows
MeasureMeasuredCompared againstRuleVerdict
Lowest overall MASE (Chronos-2)1.856 MASE1.946 MASE
next-best model (TimesFM)
value < reference (lower is better)better
What does this mean?

MASE is scale-free (each series' error over its own naive-forecast error), so it is comparable across families; it rewards point accuracy only, not calibration.

model mase
Chronos-2 1.856
TimesFM 1.946
Sundial 2.131
Chronos-T5-Base 2.213
Chronos-Bolt 2.343
Timer 2.580
Time-MoE 4.835
Data families where one model separates significantly (1 of 5)1 family1 family
one family (the minimum for any family-level claim)
value ≥ 1meets
What does this mean?

Holm-corrected at α=0.05; a family absent from this count is one where the models were not distinguished, not one where they were equal. `power_state` is the third reading a non-detection needs: 'detected' vs. 'not detected, adequately powered' (a stated MDE this run could have caught) vs. 'not detected, underpowered or unsatisfiable' (no MDE is even computable at this n / n_boot).

family favored mase_ratio p_holm power_state
mixture Chronos-2 1.097 0.024 detected
parametric none 1.052 0.098 not detected, adequately powered (MDE=0.149)
block_bootstrap none 1.013 1.000 not detected, adequately powered (MDE=0.053)
random_parametric none 1.031 1.000 not detected, adequately powered (MDE=0.170)
sequential_par none 0.993 1.000 not detected, adequately powered (MDE=0.100)
Best model beats a trivial (no-skill) forecast (block_bootstrap)1.582 MASE2.304 MASE
better of naive-1 / seasonal-naive on this family (__naive__)
value < reference (lower is better)better
What does this mean?

`mase` ≈ 1.0 for naive-1 under the default `mean_abs_diff` scale is true by construction, not a discovery -- the informative comparison is against seasonal-naive, which is not 1.0 by construction. A family where the best model does NOT clear this is a finding about that family, not a bug.

model mase reference available
Chronos-2 1.582 NaN NaN
NaN 2.304 __naive__ True
NaN 2.391 __seasonal_naive__ True
Best model beats a trivial (no-skill) forecast (mixture)1.329 MASE1.727 MASE
better of naive-1 / seasonal-naive on this family (__seasonal_naive__)
value < reference (lower is better)better
What does this mean?

`mase` ≈ 1.0 for naive-1 under the default `mean_abs_diff` scale is true by construction, not a discovery -- the informative comparison is against seasonal-naive, which is not 1.0 by construction. A family where the best model does NOT clear this is a finding about that family, not a bug.

model mase reference available
Chronos-Bolt 1.329 NaN NaN
NaN 2.683 __naive__ True
NaN 1.727 __seasonal_naive__ True
Best model beats a trivial (no-skill) forecast (parametric)3.368 MASE4.533 MASE
better of naive-1 / seasonal-naive on this family (__seasonal_naive__)
value < reference (lower is better)better
What does this mean?

`mase` ≈ 1.0 for naive-1 under the default `mean_abs_diff` scale is true by construction, not a discovery -- the informative comparison is against seasonal-naive, which is not 1.0 by construction. A family where the best model does NOT clear this is a finding about that family, not a bug.

model mase reference available
Chronos-2 3.368 NaN NaN
NaN 4.745 __naive__ True
NaN 4.533 __seasonal_naive__ True
Best model beats a trivial (no-skill) forecast (random_parametric)1.854 MASE3.684 MASE
better of naive-1 / seasonal-naive on this family (__seasonal_naive__)
value < reference (lower is better)better
What does this mean?

`mase` ≈ 1.0 for naive-1 under the default `mean_abs_diff` scale is true by construction, not a discovery -- the informative comparison is against seasonal-naive, which is not 1.0 by construction. A family where the best model does NOT clear this is a finding about that family, not a bug.

model mase reference available
Chronos-2 1.854 NaN NaN
NaN 4.033 __naive__ True
NaN 3.684 __seasonal_naive__ True
Best model beats a trivial (no-skill) forecast (sequential_par)1.062 MASE1.261 MASE
better of naive-1 / seasonal-naive on this family (__naive__)
value < reference (lower is better)better
What does this mean?

`mase` ≈ 1.0 for naive-1 under the default `mean_abs_diff` scale is true by construction, not a discovery -- the informative comparison is against seasonal-naive, which is not 1.0 by construction. A family where the best model does NOT clear this is a finding about that family, not a bug.

model mase reference available
Chronos-Bolt 1.062 NaN NaN
NaN 1.261 __naive__ True
NaN 1.333 __seasonal_naive__ True
Peak cross-model CKA (weakest of 21 pairs: Sundial ↔ Time-MoE, model.layers.10 ↔ model.layers.8)0.741 CKA0.292 CKA
shuffled-series null at the same layer pair
value ≥ 4× referencedoes not clear
What does this mean?

Geometric evidence. A ratio over the shuffle null says the alignment is not an artifact of series statistics; it does not say either model uses the shared geometry. The 4× in the rule is a stated convention — the CIs are given so a stricter or looser rule can be applied to the same numbers.

quantity layers value shuffled_null ci_lo ci_hi
TimesFM ↔ Chronos-2 stacked_xf.4 ↔ encoder.block.7 0.426 0.038 0.416 0.441
TimesFM ↔ Sundial stacked_xf.4 ↔ model.layers.2 0.412 0.051 0.400 0.428
TimesFM ↔ Chronos-Bolt stacked_xf.4 ↔ encoder.block.2 0.384 0.011 0.373 0.400
TimesFM ↔ Timer stacked_xf.4 ↔ model.layers.2 0.353 0.036 0.346 0.368
TimesFM ↔ Time-MoE stacked_xf.4 ↔ model.layers.9 0.365 0.048 0.355 0.382
TimesFM ↔ Chronos-T5-Base stacked_xf.4 ↔ encoder.block.10 0.342 0.026 0.333 0.357
Chronos-2 ↔ Sundial encoder.block.0 ↔ model.layers.0 0.912 0.002 0.906 0.918
Chronos-2 ↔ Chronos-Bolt encoder.block.0 ↔ encoder.block.0 0.907 0.001 0.899 0.914
Chronos-2 ↔ Timer encoder.block.7 ↔ model.layers.2 0.487 0.075 0.475 0.503
Chronos-2 ↔ Time-MoE encoder.block.7 ↔ model.layers.10 0.601 0.064 0.588 0.615
Chronos-2 ↔ Chronos-T5-Base encoder.block.6 ↔ encoder.block.10 0.620 0.076 0.609 0.636
Sundial ↔ Chronos-Bolt model.layers.0 ↔ encoder.block.0 0.927 0.001 0.922 0.931
Sundial ↔ Timer model.layers.11 ↔ model.layers.2 0.526 0.025 0.513 0.544
Sundial ↔ Time-MoE model.layers.10 ↔ model.layers.8 0.741 0.292 0.735 0.750
Sundial ↔ Chronos-T5-Base model.layers.11 ↔ encoder.block.10 0.535 0.018 0.508 0.562
Chronos-Bolt ↔ Timer encoder.block.2 ↔ model.layers.1 0.428 0.010 0.408 0.449
Chronos-Bolt ↔ Time-MoE encoder.block.4 ↔ model.layers.10 0.474 0.053 0.462 0.488
Chronos-Bolt ↔ Chronos-T5-Base encoder.block.4 ↔ encoder.block.10 0.555 0.090 0.543 0.571
Timer ↔ Time-MoE model.layers.2 ↔ model.layers.10 0.596 0.063 0.585 0.613
Timer ↔ Chronos-T5-Base model.layers.2 ↔ encoder.block.10 0.395 0.052 0.376 0.417
Time-MoE ↔ Chronos-T5-Base model.layers.10 ↔ encoder.block.10 0.527 0.044 0.510 0.548
Best stitching gain over the input-feature baseline (Sundial → Chronos-2)0.901 ΔR²0 ΔR²
zero gain (the input-feature baseline itself)
95% CI lower bound > 0excludes
What does this mean?

The plotted value is the CI's lower bound, because the rule is about the CI and not the point estimate. Raw R² is deliberately not the headline: both models saw the same series, so only the gain above a probe built from the raw input is evidence of shared *learned* structure.

direction src_layer dst_layer best_r2 gain_over_input_baseline ci_lo ci_hi
TimesFM → Chronos-2 stacked_xf.2 encoder.block.0 0.749 0.709 0.687 0.728
Chronos-2 → TimesFM encoder.block.1 stacked_xf.0 0.631 0.609 0.592 0.629
TimesFM → Sundial stacked_xf.4 model.layers.4 0.732 0.687 0.673 0.700
Sundial → TimesFM model.layers.10 stacked_xf.18 0.636 0.610 0.580 0.640
TimesFM → Chronos-Bolt stacked_xf.2 encoder.block.0 0.726 0.651 0.627 0.675
Chronos-Bolt → TimesFM encoder.block.2 stacked_xf.0 0.598 0.575 0.556 0.597
TimesFM → Timer stacked_xf.4 model.layers.3 0.410 0.361 0.344 0.379
Timer → TimesFM model.layers.2 stacked_xf.8 0.321 0.295 0.282 0.310
TimesFM → Time-MoE stacked_xf.4 model.layers.4 0.752 0.581 0.563 0.599
Time-MoE → TimesFM model.layers.10 stacked_xf.18 0.577 0.550 0.519 0.578
TimesFM → Chronos-T5-Base stacked_xf.6 encoder.block.9 0.537 0.466 0.448 0.481
Chronos-T5-Base → TimesFM encoder.block.9 stacked_xf.18 0.546 0.519 0.484 0.549
Chronos-2 → Sundial encoder.block.0 model.layers.0 0.962 0.891 0.880 0.904
Sundial → Chronos-2 model.layers.1 encoder.block.0 0.952 0.911 0.901 0.920
Chronos-2 → Chronos-Bolt encoder.block.0 encoder.block.0 0.968 0.893 0.878 0.907
Chronos-Bolt → Chronos-2 encoder.block.1 encoder.block.0 0.948 0.907 0.898 0.916
Chronos-2 → Timer encoder.block.3 model.layers.2 0.430 0.377 0.362 0.393
Timer → Chronos-2 model.layers.2 encoder.block.11 0.495 0.414 0.377 0.454
Chronos-2 → Time-MoE encoder.block.0 model.layers.1 0.922 0.829 0.803 0.855
Time-MoE → Chronos-2 model.layers.5 encoder.block.0 0.601 0.557 0.530 0.587
Chronos-2 → Chronos-T5-Base encoder.block.4 encoder.block.9 0.680 0.609 0.592 0.622
Chronos-T5-Base → Chronos-2 encoder.block.8 encoder.block.0 0.656 0.580 0.556 0.611
Sundial → Chronos-Bolt model.layers.1 encoder.block.0 0.952 0.877 0.863 0.892
Chronos-Bolt → Sundial encoder.block.0 model.layers.0 0.931 0.860 0.848 0.874
Sundial → Timer model.layers.3 model.layers.2 0.431 0.377 0.360 0.396
Timer → Sundial model.layers.0 model.layers.0 0.527 0.396 0.373 0.426
Sundial → Time-MoE model.layers.2 model.layers.1 0.925 0.833 0.808 0.861
Time-MoE → Sundial model.layers.4 model.layers.4 0.719 0.673 0.662 0.686
Sundial → Chronos-T5-Base model.layers.4 encoder.block.8 0.612 0.538 0.520 0.557
Chronos-T5-Base → Sundial encoder.block.8 model.layers.0 0.665 0.586 0.560 0.614
Chronos-Bolt → Timer encoder.block.5 model.layers.2 0.421 0.367 0.354 0.383
Timer → Chronos-Bolt model.layers.1 encoder.block.0 0.487 0.412 0.388 0.443
Chronos-Bolt → Time-MoE encoder.block.2 model.layers.1 0.871 0.778 0.754 0.808
Time-MoE → Chronos-Bolt model.layers.2 encoder.block.0 0.721 0.646 0.620 0.678
Chronos-Bolt → Chronos-T5-Base encoder.block.4 encoder.block.9 0.640 0.569 0.550 0.587
Chronos-T5-Base → Chronos-Bolt encoder.block.8 encoder.block.0 0.744 0.669 0.644 0.699
Timer → Time-MoE model.layers.2 model.layers.1 0.756 0.501 0.465 0.536
Time-MoE → Timer model.layers.4 model.layers.2 0.402 0.349 0.333 0.366
Timer → Chronos-T5-Base model.layers.2 encoder.block.7 0.406 0.332 0.305 0.356
Chronos-T5-Base → Timer encoder.block.9 model.layers.6 0.360 0.314 0.298 0.333
Time-MoE → Chronos-T5-Base model.layers.3 encoder.block.7 0.619 0.545 0.524 0.567
Chronos-T5-Base → Time-MoE encoder.block.7 model.layers.1 0.830 0.737 0.708 0.765
Crystallization-depth spread (Time-MoE earliest, Timer latest)1 relative depth (block axis)0 relative depth (block axis)
earliest model's depth (Time-MoE)
|difference| ≥ 0.1 relative depthseparated
What does this mean?

Depth is a fraction of each model's own whole stack, including surfaces this run never captured, so a model whose coverage is partial legitimately tops out below 1.0 — check the coverage rows before reading a depth *location* across models.

model crystallization_depth final_mase depth_axis
Time-MoE 0.000 5.929 block
Chronos-Bolt 0.273 2.680 block
Chronos-T5-Base 0.391 2.973 block
Sundial 0.909 2.208 block
Timer 1.000 2.843 block
Best accuracy-per-compute (Timer): overall MASE × GFLOPs per series2.171 MASE·GFLOPs3.501 MASE·GFLOPs
next-best deal (Chronos-Bolt)
value < reference (lower is better)better
What does this mean?

FLOPs are measured with torch's FLOP counter on this run's own context and horizon, not derived from a parameter count — so this transfers to an architecture no adapter was written for. The product is a deliberate choice of how to trade the two, not the only one: the per-model parameters, GFLOPs and MASE are all in the table so a different trade can be computed from them. FLOPs are not latency.

model gflops_per_series parameters overall_mase mase_x_gflops
Timer 0.842 84142080.000 2.580 2.171
Chronos-Bolt 1.494 47718016.000 2.343 3.501
TimesFM 6.958 231289280.000 1.946 13.538
Sundial 6.977 128329680.000 2.131 14.868
Chronos-2 8.185 119477664.000 1.856 15.191
Time-MoE 51.851 113352192.000 4.835 250.725
Chronos-T5-Base 90.236 201374976.000 2.213 199.677
Least-observed model's captured FLOP fraction (Chronos-T5-Base)0.139 fraction of forecast FLOPs0.900 fraction of forecast FLOPs
0.90 (the threshold that qualifies depth claims)
value ≥ 0.90below
What does this mean?

Every claim in this report about *where inside a model* something happens is scoped to the fraction observed here. Accuracy and cost rows are unaffected — they are measured at the model's output.

model captured_flops_fraction
Chronos-T5-Base 0.139
Sundial 0.213
TimesFM 0.425
Time-MoE 0.500
Chronos-Bolt 0.791
Chronos-2 0.975
Timer 0.998
Cross-model corruption-fingerprint agreement (pooled rank ρ)0.472 Spearman ρ0 Spearman ρ
zero agreement (independent depth profiles)
95% CI lower bound > 0excludes
What does this mean?

Each model's per-layer sensitivity profile is placed on the shared relative-depth axis and rank-correlated, per corruption. The plotted value is the CI's lower bound. This is a comparison of two *within-model* causal fingerprints — it says the two models are affected in the same depth order, not that they share a mechanism. A corruption with a strongly negative ρ in the table is a real disagreement, not noise, and is what the pooled number averages away.

corruption rank_rho ci_lo ci_hi
dropout 0.494 0.466 0.512
detrend 0.422 0.317 0.495
frequency_shift 0.216 0.065 0.299
deseasonalize 0.111 -0.015 0.192
level_shift -0.188 -0.266 0.035
smooth -0.418 -0.527 -0.329
warp -0.651 -0.698 -0.621
noise -0.749 -0.759 -0.735
spike -0.790 -0.801 -0.781
Clustering agreement (weakest of 21 pairs: Timer and Chronos-T5-Base, AMI)0.241 AMI0 AMI
zero (chance agreement — AMI is chance-corrected)
95% CI lower bound > 0excludes
What does this mean?

Descriptive evidence. Clusters are matched by label overlap, so a high AMI says two models partition this corpus alike; it says nothing about *why*, and cluster labels are approximate by construction. Every pair's own AMI is in the table beneath.

quantity value ci_lo ci_hi clusters_a clusters_b
TimesFM vs Chronos-2 0.596 0.560 0.635 5 5
TimesFM vs Sundial 0.717 0.685 0.756 5 5
TimesFM vs Chronos-Bolt 0.523 0.494 0.564 5 5
TimesFM vs Timer 0.540 0.508 0.582 5 5
TimesFM vs Time-MoE 0.642 0.607 0.678 5 5
TimesFM vs Chronos-T5-Base 0.390 0.363 0.426 5 5
Chronos-2 vs Sundial 0.611 0.579 0.648 5 5
Chronos-2 vs Chronos-Bolt 0.480 0.453 0.523 5 5
Chronos-2 vs Timer 0.600 0.564 0.642 5 5
Chronos-2 vs Time-MoE 0.652 0.621 0.692 5 5
Chronos-2 vs Chronos-T5-Base 0.346 0.329 0.376 5 5
Sundial vs Chronos-Bolt 0.580 0.552 0.621 5 5
Sundial vs Timer 0.685 0.650 0.729 5 5
Sundial vs Time-MoE 0.641 0.614 0.680 5 5
Sundial vs Chronos-T5-Base 0.362 0.341 0.392 5 5
Chronos-Bolt vs Timer 0.499 0.469 0.543 5 5
Chronos-Bolt vs Time-MoE 0.396 0.368 0.439 5 5
Chronos-Bolt vs Chronos-T5-Base 0.312 0.292 0.344 5 5
Timer vs Time-MoE 0.521 0.485 0.565 5 5
Timer vs Chronos-T5-Base 0.263 0.241 0.296 5 5
Time-MoE vs Chronos-T5-Base 0.421 0.402 0.452 5 5
Most load-bearing attention head, TimesFM (stacked_xf.0 · head 11)0.103 ΔMASE0 ΔMASE
TimesFM's own repeat-run noise floor (exactly zero — deterministic forecasts)
value ≥ 2× referenceclears
What does this mean?

Mean-ablating one head and re-forecasting. A deterministic model's repeat-run floor is exactly zero, so any nonzero effect clears the rule by construction for that model — which is why the floor is printed rather than folded into a verdict. The 2× is a stated convention; the per-head floor multiples are in the table so a stricter bar can be applied.

layer head delta_mase floor_multiple
stacked_xf.0 11 0.103 None
stacked_xf.18 0 0.083 None
stacked_xf.19 5 0.062 None
stacked_xf.19 7 0.061 None
stacked_xf.19 12 0.049 None
Most load-bearing attention head, Chronos-2 (encoder.block.11 · head 7)0.051 ΔMASE0 ΔMASE
Chronos-2's own repeat-run noise floor (exactly zero — deterministic forecasts)
value ≥ 2× referenceclears
What does this mean?

Mean-ablating one head and re-forecasting. A deterministic model's repeat-run floor is exactly zero, so any nonzero effect clears the rule by construction for that model — which is why the floor is printed rather than folded into a verdict. The 2× is a stated convention; the per-head floor multiples are in the table so a stricter bar can be applied.

layer head delta_mase floor_multiple
encoder.block.11 7 0.051 None
encoder.block.11 5 0.048 None
encoder.block.11 1 0.037 None
encoder.block.10 2 0.037 None
encoder.block.11 4 0.031 None
Most load-bearing attention head, Sundial (model.layers.1 · head 3)0.041 ΔMASE0.141 ΔMASE
Sundial's own repeat-run noise floor
value ≥ 2× referencedoes not clear
What does this mean?

Mean-ablating one head and re-forecasting. A deterministic model's repeat-run floor is exactly zero, so any nonzero effect clears the rule by construction for that model — which is why the floor is printed rather than folded into a verdict. The 2× is a stated convention; the per-head floor multiples are in the table so a stricter bar can be applied.

layer head delta_mase floor_multiple
model.layers.1 3 0.041 0.290
model.layers.1 1 0.041 0.288
model.layers.3 11 0.008 0.058
model.layers.4 4 0.004 0.030
model.layers.6 1 0.001 0.009
Most load-bearing attention head, Chronos-Bolt (encoder.block.5 · head 7)0.121 ΔMASE0 ΔMASE
Chronos-Bolt's own repeat-run noise floor (exactly zero — deterministic forecasts)
value ≥ 2× referenceclears
What does this mean?

Mean-ablating one head and re-forecasting. A deterministic model's repeat-run floor is exactly zero, so any nonzero effect clears the rule by construction for that model — which is why the floor is printed rather than folded into a verdict. The 2× is a stated convention; the per-head floor multiples are in the table so a stricter bar can be applied.

layer head delta_mase floor_multiple
encoder.block.5 7 0.121 None
encoder.block.0 4 0.073 None
encoder.block.1 4 0.071 None
encoder.block.0 6 0.071 None
encoder.block.5 0 0.064 None
Most load-bearing attention head, Timer (model.layers.7 · head 3)0.044 ΔMASE0 ΔMASE
Timer's own repeat-run noise floor (exactly zero — deterministic forecasts)
value ≥ 2× referenceclears
What does this mean?

Mean-ablating one head and re-forecasting. A deterministic model's repeat-run floor is exactly zero, so any nonzero effect clears the rule by construction for that model — which is why the floor is printed rather than folded into a verdict. The 2× is a stated convention; the per-head floor multiples are in the table so a stricter bar can be applied.

layer head delta_mase floor_multiple
model.layers.7 3 0.044 None
model.layers.7 2 0.036 None
model.layers.1 4 0.034 None
model.layers.7 7 0.034 None
model.layers.5 3 0.022 None
Most load-bearing attention head, Time-MoE (model.layers.0 · head 5)0.519 ΔMASE0 ΔMASE
Time-MoE's own repeat-run noise floor (exactly zero — deterministic forecasts)
value ≥ 2× referenceclears
What does this mean?

Mean-ablating one head and re-forecasting. A deterministic model's repeat-run floor is exactly zero, so any nonzero effect clears the rule by construction for that model — which is why the floor is printed rather than folded into a verdict. The 2× is a stated convention; the per-head floor multiples are in the table so a stricter bar can be applied.

layer head delta_mase floor_multiple
model.layers.0 5 0.519 None
model.layers.0 10 0.224 None
model.layers.2 9 0.058 None
model.layers.0 8 0.042 None
model.layers.0 6 0.036 None
Most load-bearing attention head, Chronos-T5-Base (encoder.block.9 · head 1)0.239 ΔMASE0.238 ΔMASE
Chronos-T5-Base's own repeat-run noise floor
value ≥ 2× referencedoes not clear
What does this mean?

Mean-ablating one head and re-forecasting. A deterministic model's repeat-run floor is exactly zero, so any nonzero effect clears the rule by construction for that model — which is why the floor is printed rather than folded into a verdict. The 2× is a stated convention; the per-head floor multiples are in the table so a stricter bar can be applied.

layer head delta_mase floor_multiple
encoder.block.9 1 0.239 1.003
encoder.block.9 3 0.216 0.906
encoder.block.7 5 0.202 0.847
encoder.block.8 10 0.188 0.788
encoder.block.8 7 0.174 0.731
SAE feature alignment to ground truth, TimesFM (weakest of 10 layers: stacked_xf.6)0.146 mean |ρ| of matched features0.115 mean |ρ| of matched features
label-permutation null (p95 over shuffles)
value > referenceabove
What does this mean?

Each feature is matched to whichever ground-truth field it correlates with best, so the mean is inflated by that search even under pure noise — the permutation null is how large the same search gets on shuffled labels. The headline is this model's weakest layer against its own null, so a pass means every analyzed layer cleared it; the per-layer table is beneath. Read the dead feature rate beside it: alignment computed over a mostly-dead dictionary describes very few live features.

quantity value null_p95 null_mean n_permutations n_features_matched dead_feature_rate reconstruction_fidelity
stacked_xf.10 measured 0.145 0.112 0.111 3.000 920.000 0.255 0.880
stacked_xf.18 measured 0.193 0.120 0.117 3.000 340.000 0.101 0.918
stacked_xf.6 measured 0.146 0.115 0.113 3.000 1087.000 0.181 0.895
stacked_xf.16 measured 0.171 0.112 0.110 3.000 464.000 0.161 0.893
stacked_xf.2 measured 0.165 0.115 0.113 3.000 753.000 0.166 0.939
stacked_xf.14 measured 0.154 0.114 0.112 3.000 797.000 0.142 0.793
stacked_xf.0 measured 0.182 0.115 0.114 3.000 615.000 0.231 0.957
stacked_xf.4 measured 0.146 0.112 0.111 3.000 1112.000 0.206 0.917
stacked_xf.8 measured 0.150 0.113 0.113 3.000 886.000 0.191 0.881
stacked_xf.12 measured 0.150 0.112 0.112 3.000 943.000 0.179 0.894
SAE feature alignment to ground truth, Chronos-2 (weakest of 9 layers: encoder.block.10)0.166 mean |ρ| of matched features0.119 mean |ρ| of matched features
label-permutation null (p95 over shuffles)
value > referenceabove
What does this mean?

Each feature is matched to whichever ground-truth field it correlates with best, so the mean is inflated by that search even under pure noise — the permutation null is how large the same search gets on shuffled labels. The headline is this model's weakest layer against its own null, so a pass means every analyzed layer cleared it; the per-layer table is beneath. Read the dead feature rate beside it: alignment computed over a mostly-dead dictionary describes very few live features.

quantity value null_p95 null_mean n_permutations n_features_matched dead_feature_rate reconstruction_fidelity
encoder.block.8 measured 0.169 0.118 0.117 3.000 4405.000 0.004 0.920
encoder.block.10 measured 0.166 0.119 0.118 3.000 4718.000 0.005 0.929
encoder.block.11 measured 0.250 0.115 0.112 3.000 331.000 0.189 0.861
encoder.block.9 measured 0.169 0.120 0.120 3.000 4626.000 0.005 0.922
encoder.block.7 measured 0.167 0.119 0.119 3.000 3997.000 0.002 0.917
encoder.block.6 measured 0.172 0.117 0.116 3.000 2887.000 0.003 0.909
encoder.block.5 measured 0.175 0.117 0.116 3.000 2672.000 0.004 0.914
encoder.block.4 measured 0.176 0.115 0.115 3.000 2905.000 0.006 0.916
encoder.block.3 measured 0.182 0.119 0.116 3.000 2702.000 0.008 0.921
SAE feature alignment to ground truth, Sundial (weakest of 9 layers: model.layers.6)0.159 mean |ρ| of matched features0.121 mean |ρ| of matched features
label-permutation null (p95 over shuffles)
value > referenceabove
What does this mean?

Each feature is matched to whichever ground-truth field it correlates with best, so the mean is inflated by that search even under pure noise — the permutation null is how large the same search gets on shuffled labels. The headline is this model's weakest layer against its own null, so a pass means every analyzed layer cleared it; the per-layer table is beneath. Read the dead feature rate beside it: alignment computed over a mostly-dead dictionary describes very few live features.

quantity value null_p95 null_mean n_permutations n_features_matched dead_feature_rate reconstruction_fidelity
model.layers.3 measured 0.162 0.119 0.118 3.000 3453.000 0.009 0.964
model.layers.10 measured 0.166 0.119 0.118 3.000 4823.000 0.020 0.950
model.layers.11 measured 0.164 0.120 0.118 3.000 4117.000 0.041 0.962
model.layers.6 measured 0.159 0.121 0.119 3.000 4114.000 0.006 0.954
model.layers.9 measured 0.163 0.119 0.118 3.000 4798.000 0.011 0.946
model.layers.7 measured 0.159 0.120 0.118 3.000 4388.000 0.007 0.951
model.layers.5 measured 0.159 0.119 0.118 3.000 3639.000 0.006 0.958
model.layers.4 measured 0.158 0.118 0.117 3.000 3536.000 0.009 0.965
model.layers.8 measured 0.161 0.120 0.119 3.000 4614.000 0.010 0.948
SAE feature alignment to ground truth, Chronos-Bolt (weakest of 4 layers: encoder.block.5)0.180 mean |ρ| of matched features0.117 mean |ρ| of matched features
label-permutation null (p95 over shuffles)
value > referenceabove
What does this mean?

Each feature is matched to whichever ground-truth field it correlates with best, so the mean is inflated by that search even under pure noise — the permutation null is how large the same search gets on shuffled labels. The headline is this model's weakest layer against its own null, so a pass means every analyzed layer cleared it; the per-layer table is beneath. Read the dead feature rate beside it: alignment computed over a mostly-dead dictionary describes very few live features.

quantity value null_p95 null_mean n_permutations n_features_matched dead_feature_rate reconstruction_fidelity
encoder.block.4 measured 0.187 0.116 0.113 3.000 1353.000 0.008 0.960
encoder.block.5 measured 0.180 0.117 0.114 3.000 1312.000 0.009 0.960
encoder.block.3 measured 0.183 0.115 0.112 3.000 1324.000 0.035 0.954
encoder.block.2 measured 0.181 0.112 0.111 3.000 1216.000 0.034 0.944
SAE feature alignment to ground truth, Timer (weakest of 6 layers: model.layers.6)0.131 mean |ρ| of matched features0.120 mean |ρ| of matched features
label-permutation null (p95 over shuffles)
value > referenceabove
What does this mean?

Each feature is matched to whichever ground-truth field it correlates with best, so the mean is inflated by that search even under pure noise — the permutation null is how large the same search gets on shuffled labels. The headline is this model's weakest layer against its own null, so a pass means every analyzed layer cleared it; the per-layer table is beneath. Read the dead feature rate beside it: alignment computed over a mostly-dead dictionary describes very few live features.

quantity value null_p95 null_mean n_permutations n_features_matched dead_feature_rate reconstruction_fidelity
model.layers.4 measured 0.138 0.120 0.120 3.000 5402.000 0.020 0.994
model.layers.6 measured 0.131 0.120 0.118 3.000 5161.000 0.020 0.994
model.layers.3 measured 0.140 0.119 0.119 3.000 5062.000 0.029 0.993
model.layers.2 measured 0.134 0.121 0.119 3.000 4868.000 0.032 0.992
model.layers.7 measured 0.143 0.117 0.114 3.000 179.000 0.190 0.882
model.layers.1 measured 0.133 0.119 0.118 3.000 4817.000 0.022 0.995
SAE feature alignment to ground truth, Time-MoE (weakest of 9 layers: model.layers.10)0.174 mean |ρ| of matched features0.116 mean |ρ| of matched features
label-permutation null (p95 over shuffles)
value > referenceabove
What does this mean?

Each feature is matched to whichever ground-truth field it correlates with best, so the mean is inflated by that search even under pure noise — the permutation null is how large the same search gets on shuffled labels. The headline is this model's weakest layer against its own null, so a pass means every analyzed layer cleared it; the per-layer table is beneath. Read the dead feature rate beside it: alignment computed over a mostly-dead dictionary describes very few live features.

quantity value null_p95 null_mean n_permutations n_features_matched dead_feature_rate reconstruction_fidelity
model.layers.1 measured 0.336 0.121 0.116 3.000 62.000 0.979 0.530
model.layers.10 measured 0.174 0.116 0.113 3.000 2287.000 0.140 0.942
model.layers.11 measured 0.345 0.111 0.105 3.000 74.000 0.979 0.392
model.layers.2 measured 0.317 0.114 0.113 3.000 108.000 0.946 0.558
model.layers.3 measured 0.285 0.116 0.113 3.000 299.000 0.008 0.820
model.layers.4 measured 0.226 0.117 0.115 3.000 352.000 0.105 0.714
model.layers.0 measured 0.384 0.094 0.092 3.000 38.000 0.973 0.425
model.layers.5 measured 0.194 0.117 0.115 3.000 481.000 0.146 0.787
model.layers.6 measured 0.177 0.116 0.115 3.000 751.000 0.239 0.858
SAE feature alignment to ground truth, Chronos-T5-Base (weakest of 9 layers: encoder.block.8)0.274 mean |ρ| of matched features0.116 mean |ρ| of matched features
label-permutation null (p95 over shuffles)
value > referenceabove
What does this mean?

Each feature is matched to whichever ground-truth field it correlates with best, so the mean is inflated by that search even under pure noise — the permutation null is how large the same search gets on shuffled labels. The headline is this model's weakest layer against its own null, so a pass means every analyzed layer cleared it; the per-layer table is beneath. Read the dead feature rate beside it: alignment computed over a mostly-dead dictionary describes very few live features.

quantity value null_p95 null_mean n_permutations n_features_matched dead_feature_rate reconstruction_fidelity
encoder.block.4 measured 0.306 0.122 0.112 3.000 128.000 0.208 0.926
encoder.block.10 measured 0.286 0.120 0.114 3.000 260.000 0.128 0.859
encoder.block.11 measured 0.301 0.115 0.114 3.000 254.000 0.169 0.894
encoder.block.8 measured 0.274 0.116 0.112 3.000 231.000 0.240 0.880
encoder.block.3 measured 0.293 0.127 0.114 3.000 128.000 0.260 0.916
encoder.block.5 measured 0.329 0.124 0.113 3.000 132.000 0.198 0.916
encoder.block.9 measured 0.287 0.121 0.113 3.000 241.000 0.182 0.869
encoder.block.6 measured 0.346 0.123 0.111 3.000 131.000 0.219 0.910
encoder.block.7 measured 0.347 0.126 0.114 3.000 142.000 0.146 0.894
SAE causal concepts, Chronos-2/encoder.block.9: strongest concept's effect vs. its null1.208 multiples of null p951 multiples of null p95
random-direction ablation null (p95, same magnitude)
value > referenceabove
What does this mean?

Each concept's name and its dominant channel are DERIVED from the same ablation battery this row scores, never authored -- a concept whose profile is empty ('no measured effect') is excluded from the max here by construction, not by a separate filter. The per-concept detail is every concept this target's dictionary clustered into, not only the winner -- and a concept with no measured effect says so in words rather than leaving the cell blank, which pandas would otherwise render as `NaN` and a reader would read as a failed measurement rather than the useful negative result it is.

concept members dominant channel effect (x null p95)
moves horizon_shape_far 6 none cleared its own null no channel cleared
mild raises horizon_shape_near · unusually raises horizon_shape_far 3 horizon_shape_near 1.208
SAE causal concepts, Sundial/model.layers.5: strongest concept's effect vs. its null1.152 multiples of null p951 multiples of null p95
random-direction ablation null (p95, same magnitude)
value > referenceabove
What does this mean?

Each concept's name and its dominant channel are DERIVED from the same ablation battery this row scores, never authored -- a concept whose profile is empty ('no measured effect') is excluded from the max here by construction, not by a separate filter. The per-concept detail is every concept this target's dictionary clustered into, not only the winner -- and a concept with no measured effect says so in words rather than leaving the cell blank, which pandas would otherwise render as `NaN` and a reader would read as a failed measurement rather than the useful negative result it is.

concept members dominant channel effect (x null p95)
mild raises horizon_shape_near 3 horizon_shape_near 1.152
moves horizon_shape_far 3 none cleared its own null no channel cleared
SAE causal concepts, Sundial/model.layers.8: strongest concept's effect vs. its null1.140 multiples of null p951 multiples of null p95
random-direction ablation null (p95, same magnitude)
value > referenceabove
What does this mean?

Each concept's name and its dominant channel are DERIVED from the same ablation battery this row scores, never authored -- a concept whose profile is empty ('no measured effect') is excluded from the max here by construction, not by a separate filter. The per-concept detail is every concept this target's dictionary clustered into, not only the winner -- and a concept with no measured effect says so in words rather than leaving the cell blank, which pandas would otherwise render as `NaN` and a reader would read as a failed measurement rather than the useful negative result it is.

concept members dominant channel effect (x null p95)
moves seasonal 5 none cleared its own null no channel cleared
mild raises level 4 level 1.140
SAE causal concepts, Timer/model.layers.7: strongest concept's effect vs. its null1.133 multiples of null p951 multiples of null p95
random-direction ablation null (p95, same magnitude)
value > referenceabove
What does this mean?

Each concept's name and its dominant channel are DERIVED from the same ablation battery this row scores, never authored -- a concept whose profile is empty ('no measured effect') is excluded from the max here by construction, not by a separate filter. The per-concept detail is every concept this target's dictionary clustered into, not only the winner -- and a concept with no measured effect says so in words rather than leaving the cell blank, which pandas would otherwise render as `NaN` and a reader would read as a failed measurement rather than the useful negative result it is.

concept members dominant channel effect (x null p95)
moves horizon_shape_near 4 none cleared its own null no channel cleared
mild lowers dispersion 4 dispersion -1.133
Registered claims that replicated on held-out private data1 claim1 claim
registered claims that could be re-tested
value ≥ all re-testable claimsmeets
What does this mean?

128 claim(s) were registered before the private corpus was opened; 1 were re-testable. These are the only confirmatory results in this report — every other row is exploratory.

registered_claim confirmed private_mean_delta ci_lo ci_hi p_holm
Chronos-2 stronger on mixture True 0.209 0.119 0.313 0.000
Concepts shared (same effect and inputs, reproducible): TimesFM & Chronos-20 concepts4 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where TimesFM or Chronos-2 holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): TimesFM & Sundial0 concepts5 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where TimesFM or Sundial holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): TimesFM & Chronos-Bolt0 concepts5 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where TimesFM or Chronos-Bolt holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): TimesFM & Timer0 concepts2 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where TimesFM or Timer holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): TimesFM & Time-MoE0 concepts3 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where TimesFM or Time-MoE holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): TimesFM & Chronos-T5-Base0 concepts3 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where TimesFM or Chronos-T5-Base holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): Chronos-2 & Sundial1 concepts5 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Chronos-2 or Sundial holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

concept name
6 shifts the level
Concepts shared (same effect and inputs, reproducible): Chronos-2 & Chronos-Bolt2 concepts6 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Chronos-2 or Chronos-Bolt holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

concept name
4 mild raises dispersion
6 shifts the level
Concepts shared (same effect and inputs, reproducible): Chronos-2 & Timer1 concepts3 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Chronos-2 or Timer holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

concept name
4 mild raises dispersion
Concepts shared (same effect and inputs, reproducible): Chronos-2 & Time-MoE0 concepts5 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Chronos-2 or Time-MoE holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): Chronos-2 & Chronos-T5-Base0 concepts5 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Chronos-2 or Chronos-T5-Base holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): Sundial & Chronos-Bolt1 concepts7 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Sundial or Chronos-Bolt holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

concept name
6 shifts the level
Concepts shared (same effect and inputs, reproducible): Sundial & Timer0 concepts5 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Sundial or Timer holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): Sundial & Time-MoE0 concepts5 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Sundial or Time-MoE holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): Sundial & Chronos-T5-Base0 concepts5 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Sundial or Chronos-T5-Base holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): Chronos-Bolt & Timer1 concepts5 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Chronos-Bolt or Timer holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

concept name
4 mild raises dispersion
Concepts shared (same effect and inputs, reproducible): Chronos-Bolt & Time-MoE0 concepts6 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Chronos-Bolt or Time-MoE holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): Chronos-Bolt & Chronos-T5-Base0 concepts6 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Chronos-Bolt or Chronos-T5-Base holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): Timer & Time-MoE0 concepts3 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Timer or Time-MoE holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): Timer & Chronos-T5-Base0 concepts3 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Timer or Chronos-T5-Base holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): Time-MoE & Chronos-T5-Base1 concepts2 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Time-MoE or Chronos-T5-Base holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (4 of 11 run-wide concepts are excluded for that or the single-model reason).

concept name
10 mild raises mase · unusually raises dispersion

A verdict here is arithmetic on one run, not a conclusion about the models in general. Every row inherits the evidence class of the section that produced it — behavioral, geometric, translatable, causal-within-model or descriptive — which the “How to read this report” note below defines, and which decides how much weight a cleared rule can carry.

Q1: What is shared by all models?

A concept must clear the full evidence ladder -- same causal effect, same driving inputs, reproducible across an independent SAE seed -- to count as genuinely shared.

No concept has causal-effect members in all 7 models; the broadest span 3 of 7. Of the 5 concept(s) spanning 3 models: 2 shared: same effect, same inputs, reproducible; 1 partially shared; 1 shared effect, different inputs (convergent); 1 not reproducible across SAE seeds. Fully shared among 3: 'mild raises dispersion', 'shifts the level'. 4 multi-model concept(s) share the same causal EFFECT but fire on different series in each model (convergent) -- the models reach the same forecast adjustment from different inputs.

How sure: L2/L3 not jointly reached at full model count.

Jump to evidence ↓

Q2: What is unique to each model, and why?

Per model, its reproducible model-specific concepts: what each does, what it fires on, and whether the model's own behavioral advantage on those series is actually traced to that concept's own ablation effect.

Bottom line: of 2 model-specific concept(s), 0 sit on series where their model forecasts better than every other model, and 0 of those are traced to the concept by its own ablation. A concept unique to a model is not, by itself, evidence of an advantage.

TimesFM: 1 reproducible model-specific concept(s).
'mild raises mase · unusually lowers level' -- does: horizon_shape_far +1.04x null, horizon_shape_near +1.00x null; fires on: ar_order (ρ=0.47, n=555); why: no model is clearly better or worse than this one on these series; removing it does not move this model's MASE beyond the random-direction null (0.821x)

Chronos-2: 1 reproducible model-specific concept(s).
'shifts the level' -- does: horizon_shape_far +1.09x null, horizon_shape_near +1.03x null; fires on: provenance-driven: fires on sequential_par series; why: no model is clearly better or worse than this one on these series; removing it does not move this model's MASE beyond the random-direction null (-0.072x)

Sundial: 0 model-specific concepts (reproducible or not yet measured).

Chronos-Bolt: 0 model-specific concepts (reproducible or not yet measured).

Timer: 0 model-specific concepts (reproducible or not yet measured).

Time-MoE: 0 model-specific concepts (reproducible or not yet measured).

Chronos-T5-Base: 0 model-specific concepts (reproducible or not yet measured).

How sure: uniqueness is relative to the analyzed layers and dictionaries; reproducibility is L3; what a concept fires on is correlational; the advantage link combines a behavioral gap with a within-model ablation; nothing here is confirmed on private data (L6).

Jump to evidence ↓

Q3: How similar is each pair?

Each metric measures a different kind of similarity (behavior, geometry, linear translatability, clustering, SAE effect, SAE inputs), so they need not agree: read each on its own scale, never averaged into one score.

Closest pair, by metric: Chronos-2/Chronos-Bolt on 2 metric(s) (Atlas co-membership 3.589, Shared concepts 2); TimesFM/Chronos-2 on 1 metric(s) (Error agreement 0.948); Sundial/Chronos-Bolt on 1 metric(s) (Best-layer CKA 0.927); Chronos-2/Sundial on 1 metric(s) (Stitching gain 0.901); TimesFM/Sundial on 1 metric(s) (Cluster agreement (AMI) 0.717); Chronos-2/Chronos-T5-Base on 1 metric(s) (Input transfer 0.965).
Furthest pair, by metric: Timer/Chronos-T5-Base on 2 metric(s) (Stitching gain 0.323, Cluster agreement (AMI) 0.263); Chronos-2/Time-MoE on 1 metric(s) (Error agreement 0.596); TimesFM/Chronos-T5-Base on 1 metric(s) (Best-layer CKA 0.342); TimesFM/Timer on 1 metric(s) (Atlas co-membership 0.000); Sundial/Chronos-T5-Base on 1 metric(s) (Input transfer 0.770); TimesFM/Sundial on 1 metric(s) (Shared concepts 0).
Kendall's W across every measured metric: 0.254 (p=0.0095, 7 metric(s)); within representation metrics only: 0.527 (p=0.0205, 3 metric(s)). With only a handful of model pairs, Kendall's W has low power: a non-significant p does NOT mean the metrics agree, and a significant one should still be read alongside the per-metric rank table above, not instead of it.
Disagreements: Sundial and Chronos-T5-Base: rank 2 of 21 on Error agreement, rank 21 of 21 on Input transfer.

How sure: 1 large rank disagreement(s) found across metric families

Jump to evidence ↓

Pair-similarity rank table
PairError agreementBest-layer CKAStitching gainCluster agreement (AMI)Atlas co-membershipInput transferShared conceptsMedian rankRank range
TimesFM / Chronos-2115781364.57.014.0
TimesFM / Sundial41681121914.512.018.0
TimesFM / Chronos-Bolt1318111171614.513.011.0
TimesFM / Timer1720201017.51514.517.010.0
TimesFM / Time-MoE201913417.52014.517.516.0
TimesFM / Chronos-T5-Base521151717.5814.515.016.0
Chronos-2 / Sundial72168184.56.017.0
Chronos-2 / Chronos-Bolt1532141313.014.0
Chronos-2 / Timer19121771144.511.015.0
Chronos-2 / Time-MoE2166317.51214.512.018.0
Chronos-2 / Chronos-T5-Base65121917.5114.512.018.0
Sundial / Chronos-Bolt91394104.54.59.0
Sundial / Timer81119217.51714.514.517.0
Sundial / Time-MoE16445101414.510.012.0
Sundial / Chronos-T5-Base29141892114.514.019.0
Chronos-Bolt / Timer3141813674.57.015.0
Chronos-Bolt / Time-MoE14135165514.513.011.0
Chronos-Bolt / Chronos-T5-Base11810202914.510.018.0
Timer / Time-MoE107161217.5214.512.015.5
Timer / Chronos-T5-Base1217212117.51114.517.010.0
Time-MoE / Chronos-T5-Base18109153134.510.015.0

Kendall's W (all measured metrics): 0.254 (p=0.0095, 7 metric(s)). Within representation metrics only: 0.527 (p=0.0205, 3 metric(s)). With only a handful of model pairs, Kendall's W has low power: a non-significant p does NOT mean the metrics agree, and a significant one should still be read alongside the per-metric rank table above, not instead of it.

Overall behavioral metrics (L0)
model smape pinball mae_over_mad mase
Chronos-2 0.738 0.638 0.939 1.856
Chronos-Bolt 0.828 0.823 1.068 2.343
Chronos-T5-Base 0.800 0.849 1.054 2.213
Sundial 0.825 0.828 1.074 2.131
Time-MoE 1.329 2.657 2.671 4.835
Timer 0.983 1.354 1.271 2.580
TimesFM 0.753 0.666 0.988 1.946

New to this report? How to read this report states the evidence-class ladder every section below is ordered by.

Alignment & provenance

Impulse alignment check (diagonal-hit fraction) — near 1.0 means declared token time spans are trustworthy for this checkpoint/library version.

modelminmeanshallowest layergate
TimesFM1.001.00stacked_xf.0pass
Chronos-21.001.00encoder.block.0pass
Sundial0.130.52model.layers.0pass
Chronos-Bolt1.001.00encoder.block.0pass
Timer0.130.31model.layers.0pass
Time-MoE0.070.33model.layers.0pass
Chronos-T5-Base0.930.97encoder.block.0pass

tsfm_lens 0.1.0 · run time 24h 5m
models TimesFM (timesfm): google/timesfm-2.5-200m-pytorch; Chronos-2 (chronos2): amazon/chronos-2; Sundial (sundial): thuml/sundial-base-128m; Chronos-Bolt (chronos_bolt): amazon/chronos-bolt-small; Timer (generic_hf): thuml/timer-base-84m; Time-MoE (generic_hf): Maple728/TimeMoE-50M; Chronos-T5-Base (chronos): amazon/chronos-t5-base
packages torch 2.12.0, numpy 2.1.0, pandas 2.3.3, zarr 2.18.7, sklearn 1.7.2, transformers 4.57.6, timesfm 2.0.2, chronos 2.3.1

Non-finite activation values at write time — any nonzero count here means that layer's stored values include inf/NaN, which store.load would otherwise raise on the first time an analysis stage actually reads that layer.

model/layercounttotalfraction
Chronos-2/encoder.block.00111168000.0000%
Chronos-2/encoder.block.10111168000.0000%
Chronos-2/encoder.block.100111168000.0000%
Chronos-2/encoder.block.110111168000.0000%
Chronos-2/encoder.block.20111168000.0000%
Chronos-2/encoder.block.30111168000.0000%
Chronos-2/encoder.block.40111168000.0000%
Chronos-2/encoder.block.50111168000.0000%
Chronos-2/encoder.block.60111168000.0000%
Chronos-2/encoder.block.70111168000.0000%
Chronos-2/encoder.block.80111168000.0000%
Chronos-2/encoder.block.90111168000.0000%
Chronos-Bolt/encoder.block.0074112000.0000%
Chronos-Bolt/encoder.block.1074112000.0000%
Chronos-Bolt/encoder.block.2074112000.0000%
Chronos-Bolt/encoder.block.3074112000.0000%
Chronos-Bolt/encoder.block.4074112000.0000%
Chronos-Bolt/encoder.block.5074112000.0000%
Chronos-T5-Base/encoder.block.00111168000.0000%
Chronos-T5-Base/encoder.block.10111168000.0000%
Chronos-T5-Base/encoder.block.100111168000.0000%
Chronos-T5-Base/encoder.block.110111168000.0000%
Chronos-T5-Base/encoder.block.20111168000.0000%
Chronos-T5-Base/encoder.block.30111168000.0000%
Chronos-T5-Base/encoder.block.40111168000.0000%
Chronos-T5-Base/encoder.block.50111168000.0000%
Chronos-T5-Base/encoder.block.60111168000.0000%
Chronos-T5-Base/encoder.block.70111168000.0000%
Chronos-T5-Base/encoder.block.80111168000.0000%
Chronos-T5-Base/encoder.block.90111168000.0000%
Sundial/model.layers.00111168000.0000%
Sundial/model.layers.10111168000.0000%
Sundial/model.layers.100111168000.0000%
Sundial/model.layers.110111168000.0000%
Sundial/model.layers.20111168000.0000%
Sundial/model.layers.30111168000.0000%
Sundial/model.layers.40111168000.0000%
Sundial/model.layers.50111168000.0000%
Sundial/model.layers.60111168000.0000%
Sundial/model.layers.70111168000.0000%
Sundial/model.layers.80111168000.0000%
Sundial/model.layers.90111168000.0000%
Time-MoE/model.layers.0055584000.0000%
Time-MoE/model.layers.1055584000.0000%
Time-MoE/model.layers.10055584000.0000%
Time-MoE/model.layers.11055584000.0000%
Time-MoE/model.layers.2055584000.0000%
Time-MoE/model.layers.3055584000.0000%
Time-MoE/model.layers.4055584000.0000%
Time-MoE/model.layers.5055584000.0000%
Time-MoE/model.layers.6055584000.0000%
Time-MoE/model.layers.7055584000.0000%
Time-MoE/model.layers.8055584000.0000%
Time-MoE/model.layers.9055584000.0000%
Timer/model.layers.00148224000.0000%
Timer/model.layers.10148224000.0000%
Timer/model.layers.20148224000.0000%
Timer/model.layers.30148224000.0000%
Timer/model.layers.40148224000.0000%
Timer/model.layers.50148224000.0000%
Timer/model.layers.60148224000.0000%
Timer/model.layers.70148224000.0000%
TimesFM/stacked_xf.00185280000.0000%
TimesFM/stacked_xf.100185280000.0000%
TimesFM/stacked_xf.120185280000.0000%
TimesFM/stacked_xf.140185280000.0000%
TimesFM/stacked_xf.160185280000.0000%
TimesFM/stacked_xf.180185280000.0000%
TimesFM/stacked_xf.20185280000.0000%
TimesFM/stacked_xf.40185280000.0000%
TimesFM/stacked_xf.60185280000.0000%
TimesFM/stacked_xf.80185280000.0000%

Part 1 — The setup and whether to trust it

Whether this run's cross-model comparisons are fair between the configured models, and what the benchmark corpus actually contains.

↑ contents
Fairness

The fairness card

Every measured asymmetry between each pair of models in this run, before any result section.

What this stage tells you

Question
Given everything the other stages found, is this a fair comparison, and what's actually solid enough to act on?

How
Collects every stage's artifacts into one document, states upfront which measured asymmetries between each pair of models (parameters, compute, coverage, forecast determinism) apply before any result is read, and marks every section as rendered, skipped, or failed rather than silently omitting anything.

Good vs. bad result
Good: every enabled stage's section actually rendered (no 'failed' rows in the coverage panel) and the fairness card names its asymmetries with real measured values rather than 'not yet measured'. Bad: any section marked 'failed' (a bug, not an expected degrade) or a fairness row that couldn't be measured, which should downgrade how much weight a depth-located claim in that section deserves.

What it cannot tell you
The report presents what the pipeline measured; it adds no new evidence of its own. A 'rendered' status only means a section produced output without error, not that a result inside it is strong — that's for the evidence-class ladder shown once at the top (geometric / translatable / causal-within-model / descriptive / illustrative / behavioral) to decide, section by section.

This run compares 7 models, so there are 21 pairs. Fairness is a property of a pair, so each gets its own card below; the first is open and the rest are collapsed.

TimesFM vs Chronos-2
Axis TimesFM Chronos-2 Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 3 (decomposable) same tier no stage dropped
Parameters 231.3M 119.5M 1.94× all quality claims
FLOPs per forward (per series) 6.96 GFLOPs 8.18 GFLOPs 1.18× all quality claims
Captured FLOP fraction 42.5% 97.5% 55.0 pt gap all depth-located claims
Depth axis ('block') caps at 0.947 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) 32 steps 16 steps 2.0× — matched at 32 steps all cross-model attention-lag claims
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
TimesFM vs Sundial
Axis TimesFM Sundial Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 231.3M 128.3M 1.80× all quality claims
FLOPs per forward (per series) 6.96 GFLOPs 6.98 GFLOPs 1.00× all quality claims
Captured FLOP fraction 42.5% 21.3% 21.2 pt gap all depth-located claims
Depth axis ('block') caps at 0.947 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic ±0.141 MASE one deterministic, one sampled all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
TimesFM vs Chronos-Bolt
Axis TimesFM Chronos-Bolt Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 231.3M 47.7M 4.85× all quality claims
FLOPs per forward (per series) 6.96 GFLOPs 1.49 GFLOPs 4.66× all quality claims
Captured FLOP fraction 42.5% 79.1% 36.6 pt gap all depth-located claims
Depth axis ('block') caps at 0.947 caps at 0.455 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
TimesFM vs Timer
Axis TimesFM Timer Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 231.3M 84.1M 2.75× all quality claims
FLOPs per forward (per series) 6.96 GFLOPs 841.65 MFLOPs 8.27× all quality claims
Captured FLOP fraction 42.5% 99.8% 57.2 pt gap all depth-located claims
Depth axis ('block') caps at 0.947 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
TimesFM vs Time-MoE
Axis TimesFM Time-MoE Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 231.3M 113.4M 2.04× all quality claims
FLOPs per forward (per series) 6.96 GFLOPs 51.85 GFLOPs 7.45× all quality claims
Captured FLOP fraction 42.5% 50.0% 7.5 pt gap all depth-located claims
Depth axis ('block') caps at 0.947 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
TimesFM vs Chronos-T5-Base
Axis TimesFM Chronos-T5-Base Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 3 (decomposable) same tier no stage dropped
Parameters 231.3M 201.4M 1.15× all quality claims
FLOPs per forward (per series) 6.96 GFLOPs 90.24 GFLOPs 12.97× all quality claims
Captured FLOP fraction 42.5% 13.9% 28.6 pt gap all depth-located claims
Depth axis ('block') caps at 0.947 caps at 0.478 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic ±0.238 MASE one deterministic, one sampled all delta claims
Finest resolvable lag (token width) 32 steps 1 step 32.0× — matched at 32 steps all cross-model attention-lag claims
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Chronos-2 vs Sundial
Axis Chronos-2 Sundial Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 119.5M 128.3M 1.07× all quality claims
FLOPs per forward (per series) 8.18 GFLOPs 6.98 GFLOPs 1.17× all quality claims
Captured FLOP fraction 97.5% 21.3% 76.2 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic ±0.141 MASE one deterministic, one sampled all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Chronos-2 vs Chronos-Bolt
Axis Chronos-2 Chronos-Bolt Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 119.5M 47.7M 2.50× all quality claims
FLOPs per forward (per series) 8.18 GFLOPs 1.49 GFLOPs 5.48× all quality claims
Captured FLOP fraction 97.5% 79.1% 18.4 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 0.455 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Chronos-2 vs Timer
Axis Chronos-2 Timer Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 119.5M 84.1M 1.42× all quality claims
FLOPs per forward (per series) 8.18 GFLOPs 841.65 MFLOPs 9.72× all quality claims
Captured FLOP fraction 97.5% 99.8% 2.2 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Chronos-2 vs Time-MoE
Axis Chronos-2 Time-MoE Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 119.5M 113.4M 1.05× all quality claims
FLOPs per forward (per series) 8.18 GFLOPs 51.85 GFLOPs 6.33× all quality claims
Captured FLOP fraction 97.5% 50.0% 47.5 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Chronos-2 vs Chronos-T5-Base
Axis Chronos-2 Chronos-T5-Base Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 3 (decomposable) same tier no stage dropped
Parameters 119.5M 201.4M 1.69× all quality claims
FLOPs per forward (per series) 8.18 GFLOPs 90.24 GFLOPs 11.02× all quality claims
Captured FLOP fraction 97.5% 13.9% 83.6 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 0.478 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic ±0.238 MASE one deterministic, one sampled all delta claims
Finest resolvable lag (token width) 16 steps 1 step 16.0× — matched at 16 steps all cross-model attention-lag claims
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Sundial vs Chronos-Bolt
Axis Sundial Chronos-Bolt Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 2 (steerable) 2 (steerable) same tier no stage dropped
Parameters 128.3M 47.7M 2.69× all quality claims
FLOPs per forward (per series) 6.98 GFLOPs 1.49 GFLOPs 4.67× all quality claims
Captured FLOP fraction 21.3% 79.1% 57.8 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 0.455 94.7% overlap all cross-depth figures
Forecast determinism / noise floor ±0.141 MASE deterministic one deterministic, one sampled all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Sundial vs Timer
Axis Sundial Timer Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 2 (steerable) 2 (steerable) same tier no stage dropped
Parameters 128.3M 84.1M 1.53× all quality claims
FLOPs per forward (per series) 6.98 GFLOPs 841.65 MFLOPs 8.29× all quality claims
Captured FLOP fraction 21.3% 99.8% 78.4 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor ±0.141 MASE deterministic one deterministic, one sampled all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Sundial vs Time-MoE
Axis Sundial Time-MoE Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 2 (steerable) 2 (steerable) same tier no stage dropped
Parameters 128.3M 113.4M 1.13× all quality claims
FLOPs per forward (per series) 6.98 GFLOPs 51.85 GFLOPs 7.43× all quality claims
Captured FLOP fraction 21.3% 50.0% 28.7 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor ±0.141 MASE deterministic one deterministic, one sampled all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Sundial vs Chronos-T5-Base
Axis Sundial Chronos-T5-Base Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 2 (steerable) 3 (decomposable) run capped at tier 2 by the lower model no stage dropped
Parameters 128.3M 201.4M 1.57× all quality claims
FLOPs per forward (per series) 6.98 GFLOPs 90.24 GFLOPs 12.93× all quality claims
Captured FLOP fraction 21.3% 13.9% 7.4 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 0.478 94.7% overlap all cross-depth figures
Forecast determinism / noise floor ±0.141 MASE ±0.238 MASE both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Chronos-Bolt vs Timer
Axis Chronos-Bolt Timer Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 2 (steerable) 2 (steerable) same tier no stage dropped
Parameters 47.7M 84.1M 1.76× all quality claims
FLOPs per forward (per series) 1.49 GFLOPs 841.65 MFLOPs 1.78× all quality claims
Captured FLOP fraction 79.1% 99.8% 20.7 pt gap all depth-located claims
Depth axis ('block') caps at 0.455 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Chronos-Bolt vs Time-MoE
Axis Chronos-Bolt Time-MoE Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 2 (steerable) 2 (steerable) same tier no stage dropped
Parameters 47.7M 113.4M 2.38× all quality claims
FLOPs per forward (per series) 1.49 GFLOPs 51.85 GFLOPs 34.70× all quality claims
Captured FLOP fraction 79.1% 50.0% 29.1 pt gap all depth-located claims
Depth axis ('block') caps at 0.455 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Chronos-Bolt vs Chronos-T5-Base
Axis Chronos-Bolt Chronos-T5-Base Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 2 (steerable) 3 (decomposable) run capped at tier 2 by the lower model no stage dropped
Parameters 47.7M 201.4M 4.22× all quality claims
FLOPs per forward (per series) 1.49 GFLOPs 90.24 GFLOPs 60.38× all quality claims
Captured FLOP fraction 79.1% 13.9% 65.2 pt gap all depth-located claims
Depth axis ('block') caps at 0.455 caps at 0.478 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic ±0.238 MASE one deterministic, one sampled all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Timer vs Time-MoE
Axis Timer Time-MoE Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 2 (steerable) 2 (steerable) same tier no stage dropped
Parameters 84.1M 113.4M 1.35× all quality claims
FLOPs per forward (per series) 841.65 MFLOPs 51.85 GFLOPs 61.61× all quality claims
Captured FLOP fraction 99.8% 50.0% 49.8 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Timer vs Chronos-T5-Base
Axis Timer Chronos-T5-Base Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 2 (steerable) 3 (decomposable) run capped at tier 2 by the lower model no stage dropped
Parameters 84.1M 201.4M 2.39× all quality claims
FLOPs per forward (per series) 841.65 MFLOPs 90.24 GFLOPs 107.21× all quality claims
Captured FLOP fraction 99.8% 13.9% 85.9 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 0.478 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic ±0.238 MASE one deterministic, one sampled all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Time-MoE vs Chronos-T5-Base
Axis Time-MoE Chronos-T5-Base Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 2 (steerable) 3 (decomposable) run capped at tier 2 by the lower model no stage dropped
Parameters 113.4M 201.4M 1.78× all quality claims
FLOPs per forward (per series) 51.85 GFLOPs 90.24 GFLOPs 1.74× all quality claims
Captured FLOP fraction 50.0% 13.9% 36.1 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 0.478 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic ±0.238 MASE one deterministic, one sampled all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses

Every measured asymmetry between the models in this run, one card per pair, before any result section. This is the page to check first, and the strongest single argument that this repo's comparisons are honest rather than merely careful.

What does this mean?

How to read it
Every row is read from an already-measured artifact -- no value here is hand-written. A row reading 'not yet measured' means the stage or analysis named in Qualifies is either disabled in this config or not yet built anywhere in the repo; read any claim that row would qualify with the same caution states for it in prose.

Limitations
This card is only as complete as the F-items behind it. F3, F7 and F8 have no landed measurement anywhere in the repo yet, so their rows are a statement of absence, not a small number -- absence of a row here is never evidence of fairness.

Corpus

The corpus card

What the benchmark corpus actually is and whether it can be trusted, before any model result.

What this stage tells you

Question
Can the benchmark corpus itself be trusted -- is it free of copied reference series, free of near-duplicates, and diverse enough that a model can't do well here just by memorizing one shape?

How
Reads the sealed corpus's own manifest (when present) and, optionally, an existing `benchmark_validation` report, and renders both as a fixed trust ladder of named claims -- never recomputes a leakage or diversity check itself, and never imports `benchmark_validation`.

Good vs. bad result
Good: every trust-ladder row reads `measured` with a real reference and a stated verdict. Bad: a row reads `not_checked` -- the corpus was built with `--references none`, so every candidate passed the leakage gate trivially, which is NOT the same as a corpus that was checked and found clean -- or `not_recorded`, meaning no audit ever ran at all.

What it cannot tell you
Two rows are always unresolvable and are rendered that way rather than omitted: whether the private split's distribution genuinely matches the dev split's (no mechanism in this repo compares them), and whether any model being compared was trained on data shaped like this corpus (no audit anywhere can inspect a checkpoint's own training data). A `measured` row is evidence the corpus is sound by the checks that exist -- it is not proof no other check would find a problem.

Sealed corpus, visibility public, epoch 0, 965 sealed samples (965 usable after length filtering). Global digest 65e020884dfdb9df….

Series counts by tier and by generator, for THIS run's own corpus.

What does this mean?

How to read it
Each bar is a count of series sharing that label. `tier` distinguishes leakage-safe synthetic series from real-derived ones; `generator` names the construction mechanism.

Limitations
This renders only the corpus this run actually loaded (`data.path`), never a dev-vs-private side-by-side -- the private split is loaded independently, only by the `confirm` stage, and is not available here to compare against without loading a second corpus this stage was not given.

One representative context window (480 steps) per family, 5 of 5 families shown.

What does this mean?

How to read it
Each panel is one real series from this corpus, not an average or a synthetic composite -- picked per family (`np.random.default_rng` seeded on `run.seed`) rather than by a head slice, since this corpus is written grouped by generator and a plain prefix would silently select a family-skewed sample.

Limitations
Each panel has its own y-axis: series scales are not comparable across panels, and this is illustrative, not a diversity measurement (that is Figure 3 below, computed in feature space).

Diversity: not available (configured validation_report '../validation_large/validation_report.json' does not exist).

Feature-space map: a standalone interactive 3-D UMAP projection exists alongside this corpus’s validation report at ../validation_large/feature_space_3d.html.

This section deliberately does not re-plot or re-derive a UMAP embedding -- `validation_report.json` persists only aggregated quantiles and bucket histograms, never raw per-sequence coordinates, and item C1.2 forbids this package from importing `benchmark_validation` to regenerate one.

What does this mean?

How to read it
Open the linked standalone HTML file directly (`benchmark_validation`'s own `plot_embedding` output) for the interactive 3-D view, colored by generator.

Limitations
Three things this repo insists on stating every time UMAP is mentioned: diversity is measured in catch22 feature space, never on UMAP coordinates (Figure 3 above is the real measurement); UMAP distorts global distances and cluster sizes, so gaps in the 3-D plot are not quantitative; and this is a CORPUS feature-space embedding, a different object entirely from an activation-space embedding of a model's internals.

Distance-to-nearest-reference quantiles for series the gate accepted vs. rejected, against 82 real reference series from ['hf/Monash-University/monash_tsf/covid_deaths/train', 'hf/Monash-University/monash_tsf/saugeenday/train', 'hf/Monash-University/monash_tsf/tourism_quarterly/train', 'hf/Monash-University/monash_tsf/traffic_weekly/train', 'hf/Monash-University/monash_tsf/us_births/train', 'hf/Monash-University/monash_tsf/vehicle_trips/train']. 68 of 2000 candidates rejected (14 cross-split near-duplicate pairs).

What does this mean?

How to read it
A series below the gate threshold is rejected as too close to a real reference series. Only aggregated quantiles are persisted, not the raw per-candidate distance array, so this is a quantile comparison, not a full histogram.

Limitations
This gate measures INSTANCE-level leakage only (an exact copy of a reference series) -- it says nothing about DISTRIBUTIONAL leakage (a model having seen data *shaped like* this), which is carried by construction for every real-derived-tier sample and cannot be audited by this or any other check.

Corpus trust ladder

ClaimMeasuredCompared againstRuleVerdict
No series here is a copy of a real reference series (68 of 2000 candidates rejected)0.352 distance0.350 distance
gate threshold (dtw)
value > referenceabove
What does this mean?
accepted_distance_quantiles n_candidates n_rejected
{'min': 0.35173091829909253, 'p01': 0.3790535521358083, 'p05': 0.44749580415548, 'p50': 0.7072645456924898} 2000 68
No two series within a split are near-duplicates of each other7 pairs0 pairs
0 within-split near-duplicate pairs
value ≤ 0does not clear
What does this mean?
n_pairs_within_public n_pairs_within_private
4 3
The dev and private splits share no series14 pairs0 pairs
0 cross-split near-duplicate pairs
value ≤ 0does not clear
What does this mean?
n_pairs_across_splits
14
The private split looks like the dev splitnot measurednot measured
a declared equivalence margin
value > referenceinconclusive
What does this mean?

No mechanism in this repo currently compares the private split's distribution against the dev split's item B1's audit block is written identically to both splits by construction (same epoch, same verdict), so it cannot answer this question. Recorded as inconclusive rather than omitted.

A model cannot do well here by memorizing one shape (effective dimensionality)not measured2
benchmark_validation's default min_effective_dimensionality (gates.py) -- not read from this report's own config
value ≥ 2not_run
What does this mean?

configured validation_report '../validation_large/validation_report.json' does not exist

total_variance near_collision_fraction
None None
Series here vary in more than one way (0 distinct per-group dominant features of 0 groups)not measured2
at least 2 distinct dominant features across groups
value ≥ 2not_run
What does this mean?

configured validation_report '../validation_large/validation_report.json' does not exist

The models being compared were not trained on this datanot measurednot measured
a checkpoint's own training corpus
value > referencenot_verifiable
What does this mean?

Nothing in this repo can inspect a checkpoint's training corpus. the two-tier design audits INSTANCE-level leakage (rows 1-3 above: is any series here a copy of something we checked against) but DISTRIBUTIONAL leakage -- has a model's training data ever seen data shaped like this -- is carried by construction for every real_derived-tier sample and is not something any audit in this repo, or any other, can rule out. This row is intentionally unresolvable and is rendered rather than omitted so it cannot be mistaken for a question nobody thought to ask.

Seven claims about the corpus itself, each derived from `corpus/card.json` -- never a model result.

What does this mean?

How to read it
`not_recorded` means no audit ever ran; `not_checked` means the leakage gate ran with zero reference series (`--references none`) so every candidate passed trivially -- NOT the same as a corpus checked and found clean. `inconclusive` and `not_verifiable` rows are claims nothing in this repo can currently resolve, rendered rather than omitted.

Limitations
A `measured`/`clears` verdict is evidence the corpus is sound by the checks that exist here -- it is not proof no other check would find a problem, and rows 4 and 7 are permanently open questions this section states rather than answers.

Part 2 — How well each model forecasts

Behavioral accuracy per benchmark family, what each model costs to run, and what its input front-end does before any layer runs.

↑ contents
L0

Behavioral profile

Forecast quality per benchmark family: the hypotheses the deeper levels try to explain.

What this stage tells you

Question
Which model actually forecasts more accurately, and on what kinds of data?

How
Runs every model's native forecasting procedure on every benchmark series, scores each series' error against a naive same-scale baseline, and statistically compares the paired per-series differences within each data family, correcting for testing many families -- and, when more than two models are configured, many model pairs -- at once.

Good vs. bad result
Good: a family where the paired difference's confidence interval clearly excludes zero after correction — a real, replicable accuracy edge on that kind of data. Bad: every family's interval spans zero (no reliable difference survives correction), or a gap that looks real in the bar chart but isn't backed by a significant test.

What it cannot tell you
This is purely behavioral: it can tell you which model wins and where, but nothing about why, or what mechanism inside either model produces the gap — that's what every stage after this one exists to investigate. It also measures point-forecast accuracy only; a model can score well here and still have badly miscalibrated uncertainty (a separate calibration diagnostic covers that, but it is not this headline number). And it is the ONLY stage that compares more than two models: everything after it compares the designated pair only, so with three models the extra pairs are unexamined there rather than weakly evidenced.

Per-family forecast error (MASE, mean absolute error scaled by each series' own naive one-step error) for every configured model. This is the purely behavioral baseline everything else in the report tries to explain mechanistically.

What does this mean?

How to read it
Lower bars are better. Bars near 1.0 mean the model is about as good as a naive one-step-repeat forecast on that family; well below 1.0 is genuine skill. Compare bar heights within a family across models, not across families (family difficulty varies a lot).

Limitations
MASE rewards point-forecast accuracy only, not calibration — a model can have great MASE and terrible quantile coverage. With more than two models configured, every model appears here, but the paired significance test below only ever compares the first two (the deep-dive pair every other section analyzes).

Repeat-run noise floor

model repeats n_series deterministic mean |ΔMASE| p95 |ΔMASE| max |ΔMASE|
TimesFM 3 16 True 0.000 0.000 0.000
Chronos-2 3 16 True 0.000 0.000 0.000
Sundial 3 16 False 0.141 0.489 1.117
Chronos-Bolt 3 16 True 0.000 0.000 0.000
Timer 3 16 True 0.000 0.000 0.000
Time-MoE 3 16 True 0.000 0.000 0.000
Chronos-T5-Base 3 16 False 0.238 0.961 3.018

Each model forecasts the same small series subset (16 series) 3 times; this is how much MASE varies between calls that should, absent sampling, be identical. Every ΔMASE elsewhere in this report (head/MLP ablation, SAE forecast-preservation, L3 restoration) is otherwise implicitly compared against zero.

What does this mean?

How to read it
`deterministic: true` with a floor of exactly 0 is expected and correct for a model with no sampling in its forecast path -- a free wiring sanity check (here: Chronos-2, Chronos-Bolt, Time-MoE, Timer and TimesFM); Chronos-T5-Base and Sundial sample and so do not. A model that samples its forecast will show a nonzero floor; a ΔMASE smaller than that floor is not distinguishable from noise.

Limitations
Measured on a small subset for speed, so the floor estimate itself has some uncertainty -- read it as an order-of-magnitude reference, not a precise bound.

168 of 6755 series excluded from every MASE mean/ratio/test above and below (scale='mean_abs_diff', min_scale_frac=0.05) -- their MASE denominator was too small relative to the target's own level to trust. smape/pinball/mae_over_mad below still include them. Per-family/per-archetype breakdown is in the "excluded" column of each table.

Overall metrics

model smape pinball mae_over_mad mase
Chronos-2 0.738 0.638 0.939 1.856
Chronos-Bolt 0.828 0.823 1.068 2.343
Chronos-T5-Base 0.800 0.849 1.054 2.213
Sundial 0.825 0.828 1.074 2.131
Time-MoE 1.329 2.657 2.671 4.835
Timer 0.983 1.354 1.271 2.580
TimesFM 0.753 0.666 0.988 1.946

Per-family metrics

model family mase mae_over_mad smape pinball mase_n_excluded seasonal_naive_available seasonal_naive_n_excluded
Chronos-2 block_bootstrap 1.582 1.108 1.257 0.560 0 NaN NaN
Chronos-2 mixture 1.376 0.910 0.665 0.521 9 NaN NaN
Chronos-2 parametric 3.368 0.998 0.744 1.072 3 NaN NaN
Chronos-2 random_parametric 1.854 0.880 0.680 0.632 12 NaN NaN
Chronos-2 sequential_par 1.116 1.209 0.924 0.349 0 NaN NaN
Chronos-Bolt block_bootstrap 1.678 1.206 1.261 0.603 0 NaN NaN
Chronos-Bolt mixture 1.329 0.886 0.650 0.520 9 NaN NaN
Chronos-Bolt parametric 3.495 1.036 0.759 1.160 3 NaN NaN
Chronos-Bolt random_parametric 2.947 1.171 0.890 1.020 12 NaN NaN
Chronos-Bolt sequential_par 1.062 1.147 0.903 0.335 0 NaN NaN
Chronos-T5-Base block_bootstrap 1.844 1.205 1.170 0.713 0 NaN NaN
Chronos-T5-Base mixture 1.443 0.934 0.667 0.594 9 NaN NaN
Chronos-T5-Base parametric 3.591 1.070 0.779 1.234 3 NaN NaN
Chronos-T5-Base random_parametric 2.509 1.089 0.794 0.980 12 NaN NaN
Chronos-T5-Base sequential_par 1.104 1.188 1.170 0.404 0 NaN NaN
Sundial block_bootstrap 1.685 1.474 1.164 0.666 0 NaN NaN
Sundial mixture 1.567 1.015 0.829 0.660 9 NaN NaN
Sundial parametric 3.651 1.098 0.800 1.345 3 NaN NaN
Sundial random_parametric 2.247 1.025 0.773 0.858 12 NaN NaN
Sundial sequential_par 1.112 1.200 0.839 0.424 0 NaN NaN
Time-MoE block_bootstrap 2.155 2.957 1.273 1.078 0 NaN NaN
Time-MoE mixture 3.704 2.586 1.282 2.162 9 NaN NaN
Time-MoE parametric 7.593 2.344 1.378 3.948 3 NaN NaN
Time-MoE random_parametric 5.649 2.943 1.410 3.101 12 NaN NaN
Time-MoE sequential_par 1.221 1.314 0.865 0.611 0 NaN NaN
Timer block_bootstrap 1.793 1.973 1.162 0.897 0 NaN NaN
Timer mixture 1.463 1.035 0.966 0.794 9 NaN NaN
Timer parametric 3.942 1.194 0.853 2.012 3 NaN NaN
Timer random_parametric 3.230 1.345 1.025 1.703 12 NaN NaN
Timer sequential_par 1.131 1.230 0.819 0.565 0 NaN NaN
TimesFM block_bootstrap 1.602 1.175 1.250 0.568 0 NaN NaN
TimesFM mixture 1.509 1.014 0.691 0.569 9 NaN NaN
TimesFM parametric 3.542 1.050 0.770 1.110 3 NaN NaN
TimesFM random_parametric 1.912 0.896 0.696 0.651 12 NaN NaN
TimesFM sequential_par 1.109 1.191 0.863 0.347 0 NaN NaN
__naive__ block_bootstrap 2.304 1.907 0.937 1.152 0 True 0.000
__naive__ mixture 2.683 1.585 1.105 1.368 9 True 0.000
__naive__ parametric 4.745 1.418 0.875 2.377 3 True 0.000
__naive__ random_parametric 4.033 1.496 0.995 2.116 12 True 0.000
__naive__ sequential_par 1.261 1.369 0.895 0.631 0 True 0.000
__seasonal_naive__ block_bootstrap 2.391 2.211 0.915 1.196 0 True 0.000
__seasonal_naive__ mixture 1.727 1.277 0.828 0.905 9 True 0.000
__seasonal_naive__ parametric 4.533 1.353 0.848 2.266 3 True 0.000
__seasonal_naive__ random_parametric 3.684 1.405 0.931 1.948 12 True 0.000
__seasonal_naive__ sequential_par 1.333 1.470 0.919 0.666 0 True 0.000

`__naive__` and `__seasonal_naive__` are not configured models -- they are the trivial forecasts every real model should beat: repeat the last context value, or repeat the last full dominant period. Their MASE, if not excluded as unreliable, is what the scorecard's 'beats a trivial forecast' row below compares each family's best model against.

What does this mean?

How to read it
`__naive__`'s MASE is ≈1.0 under the default `mean_abs_diff` scale BY CONSTRUCTION -- that is not a discovery. `__seasonal_naive__` is the informative one: it is not 1.0 by construction, and a family where the best model does not beat it is worth reading as a real finding, not a bug.

Limitations
`__seasonal_naive__`'s MASE is missing (not zero, not a fallback to naive-1) for any family where every series is too short to hold one full detected period -- see `seasonal_naive_available` on that row.

`mae_over_mad` is a scale-free companion to MASE that doesn't depend on the context, only the target's own dispersion.

What does this mean?

How to read it
It should move roughly in step with MASE. If MASE looks anomalously low/high for a family but `mae_over_mad` doesn't, suspect a MASE scale-term artifact rather than genuine model behavior on that family.

Limitations
Not a drop-in MASE replacement — it can itself look small/undefined on a near-constant target, which is a different, legitimate degeneracy this metric doesn't protect against.

Per-archetype breakdown

Families with no per-sample archetype label (shown under their family name instead): block_bootstrap, mixture, parametric, sequential_par.

model archetype mase mae_over_mad smape pinball mase_n_excluded
Chronos-2 amplitude_modulated 2.139 0.770 0.831 0.663 0
Chronos-2 anomaly_heavy 1.040 0.635 0.471 0.349 1
Chronos-2 ar_colored_noise 0.849 0.957 0.789 0.282 0
Chronos-2 block_bootstrap 1.582 1.108 1.257 0.560 0
Chronos-2 clean_low_noise 3.936 0.644 0.596 1.426 5
Chronos-2 intermittent_bursts 1.130 1.049 1.400 0.375 0
Chronos-2 mixture 1.376 0.910 0.665 0.521 9
Chronos-2 multi_seasonal_complex 1.227 0.301 0.361 0.411 1
Chronos-2 noisy_chaotic 1.219 1.119 0.721 0.415 0
Chronos-2 nonsinusoidal_seasonal 3.236 0.728 0.917 0.989 0
Chronos-2 parametric 3.368 0.998 0.744 1.072 3
Chronos-2 random_walk_drift 2.623 1.633 0.552 0.807 1
Chronos-2 regime_switching 2.966 1.685 0.610 1.183 2
Chronos-2 seasonal_dominant 0.412 0.125 0.257 0.130 0
Chronos-2 sequential_par 1.116 1.209 0.924 0.349 0
Chronos-2 trend_dominant 0.786 0.816 0.328 0.261 2
Chronos-Bolt amplitude_modulated 2.420 0.922 0.958 0.763 0
Chronos-Bolt anomaly_heavy 1.755 0.875 0.690 0.565 1
Chronos-Bolt ar_colored_noise 0.900 1.020 0.839 0.284 0
Chronos-Bolt block_bootstrap 1.678 1.206 1.261 0.603 0
Chronos-Bolt clean_low_noise 6.057 0.927 0.876 2.185 5
Chronos-Bolt intermittent_bursts 1.180 1.110 1.398 0.383 0
Chronos-Bolt mixture 1.329 0.886 0.650 0.520 9
Chronos-Bolt multi_seasonal_complex 5.610 1.234 0.998 1.858 1
Chronos-Bolt noisy_chaotic 1.248 1.152 0.753 0.412 0
Chronos-Bolt nonsinusoidal_seasonal 5.059 1.140 1.218 1.718 0
Chronos-Bolt parametric 3.495 1.036 0.759 1.160 3
Chronos-Bolt random_walk_drift 2.974 1.894 0.578 0.918 1
Chronos-Bolt regime_switching 3.593 1.925 0.732 1.393 2
Chronos-Bolt seasonal_dominant 3.447 0.977 1.091 1.343 0
Chronos-Bolt sequential_par 1.062 1.147 0.903 0.335 0
Chronos-Bolt trend_dominant 1.035 0.942 0.350 0.321 2
Chronos-T5-Base amplitude_modulated 2.578 0.971 0.991 0.973 0
Chronos-T5-Base anomaly_heavy 1.204 0.713 0.521 0.430 1
Chronos-T5-Base ar_colored_noise 0.908 1.051 0.811 0.367 0
Chronos-T5-Base block_bootstrap 1.844 1.205 1.170 0.713 0
Chronos-T5-Base clean_low_noise 4.811 0.797 0.714 1.848 5
Chronos-T5-Base intermittent_bursts 1.286 1.183 1.552 0.531 0
Chronos-T5-Base mixture 1.443 0.934 0.667 0.594 9
Chronos-T5-Base multi_seasonal_complex 3.558 0.902 0.720 1.293 1
Chronos-T5-Base noisy_chaotic 1.268 1.202 0.794 0.509 0
Chronos-T5-Base nonsinusoidal_seasonal 5.524 1.198 1.068 2.095 0
Chronos-T5-Base parametric 3.591 1.070 0.779 1.234 3
Chronos-T5-Base random_walk_drift 2.980 1.925 0.639 1.120 1
Chronos-T5-Base regime_switching 3.456 1.805 0.666 1.580 2
Chronos-T5-Base seasonal_dominant 0.601 0.170 0.343 0.203 0
Chronos-T5-Base sequential_par 1.104 1.188 1.170 0.404 0
Chronos-T5-Base trend_dominant 1.086 1.041 0.351 0.386 2
Sundial amplitude_modulated 2.264 0.846 0.927 0.837 0
Sundial anomaly_heavy 1.285 0.718 0.534 0.459 1
Sundial ar_colored_noise 0.924 1.055 0.839 0.339 0
Sundial block_bootstrap 1.685 1.474 1.164 0.666 0
Sundial clean_low_noise 4.613 0.723 0.722 1.738 5
Sundial intermittent_bursts 1.171 1.111 1.378 0.429 0
Sundial mixture 1.567 1.015 0.829 0.660 9
Sundial multi_seasonal_complex 2.750 0.702 0.643 1.044 1
Sundial noisy_chaotic 1.258 1.149 0.734 0.474 0
Sundial nonsinusoidal_seasonal 3.880 0.870 1.071 1.317 0
Sundial parametric 3.651 1.098 0.800 1.345 3
Sundial random_walk_drift 2.797 1.785 0.583 1.007 1
Sundial regime_switching 3.242 1.787 0.649 1.476 2
Sundial seasonal_dominant 0.855 0.244 0.448 0.350 0
Sundial sequential_par 1.112 1.200 0.839 0.424 0
Sundial trend_dominant 1.812 1.610 0.493 0.754 2
Time-MoE amplitude_modulated 4.202 1.668 1.347 2.101 0
Time-MoE anomaly_heavy 5.226 3.682 1.397 2.801 1
Time-MoE ar_colored_noise 2.616 3.132 1.516 1.308 0
Time-MoE block_bootstrap 2.155 2.957 1.273 1.078 0
Time-MoE clean_low_noise 11.375 1.954 1.355 6.678 5
Time-MoE intermittent_bursts 1.513 1.405 1.625 0.756 0
Time-MoE mixture 3.704 2.586 1.282 2.162 9
Time-MoE multi_seasonal_complex 8.797 2.242 1.457 4.506 1
Time-MoE noisy_chaotic 2.861 2.532 1.345 1.430 0
Time-MoE nonsinusoidal_seasonal 6.229 1.429 1.362 3.115 0
Time-MoE parametric 7.593 2.344 1.378 3.948 3
Time-MoE random_walk_drift 7.676 5.710 1.371 3.988 1
Time-MoE regime_switching 6.925 4.144 1.614 4.402 2
Time-MoE seasonal_dominant 4.377 1.227 1.291 2.188 0
Time-MoE sequential_par 1.221 1.314 0.865 0.611 0
Time-MoE trend_dominant 9.356 9.735 1.052 5.311 2
Timer amplitude_modulated 2.692 1.016 1.179 1.346 0
Timer anomaly_heavy 2.225 1.153 0.872 1.133 1
Timer ar_colored_noise 1.066 1.188 0.925 0.533 0
Timer block_bootstrap 1.793 1.973 1.162 0.897 0
Timer clean_low_noise 7.037 1.099 1.083 4.003 5
Timer intermittent_bursts 1.190 1.125 1.376 0.595 0
Timer mixture 1.463 1.035 0.966 0.794 9
Timer multi_seasonal_complex 5.848 1.351 1.178 2.948 1
Timer noisy_chaotic 1.425 1.295 0.797 0.713 0
Timer nonsinusoidal_seasonal 4.593 1.027 1.323 2.297 0
Timer parametric 3.942 1.194 0.853 2.012 3
Timer random_walk_drift 3.603 2.379 0.728 1.776 1
Timer regime_switching 3.680 1.975 0.735 2.060 2
Timer seasonal_dominant 3.459 0.946 1.379 1.730 0
Timer sequential_par 1.131 1.230 0.819 0.565 0
Timer trend_dominant 2.578 2.174 0.574 1.290 2
TimesFM amplitude_modulated 2.161 0.797 0.868 0.677 0
TimesFM anomaly_heavy 1.061 0.634 0.463 0.336 1
TimesFM ar_colored_noise 0.883 0.990 0.811 0.281 0
TimesFM block_bootstrap 1.602 1.175 1.250 0.568 0
TimesFM clean_low_noise 3.360 0.567 0.572 1.266 5
TimesFM intermittent_bursts 1.162 1.089 1.400 0.371 0
TimesFM mixture 1.509 1.014 0.691 0.569 9
TimesFM multi_seasonal_complex 2.100 0.463 0.462 0.696 1
TimesFM noisy_chaotic 1.173 1.072 0.690 0.392 0
TimesFM nonsinusoidal_seasonal 3.562 0.799 0.982 1.091 0
TimesFM parametric 3.542 1.050 0.770 1.110 3
TimesFM random_walk_drift 2.553 1.617 0.567 0.796 1
TimesFM regime_switching 2.938 1.633 0.578 1.224 2
TimesFM seasonal_dominant 0.470 0.156 0.307 0.156 0
TimesFM sequential_par 1.109 1.191 0.863 0.347 0
TimesFM trend_dominant 0.842 0.853 0.331 0.263 2

Paired tests (α=0.05, Holm-corrected across archetypes, positive Δ favors first model):

archetype MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
multi_seasonal_complex 1.711 -0.873 -1.659 -0.340 0.000 0.003 Chronos-2
mixture 1.097 -0.133 -0.221 -0.055 0.000 0.006 Chronos-2
parametric 1.052 -0.174 -0.275 -0.070 0.002 0.022 Chronos-2
nonsinusoidal_seasonal 1.101 -0.326 -0.564 -0.098 0.006 0.073 none
trend_dominant 1.072 -0.056 -0.121 -0.003 0.030 0.360 none
seasonal_dominant 1.139 -0.057 -0.134 -0.003 0.034 0.374 none
amplitude_modulated 1.010 -0.022 -0.151 0.130 0.726 1.000 none
anomaly_heavy 1.020 -0.021 -0.183 0.118 0.804 1.000 none
ar_colored_noise 1.040 -0.034 -0.091 0.013 0.188 1.000 none
block_bootstrap 1.013 -0.020 -0.053 0.013 0.223 1.000 none
clean_low_noise 0.854 0.576 -0.109 1.439 0.117 1.000 none
intermittent_bursts 1.028 -0.032 -0.106 0.038 0.367 1.000 none
noisy_chaotic 0.962 0.047 -0.062 0.187 0.504 1.000 none
random_walk_drift 0.974 0.069 -0.173 0.332 0.593 1.000 none
regime_switching 0.991 0.028 -0.397 0.445 0.888 1.000 none
sequential_par 0.993 0.008 -0.062 0.083 0.879 1.000 none

Quantile calibration

Reliability curve: for each nominal quantile level (e.g. p90), the fraction of (series, horizon-step) positions where the true target actually fell at or below that level's forecast. A perfectly calibrated model traces the diagonal.

What does this mean?

How to read it
Above the diagonal means this model's forecasts at that level are set too high (the target clears them more often than the nominal rate implies); below the diagonal means set too low. This is orthogonal to point-forecast accuracy (MASE) above -- a model can have excellent MASE and poor calibration, or vice versa.

Limitations
Computed by pooling every (series, horizon-step) position; a model that's well-calibrated on average can still be miscalibrated on a specific family or horizon range the pooled curve doesn't show. the forecast-stochasticity asymmetry applies here too: a sampled model's quantiles reflect real predictive uncertainty a deterministic model's quantile head cannot represent the same way.

PIT histogram

Probability integral transform: where each target actually falls within its own model's quantile forecasts, approximated by linear interpolation between the handful of quantile levels this repo requests.

What does this mean?

How to read it
A flat histogram across [0, 1] is the calibration signature; a hump in the middle means intervals are too wide (underconfident, targets cluster near the median forecast); mass piled at the edges means intervals are too narrow (overconfident).

Limitations
Coarse by construction -- only as fine-grained as the configured quantile levels (`l0.quantiles`), not a true continuous-CDF PIT.

Interval coverage, sharpness, and quantile crossing

model nominal coverage empirical coverage mean interval width quantile crossing rate
TimesFM 0.800 0.779 47.766 0.001
Chronos-2 0.800 0.757 46.085 0.000
Sundial 0.800 0.360 19.617 0.000
Chronos-Bolt 0.800 0.732 50.482 0.000
Timer 0.800 0.000 0.000 0.000
Time-MoE 0.800 0.000 0.000 0.000
Chronos-T5-Base 0.800 0.436 28.140 0.000

Outer-interval (lowest to highest configured quantile level) empirical vs. nominal coverage, mean interval width (sharpness), and how often a model's own quantile levels are non-monotonic (a claimed higher-level forecast below a lower-level one -- a real forecast-head defect, not a calibration question).

What does this mean?

How to read it
Empirical coverage close to nominal is good; a wide gap either way means this model's stated interval doesn't mean what it claims. Sharpness alone (narrower is 'better') is only meaningful once coverage is already close to nominal -- a narrow, badly-undercovering interval is not an improvement.

Limitations
Quantile crossing rate should be 0 or near-0 for any competently implemented quantile head; a nonzero rate here is a real defect worth investigating in that model's `predict` path, not a modeling nuance to read past.

Reliability from own quantile width

For each model, series are grouped into equal-count deciles by that model's OWN quantile-band width, and each decile's mean realized MASE is plotted against it — the free reliability check a practitioner already has after one model's forecast, needing no second checkpoint.

What does this mean?

How to read it
A rising line means this model's own stated uncertainty tracks its actual error: when its band is wide, expect a bigger miss. found this signal beats cross-model disagreement as an error predictor in 10 of 11 scorable model-runs across six existing run directories — this panel is that winning baseline, not the losing heuristic.

Limitations
A model with a flat or non-monotonic line here has an uninformative uncertainty band even if its point forecasts are good — width and accuracy are different properties. Computed on this run's own dev corpus only; whether the relationship holds on a different data distribution is untested.

model Spearman (own width vs error) deciles
TimesFM 0.834 10
Chronos-2 0.829 10
Sundial 0.819 10
Chronos-Bolt 0.767 10
Chronos-T5-Base 0.736 10

Timer: this model reports a quantile band of width 0 for every series (no quantile head, or an adapter that fills the band with its point forecast) -- there is no self-reported uncertainty signal to show. Time-MoE: this model reports a quantile band of width 0 for every series (no quantile head, or an adapter that fills the band with its point forecast) -- there is no self-reported uncertainty signal to show.

MASE by horizon step

Per-horizon-step absolute error, scaled by the same per-series MASE denominator used everywhere else in L0 -- the whole-horizon MASE elsewhere in this report is this curve's own mean.

What does this mean?

How to read it
A rising curve means error compounds with forecast distance, as expected; a flat curve means the model's error is dominated by something other than distance-from-context (e.g. a systematic bias). Compare the *shape*, not just the endpoints, between models: one model can start worse at h=1 and end better at h=H, which the whole-horizon average alone would hide.

Limitations
Pooled across every series in the corpus; a family- or archetype-specific curve would need the `by_family` breakdown in the underlying artifact, not shown here.

Pinball loss by horizon step

Same per-horizon-step reduction applied to pinball loss instead of point MASE -- so this reflects the whole quantile forecast's calibration-weighted accuracy at each step, not just the point forecast.

What does this mean?

How to read it
Read alongside the calibration section above: a model whose pinball loss grows faster than its MASE at long horizons is likely widening its intervals appropriately (expected and healthy); one whose pinball loss stays flat while MASE grows may be under-widening its uncertainty at long range.

Limitations
Same pooling caveat as the MASE curve above.

Paired family tests (α=0.05, Holm-corrected, positive Δ favors first model (n_boot=5000, p floored at 1/n_boot=0.0002))

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored Power / MDE
mixture 1.097 -0.133 -0.218 -0.057 0.000 0.024 Chronos-2 achieved power 80% at this n
parametric 1.052 -0.174 -0.280 -0.072 0.002 0.098 none No difference detected. A true difference of >= 0.149 MASE would have been detected 80% of the time at this n.
block_bootstrap 1.013 -0.020 -0.054 0.013 0.220 1.000 none No difference detected. A true difference of >= 0.053 MASE would have been detected 80% of the time at this n.
random_parametric 1.031 -0.058 -0.164 0.049 0.283 1.000 none No difference detected. A true difference of >= 0.170 MASE would have been detected 80% of the time at this n.
sequential_par 0.993 0.008 -0.062 0.083 0.849 1.000 none No difference detected. A true difference of >= 0.100 MASE would have been detected 80% of the time at this n.

`Power / MDE`: for a family with no detected difference, the smallest true difference this run's sample size could reliably (80% of the time) have caught; for a family that already found a strength, how often a repeat of this exact test would find it again.

What does this mean?

How to read it
A family reading 'not testable' has no meaningful MDE at all -- either the Holm correction for this many comparisons cannot reach significance at this n_boot no matter the effect size, the family has too few series to resample, or every series gave an identical paired delta. Read 'no difference detected, MDE = X' as a statement about this RUN's resolving power, never as evidence the two models behave the same on that family.

Limitations
Simulation-based and therefore itself noisy at the `n_sim` used; not a substitute for running more series if the MDE is larger than the effect size a reader actually cares about.

Paired family tests — TimesFM vs. Sundial

Positive Δ favors TimesFM. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.951 0.083 0.046 0.121 0.000 0.021 TimesFM
random_parametric 0.851 0.335 0.217 0.455 0.000 0.021 TimesFM
mixture 0.963 0.058 -0.041 0.145 0.216 1.000 none
parametric 0.970 0.109 -0.060 0.278 0.198 1.000 none
sequential_par 0.997 0.004 -0.025 0.035 0.827 1.000 none

Paired family tests — TimesFM vs. Chronos-Bolt

Positive Δ favors TimesFM. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
mixture 1.136 -0.180 -0.267 -0.103 0.000 0.021 Chronos-Bolt
random_parametric 0.649 1.035 0.852 1.237 0.000 0.021 TimesFM
sequential_par 1.044 -0.047 -0.086 -0.013 0.006 0.288 none
block_bootstrap 0.954 0.077 0.022 0.136 0.007 0.302 none
parametric 1.014 -0.047 -0.229 0.135 0.614 1.000 none

Paired family tests — TimesFM vs. Timer

Positive Δ favors TimesFM. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.893 0.192 0.134 0.254 0.000 0.021 TimesFM
random_parametric 0.592 1.318 1.105 1.536 0.000 0.021 TimesFM
parametric 0.899 0.400 0.194 0.616 0.000 0.024 TimesFM
mixture 1.031 -0.046 -0.132 0.029 0.249 1.000 none
sequential_par 0.980 0.022 -0.016 0.062 0.256 1.000 none

Paired family tests — TimesFM vs. Time-MoE

Positive Δ favors TimesFM. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.743 0.553 0.426 0.690 0.000 0.021 TimesFM
mixture 0.407 2.196 1.629 2.787 0.000 0.021 TimesFM
parametric 0.466 4.051 3.427 4.714 0.000 0.021 TimesFM
random_parametric 0.338 3.737 3.275 4.209 0.000 0.021 TimesFM
sequential_par 0.908 0.113 0.040 0.187 0.001 0.060 none

Paired family tests — TimesFM vs. Chronos-T5-Base

Positive Δ favors TimesFM. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
random_parametric 0.762 0.598 0.431 0.768 0.000 0.021 TimesFM
block_bootstrap 0.869 0.242 0.031 0.561 0.010 0.394 none
mixture 1.045 -0.065 -0.163 0.027 0.162 1.000 none
parametric 0.986 0.049 -0.108 0.211 0.542 1.000 none
sequential_par 1.004 -0.005 -0.089 0.066 0.932 1.000 none

Paired family tests — Chronos-2 vs. Sundial

Positive Δ favors Chronos-2. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.939 0.103 0.064 0.142 0.000 0.021 Chronos-2
mixture 0.878 0.191 0.100 0.289 0.000 0.021 Chronos-2
random_parametric 0.825 0.393 0.282 0.499 0.000 0.021 Chronos-2
parametric 0.922 0.283 0.131 0.437 0.000 0.024 Chronos-2
sequential_par 1.003 -0.004 -0.087 0.069 0.955 1.000 none

Paired family tests — Chronos-2 vs. Chronos-Bolt

Positive Δ favors Chronos-2. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
random_parametric 0.629 1.093 0.885 1.311 0.000 0.021 Chronos-2
block_bootstrap 0.942 0.097 0.044 0.153 0.001 0.041 Chronos-2
mixture 1.036 -0.047 -0.119 0.021 0.181 1.000 none
parametric 0.964 0.127 -0.036 0.285 0.132 1.000 none
sequential_par 1.051 -0.055 -0.139 0.013 0.138 1.000 none

Paired family tests — Chronos-2 vs. Timer

Positive Δ favors Chronos-2. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.882 0.212 0.152 0.272 0.000 0.021 Chronos-2
parametric 0.854 0.574 0.366 0.793 0.000 0.021 Chronos-2
random_parametric 0.574 1.376 1.147 1.614 0.000 0.021 Chronos-2
mixture 0.941 0.087 0.017 0.153 0.020 0.745 none
sequential_par 0.987 0.015 -0.054 0.080 0.620 1.000 none

Paired family tests — Chronos-2 vs. Time-MoE

Positive Δ favors Chronos-2. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.734 0.573 0.444 0.709 0.000 0.021 Chronos-2
mixture 0.371 2.329 1.726 2.963 0.000 0.021 Chronos-2
parametric 0.444 4.225 3.580 4.901 0.000 0.021 Chronos-2
random_parametric 0.328 3.795 3.355 4.272 0.000 0.021 Chronos-2
sequential_par 0.914 0.105 -0.004 0.205 0.056 1.000 none

Paired family tests — Chronos-2 vs. Chronos-T5-Base

Positive Δ favors Chronos-2. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.858 0.262 0.059 0.602 0.000 0.021 Chronos-2
random_parametric 0.739 0.656 0.498 0.827 0.000 0.021 Chronos-2
parametric 0.938 0.223 0.064 0.379 0.007 0.292 none
mixture 0.953 0.068 -0.019 0.153 0.132 1.000 none
sequential_par 1.011 -0.013 -0.117 0.077 0.862 1.000 none

Paired family tests — Sundial vs. Chronos-Bolt

Positive Δ favors Sundial. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
mixture 1.179 -0.238 -0.342 -0.140 0.000 0.021 Chronos-Bolt
random_parametric 0.762 0.700 0.528 0.882 0.000 0.021 Sundial
sequential_par 1.048 -0.051 -0.106 -0.006 0.018 0.702 none
block_bootstrap 1.004 -0.007 -0.068 0.056 0.794 1.000 none
parametric 1.045 -0.156 -0.359 0.038 0.109 1.000 none

Paired family tests — Sundial vs. Timer

Positive Δ favors Sundial. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.939 0.109 0.060 0.160 0.000 0.021 Sundial
random_parametric 0.696 0.983 0.807 1.164 0.000 0.021 Sundial
parametric 0.926 0.291 0.131 0.452 0.000 0.024 Sundial
mixture 1.071 -0.104 -0.209 -0.007 0.033 1.000 none
sequential_par 0.984 0.018 -0.006 0.042 0.135 1.000 none

Paired family tests — Sundial vs. Time-MoE

Positive Δ favors Sundial. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.782 0.470 0.332 0.615 0.000 0.021 Sundial
mixture 0.423 2.138 1.597 2.726 0.000 0.021 Sundial
parametric 0.481 3.942 3.304 4.612 0.000 0.021 Sundial
random_parametric 0.398 3.402 2.987 3.825 0.000 0.021 Sundial
sequential_par 0.911 0.109 0.028 0.191 0.014 0.576 none

Paired family tests — Sundial vs. Chronos-T5-Base

Positive Δ favors Sundial. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
random_parametric 0.895 0.263 0.134 0.397 0.000 0.024 Sundial
mixture 1.086 -0.123 -0.236 -0.020 0.020 0.755 none
block_bootstrap 0.914 0.159 -0.047 0.495 0.264 1.000 none
parametric 1.017 -0.060 -0.228 0.104 0.469 1.000 none
sequential_par 1.008 -0.009 -0.108 0.079 0.884 1.000 none

Paired family tests — Chronos-Bolt vs. Timer

Positive Δ favors Chronos-Bolt. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
mixture 0.908 0.134 0.066 0.195 0.000 0.024 Chronos-Bolt
parametric 0.887 0.447 0.200 0.697 0.000 0.024 Chronos-Bolt
random_parametric 0.912 0.283 0.127 0.435 0.000 0.024 Chronos-Bolt
block_bootstrap 0.936 0.115 0.034 0.195 0.003 0.150 none
sequential_par 0.939 0.069 0.019 0.130 0.006 0.288 none

Paired family tests — Chronos-Bolt vs. Time-MoE

Positive Δ favors Chronos-Bolt. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.779 0.477 0.347 0.616 0.000 0.021 Chronos-Bolt
mixture 0.359 2.376 1.776 3.043 0.000 0.021 Chronos-Bolt
parametric 0.460 4.098 3.446 4.781 0.000 0.021 Chronos-Bolt
random_parametric 0.522 2.702 2.285 3.155 0.000 0.021 Chronos-Bolt
sequential_par 0.869 0.160 0.096 0.232 0.000 0.021 Chronos-Bolt

Paired family tests — Chronos-Bolt vs. Chronos-T5-Base

Positive Δ favors Chronos-Bolt. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
random_parametric 1.174 -0.437 -0.631 -0.245 0.000 0.021 Chronos-T5-Base
block_bootstrap 0.910 0.165 -0.031 0.476 0.164 1.000 none
mixture 0.920 0.115 0.007 0.223 0.040 1.000 none
parametric 0.973 0.096 -0.084 0.271 0.276 1.000 none
sequential_par 0.962 0.042 -0.021 0.099 0.174 1.000 none

Paired family tests — Timer vs. Time-MoE

Positive Δ favors Timer. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.832 0.362 0.215 0.518 0.000 0.021 Timer
mixture 0.395 2.242 1.616 2.884 0.000 0.021 Timer
parametric 0.519 3.651 3.005 4.313 0.000 0.021 Timer
random_parametric 0.572 2.419 2.068 2.790 0.000 0.021 Timer
sequential_par 0.926 0.091 0.002 0.177 0.048 1.000 none

Paired family tests — Timer vs. Chronos-T5-Base

Positive Δ favors Timer. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
random_parametric 1.287 -0.721 -0.940 -0.523 0.000 0.021 Chronos-T5-Base
parametric 1.098 -0.351 -0.579 -0.126 0.003 0.150 none
block_bootstrap 0.973 0.050 -0.159 0.368 0.786 1.000 none
mixture 1.013 -0.019 -0.096 0.060 0.618 1.000 none
sequential_par 1.025 -0.027 -0.126 0.061 0.602 1.000 none

Paired family tests — Time-MoE vs. Chronos-T5-Base

Positive Δ favors Time-MoE. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
mixture 2.567 -2.261 -2.916 -1.663 0.000 0.021 Chronos-T5-Base
parametric 2.114 -4.002 -4.668 -3.347 0.000 0.021 Chronos-T5-Base
random_parametric 2.251 -3.139 -3.606 -2.716 0.000 0.021 Chronos-T5-Base
sequential_par 1.107 -0.118 -0.204 -0.037 0.002 0.098 none
block_bootstrap 1.169 -0.311 -0.557 0.029 0.074 1.000 none

The model pairs this run configures beyond the first. L0 is the only stage that can honestly run for all of them -- it needs nothing but each model's `predict`, no alignment, no shared window axis.

What does this mean?

How to read it
Read these exactly like the first pair's table above; the correction is joint, so a p (Holm) here and one there came out of the same adjustment.

Limitations
A few stages report one pair only -- named in the multiplicity ledger below, and read from the run's own record rather than listed here. The pairs they omit are unexamined there, which is a stronger statement than 'weakly evidenced'.

Multiplicity ledger

4238 corrected comparisons were made in this report, in 123 independent correction families. Each family's own correction (Holm for behavioral/confirm comparisons, BH for cross-model transfer tests) is applied within it and never across families, so the counts below do not add up to one test — they are the multiplicity a reader would otherwise have to infer from the tables. This run configures 7 models, so L0 tests all 21 pairs and corrects across every (pair, family) test at once. L3's cross-model fingerprint agreement, the per-family exemplars and the held-out confirmation report one pair only (TimesFM vs. Chronos-2), because each produces a single artifact rather than a per-pair one; the remaining pairs are not weakly-evidenced there, they are unexamined.

correction family comparisons method α n_boot most stringent threshold smallest p (Holm) reachable min. batch to survive (BH)
L0 per-family paired tests 105 holm 0.050 5000 0.000 0.021 NaN
L0 per-archetype paired tests 16 holm 0.050 5000 0.003 0.003 NaN
Confirm — pre-registered hypotheses (private corpus) 1 holm 0.050 5000 0.050 0.000 NaN
Transfer — Chronos-2 → Chronos-Bolt (forward leg, exact) 8 bh 0.050 200 0.006 NaN 1.000
Transfer — Chronos-2 → Chronos-Bolt (reverse leg, exact) 8 bh 0.050 200 0.006 NaN 1.000
Transfer — Chronos-2 → Chronos-T5-Base (forward leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Transfer — Chronos-2 → Chronos-T5-Base (reverse leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Transfer — Chronos-2 → Sundial (forward leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Transfer — Chronos-2 → Sundial (reverse leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Transfer — Chronos-2 → Time-MoE (forward leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Transfer — Chronos-2 → Time-MoE (reverse leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Transfer — Chronos-2 → Timer (forward leg, exact) 12 bh 0.050 200 0.004 NaN 2.000
Transfer — Chronos-2 → Timer (reverse leg, exact) 12 bh 0.050 200 0.004 NaN 2.000
Transfer — Chronos-2 → TimesFM (forward leg, exact) 20 bh 0.050 200 0.003 NaN 2.000
Transfer — Chronos-2 → TimesFM (reverse leg, exact) 20 bh 0.050 200 0.003 NaN 2.000
Transfer — Sundial → Chronos-2 (forward leg, exact) 32 bh 0.050 200 0.002 NaN 4.000
Transfer — Sundial → Chronos-2 (reverse leg, exact) 32 bh 0.050 200 0.002 NaN 4.000
Transfer — Sundial → Chronos-Bolt (forward leg, exact) 16 bh 0.050 200 0.003 NaN 2.000
Transfer — Sundial → Chronos-Bolt (reverse leg, exact) 16 bh 0.050 200 0.003 NaN 2.000
Transfer — Sundial → Chronos-T5-Base (forward leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Sundial → Chronos-T5-Base (reverse leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Sundial → Time-MoE (forward leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Sundial → Time-MoE (reverse leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Sundial → Timer (forward leg, exact) 24 bh 0.050 200 0.002 NaN 3.000
Transfer — Sundial → Timer (reverse leg, exact) 24 bh 0.050 200 0.002 NaN 3.000
Transfer — Sundial → TimesFM (forward leg, exact) 40 bh 0.050 200 0.001 NaN 4.000
Transfer — Sundial → TimesFM (reverse leg, exact) 40 bh 0.050 200 0.001 NaN 4.000
Transfer — Timer → Chronos-2 (forward leg, exact) 32 bh 0.050 200 0.002 NaN 4.000
Transfer — Timer → Chronos-2 (reverse leg, exact) 32 bh 0.050 200 0.002 NaN 4.000
Transfer — Timer → Chronos-Bolt (forward leg, exact) 16 bh 0.050 200 0.003 NaN 2.000
Transfer — Timer → Chronos-Bolt (reverse leg, exact) 16 bh 0.050 200 0.003 NaN 2.000
Transfer — Timer → Chronos-T5-Base (forward leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Timer → Chronos-T5-Base (reverse leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Timer → Sundial (forward leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Timer → Sundial (reverse leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Timer → Time-MoE (forward leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Timer → Time-MoE (reverse leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Timer → TimesFM (forward leg, exact) 40 bh 0.050 200 0.001 NaN 4.000
Transfer — Timer → TimesFM (reverse leg, exact) 40 bh 0.050 200 0.001 NaN 4.000
Atlas Transfer — Chronos-2 → Chronos-Bolt (forward leg, exact) 32 bh 0.050 200 0.002 NaN 4.000
Atlas Transfer — Chronos-2 → Chronos-Bolt (reverse leg, exact) 32 bh 0.050 200 0.002 NaN 4.000
Atlas Transfer — Chronos-2 → Chronos-T5-Base (forward leg, exact) 72 bh 0.050 200 0.001 NaN 8.000
Atlas Transfer — Chronos-2 → Chronos-T5-Base (reverse leg, exact) 72 bh 0.050 200 0.001 NaN 8.000
Atlas Transfer — Chronos-2 → Sundial (forward leg, exact) 72 bh 0.050 200 0.001 NaN 8.000
Atlas Transfer — Chronos-2 → Sundial (reverse leg, exact) 72 bh 0.050 200 0.001 NaN 8.000
Atlas Transfer — Chronos-2 → Time-MoE (forward leg, exact) 72 bh 0.050 200 0.001 NaN 8.000
Atlas Transfer — Chronos-2 → Time-MoE (reverse leg, exact) 72 bh 0.050 200 0.001 NaN 8.000
Atlas Transfer — Chronos-2 → Timer (forward leg, exact) 48 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — Chronos-2 → Timer (reverse leg, exact) 48 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — Chronos-2 → TimesFM (forward leg, exact) 80 bh 0.050 200 0.001 NaN 8.000
Atlas Transfer — Chronos-2 → TimesFM (reverse leg, exact) 80 bh 0.050 200 0.001 NaN 8.000
Atlas Transfer — Chronos-Bolt → Chronos-2 (forward leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Chronos-Bolt → Chronos-2 (reverse leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Chronos-Bolt → Chronos-T5-Base (forward leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Chronos-Bolt → Chronos-T5-Base (reverse leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Chronos-Bolt → Sundial (forward leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Chronos-Bolt → Sundial (reverse leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Chronos-Bolt → Time-MoE (forward leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Chronos-Bolt → Time-MoE (reverse leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Chronos-Bolt → Timer (forward leg, exact) 42 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — Chronos-Bolt → Timer (reverse leg, exact) 42 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — Chronos-Bolt → TimesFM (forward leg, exact) 70 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Chronos-Bolt → TimesFM (reverse leg, exact) 70 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Chronos-T5-Base → Chronos-2 (forward leg, exact) 27 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Chronos-T5-Base → Chronos-2 (reverse leg, exact) 27 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Chronos-T5-Base → Chronos-Bolt (forward leg, exact) 12 bh 0.050 200 0.004 NaN 2.000
Atlas Transfer — Chronos-T5-Base → Chronos-Bolt (reverse leg, exact) 12 bh 0.050 200 0.004 NaN 2.000
Atlas Transfer — Chronos-T5-Base → Sundial (forward leg, exact) 27 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Chronos-T5-Base → Sundial (reverse leg, exact) 27 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Chronos-T5-Base → Time-MoE (forward leg, exact) 27 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Chronos-T5-Base → Time-MoE (reverse leg, exact) 27 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Chronos-T5-Base → Timer (forward leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — Chronos-T5-Base → Timer (reverse leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — Chronos-T5-Base → TimesFM (forward leg, exact) 30 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Chronos-T5-Base → TimesFM (reverse leg, exact) 30 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Sundial → Chronos-2 (forward leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Sundial → Chronos-2 (reverse leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Sundial → Chronos-Bolt (forward leg, exact) 28 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Sundial → Chronos-Bolt (reverse leg, exact) 28 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Sundial → Chronos-T5-Base (forward leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Sundial → Chronos-T5-Base (reverse leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Sundial → Time-MoE (forward leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Sundial → Time-MoE (reverse leg, exact) 63 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Sundial → Timer (forward leg, exact) 42 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — Sundial → Timer (reverse leg, exact) 42 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — Sundial → TimesFM (forward leg, exact) 70 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Sundial → TimesFM (reverse leg, exact) 70 bh 0.050 200 0.001 NaN 7.000
Atlas Transfer — Time-MoE → Chronos-2 (forward leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — Time-MoE → Chronos-2 (reverse leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — Time-MoE → Chronos-Bolt (forward leg, exact) 8 bh 0.050 200 0.006 NaN 1.000
Atlas Transfer — Time-MoE → Chronos-Bolt (reverse leg, exact) 8 bh 0.050 200 0.006 NaN 1.000
Atlas Transfer — Time-MoE → Chronos-T5-Base (forward leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — Time-MoE → Chronos-T5-Base (reverse leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — Time-MoE → Sundial (forward leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — Time-MoE → Sundial (reverse leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — Time-MoE → Timer (forward leg, exact) 12 bh 0.050 200 0.004 NaN 2.000
Atlas Transfer — Time-MoE → Timer (reverse leg, exact) 12 bh 0.050 200 0.004 NaN 2.000
Atlas Transfer — Time-MoE → TimesFM (forward leg, exact) 20 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — Time-MoE → TimesFM (reverse leg, exact) 20 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — Timer → Chronos-2 (forward leg, exact) 9 bh 0.050 200 0.006 NaN 1.000
Atlas Transfer — Timer → Chronos-2 (reverse leg, exact) 9 bh 0.050 200 0.006 NaN 1.000
Atlas Transfer — Timer → Chronos-Bolt (forward leg, exact) 4 bh 0.050 200 0.013 NaN 1.000
Atlas Transfer — Timer → Chronos-Bolt (reverse leg, exact) 4 bh 0.050 200 0.013 NaN 1.000
Atlas Transfer — Timer → Chronos-T5-Base (forward leg, exact) 9 bh 0.050 200 0.006 NaN 1.000
Atlas Transfer — Timer → Chronos-T5-Base (reverse leg, exact) 9 bh 0.050 200 0.006 NaN 1.000
Atlas Transfer — Timer → Sundial (forward leg, exact) 9 bh 0.050 200 0.006 NaN 1.000
Atlas Transfer — Timer → Sundial (reverse leg, exact) 9 bh 0.050 200 0.006 NaN 1.000
Atlas Transfer — Timer → Time-MoE (forward leg, exact) 9 bh 0.050 200 0.006 NaN 1.000
Atlas Transfer — Timer → Time-MoE (reverse leg, exact) 9 bh 0.050 200 0.006 NaN 1.000
Atlas Transfer — Timer → TimesFM (forward leg, exact) 10 bh 0.050 200 0.005 NaN 1.000
Atlas Transfer — Timer → TimesFM (reverse leg, exact) 10 bh 0.050 200 0.005 NaN 1.000
Atlas Transfer — TimesFM → Chronos-2 (forward leg, exact) 45 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — TimesFM → Chronos-2 (reverse leg, exact) 45 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — TimesFM → Chronos-Bolt (forward leg, exact) 20 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — TimesFM → Chronos-Bolt (reverse leg, exact) 20 bh 0.050 200 0.003 NaN 2.000
Atlas Transfer — TimesFM → Chronos-T5-Base (forward leg, exact) 45 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — TimesFM → Chronos-T5-Base (reverse leg, exact) 45 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — TimesFM → Sundial (forward leg, exact) 45 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — TimesFM → Sundial (reverse leg, exact) 45 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — TimesFM → Time-MoE (forward leg, exact) 45 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — TimesFM → Time-MoE (reverse leg, exact) 45 bh 0.050 200 0.001 NaN 5.000
Atlas Transfer — TimesFM → Timer (forward leg, exact) 30 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — TimesFM → Timer (reverse leg, exact) 30 bh 0.050 200 0.002 NaN 3.000

Coarse p-floor — 104 of 120 BH transfer families. Their exact permutation p-values are floored at 1/(n_null+1), which sits above BH's rank-1 bar q/m, so a lone transfer cannot survive there: BH is step-up, and a family only declares discoveries once 2–8 floor-level p-values arrive together. Survivors in these families are genuine FDR-controlled results; the non-survivors are partly arithmetic. Set concepts.transfer_p_method: adaptive to resolve floor-hitting legs with a larger null.

How many statistical comparisons this report actually made, and under what correction.

What does this mean?

How to read it
'Most stringent threshold' is alpha/n -- the bar the *smallest* p-value in that family must clear under Holm's first step. Later steps are progressively less strict, so this is the ceiling on severity, not the bar every test faced.

Limitations
These families are corrected separately, by design: the dev corpus is hypothesis-generating and Confirm is one-shot by construction. Pooling them into one Bonferroni family would be more conservative but would also mean a pre-registered confirmation paid for every exploratory look, which is exactly the trade the exploration/confirmation split exists to avoid.

Cost

Cost and capacity

What each model costs to run — parameters, measured FLOPs, latency, VRAM — and what its L0 quality looks like per unit of compute rather than in absolute terms.

What this stage tells you

Question
What does each model cost to run, and is its forecast quality bought with more compute?

How
Runs a handful of extra forward (and, optionally, full-forecast) passes through each model while measuring parameter counts, FLOPs, wall-clock latency, and peak GPU memory, then re-plots each model's L0 accuracy against those costs instead of looking at accuracy alone.

Good vs. bad result
Good: FLOPs are measured directly (not falling back to an unmeasured or 'suspicious_low' reading) and the model sits down-and-to-the-left on the compute-normalized chart — lower error for less compute. Bad: a `flops_sanity: suspicious_low` verdict (the measurement can't see a fused or custom kernel and is undercounting compute), or the L0 stage didn't run, so cost can't be normalized by quality at all.

What it cannot tell you
Cost is measured only at this run's own context length, batch, and horizon — it does not generalize to a different sequence length, and FLOPs are not the same thing as latency (a model with fewer FLOPs can still be slower on real hardware). It also only tells you the price of a forward pass, never whether that price bought anything mechanistically interesting — that's what every later stage is for.

Measured over batch 8, context 480, horizon 64.

model params (M) body (M) blocks FLOPs/series forward (ms) predict (ms) peak VRAM (MB) FLOPs check
TimesFM 231.289 196.715 20 6.96 GFLOPs 38.856 39.029 974.956 plausible
Chronos-2 119.478 113.274 12 8.18 GFLOPs 22.113 23.004 257.397 plausible
Sundial 128.330 113.311 12 6.98 GFLOPs 7.515 61.824 595.135 plausible
Chronos-Bolt 47.718 18.881 6 1.49 GFLOPs 14.493 14.558 108.184 plausible
Timer 84.142 83.943 8 841.65 MFLOPs 5.108 5.336 218.526 plausible
Time-MoE 113.352 113.311 12 51.85 GFLOPs 50.787 103.265 483.620 suspicious_low
Chronos-T5-Base 201.375 84.953 12 90.24 GFLOPs 37.106 975.469 714.727 plausible

⚠ Time-MoE: measured FLOPs are only 0.48× the analytic body-matmul lower bound — the counter is likely missing a fused kernel, so this model's compute-normalized position below is unreliable.

How much of each model this run actually observed

model blocks captured params captured FLOPs of capture pass FLOPs of full forecast capture pass / forecast observed (headline) depth claims qualified
TimesFM 10/20 42.5% 42.5% 42.5% 100.0% 42.5% True
Chronos-2 12/12 94.8% 97.5% 97.5% 100.0% 97.5% False
Sundial 12/12 88.3% 97.9% 21.3% 21.8% 21.3% True
Chronos-Bolt 6/6 39.6% 79.1% 79.1% 100.0% 79.1% True
Timer 8/8 99.8% 99.8% 99.8% 100.0% 99.8% False
Time-MoE 12/12 100.0% 100.0% 50.0% 50.0% 50.0% True
Chronos-T5-Base 12/12 42.2% 100.0% 13.9% 13.9% 13.9% True

⚠ TimesFM: 34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched.

⚠ TimesFM: 10 of 20 matched blocks are skipped by capture_layer_stride=2.

⚠ Sundial: 15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched.

⚠ Sundial: the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved.

⚠ Chronos-Bolt: 28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched.

⚠ Time-MoE: the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved.

⚠ Chronos-T5-Base: 116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched.

⚠ Chronos-T5-Base: the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved.

Computational coverage, as opposed to the section coverage in report/coverage.json: what fraction of each model's own forward work the capture surface saw. This is the single most important caveat on any depth-located claim, and until now it existed only as prose in.

What does this mean?

How to read it
Read the 'observed (headline)' column first. Blocks-captured measures capture_layer_stride loss only and is 1/1 even for a regex that covers just an encoder; params- and FLOPs-captured use whole-model denominators and so do see that. Any model under 90% gets every depth-located finding qualified automatically in the findings list. A headline marked 'or less' is an upper bound taken from the capture-pass/forecast ratio, used when per-block FLOPs did not resolve by name — it still gates correctly, since a model failing the bar even optimistically has certainly failed it.

Limitations
The FLOPs denominators come from the same measured counter as the table above, so a 'suspicious_low' FLOPs check disarms these fractions too. 'FLOPs of full forecast' is measured at this run's decoding settings — for a sampled decoder, num_samples moves the denominator, so it is a property of this run, not of the architecture alone. A blank means not measurable here, which is not the same as full coverage.

Compute completed by depth

How much of each model's *full forecast* has actually happened by a given point on the relative-depth axis that every cross-model depth figure in this report shares. It is the honesty check on those figures: two models at the same relative depth have generally not done the same share of their work.

What does this mean?

How to read it
Each curve rises from 0 toward the fraction of that model's own measured forecast FLOPs its captured blocks account for. Read a depth-located claim about a model whose curve is far below another's at the same x as being about a different amount of computation — a claim at depth 0.5 is only 'halfway through the model' if the curve is near 0.5 there too. Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE and TimesFM top out well short of 1.0 here — that matches the coverage table above rather than contradicting it, and is the reason a depth-located claim about those models carries an automatic qualifier.

Limitations
Normalized by predict.flops (the full forecast, incl. every sampled decode pass) when `budget.measure_predict` measured it — the fix (D2) / named, now built — falling back to the capture-pass FLOPs only when no forecast measurement exists, in which case a curve reaching 1.0 means 'covers its own forward pass', not 'covers the forecast'.

Quality per unit of compute

The practitioner's question, which no accuracy number alone can answer: is the more accurate model simply the one that spent more? Overall MASE is re-plotted against measured cost — FLOPs per series on the left, parameters on the right.

What does this mean?

How to read it
Lower is better on the y axis; further left is cheaper on the x axis. A model in the lower-left is winning outright. A model that is lower but further right is buying its accuracy with compute, and whether that is a good trade is a deployment decision this chart deliberately does not make for you. Both x axes are logarithmic, because model sizes worth comparing differ by orders of magnitude.

Limitations
FLOPs are a measured proxy for cost, not a measure of wall-clock latency — a model can be FLOP-cheap and slow, or FLOP-heavy and fast, depending on how well its shapes map onto the hardware. Both are measured at this run's single context length and horizon and do not extrapolate to others. Models whose internals could not be measured are absent from this chart rather than plotted at zero.

Measured cost of one forward pass over this run's own context length and batch, per model. FLOPs are measured with torch.utils.flop_counter.FlopCounterMode rather than derived from a hand-written formula, so the number is architecture-agnostic and works for a model nobody has written a cost model for. Parameters are split into front-end / body / head by module position relative to the captured blocks.

What does this mean?

How to read it
Latency is a median over repeated calls on this machine and is the least portable row here — read FLOPs and parameters for anything meant to transfer. FLOPs/series divides by the measured batch, so it is comparable across models even when their batch sizes differ. In the compute-normalized panel, down and to the left is better: lower MASE for less compute.

Limitations
FLOPs are not latency: a model with fewer FLOPs can be slower if its shape suits the hardware worse, and a fused or custom kernel the counter cannot see is undercounted (the flops_sanity row states whether the measurement clears an analytic lower bound — a suspicious_low verdict means this model's compute-normalized numbers should not be trusted). The parameter role split is a positional heuristic, not an architectural fact, and is reported as such per model. Cost is measured on this run's context length and horizon only; both scale the answer, attention super-linearly.

Frontend

Input front-end diagnostics

What each model does to its input before any layer runs: quantization resolution, scale-equivariance, context-truncation-from-the-back, and NaN handling.

What this stage tells you

Question
What does each model do to its input BEFORE any layer runs -- how coarsely does it quantize the series, does scaling the input scale the forecast back out cleanly, how does accuracy degrade as recent context goes missing, and what happens when a context value is NaN or the whole context is constant?

How
Reads each re-quantizing tokenizer's own bin geometry to score how coarse one quantization step is relative to a series' own amplitude; calls `predict` on the input scaled up/down by large factors and compares the rescaled-back forecast to the original; calls `predict` with the most recent context progressively withheld (a staleness scenario, not a front-trim) to trace a degradation curve; injects NaN at the front, middle, and back of the context to see whether `predict` errors, silently produces a non-finite forecast, or genuinely handles it; and feeds constant contexts (0, 1, 1e3, 1 plus 1e-7 noise) to check that the forecast and every captured activation stay finite.

Good vs. bad result
Good: a re-quantizing tokenizer's bin width is a small fraction of the series' own amplitude with little saturating clipping, near-zero scale-equivariance residual, graceful (not cliff-shaped) accuracy degradation as recent context is withheld, and a NaN verdict of 'handled' or an explicit, clean error rather than a silently corrupted forecast. Bad: heavy clipping or a large quantization step relative to signal amplitude, a scale-equivariance residual that grows with the scale factor, a sharp cliff at a specific context length, or a 'propagates' NaN verdict -- a non-finite input silently becomes a non-finite forecast with no error to flag it -- or a constant context that yields NaN activations or forecasts (real corpora contain constant windows).

What it cannot tell you
Every diagnostic here is about the FRONT DOOR only -- what happens before or around a forward pass, never what happens inside one (that's every other stage's job). Quantization resolution is meaningful only for a re-quantizing tokenizer and is reported as 'not applicable', never a fabricated zero, for a continuous-embedding architecture. NaN handling is checked at only a handful of hand-placed positions and one missing-fraction, not exhaustively; and none of these probes says anything about forecast quality on ordinary, well-formed input -- L0 is what answers that.

Measured over 64 sampled series, context 480, horizon 64.

Quantization resolution

model status bin width (frac of amplitude) series with any clipping mean clip fraction
TimesFM not_applicable — — —
Chronos-2 not_applicable — — —
Sundial not_applicable — — —
Chronos-Bolt not_applicable — — —
Timer not_applicable — — —
Time-MoE not_applicable — — —
Chronos-T5-Base measured 0.0020 15.6% 0.0010

TimesFM: not applicable — adapter.token_ids is None -- no re-quantizing tokenizer for this probe to measure (continuous patch-MLP embedding)

Chronos-2: not applicable — adapter.token_ids is None -- no re-quantizing tokenizer for this probe to measure (continuous patch-MLP embedding)

Sundial: not applicable — adapter.token_ids is None -- no re-quantizing tokenizer for this probe to measure (continuous patch-MLP embedding)

Chronos-Bolt: not applicable — adapter.token_ids is None -- no re-quantizing tokenizer for this probe to measure (continuous patch-MLP embedding)

Timer: not applicable — adapter.token_ids is None -- no re-quantizing tokenizer for this probe to measure (continuous patch-MLP embedding)

Time-MoE: not applicable — adapter.token_ids is None -- no re-quantizing tokenizer for this probe to measure (continuous patch-MLP embedding)

Chronos-T5-Base's tokenizer maps each context onto a fixed number of bins whose edges are set from that series' own statistics. This asks how coarse one bin actually is relative to a series' own amplitude, and how often the tokenizer's saturating clamp is hit.

What does this mean?

How to read it
A small 'bin width' fraction means the tokenizer can distinguish fine detail; a large one means real amplitude differences within a series collapse onto the same token. Read 'series with any clipping' alongside it — clipping means a value was extreme enough to fall entirely outside the tokenizer's bin range, not just coarsely binned.

Limitations
Only meaningful for a re-quantizing tokenizer — a continuous embedding has no bin geometry for this probe to measure and is reported as 'not applicable', never a fabricated zero (Chronos-2, Chronos-Bolt, Sundial, Time-MoE, Timer and TimesFM in this run). The bin geometry is read directly from the checkpoint's own tokenizer, never hardcoded.

Scale-equivariance

model factor residual (× context scale) max residual non-finite series
TimesFM 1000.0 0.0000 0.0000 0
TimesFM 0.001 0.0000 0.0000 0
Chronos-2 1000.0 0.0104 0.1097 0
Chronos-2 0.001 0.0102 0.1163 0
Sundial 1000.0 0.0000 0.0002 0
Sundial 0.001 0.0310 0.1725 0
Chronos-Bolt 1000.0 0.0096 0.1074 0
Chronos-Bolt 0.001 0.0101 0.1188 0
Timer 1000.0 0.0258 0.2248 0
Timer 0.001 0.0262 0.3136 0
Time-MoE 1000.0 0.0021 0.0158 0
Time-MoE 0.001 0.0368 0.1995 0
Chronos-T5-Base 1000.0 0.0000 0.0000 0
Chronos-T5-Base 0.001 0.0000 0.0000 0

A forecaster that only cares about a series' shape should predict the same thing (after unscaling) whether the input arrives as raw units or multiplied by 1000 or 0.001 — this checks whether that holds in practice.

What does this mean?

How to read it
The residual is the mean absolute difference between the original forecast and the rescaled-then-unscaled one, normalized by each series' own typical step size (the same scale MASE uses) so it's comparable across series. Near zero means the model is effectively scale-equivariant at that factor; a residual that grows with the scale factor means extreme scales genuinely confuse the model's own internal normalization, not just numerical noise. A model flagged as 'not scale-equivariant through this adapter' crossed a threshold set relative to the other models measured in this same run (10x their median worst residual, floored at 1.0 context-scale unit) — read this as 'this adapter likely bypasses the checkpoint's own input normalization', not as an architectural property of the model family.

Limitations
Non-finite series (overflow/underflow at an extreme scale factor) are excluded from the residual average but counted separately — a model that fails outright at 1000× is a different, more severe finding than one that degrades gracefully, and averaging the two together would hide which one happened.

Context truncation from the back

model shape baseline MASE (median) most-truncated MASE (median) most-truncated MASE (raw mean) worst step (frac of total degradation)
TimesFM graceful 1.149 3.810 4.55e+05 0.39
Chronos-2 graceful 1.138 3.601 4.55e+05 0.37
Sundial graceful 1.370 3.982 4.55e+05 0.52
Chronos-Bolt cliff 1.383 3.969 4.59e+05 0.62
Timer insufficient_points — — — —
Time-MoE insufficient_points — — — —
Chronos-T5-Base graceful 1.165 3.430 4.55e+05 0.59

Unlike the existing phase-sensitivity and context-scaling diagnostics (which both trim OLD history from the front), this asks what happens when the most RECENT context is what's missing — a data-staleness or reporting-lag scenario — by keeping the front of the context and asking the model to forecast further ahead to reach the same fixed target.

What does this mean?

How to read it
'Graceful' means accuracy degrades roughly evenly as more recent context goes missing; 'cliff' means it stays flat until one specific length, then jumps sharply — a hard floor below which the model has almost nothing useful left to work with. 'no_degradation' means withholding recent context didn't measurably hurt this model on this corpus.

Limitations
This is a genuinely different axis from phase-sensitivity (sub-patch-width front shifts) and context-scaling/E20 (which keeps recent history intact and only drops old history) — do not read this section as a duplicate or a replacement for either. A model that cannot forecast far enough to bridge a large staleness gap has that length point skipped rather than crashing the whole diagnostic; fewer than 3 surviving points means the shape could not be characterized at all for that model. Baseline/most-truncated MASE and the shape classification all use the per-length MEDIAN, not the raw mean, over series — at the shortest available-context lengths, a handful of series are locally near-flat over that short a window, which sends MASE's own denominator toward its floor and that series' MASE toward an astronomical, non-representative value regardless of forecast quality. The raw mean is shown alongside specifically so a large gap between the two columns is visible as the tell that this is happening, rather than silently absorbed into one number.

NaN / missing-timestep handling

model verdict raised propagated non-finite clean scenarios
TimesFM propagates 0 3 0 3
Chronos-2 handled 0 0 3 3
Sundial propagates 0 3 0 3
Chronos-Bolt handled 0 0 3 3
Timer propagates 0 3 0 3
Time-MoE propagates 0 3 0 3
Chronos-T5-Base handled 0 0 3 3

Whether each model errors, silently propagates a NaN into its forecast, or genuinely handles a missing timestep in its context — three very different outcomes this repo does not assume in advance.

What does this mean?

How to read it
'errors' and 'handled' are both acceptable outcomes (a loud failure is honest; genuine handling is a real capability). 'propagates' is the dangerous case: a non-finite forecast with no error raised looks like an ordinary result until something downstream notices the NaN. 'mixed' means the verdict depends on where in the context the value went missing.

Limitations
Checked at only three hand-placed positions (front/middle/back of context) and one missing-fraction (default 5% of context) — not exhaustive. A model verdict here says nothing about forecast QUALITY on ordinary, well-formed input; it only characterizes what happens at this one specific failure mode.

Constant-context handling

Constant-context probe not measured for Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer and TimesFM (artifact predates the probe or it was disabled via frontend.constant_context).

Whether each model still produces a finite forecast and finite internal activations when its context is perfectly flat (0, 1, 1000, and 1 plus 1e-7 noise), and how far the forecast lands from that constant (in units of |constant| + 1).

What does this mean?

How to read it
'finite' with a deviation near 0 means the model forecasts the flat line back. A finite row with a large deviation means a finite but wrong level. A non-finite forecast or activation (shown in capitals and flagged above) is the dangerous case: no error is raised, the model simply emits NaN, and any consumer that ingests the row inherits it.

Limitations
Four hand-built inputs at the run's own context length and horizon, two series each; behavioral, input/output only. It does not say how close to constant a real window has to be to fail (a model's threshold is its own), and it measures, never repairs: adapters do not silently perturb constant inputs.

Part 3 — Where the forecast forms inside each model

Which layers were worth the expensive analyses below, what each model's own depth profile looks like, and where its forecast crystallizes.

↑ contents
Screen

Layer screening

Which of each model's own captured layers were flagged as worth further, expensive analysis — and what sae.targets: auto trained on.

What this stage tells you

Question
Which of this model's own layers are worth spending the expensive stages (Lens, L1, L2, L3, attention, SAE) on?

How
Scores every layer a model actually captured with a cheap, architecture-agnostic proxy for 'interesting residual-stream activity' — by default, how much a layer's own trajectory through activation space bends and does work — and flags the highest scorers within a compute budget.

Good vs. bad result
Good: the selected layer(s) coincide with, or precede, the layers where L1/L2/L3/Lens later find the strongest real signal — the cheap proxy pointed at something genuine. Bad: a selection sitting at the very first or very last layer with no real signal there, or a run where the report has to state the method fell back to a uniform-stride null because its own selection failed.

What it cannot tell you
This is a cheap proxy for interestingness, not interestingness itself — it won a single-corpus, single-checkpoint-pair bake-off, not a validated rule across architectures. It also only screens the layers `capture_layer_stride` actually captured, so at a stride greater than 1 it cannot see, and cannot recommend, half the model's blocks; it answers 'which captured layer looks most active,' not 'which is the best layer in the whole model.'

TimesFM

Screened all 20 of 20 model blocks (dedicated stride-1 screening pass, independent of capture_layer_stride=2).

A cheap score over this model's own layers, used to decide which few layers are worth spending an expensive analysis (an SAE) on. The bars are the score; the highlighted ones are what the screen selected — the highest-scoring layers, up to a budget of 5 for this model and nothing else.

What does this mean?

How to read it
Height is only meaningful relative to the other bars for the same model — it is a ranking device, not a quantity with units. A screen worth trusting picks layers in the middle-to-late range and clearly separates them from the rest; a flat profile means the screen found nothing to distinguish layers by, and the selection is close to arbitrary.

Limitations
This is a cheap proxy for interestingness, not interestingness itself — it was chosen by a bake-off against random and uniform-stride nulls on one corpus and one checkpoint pair. It also scores only the layers this run actually captured, so if the header above warns that not every block was screened, a better layer may exist that was never looked at.

Chronos-2

Screened all 12 of 12 model blocks (dedicated stride-1 screening pass, independent of capture_layer_stride=1).

A cheap score over this model's own layers, used to decide which few layers are worth spending an expensive analysis (an SAE) on. The bars are the score; the highlighted ones are what the screen selected — the highest-scoring layers, up to a budget of 3 for this model and nothing else.

What does this mean?

How to read it
Height is only meaningful relative to the other bars for the same model — it is a ranking device, not a quantity with units. A screen worth trusting picks layers in the middle-to-late range and clearly separates them from the rest; a flat profile means the screen found nothing to distinguish layers by, and the selection is close to arbitrary.

Limitations
This is a cheap proxy for interestingness, not interestingness itself — it was chosen by a bake-off against random and uniform-stride nulls on one corpus and one checkpoint pair. It also scores only the layers this run actually captured, so if the header above warns that not every block was screened, a better layer may exist that was never looked at.

Sundial

Screened all 12 of 12 model blocks (dedicated stride-1 screening pass, independent of capture_layer_stride=1).

A cheap score over this model's own layers, used to decide which few layers are worth spending an expensive analysis (an SAE) on. The bars are the score; the highlighted ones are what the screen selected — the highest-scoring layers, up to a budget of 3 for this model and nothing else.

What does this mean?

How to read it
Height is only meaningful relative to the other bars for the same model — it is a ranking device, not a quantity with units. A screen worth trusting picks layers in the middle-to-late range and clearly separates them from the rest; a flat profile means the screen found nothing to distinguish layers by, and the selection is close to arbitrary.

Limitations
This is a cheap proxy for interestingness, not interestingness itself — it was chosen by a bake-off against random and uniform-stride nulls on one corpus and one checkpoint pair. It also scores only the layers this run actually captured, so if the header above warns that not every block was screened, a better layer may exist that was never looked at.

Chronos-Bolt

Screened all 6 of 6 model blocks (dedicated stride-1 screening pass, independent of capture_layer_stride=1).

A cheap score over this model's own layers, used to decide which few layers are worth spending an expensive analysis (an SAE) on. The bars are the score; the highlighted ones are what the screen selected — the highest-scoring layers, up to a budget of 2 for this model and nothing else.

What does this mean?

How to read it
Height is only meaningful relative to the other bars for the same model — it is a ranking device, not a quantity with units. A screen worth trusting picks layers in the middle-to-late range and clearly separates them from the rest; a flat profile means the screen found nothing to distinguish layers by, and the selection is close to arbitrary.

Limitations
This is a cheap proxy for interestingness, not interestingness itself — it was chosen by a bake-off against random and uniform-stride nulls on one corpus and one checkpoint pair. It also scores only the layers this run actually captured, so if the header above warns that not every block was screened, a better layer may exist that was never looked at.

Timer

Screened all 8 of 8 model blocks (dedicated stride-1 screening pass, independent of capture_layer_stride=1).

A cheap score over this model's own layers, used to decide which few layers are worth spending an expensive analysis (an SAE) on. The bars are the score; the highlighted ones are what the screen selected — the highest-scoring layers, up to a budget of 2 for this model and nothing else.

What does this mean?

How to read it
Height is only meaningful relative to the other bars for the same model — it is a ranking device, not a quantity with units. A screen worth trusting picks layers in the middle-to-late range and clearly separates them from the rest; a flat profile means the screen found nothing to distinguish layers by, and the selection is close to arbitrary.

Limitations
This is a cheap proxy for interestingness, not interestingness itself — it was chosen by a bake-off against random and uniform-stride nulls on one corpus and one checkpoint pair. It also scores only the layers this run actually captured, so if the header above warns that not every block was screened, a better layer may exist that was never looked at.

Time-MoE

Screened all 12 of 12 model blocks (dedicated stride-1 screening pass, independent of capture_layer_stride=1).

A cheap score over this model's own layers, used to decide which few layers are worth spending an expensive analysis (an SAE) on. The bars are the score; the highlighted ones are what the screen selected — the highest-scoring layers, up to a budget of 3 for this model and nothing else.

What does this mean?

How to read it
Height is only meaningful relative to the other bars for the same model — it is a ranking device, not a quantity with units. A screen worth trusting picks layers in the middle-to-late range and clearly separates them from the rest; a flat profile means the screen found nothing to distinguish layers by, and the selection is close to arbitrary.

Limitations
This is a cheap proxy for interestingness, not interestingness itself — it was chosen by a bake-off against random and uniform-stride nulls on one corpus and one checkpoint pair. It also scores only the layers this run actually captured, so if the header above warns that not every block was screened, a better layer may exist that was never looked at.

Chronos-T5-Base

Screened all 12 of 12 model blocks (dedicated stride-1 screening pass, independent of capture_layer_stride=1).

A cheap score over this model's own layers, used to decide which few layers are worth spending an expensive analysis (an SAE) on. The bars are the score; the highlighted ones are what the screen selected — the highest-scoring layers, up to a budget of 3 for this model and nothing else.

What does this mean?

How to read it
Height is only meaningful relative to the other bars for the same model — it is a ranking device, not a quantity with units. A screen worth trusting picks layers in the middle-to-late range and clearly separates them from the rest; a flat profile means the screen found nothing to distinguish layers by, and the selection is close to arbitrary.

Limitations
This is a cheap proxy for interestingness, not interestingness itself — it was chosen by a bake-off against random and uniform-stride nulls on one corpus and one checkpoint pair. It also scores only the layers this run actually captured, so if the header above warns that not every block was screened, a better layer may exist that was never looked at.

A cheap, architecture-agnostic pre-screen run on every one of a model's own captured layers before any expensive downstream stage (lens/L1/L2/L3/attention/SAE) -- the layer(s) it picks per model are what `sae.targets: auto` trains a dictionary on. The bar height is the selector's own internal score (not comparable across models or across methods); the highlighted bars are the layers actually selected, within this run's compute budget.

What does this mean?

How to read it
Read this as "where this method thinks it's worth spending expensive compute", not as a finished interpretability claim -- nothing else in the report depends on it being right, only on what gets trained downstream if `sae.targets` is left empty.

Limitations
The default method (`work_bend`) won a single-corpus, single-checkpoint-pair bake-off (2026-08-05) — real signal, not a settled cross-architecture rule. On some models/corpora the theoretical best possible selector has little room to beat a free uniform-stride null; a method not beating it there is not necessarily broken. `factor_emergence` has a known, diagnosed weighting flaw and underperformed in that bake-off.

Profile

Model internals

Per-model depth profiles: where representations expand, where family information becomes decodable, and how far each layer moves from raw input statistics.

What this stage tells you

Question
What does each model's own internal representation look like at each depth, on its own terms?

How
For each layer of each model separately, measures how many effective dimensions its activations actually use, how close its representation still is to simple statistics of the raw input, and how well a simple classifier can read the data's family straight out of it.

Good vs. bad result
Good: a clear expand-then-compress effective-dimensionality curve, a family-decodability curve that rises well above chance at some depth, and a representation that visibly moves away from raw-input statistics with depth. Bad: a flat effective-dimensionality curve or a family-probe accuracy that never clears chance — either means this per-model view has nothing to say about that model's depth behavior.

What it cannot tell you
Everything here is per-model and descriptive — it never directly compares models against each other (L1 exists for that). 'Decodable' does not mean 'used by the forecast': a layer can carry perfect family information the model itself never reads out. It's also limited to the window-pooled representation, so structure that lives only within a window and not across windows is invisible to it.

effective dimensionality (participation ratio)

Participation ratio of each layer's activation covariance spectrum — an effective count of how many dimensions the representation actually spreads its variance across (not the raw width of the layer), per model, per depth.

What does this mean?

How to read it
Higher means the representation is using more of its available capacity at that layer; a dip means activity is collapsing onto fewer effective directions there. Compare *shape* across depth within a model (expansion then compression is a common pattern) rather than comparing raw values across models with different widths — a 64-dim and a 48-dim layer aren't on the same scale.

Limitations
This is a per-model diagnostic, not a cross-model comparison — two models can have very different effective-dimensionality curves and still solve the forecasting task equally well. It also only sees the *window-pooled* representation, so within-window structure that pooling discards isn't reflected here.

CKA with input features

Linear CKA between each layer's window states and a hand-crafted baseline of that same window's raw values, FFT magnitudes, and summary statistics — how far, per model and per depth, the representation has moved from simple local input statistics.

What does this mean?

How to read it
Near 1.0 means this layer is still basically a linear function of raw local window stats (typical right after an embedding, before much mixing). Near 0 means the representation encodes something the simple local baseline can't see at all, most often because attention has already mixed information across positions/windows before this depth — that decorrelates a *window's* state from that *same window's* own raw statistics even though the information hasn't vanished, it's just no longer purely local.

Limitations
A curve that's low and flat across every depth (including layer 0) usually means mixing saturates fast, which is expected for architectures with very few tokens per context (a handful of patches attend to each other almost immediately). Architectures with many more tokens per context typically show a more gradual decline instead. Low here is neither good nor bad on its own: it says the representation isn't simply local, not whether it's useful.

family probe accuracy (held-out series)

Held-out logistic-regression accuracy predicting the benchmark family from each layer's window states (PCA-reduced first), split by series so windows of a training series never leak into validation — where in depth family identity becomes linearly decodable.

What does this mean?

How to read it
The dotted line is chance (majority-class baseline for however many families exist); the dash-dot line per model is a permutation null — the identical probe refit with family labels reshuffled at the series level, showing how high accuracy can get by chance alone on this exact split and architecture. A peak well above *both* lines means that depth linearly encodes which kind of series this is. The peak layer is called out in the findings below as where family information is most accessible.

Limitations
'Decodable' is not the same as 'used by the forecast' — a layer can carry perfect family information the model never actually reads out (cross-check against the tuned lens and behavioral sensitivity to see what's causally load-bearing). Accuracy is also capped by how separable the configured families actually are in the benchmark, not just by the model. The permutation null is the stronger of the two floors — the majority-class chance line ignores the classifier and split entirely, so a probe can clear it while still scoring within the null's own p95, which means its apparent decodability could be search/split artifact rather than real information.

Chronos-2 — every measured layer

layer rel. depth eff. dim CKA to input probe acc. probe − chance screen score screened in mean Δact (all corruptions) best restoration closest layer in another model that layer's CKA
encoder.block.0 0.000 9.561 0.005 0.775 0.347 -1.720 False 0.599 0.047 Sundial:model.layers.0 0.912
encoder.block.1 0.091 13.145 0.006 0.920 0.493 -1.275 False 0.613 layer not patched Sundial:model.layers.0 0.897
encoder.block.2 0.182 17.485 0.007 0.927 0.500 -1.294 False 0.629 0.048 Chronos-Bolt:encoder.block.2 0.890
encoder.block.3 0.273 24.555 0.008 0.936 0.508 -0.938 False 0.645 layer not patched Chronos-Bolt:encoder.block.2 0.873
encoder.block.4 0.364 33.311 0.010 0.943 0.516 -0.872 False 0.652 0.042 Chronos-Bolt:encoder.block.2 0.845
encoder.block.5 0.455 45.707 0.012 0.949 0.522 -0.274 False 0.672 layer not patched Chronos-Bolt:encoder.block.3 0.816
encoder.block.6 0.545 53.797 0.013 0.952 0.525 -0.102 False 0.681 0.040 Chronos-Bolt:encoder.block.3 0.792
encoder.block.7 0.636 66.953 0.017 0.959 0.532 0.080 False 0.707 layer not patched Chronos-Bolt:encoder.block.4 0.714
encoder.block.8 0.727 65.967 0.018 0.962 0.535 0.265 True 0.709 0.043 Chronos-Bolt:encoder.block.4 0.635
encoder.block.9 0.818 59.679 0.019 0.965 0.538 0.082 False 0.725 layer not patched Time-MoE:model.layers.10 0.555
encoder.block.10 0.909 48.467 0.018 0.958 0.531 4.977 True 0.749 0.020 Time-MoE:model.layers.10 0.512
encoder.block.11 1.000 4.140 0.009 0.960 0.533 1.072 True 0.381 layer not patched Chronos-T5-Base:encoder.block.10 0.428

Every per-layer quantity this run measured for Chronos-2, joined by layer name across the stages that produced them.

Chronos-Bolt — every measured layer

layer rel. depth eff. dim CKA to input probe acc. probe − chance screen score screened in skip-lens MASE mean Δact (all corruptions) best restoration closest layer in another model that layer's CKA
encoder.block.0 0.000 6.011 0.010 0.710 0.283 -2.024 False 3.809 0.441 0.062 Sundial:model.layers.0 0.927
encoder.block.1 0.091 8.814 0.012 0.774 0.346 -1.502 False 3.265 0.504 layer not patched Sundial:model.layers.0 0.907
encoder.block.2 0.182 12.506 0.012 0.794 0.366 -0.214 False 2.993 0.531 0.046 Sundial:model.layers.1 0.894
encoder.block.3 0.273 19.907 0.010 0.813 0.386 0.151 False 2.872 0.554 layer not patched Chronos-2:encoder.block.2 0.856
encoder.block.4 0.364 29.700 0.011 0.829 0.401 3.276 True 2.855 0.565 0.048 Chronos-2:encoder.block.4 0.793
encoder.block.5 0.455 35.032 0.012 0.805 0.378 0.313 True 2.680 0.535 layer not patched Chronos-2:encoder.block.5 0.637

Every per-layer quantity this run measured for Chronos-Bolt, joined by layer name across the stages that produced them.

Chronos-T5-Base — every measured layer

layer rel. depth eff. dim CKA to input probe acc. probe − chance screen score screened in skip-lens MASE mean Δact (all corruptions) best restoration closest layer in another model that layer's CKA
encoder.block.0 0.000 3.349 0.031 0.635 0.208 -1.612 False 4.710 0.285 0.253 Chronos-2:encoder.block.0 0.316
encoder.block.1 0.043 5.359 0.028 0.705 0.277 -1.369 False 4.606 0.253 layer not patched Chronos-2:encoder.block.2 0.406
encoder.block.2 0.087 5.260 0.024 0.759 0.331 -0.874 False 4.515 0.230 0.303 Chronos-2:encoder.block.2 0.486
encoder.block.3 0.130 6.197 0.027 0.818 0.390 0.126 False 4.087 0.230 layer not patched Chronos-2:encoder.block.2 0.525
encoder.block.4 0.174 6.708 0.027 0.821 0.394 1.287 True 3.662 0.230 0.379 Chronos-2:encoder.block.2 0.533
encoder.block.5 0.217 7.469 0.028 0.852 0.425 0.032 False 3.465 0.227 layer not patched Chronos-2:encoder.block.3 0.549
encoder.block.6 0.261 8.598 0.029 0.866 0.438 -0.583 False 3.362 0.229 0.399 Chronos-2:encoder.block.3 0.559
encoder.block.7 0.304 10.113 0.028 0.905 0.477 -0.635 False 3.750 0.231 layer not patched Chronos-2:encoder.block.4 0.576
encoder.block.8 0.348 11.680 0.030 0.930 0.503 0.299 False 3.289 0.231 0.429 Chronos-2:encoder.block.4 0.589
encoder.block.9 0.391 14.102 0.029 0.928 0.500 -0.027 False 3.145 0.242 layer not patched Chronos-2:encoder.block.6 0.618
encoder.block.10 0.435 15.984 0.025 0.951 0.524 2.840 True 3.005 0.269 0.420 Chronos-2:encoder.block.6 0.620
encoder.block.11 0.478 9.977 0.025 0.935 0.508 0.515 True 2.973 0.325 layer not patched Chronos-2:encoder.block.7 0.441

Every per-layer quantity this run measured for Chronos-T5-Base, joined by layer name across the stages that produced them.

Sundial — every measured layer

layer rel. depth eff. dim CKA to input probe acc. probe − chance screen score screened in skip-lens MASE mean Δact (all corruptions) best restoration closest layer in another model that layer's CKA
model.layers.0 0.000 7.426 0.007 0.688 0.261 -2.036 False 4.317 0.551 0.078 Chronos-Bolt:encoder.block.0 0.927
model.layers.1 0.091 10.862 0.010 0.825 0.398 -0.837 False 4.091 0.566 layer not patched Chronos-Bolt:encoder.block.1 0.905
model.layers.2 0.182 15.230 0.011 0.869 0.442 -1.495 False 3.937 0.619 0.054 Chronos-Bolt:encoder.block.2 0.751
model.layers.3 0.273 17.191 0.010 0.925 0.498 1.798 True 3.647 0.677 layer not patched Time-MoE:model.layers.6 0.630
model.layers.4 0.364 6.184 0.004 0.941 0.514 -0.126 False 3.435 0.703 0.048 Time-MoE:model.layers.6 0.593
model.layers.5 0.455 6.751 0.004 0.936 0.508 -0.119 False 3.231 0.724 layer not patched Time-MoE:model.layers.6 0.612
model.layers.6 0.545 7.707 0.004 0.942 0.515 0.331 False 3.144 0.734 0.049 Time-MoE:model.layers.6 0.633
model.layers.7 0.636 9.534 0.005 0.940 0.513 0.024 False 2.959 0.745 layer not patched Time-MoE:model.layers.6 0.655
model.layers.8 0.727 12.810 0.006 0.937 0.510 -0.561 False 2.740 0.751 0.038 Time-MoE:model.layers.7 0.676
model.layers.9 0.818 17.225 0.008 0.929 0.502 0.228 False 2.493 0.750 layer not patched Time-MoE:model.layers.7 0.706
model.layers.10 0.909 26.981 0.011 0.932 0.504 2.290 True 2.203 0.732 0.047 Time-MoE:model.layers.8 0.741
model.layers.11 1.000 11.874 0.013 0.930 0.503 0.503 True 2.208 0.701 layer not patched Time-MoE:model.layers.10 0.661

Every per-layer quantity this run measured for Sundial, joined by layer name across the stages that produced them.

Time-MoE — every measured layer

layer rel. depth eff. dim CKA to input probe acc. probe − chance screen score screened in skip-lens MASE mean Δact (all corruptions) best restoration closest layer in another model that layer's CKA
model.layers.0 0.000 1.835 0.000 0.589 0.161 -0.874 False 4.420 0.064 0.059 Chronos-2:encoder.block.4 0.328
model.layers.1 0.091 2.932 0.003 0.736 0.308 1.310 True 4.946 0.153 layer not patched Sundial:model.layers.1 0.459
model.layers.2 0.182 8.694 0.009 0.909 0.482 0.041 False 4.805 0.167 0.059 Sundial:model.layers.1 0.532
model.layers.3 0.273 13.962 0.008 0.922 0.495 -0.425 False 4.838 0.193 layer not patched Sundial:model.layers.2 0.544
model.layers.4 0.364 15.387 0.007 0.929 0.501 -0.854 False 4.767 0.215 0.059 Sundial:model.layers.3 0.574
model.layers.5 0.455 19.452 0.008 0.937 0.509 -0.971 False 4.737 0.245 layer not patched Sundial:model.layers.10 0.636
model.layers.6 0.545 22.910 0.009 0.935 0.507 -1.048 False 4.690 0.292 0.061 Sundial:model.layers.10 0.707
model.layers.7 0.636 21.205 0.009 0.941 0.513 -1.113 False 4.691 0.338 layer not patched Sundial:model.layers.10 0.722
model.layers.8 0.727 26.102 0.011 0.946 0.519 -1.049 False 4.642 0.393 0.061 Sundial:model.layers.10 0.741
model.layers.9 0.818 26.625 0.010 0.947 0.520 -1.137 False 5.231 0.503 layer not patched Sundial:model.layers.10 0.689
model.layers.10 0.909 22.012 0.009 0.934 0.507 4.663 True 6.759 0.539 0.064 Sundial:model.layers.10 0.698
model.layers.11 1.000 1.178 0.000 0.921 0.494 1.458 True 5.929 0.359 layer not patched Sundial:model.layers.11 0.461

Every per-layer quantity this run measured for Time-MoE, joined by layer name across the stages that produced them.

Timer — every measured layer

layer rel. depth eff. dim CKA to input probe acc. probe − chance screen score screened in skip-lens MASE mean Δact (all corruptions) best restoration closest layer in another model that layer's CKA
model.layers.0 0.000 30.456 0.009 0.741 0.314 -2.063 False 3.757 0.695 0.109 Sundial:model.layers.1 0.413
model.layers.1 0.143 38.373 0.012 0.820 0.393 -0.076 False 3.806 0.684 layer not patched Time-MoE:model.layers.10 0.512
model.layers.2 0.286 40.063 0.015 0.846 0.418 0.085 False 3.936 0.667 0.108 Time-MoE:model.layers.10 0.596
model.layers.3 0.429 48.000 0.017 0.839 0.412 0.153 False 3.853 0.659 layer not patched Time-MoE:model.layers.10 0.573
model.layers.4 0.571 54.565 0.014 0.846 0.419 0.162 True 3.768 0.686 0.153 Time-MoE:model.layers.10 0.535
model.layers.5 0.714 45.424 0.012 0.848 0.421 -0.257 False 3.499 0.703 layer not patched Time-MoE:model.layers.10 0.537
model.layers.6 0.857 25.166 0.008 0.813 0.386 1.970 True 3.201 0.661 0.188 Time-MoE:model.layers.10 0.483
model.layers.7 1.000 8.168 0.002 0.690 0.263 0.026 False 2.843 0.193 layer not patched Time-MoE:model.layers.10 0.224

Every per-layer quantity this run measured for Timer, joined by layer name across the stages that produced them.

TimesFM — every measured layer

layer rel. depth eff. dim CKA to input probe acc. probe − chance screen score screened in skip-lens MASE mean Δact (all corruptions) best restoration closest layer in another model that layer's CKA
stacked_xf.0 0.000 25.507 0.002 0.648 0.221 -0.626 False 3.435 0.607 0.006 Chronos-2:encoder.block.3 0.358
stacked_xf.2 0.105 32.963 0.007 0.840 0.413 0.011 False 2.974 0.395 layer not patched Chronos-2:encoder.block.5 0.414
stacked_xf.4 0.211 36.859 0.010 0.917 0.490 -0.714 False 2.833 0.341 0.059 Chronos-2:encoder.block.7 0.426
stacked_xf.6 0.316 31.232 0.009 0.925 0.498 0.501 False 2.780 0.316 layer not patched Chronos-2:encoder.block.7 0.391
stacked_xf.8 0.421 25.688 0.008 0.931 0.503 -1.280 False 2.696 0.310 0.062 Chronos-2:encoder.block.7 0.358
stacked_xf.10 0.526 23.025 0.007 0.935 0.507 1.149 True 2.654 0.305 layer not patched Chronos-2:encoder.block.8 0.346
stacked_xf.12 0.632 19.440 0.006 0.939 0.512 -1.409 False 2.637 0.307 0.072 Chronos-2:encoder.block.11 0.327
stacked_xf.14 0.737 14.725 0.005 0.937 0.510 -0.388 False 2.643 0.292 layer not patched Chronos-2:encoder.block.11 0.306
stacked_xf.16 0.842 7.931 0.003 0.904 0.477 0.213 False 2.544 0.315 0.056 Time-MoE:model.layers.6 0.297
stacked_xf.18 0.947 2.761 0.003 0.865 0.437 4.836 True 2.455 0.289 layer not patched Sundial:model.layers.4 0.403

Every per-layer quantity this run measured for TimesFM, joined by layer name across the stages that produced them.

One row per captured layer, one column per per-layer quantity the run measured, so a single layer can be read across every stage at once instead of by cross-referencing five figures.

What does this mean?

How to read it
Columns come from different stages and mean different things. eff. dim and CKA to input are descriptive geometry (how many directions the layer's representation spreads over, and how much it still resembles raw input statistics). probe acc. is decodability of the data family from that layer, worth reading as probe − chance. screen score is the cheap interestingness heuristic that chose sae.targets: auto, and screened in marks its picks. skip-lens MASE is the forecast quality obtainable from that layer through the model's own head — it descending and then flattening is the crystallization the Forecast lens section measures. mean Δact and best restoration are the layer's average reaction to the corruption battery and the most any single patch at that layer recovered. closest layer in other model is that layer's argmax over the cross-model CKA matrix.

Limitations
A blank cell means that stage did not measure that layer — stages run at independent strides (l3.patching.layer_stride, capture_layer_stride), so absence is a config fact, not a zero. Nothing here is causal except best restoration, and that is causal within its own model only. Relative depth is a fraction of the model's whole stack including surfaces this run never captured, so the last row of a partially-observed model is not that model's output.

Lens

Forecast lens

Per-layer forecasts read out with the model's own head: where in depth the final forecast crystallizes, and how much of it a linear probe already sees.

What this stage tells you

Question
At what depth does each model's forecast actually take its final shape?

How
Feeds each layer's own activations into the model's normal output pathway, as if that layer were the last one, to see how good a forecast it already produces; separately, fits a small linear readout per layer to check whether the forecast is already recoverable there even if the model's own head can't decode it yet.

Good vs. bad result
Good: a curve that reaches close to final accuracy well before the last layer ('crystallizes early'), consistent with a similarly early rise in the tuned-lens readout. Bad: a flat, uninformative curve where the tuned lens also shows nothing until the very last layer — the forecast genuinely needs the model's full depth — or the two disagree sharply, itself informative about miscalibrated early layers.

What it cannot tell you
The direct (skip-lens) readout can be misleadingly pessimistic about early layers for reasons unrelated to information content — the model's final block was never trained to decode them — which is exactly why the tuned-lens readout exists alongside it. Even together, both only detect *linearly* recoverable structure; a forecast could be present in a layer in a form no linear readout can see.

Skip lens unavailable for Chronos-2

Chronos-2: the forecast head reads positions that a final-block patch of this adapter's token_slice span cannot reach, so every layer would return an identical forecast. A skip-lens curve is produced by overwriting a layer's states and reading the model's own forecast; where the forecast head does not read the overwritten positions, every layer returns the identical forecast, so the curve would be flat by construction rather than as a finding. It is withheld instead. The tuned lens below is a separate mechanism (a probe fit on stored states, no patching) and does cover Chronos-2.

The logit-lens analog for forecasting: layer-l's token states are patched into the model's own final block, and its own head decodes a forecast from them — using the real output pathway, no access to internals beyond the existing patch primitive. The dotted line is each model's true final-layer MASE.

What does this mean?

How to read it
A curve that drops toward the final-MASE line early in depth means the forecast is already largely formed well before the last layer ('crystallizes early'); a curve that only reaches it at the last point means the model needs its full depth. The 'crystallization depth' finding below is the first relative depth whose MASE lands within a configurable tolerance of final.

Limitations
Like classic logit lens, early layers can be miscalibrated for reasons unrelated to information content (the final block/head wasn't trained to decode them) — a high early MASE doesn't prove the forecast isn't already linearly present, only that this particular readout can't see it yet. That's exactly the gap the tuned lens below (a probe fit specifically for each layer) is designed to close.

Tuned lens: linear readout from window states

A ridge probe fit per layer (held-out by series) predicting either the model's own final forecast (solid) or the true target (dashed) from that layer's window states — a readout that, unlike the skip lens above, is tuned for each layer instead of relying on the final head to decode it.

What does this mean?

How to read it
High solid-line R² early in depth means the forecast is already linearly recoverable from that layer even if the skip lens (constrained to the model's own head) can't show it yet. The dashed 'ground truth' line is usually lower and caps out at whatever the model's own final-layer accuracy allows — it can't exceed how good the forecast itself is.

Limitations
A linear probe only detects *linear* readability; a layer could carry the forecast in a nonlinear form invisible here. Splits are by held-out series (matching the L2 discipline), so R² reflects generalization to new series, not in-sample fit.

Skip-lens MASE by horizon step

How early in each model's depth an individual forecast step becomes readable, instead of the whole horizon averaged into one curve. Each model has its own colour scale — compare the pattern within a panel, not the shade across panels.

The skip-lens MASE curve above, resolved by forecast horizon step instead of averaged over the whole horizon: each cell is that layer's skip-lens forecast error at that one specific step ahead.

What does this mean?

How to read it
A column that stays dark (low MASE) across most of depth means that horizon step crystallizes early; a column that only lightens near the bottom row means the model needs its full depth to forecast that far ahead. Comparing near-term columns (small horizon step) against far-term columns answers whether a model commits to its short-horizon forecast earlier in depth than its long-horizon one.

Limitations
Same caveats as the whole-horizon skip lens above (miscalibration at early layers is a readout limitation, not proof the forecast isn't linearly present yet — see the tuned lens for that) — colors are not comparable across models, only within one model's own grid.

Crystallization depth by horizon step

Gaps are unresolved steps, not missing data: TimesFM 23 of 64 steps (its deepest captured layer, stacked_xf.18, is still 0.80 MASE away from reproducing the model's own forecast). At those horizon steps the skip-lens MASE never came within tolerance of that step's own final-layer MASE at any captured layer, so there is no crossing depth to plot. The usual cause is that the deepest captured layer is not the model's true final block — under a capture stride above 1 the last blocks are skipped, so the curve stops short of where the forecast actually finishes forming, and the steps that finish latest are the ones left unresolved. Capturing at stride 1 closes it. Read a gap as 'not resolved within the layers measured', never as a deeper crystallization point.

For each forecast horizon step independently, the first relative depth whose skip-lens MASE at that step lands within tolerance of that step's own final-layer MASE — the same crystallization-depth definition above, just computed once per horizon step instead of once for the whole averaged curve.

What does this mean?

How to read it
A rising curve (crystallization depth increasing with horizon step) means the model settles its near-term forecast earlier in depth than its far-term one — plausible if later steps need more integrated context. A flat curve means the model commits to the whole horizon at once, regardless of how far out a given step is.

Limitations
A gap in the curve (missing marker) means that horizon step's skip-lens MASE never came within tolerance at any captured layer — read as 'not resolved', not as 'infinitely deep'.

Part 4 — Do the models represent things the same way?

Representational geometry and linear stitching between every model pair, how each model clusters the benchmark on its own, and how similar every model pair is across every metric this pipeline measures independently of the concept atlas below.

↑ contents
L1

Representational geometry

Linear CKA between every layer pair: where the two models' representations share geometry. Correlational evidence only.

What this stage tells you

Question
Do the models represent this data similarly at all?

How
Compares every pair of layers, one from each model, by how similarly they organize the same set of series geometrically — a comparison that ignores each layer's own arbitrary rotation and scale — and checks the result against a shuffled-series control.

Good vs. bad result
Good: a peak similarity that sits clearly above the shuffled-series null, especially one that follows a sensible pattern by depth (early layers matching early layers). Bad: a similarity score that's high everywhere and barely rises above the null — a sign the number mostly reflects that the models see the same input, not that they've learned anything in common.

What it cannot tell you
This is correlational: a high score never establishes that the two models compute the same thing, only that their representations are geometrically similar — which two under-trained or too-simple networks can also produce for reasons that have nothing to do with shared learning. It says nothing about mechanism; L2 and L3 exist specifically because this stage can't answer that.

Linear CKA between every layer pair of the two models, in feature space (invariant to rotation/scaling of either representation, so it compares geometry, not raw coordinates). This is the first, cheapest cross-model question: do these two layers organize the same benchmark similarly at all?

How to read this number

How to read it
1.0 is identical geometry up to rotation; 0 is unrelated. High values are expected and not by themselves impressive: both models process the exact same structured input, and CKA is well known to be inflated by shared input-driven variance alone, independent of any shared computation — that is exactly why L2's stitching-gain-over-input-baseline exists as the corrected comparison. The dotted reference line on the depth-correspondence chart below is an empirical null: the same statistic recomputed after shuffling which series lines up with which. A peak far above that null line means the number is at least tracking genuine per-sample correspondence (not an artifact of comparing any two reasonable encoders) — it does not by itself mean the models learned the same thing.

Limitations
Correlational only; says nothing about mechanism (see L2/L3 for that). Sensitive to how many series/windows are sampled — the CI widens for family-conditioned values with few series. Layer-pair geometry can also look similar simply because both networks are under-trained or too small relative to the input's effective dimensionality — that inflates CKA the same way shared input structure does, and the two are hard to tell apart from this number alone.

Peak similarity, every pair

model A model B peak CKA at rel. depth shuffled null
TimesFM Chronos-2 0.43 [0.42, 0.44] L4 ↔ L7 0.21 / 0.64 0.038
TimesFM Sundial 0.41 [0.40, 0.43] L4 ↔ L2 0.21 / 0.18 0.051
TimesFM Chronos-Bolt 0.38 [0.37, 0.40] L4 ↔ L2 0.21 / 0.18 0.011
TimesFM Timer 0.35 [0.35, 0.37] L4 ↔ L2 0.21 / 0.29 0.036
TimesFM Time-MoE 0.37 [0.35, 0.38] L4 ↔ L9 0.21 / 0.82 0.048
TimesFM Chronos-T5-Base 0.34 [0.33, 0.36] L4 ↔ L10 0.21 / 0.43 0.026
Chronos-2 Sundial 0.91 [0.91, 0.92] L0 ↔ L0 0.00 / 0.00 0.002
Chronos-2 Chronos-Bolt 0.91 [0.90, 0.91] L0 ↔ L0 0.00 / 0.00 0.001
Chronos-2 Timer 0.49 [0.47, 0.50] L7 ↔ L2 0.64 / 0.29 0.075
Chronos-2 Time-MoE 0.60 [0.59, 0.61] L7 ↔ L10 0.64 / 0.91 0.064
Chronos-2 Chronos-T5-Base 0.62 [0.61, 0.64] L6 ↔ L10 0.55 / 0.43 0.076
Sundial Chronos-Bolt 0.93 [0.92, 0.93] L0 ↔ L0 0.00 / 0.00 0.001
Sundial Timer 0.53 [0.51, 0.54] L11 ↔ L2 1.00 / 0.29 0.025
Sundial Time-MoE 0.74 [0.74, 0.75] L10 ↔ L8 0.91 / 0.73 0.292
Sundial Chronos-T5-Base 0.53 [0.51, 0.56] L11 ↔ L10 1.00 / 0.43 0.018
Chronos-Bolt Timer 0.43 [0.41, 0.45] L2 ↔ L1 0.18 / 0.14 0.010
Chronos-Bolt Time-MoE 0.47 [0.46, 0.49] L4 ↔ L10 0.36 / 0.91 0.053
Chronos-Bolt Chronos-T5-Base 0.56 [0.54, 0.57] L4 ↔ L10 0.36 / 0.43 0.090
Timer Time-MoE 0.60 [0.59, 0.61] L2 ↔ L10 0.29 / 0.91 0.063
Timer Chronos-T5-Base 0.39 [0.38, 0.42] L2 ↔ L10 0.29 / 0.43 0.052
Time-MoE Chronos-T5-Base 0.53 [0.51, 0.55] L10 ↔ L10 0.91 / 0.43 0.044

The peak-CKA layer pair for every model pair in this run, each against its own shuffled-series null. The heatmap at the top of this section is the first row of this table.

What does this mean?

How to read it
Compare each pair's peak against ITS OWN null column, never against another pair's peak: the null absorbs how much similarity the shared input alone produces for that particular pair of architectures, and that quantity is not the same for two pairs.

Limitations
Every value is a maximum over the two models' layer grids, so larger models offer more candidates to maximize over and their peaks are biased upward relative to smaller ones. The relative depths use the 'block' axis, so a model with an uncaptured surface legitimately never reaches 1.0.

Layer-pair similarity, every pair

17 more pair(s)

The same layer-by-layer CKA matrix as the heatmap at the top of this section, for every model pair, on one shared 0-1 colour scale so the panels are comparable to each other.

Layer correspondence by depth, every pair

17 more pair(s)

For each pair, every layer of model A matched to its best-matching layer of model B, against relative depth on the 'block' axis. The dotted line in each panel is that pair's own shuffled-series null. All panels share a 0-1 y-axis, so curve heights are directly comparable between pairs.

For each layer of the first model, the best-matching layer of the second model and their CKA, plotted against relative depth — a compact way to see whether early layers match early layers (architectures process the input in a similar order) or whether matches jump around in depth.

What does this mean?

How to read it
A roughly monotonic line (early-to-early, late-to-late) suggests comparable processing order despite different depths/patch sizes. A flat, uniformly-high line usually means the input's own structure dominates every layer's geometry about equally — see the null-line caveat above.

Limitations
The 'best match' is a max over the other model's layers, which mechanically biases the curve upward versus any single fixed pairing (more candidates to match against) and can look artificially smooth even when the underlying matrix is noisy — always sanity-check against the heatmap above. The x-axis is the 'block' depth axis: 'block' places a layer by its position over the model's whole stack, including any surface this run never captured, so a model whose captured layers stop partway up it legitimately ends short of 1.0 instead of being stretched to fill the axis, as Chronos-Bolt, Chronos-T5-Base and TimesFM do in this run.

Family-conditioned agreement, every pair

Peak CKA computed within one benchmark family at a time, for every model pair. Read down a family (which pairs agree on this kind of series?) and across families (does one family separate every pair, or only some?) — a family where one pair's bar is much lower than its neighbours is where those two models' representations diverge specifically.

The same peak-CKA computation restricted to one benchmark family at a time (e.g. only trending series, only spiky series), so a family where two models diverge structurally doesn't get averaged away by families where they agree.

What does this mean?

How to read it
Compare bar heights across families, not to some universal threshold — a lower bar means this family's structure is where those models' representations differ most, which is exactly the kind of finding the exemplar case studies exist to make concrete.

Limitations
Families with fewer than `l1.min_family_series` series are dropped entirely (too few series for a stable per-family CKA), so a family's absence here isn't evidence of anything.

Representational similarity (RSA), every pair

Spearman rank correlation between the two models' series-by-series dissimilarity matrices, at each depth of model A. This is the rank-based companion to the CKA curves above: a pair high on CKA but low here agrees about overall geometry while ordering individual series differently.

RSA along matched layers

layer_a layer_b spearman
stacked_xf.0 encoder.block.3 0.600
stacked_xf.2 encoder.block.5 0.708
stacked_xf.4 encoder.block.7 0.651
stacked_xf.6 encoder.block.7 0.657
stacked_xf.8 encoder.block.7 0.642
stacked_xf.10 encoder.block.8 0.567
stacked_xf.12 encoder.block.11 0.433
stacked_xf.14 encoder.block.11 0.398
stacked_xf.16 encoder.block.11 0.426
stacked_xf.18 encoder.block.7 0.457

A second opinion on the CKA-matched layer pairs above: each layer's series are ranked by pairwise dissimilarity (1 minus correlation) into a representational dissimilarity matrix (RDM), and the two models' RDMs at each matched pair are Spearman rank-correlated. RSA is invariant to a different class of transform than CKA (monotonic distance rescaling instead of rotation), so agreement between the two is evidence the CKA match isn't an artifact of its specific invariance.

What does this mean?

How to read it
Spearman ρ near 1 means the two models rank which series-pairs are similar/dissimilar in the same order at that layer pair; near 0 means the rankings are unrelated even though CKA (a different notion of agreement) may have matched these layers.

Limitations
Computed on series-level pooled embeddings only (no window resolution), over a capped sample (`l1.rsa_max_series`) for cost — a rough second check, not a replacement for the CKA statistics above.

CKA in SAE feature space

The same linear-CKA statistic as the heatmap above, but computed on each target's PERSISTED, ENCODED SAE feature activations (`store.load(..., space='sae')`) instead of raw activation-space hidden states.

Best feature-space pair: L0 ↔ L3, CKA 0.62 [0.61, 0.64].

This is NOT computed over the same layer pairs as the activation-space CKA above — SAE targets are pinned for forecast-readability, not chosen to peak on this statistic, so it is not yet a like-for-like 'feature space vs. activation space' verdict at the same depth.

What does this feature-space CKA mean?

How to read it
A high value here means the two models' SPARSE, human-legible feature dictionaries agree on which series look similar — a stronger, more interpretable echo of shared structure than the raw activation-space CKA above, since a feature basis is (attempted to be) meaningful on its own rather than an arbitrary rotation of the hidden space.

Limitations
Requires `sae.persist_features: true` (off by default) and at least two SAE targets spanning both comparison-pair models — most runs will not have this artifact at all, which is why it renders only when found rather than as an empty placeholder.

L2

Stitching probes

Ridge maps between window states, reported as gain over an input-feature baseline; only that gain is evidence of shared learned structure.

What this stage tells you

Question
Can one model's layer actually be translated into the other's, beyond what's explained by both simply seeing the same input?

How
Fits a simple linear map from one model's layer activations to the other's, compares how well it predicts against a hand-built baseline that only ever sees the raw input (never the other model), and reports the gap between the two as the real evidence.

Good vs. bad result
Good: the best pair's gain over the input baseline has a confidence interval that clearly sits above zero — real evidence the source layer predicts the target layer better than raw input alone could. Bad: that interval includes zero — the apparent shared structure could just be an artifact of the models seeing the same series.

What it cannot tell you
Only the gain over the input baseline counts as evidence here — raw predictive accuracy alone is untrustworthy, since both models process the same input and would score well on that basis alone. This also only detects *linear* translatability (a genuine nonlinear correspondence between two layers can score zero gain), and it is still not a causal claim: a good stitch means the two layers' information is compatible, not that either model's forecast actually depends on it.

Stitching gain, every pair

model A model B A → B B → A best of the two
TimesFM Chronos-2 +0.709 +0.609 +0.709
TimesFM Sundial +0.687 +0.610 +0.687
TimesFM Chronos-Bolt +0.651 +0.575 +0.651
TimesFM Timer +0.361 +0.295 +0.361
TimesFM Time-MoE +0.581 +0.550 +0.581
TimesFM Chronos-T5-Base +0.466 +0.519 +0.519
Chronos-2 Sundial +0.891 +0.911 +0.911
Chronos-2 Chronos-Bolt +0.893 +0.907 +0.907
Chronos-2 Timer +0.377 +0.414 +0.414
Chronos-2 Time-MoE +0.829 +0.557 +0.829
Chronos-2 Chronos-T5-Base +0.609 +0.580 +0.609
Sundial Chronos-Bolt +0.877 +0.860 +0.877
Sundial Timer +0.377 +0.396 +0.396
Sundial Time-MoE +0.833 +0.673 +0.833
Sundial Chronos-T5-Base +0.538 +0.586 +0.586
Chronos-Bolt Timer +0.367 +0.412 +0.412
Chronos-Bolt Time-MoE +0.778 +0.646 +0.778
Chronos-Bolt Chronos-T5-Base +0.569 +0.669 +0.669
Timer Time-MoE +0.501 +0.349 +0.501
Timer Chronos-T5-Base +0.332 +0.314 +0.332
Time-MoE Chronos-T5-Base +0.545 +0.737 +0.737

One row per model pair. A → B is the gain when that row's model A is stitched into its model B, B → A the reverse — so each row is self-contained and the two columns always refer to that row's own two models, never to another pair's. The per-direction heatmaps below give the full layer grid behind each number.

What does this mean?

How to read it
Only the gain ABOVE the input baseline is evidence of shared learned structure, so a value at or below zero means that direction carries no stitching evidence regardless of how high its raw R² is. The two directions of one pair are fit independently and are not expected to match.

Limitations
A point estimate without its CI: the per-direction headings below carry the interval, and a gain whose CI straddles zero is not evidence no matter what this column shows. Nothing here corrects for having looked at C(n,2) x 2 directions.

TimesFM → Chronos-2 · best R² 0.75 · best gain over input baseline 0.71 [0.69, 0.73]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-2 → TimesFM · best R² 0.63 · best gain over input baseline 0.61 [0.59, 0.63]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

TimesFM → Sundial · best R² 0.73 · best gain over input baseline 0.69 [0.67, 0.70]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Sundial → TimesFM · best R² 0.64 · best gain over input baseline 0.61 [0.58, 0.64]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

TimesFM → Chronos-Bolt · best R² 0.73 · best gain over input baseline 0.65 [0.63, 0.67]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-Bolt → TimesFM · best R² 0.60 · best gain over input baseline 0.58 [0.56, 0.60]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

TimesFM → Timer · best R² 0.41 · best gain over input baseline 0.36 [0.34, 0.38]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Timer → TimesFM · best R² 0.32 · best gain over input baseline 0.30 [0.28, 0.31]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

TimesFM → Time-MoE · best R² 0.75 · best gain over input baseline 0.58 [0.56, 0.60]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Time-MoE → TimesFM · best R² 0.58 · best gain over input baseline 0.55 [0.52, 0.58]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

TimesFM → Chronos-T5-Base · best R² 0.54 · best gain over input baseline 0.47 [0.45, 0.48]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-T5-Base → TimesFM · best R² 0.55 · best gain over input baseline 0.52 [0.48, 0.55]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-2 → Sundial · best R² 0.96 · best gain over input baseline 0.89 [0.88, 0.90]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Sundial → Chronos-2 · best R² 0.95 · best gain over input baseline 0.91 [0.90, 0.92]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-2 → Chronos-Bolt · best R² 0.97 · best gain over input baseline 0.89 [0.88, 0.91]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-Bolt → Chronos-2 · best R² 0.95 · best gain over input baseline 0.91 [0.90, 0.92]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-2 → Timer · best R² 0.43 · best gain over input baseline 0.38 [0.36, 0.39]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Timer → Chronos-2 · best R² 0.49 · best gain over input baseline 0.41 [0.38, 0.45]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-2 → Time-MoE · best R² 0.92 · best gain over input baseline 0.83 [0.80, 0.86]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Time-MoE → Chronos-2 · best R² 0.60 · best gain over input baseline 0.56 [0.53, 0.59]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-2 → Chronos-T5-Base · best R² 0.68 · best gain over input baseline 0.61 [0.59, 0.62]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-T5-Base → Chronos-2 · best R² 0.66 · best gain over input baseline 0.58 [0.56, 0.61]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Sundial → Chronos-Bolt · best R² 0.95 · best gain over input baseline 0.88 [0.86, 0.89]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-Bolt → Sundial · best R² 0.93 · best gain over input baseline 0.86 [0.85, 0.87]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Sundial → Timer · best R² 0.43 · best gain over input baseline 0.38 [0.36, 0.40]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Timer → Sundial · best R² 0.53 · best gain over input baseline 0.40 [0.37, 0.43]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Sundial → Time-MoE · best R² 0.93 · best gain over input baseline 0.83 [0.81, 0.86]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Time-MoE → Sundial · best R² 0.72 · best gain over input baseline 0.67 [0.66, 0.69]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Sundial → Chronos-T5-Base · best R² 0.61 · best gain over input baseline 0.54 [0.52, 0.56]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-T5-Base → Sundial · best R² 0.66 · best gain over input baseline 0.59 [0.56, 0.61]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-Bolt → Timer · best R² 0.42 · best gain over input baseline 0.37 [0.35, 0.38]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Timer → Chronos-Bolt · best R² 0.49 · best gain over input baseline 0.41 [0.39, 0.44]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-Bolt → Time-MoE · best R² 0.87 · best gain over input baseline 0.78 [0.75, 0.81]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Time-MoE → Chronos-Bolt · best R² 0.72 · best gain over input baseline 0.65 [0.62, 0.68]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-Bolt → Chronos-T5-Base · best R² 0.64 · best gain over input baseline 0.57 [0.55, 0.59]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-T5-Base → Chronos-Bolt · best R² 0.74 · best gain over input baseline 0.67 [0.64, 0.70]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Timer → Time-MoE · best R² 0.76 · best gain over input baseline 0.50 [0.46, 0.54]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Time-MoE → Timer · best R² 0.40 · best gain over input baseline 0.35 [0.33, 0.37]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Timer → Chronos-T5-Base · best R² 0.41 · best gain over input baseline 0.33 [0.30, 0.36]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-T5-Base → Timer · best R² 0.36 · best gain over input baseline 0.31 [0.30, 0.33]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Time-MoE → Chronos-T5-Base · best R² 0.62 · best gain over input baseline 0.55 [0.52, 0.57]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-T5-Base → Time-MoE · best R² 0.83 · best gain over input baseline 0.74 [0.71, 0.76]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

L4

Activation clusters

How each model organizes the benchmark, with clusters labeled by what they approximately activate for.

What this stage tells you

Question
How does each model organize the whole benchmark on its own terms, and do the models group the data the same way?

How
Projects each model's activations, at its own side of the strongest cross-model layer pair, down to a small number of dimensions, clusters them, labels each cluster by what kind of data dominates it, and compares how much each pair's groupings agree using a chance-corrected overlap score.

Good vs. bad result
Good: clean, well-separated clusters that line up with real, interpretable properties of the data, and a partition-agreement score meaningfully above chance between a pair of models. Bad: a single smeared blob with no real separation, or cluster labels that don't correspond to anything a human would recognize as a coherent group.

What it cannot tell you
The 2D map is a visualization only — apparent distances or gaps between clusters on the plot are not quantitative and should never be read as a diversity or separation measure. Cluster labels are approximate (majority family plus salient statistics), not ground truth, and everything here is descriptive: it says how each model happens to partition the data, not why, and not whether that partition is causally meaningful to either model's forecast.

Each model's window states at its side of the L1 peak-CKA layer pair, reduced to 2D (UMAP if enabled, else PCA) and k-means clustered — a low-dimensional map of how each model organizes the whole benchmark, colored by its own cluster assignment.

What does this mean?

How to read it
Clean, well-separated color blobs mean that model's representation carves the benchmark into distinct groups at this layer; a single smeared blob means it doesn't separate much at all there. Hover any point for its series id, true family, and the cluster's approximate label — compare cluster shapes side by side, not exact colors (cluster indices aren't matched across models).

Limitations
The 2D layout is a projection for visualization only — apparent distances between clusters aren't meaningful, only which points share a cluster. Cluster *labels* are approximate (majority family + salient signal stats), so treat them as a reading aid, not ground truth; the partition-overlap statistic below is the quantitative version of what this plot shows visually.

TimesFM clusters (silhouette 0.18)

cluster size purity label
0 126 0.841 mixture (84%) · peaked spectrum
1 269 0.781 random_parametric (78%) · clean · peaked spectrum
2 147 0.633 mixture (63%) · anti-persistent · broadband/noisy spectrum
3 161 0.671 parametric (67%) · clean · smooth/persistent
4 97 0.979 random_parametric (98%) · anti-persistent · noisy

Chronos-2 clusters (silhouette 0.18)

cluster size purity label
0 147 0.993 random_parametric (99%) · peaked spectrum · clean
1 124 0.766 mixture (77%) · anti-persistent · broadband/noisy spectrum
2 107 1.000 mixture (100%) · peaked spectrum · smooth/persistent
3 222 0.644 random_parametric (64%) · mixed characteristics
4 200 0.540 parametric (54%) · smooth/persistent · clean

Sundial clusters (silhouette 0.17)

cluster size purity label
0 112 0.938 mixture (94%) · peaked spectrum · smooth/persistent
1 162 0.753 random_parametric (75%) · clean · peaked spectrum
2 160 0.594 mixture (59%) · broadband/noisy spectrum · anti-persistent
3 187 0.578 parametric (58%) · clean · smooth/persistent
4 179 0.883 random_parametric (88%) · anti-persistent

Chronos-Bolt clusters (silhouette 0.18)

cluster size purity label
0 146 0.582 random_parametric (58%) · clean · rising trend
1 132 0.727 mixture (73%) · anti-persistent · broadband/noisy spectrum
2 128 0.898 random_parametric (90%) · falling trend · clean
3 120 0.733 random_parametric (73%) · anti-persistent · noisy
4 274 0.369 mixture (37%) · smooth/persistent · peaked spectrum

Timer clusters (silhouette 0.13)

cluster size purity label
0 181 0.840 random_parametric (84%) · mixed characteristics
1 191 0.749 mixture (75%) · peaked spectrum · rising trend
2 195 0.508 parametric (51%) · smooth/persistent · clean
3 123 0.732 mixture (73%) · anti-persistent · broadband/noisy spectrum
4 110 0.991 random_parametric (99%) · clean · peaked spectrum

Time-MoE clusters (silhouette 0.20)

cluster size purity label
0 292 0.695 random_parametric (70%) · mixed characteristics
1 108 0.991 mixture (99%) · peaked spectrum · smooth/persistent
2 149 0.638 mixture (64%) · anti-persistent · broadband/noisy spectrum
3 125 0.840 parametric (84%) · clean · smooth/persistent
4 126 1.000 random_parametric (100%) · peaked spectrum · clean

Chronos-T5-Base clusters (silhouette 0.15)

cluster size purity label
0 224 0.772 random_parametric (77%) · peaked spectrum
1 95 1.000 mixture (100%) · anti-persistent · broadband/noisy spectrum
2 242 0.446 parametric (45%) · clean · smooth/persistent
3 55 0.509 block_bootstrap (51%) · anti-persistent · broadband/noisy spectrum
4 184 0.380 random_parametric (38%) · mixed characteristics

Partition overlap · AMI = 0.60 [0.56, 0.63]

Row-normalized contingency between the two models' cluster assignments (what fraction of model A's cluster i falls into each of model B's clusters), plus adjusted mutual information (AMI) as a single overlap statistic.

What does this mean?

How to read it
A heatmap concentrated on (close to) a diagonal-like permutation means the two partitions correspond well, even if cluster numbers don't literally match; a spread-out heatmap means little correspondence. AMI=1.0 is identical partitions, 0 is what you'd expect from independent random partitions of the same size.

Limitations
AMI corrects for chance agreement from cluster count/size alone, but its bootstrap CI (when shown) resamples label pairs, not the clustering itself — it reflects assignment stability, not k-means initialization variance. `k` is often 'auto' (number of benchmark families), so overlap partly reflects how family-like each model's natural clusters are, not just agreement between the two models.

Partition overlap, every pair

17 more pair(s)

Row-normalized contingency between each pair's own cluster assignments, on one shared 0-1 colour scale so the panels are comparable to each other — the same statistic as the single reference-pair heatmap above, for every pair this run measured, not just the designated one.

Partition agreement, every pair

model A model B AMI
TimesFM Chronos-2 0.60 [0.56, 0.63]
TimesFM Sundial 0.72 [0.69, 0.76]
TimesFM Chronos-Bolt 0.52 [0.49, 0.56]
TimesFM Timer 0.54 [0.51, 0.58]
TimesFM Time-MoE 0.64 [0.61, 0.68]
TimesFM Chronos-T5-Base 0.39 [0.36, 0.43]
Chronos-2 Sundial 0.61 [0.58, 0.65]
Chronos-2 Chronos-Bolt 0.48 [0.45, 0.52]
Chronos-2 Timer 0.60 [0.56, 0.64]
Chronos-2 Time-MoE 0.65 [0.62, 0.69]
Chronos-2 Chronos-T5-Base 0.35 [0.33, 0.38]
Sundial Chronos-Bolt 0.58 [0.55, 0.62]
Sundial Timer 0.69 [0.65, 0.73]
Sundial Time-MoE 0.64 [0.61, 0.68]
Sundial Chronos-T5-Base 0.36 [0.34, 0.39]
Chronos-Bolt Timer 0.50 [0.47, 0.54]
Chronos-Bolt Time-MoE 0.40 [0.37, 0.44]
Chronos-Bolt Chronos-T5-Base 0.31 [0.29, 0.34]
Timer Time-MoE 0.52 [0.49, 0.56]
Timer Chronos-T5-Base 0.26 [0.24, 0.30]
Time-MoE Chronos-T5-Base 0.42 [0.40, 0.45]

Adjusted mutual information between each pair of models' cluster assignments. The heatmap grid above draws every pair's own overlap; this table gives the same pairs' exact AMI values.

What does this mean?

How to read it
AMI is chance-corrected, so 0 is what independent partitions of the same sizes would give and the values are directly comparable across rows even when the pairs have different cluster counts.

Limitations
Each row is an independent statistic with its own CI; nothing here corrects for the fact that C(n,2) of them were looked at, so read the spread across rows rather than singling out the largest.

Similarity

Pair similarity across metrics

Every representation/behavioral/SAE similarity metric this pipeline computes, one row per metric, one dot per model pair -- moved here from "Concepts" because it is not about concepts.

What this stage tells you

Question
Which features does each model's dictionary actually use when it forecasts, do they group into named concepts, and does another model group the same series the same way?

How
For every trained dictionary, zeroes each candidate feature out of the model's own reconstruction on the series where that feature fires hardest, and measures nine properties of the forecast against a random-direction null. Features that move something are clustered by what they move into concepts (or the dictionary is declared non-modular when no clean grouping exists). Each concept's top series are then checked in every other model: does some feature there separate the same series better than random series of the same kind would, and does that feature's own top series come back the other way? Finally every concept is described in a sentence composed only from what was measured. Separately, every causal feature across every model is also pooled into one shared space and clustered directly against each other, so a group there can span several models even when a dictionary's own per-target clustering above found no clean grouping within it.

Good vs. bad result
Good: features whose removal moves the forecast well above the null, concepts with several members each, and transfers that clear the matched null in both directions. Bad: most targets declared non-modular (the dictionary's causal features do not group), or transfer rates that are high only because the matched null is weak for that kind of series.

What it cannot tell you
A transfer that clears its null says another model separates the same series, not that it uses the feature the same way causally. The rates are uncorrected for the many tests made, and nothing yet says how often a concept would transfer to a second dictionary trained on the SAME model, so a rate cannot be read as high or low on its own. Everything here is measured on the development corpus only.

Every representation/behavioral/SAE similarity metric this pipeline already computes, one row per metric, one dot per model pair -- the evidence behind the compact “How similar is each pair?” answer box in “At a glance” above.

How similar is each pair?

Every measured similarity metric, one row per metric, one dot per model pair on that metric's OWN native axis -- ranges are never rescaled across metrics, since a stitching gain and a CKA value are not the same kind of number even though both happen to run roughly 0-1.

What does this mean?

How to read it
Whiskers are the metric's own bootstrap CI where one exists. The dotted vertical line is that metric's own reference (a null, a chance level, or the input-feature baseline) -- read a pair's distance from ITS metric's own reference, never compare raw positions across rows. Use the dropdown to highlight one pair across every metric at once.

Limitations
Metrics disagree by design (this run's own measured fact): a pair close on one axis can be far on another. A missing row means that metric's own stage artifact was not present for this run.

Rank table
PairError agreementBest-layer CKAStitching gainCluster agreement (AMI)Atlas co-membershipInput transferShared conceptsMedian rankRank range
TimesFM / Chronos-2115781364.57.014.0
TimesFM / Sundial41681121914.512.018.0
TimesFM / Chronos-Bolt1318111171614.513.011.0
TimesFM / Timer1720201017.51514.517.010.0
TimesFM / Time-MoE201913417.52014.517.516.0
TimesFM / Chronos-T5-Base521151717.5814.515.016.0
Chronos-2 / Sundial72168184.56.017.0
Chronos-2 / Chronos-Bolt1532141313.014.0
Chronos-2 / Timer19121771144.511.015.0
Chronos-2 / Time-MoE2166317.51214.512.018.0
Chronos-2 / Chronos-T5-Base65121917.5114.512.018.0
Sundial / Chronos-Bolt91394104.54.59.0
Sundial / Timer81119217.51714.514.517.0
Sundial / Time-MoE16445101414.510.012.0
Sundial / Chronos-T5-Base29141892114.514.019.0
Chronos-Bolt / Timer3141813674.57.015.0
Chronos-Bolt / Time-MoE14135165514.513.011.0
Chronos-Bolt / Chronos-T5-Base11810202914.510.018.0
Timer / Time-MoE107161217.5214.512.015.5
Timer / Chronos-T5-Base1217212117.51114.517.010.0
Time-MoE / Chronos-T5-Base18109153134.510.015.0

Kendall's W (all measured metrics): 0.254 (p=0.0095, 7 metric(s)). Within representation metrics only: 0.527 (p=0.0205, 3 metric(s)). With only a handful of model pairs, Kendall's W has low power: a non-significant p does NOT mean the metrics agree, and a significant one should still be read alongside the per-metric rank table above, not instead of it.

Contrasts -- where metrics disagree most
Per-metric model x model heatmaps

Error agreement -- model x model. Whether the two models make similar per-series forecast errors (Spearman correlation of log MASE across series).

Best-layer CKA -- model x model. The most similar pair of layers' linear representational geometry: the max linear CKA over every layer-pair between the two models.

Stitching gain -- model x model. How much of one model's activations a linear probe trained on the other model's activations explains, beyond an input-feature baseline (both directions, averaged).

Cluster agreement (AMI) -- model x model. Whether the two models' activation clusters group the same series together (adjusted mutual information).

Atlas co-membership -- model x model. How often the two models' causally-ablated SAE features land in the same cross-model concept (shared causal effect profile), versus a model-label permutation null.

Input transfer -- model x model. Whether an atlas concept's top-firing series in one model are also grouped by the OTHER model's own SAE dictionary (shared input selectivity, both directions).

Shared concepts -- model x model. Count of cross-model concepts classed as sharing BOTH causal effect and input selectivity between the two models.

Part 5 — What causally drives the forecast

Corruption sensitivity and within-model activation patching, attention structure and head/MLP causality, and the seasonality circuit.

↑ contents
L3

Perturbation & patching

Where each model's depth reacts to structured corruptions, and where clean activations causally restore corrupted forecasts.

What this stage tells you

Question
Where, causally, does each model actually carry a specific structural property of the data — and does damaging it there hurt the forecast?

How
Corrupts one structural property of the input at a time (trend, seasonality, added noise, and so on), measures how much each layer's activations shift because of it, then splices the clean, uncorrupted activations back into an otherwise-corrupted forward pass, one layer at a time, to see how much of the clean forecast that single splice restores.

Good vs. bad result
Good: a restoration curve that rises toward 1.0 at some depth for a given corruption — that layer causally carries the fix for that property — and two models whose sensitivity fingerprints peak at matching relative depths for the same corruption. Bad: a restoration curve that never clears a small fraction anywhere, or a corruption whose measured sensitivity is small only because it touches a tiny fraction of the input's timesteps in the first place, not because the model is robust to it.

What it cannot tell you
The activation-shift fingerprints are a magnitude-of-change measure by themselves, not a causal one — a layer can shift a lot without that shift ever affecting the final forecast, which is exactly why the patching curve exists alongside it. Even the patching curve is causal only *within* one model: this stage never transplants activations between models, so any cross-model comparison here is two separately-measured within-model curves side by side, never a joint causal test.

For each corruption (columns) and layer (rows), the relative change in that layer's activations between clean and corrupted input, averaged over series — a [depth x corruption] fingerprint of which structural property each model reacts to, and where.

What does this mean?

How to read it
Brighter cells mean that layer's representation shifted more under that corruption. Reading down a column shows where in depth a given property (say, seasonality) gets encoded; reading across a row shows what a given layer is currently sensitive to. Two models with similar column shapes react to the same properties at similar relative depths, even if their absolute layer counts differ. The depth axis (named per panel above) places each layer within the model's *whole* stack, not just its captured layers, so a model with a real but uncaptured surface legitimately caps out partway up the axis rather than reaching 1.0, as Chronos-Bolt, Chronos-T5-Base and TimesFM do in this run.

Limitations
This is a magnitude-of-change measure, not a causal one — a layer can shift a lot without that shift affecting the final forecast at all (see the behavioral-sensitivity bars and the activation-patching curve below for the causal follow-through). Different architectures normalize activations differently, so raw magnitudes are not directly comparable across models — only the column *shape* (where the peak is) should be compared.

Cross-model fingerprint agreement

One bar group per corruption, one bar per model pair — every pair in the run is shown and named, so a bar is never read as a statement about models it does not compare.

Each model's per-corruption fingerprint (the column above) is interpolated onto the depth range each pair of models actually shares (never extrapolated past either model's own span), and the two resulting depth profiles are Spearman rank-correlated — one number per corruption summarizing whether both models encode that property at matching relative depths. On this run's depth axis some pairs' spans only partly overlap (TimesFM vs Chronos-2: 95%; TimesFM vs Sundial: 95%; TimesFM vs Chronos-Bolt: 48%; TimesFM vs Timer: 95%; TimesFM vs Time-MoE: 95%; TimesFM vs Chronos-T5-Base: 50%; Chronos-2 vs Chronos-Bolt: 45%; Chronos-2 vs Chronos-T5-Base: 48%; Sundial vs Chronos-Bolt: 45%; Sundial vs Chronos-T5-Base: 48%; Chronos-Bolt vs Timer: 45%; Chronos-Bolt vs Time-MoE: 45%; Chronos-Bolt vs Chronos-T5-Base: 95%; Timer vs Chronos-T5-Base: 48%; Time-MoE vs Chronos-T5-Base: 48%); agreement is computed over that overlap only (never extrapolated across it), so the un-overlapped depth is excluded rather than invented.

What does this mean?

How to read it
+1 means both models' sensitivity peaks at the same relative depth for that corruption; -1 means they peak at opposite ends; 0 means unrelated depth profiles. The lowest bar is called out in the findings as the most divergent corruption for each pair — the structural property that pair's architectures seem to handle at meaningfully different points in depth.

Limitations
Rank correlation over a coarse 33-point depth grid can be noisy for very shallow models (few layers to interpolate between), and says nothing about whether the property matters to the forecast at all — cross-reference with behavioral sensitivity below.

Behavioral sensitivity

How much each corruption changes the final *forecast* (scaled mean absolute change), independent of any internals — the behavioral counterpart to the activation fingerprints above. Value labels are drawn on every bar specifically because this battery's corruptions are not strength-matched (next note) — a shared linear axis dominated by one outsized corruption can make every other bar look flat even when its own value is not small.

What does this mean?

How to read it
Taller bars mean that corruption matters more to this model's output. A corruption with a tall activation fingerprint but a short bar here is being represented internally without much consequence for the forecast — an interesting mismatch worth checking against the patching curve below, which is the causal version of this same question. Read the printed value, not just bar height, before concluding a corruption 'does nothing.'

Limitations
Scale is in MASE-like units (MAE over each series' own naive scale), so it's comparable across families but reflects each corruption's configured strength as much as the model's intrinsic sensitivity — a fair cross-model comparison, not a fair cross-corruption one unless strengths were tuned to match. How unfair a given cross-corruption comparison is, is measured rather than described here: the breakdown table below gives each corruption's own input footprint and perturbation energy, which is what a bar's height should be read against. A corruption altering well under 1% of timesteps produces a small series-averaged value arithmetically, whatever the model does at the points it touched — the per-window patching heatmap further down is where such localized damage shows whether it is still causally recoverable. Dotted reference lines mark each sampling model's own repeat-run MASE noise floor (see the Overall metrics section above) -- a bar below its model's line is not distinguishable from repeat-run noise.

Corruption-by-corruption breakdown

corruption model input touched (%) input energy strength matched forecast Δ Δ lo Δ hi Δ in floor units activation peak depth peak Δact mean Δact depth agreement ρ best restoration restored at
level_shift Chronos-2 38.250 85830.070 False 11.519 10.933 12.127 no floor (deterministic) 0.909 0.880 0.758 -0.188 0.039 encoder.block.0
level_shift Chronos-Bolt 38.250 85830.070 False 11.442 10.863 12.049 no floor (deterministic) 0.364 0.699 0.665 -0.188 0.062 encoder.block.0
level_shift Chronos-T5-Base 38.250 85830.070 False 10.554 10.026 11.103 44.3× 0.000 0.486 0.328 -0.188 0.064 encoder.block.6
level_shift Sundial 38.250 85830.070 False 10.632 10.081 11.214 75.6× 0.455 0.832 0.802 -0.188 0.069 model.layers.0
level_shift Time-MoE 38.250 85830.070 False 0.258 0.250 0.267 no floor (deterministic) 0.909 0.632 0.339 -0.188 -0.623 model.layers.6
level_shift Timer 38.250 85830.070 False 10.955 10.367 11.570 no floor (deterministic) 0.714 0.863 0.716 -0.188 0.109 model.layers.0
level_shift TimesFM 38.250 85830.070 False 11.382 10.807 11.968 no floor (deterministic) 0.000 0.263 0.172 -0.188 0.016 stacked_xf.8
frequency_shift Chronos-2 59.773 36923.617 False 2.864 2.637 3.089 no floor (deterministic) 0.909 1.175 1.120 0.216 not patched not patched
frequency_shift Chronos-Bolt 59.773 36923.617 False 2.690 2.506 2.879 no floor (deterministic) 0.364 1.013 0.917 0.216 not patched not patched
frequency_shift Chronos-T5-Base 59.773 36923.617 False 2.768 2.565 2.972 11.6× 0.478 0.628 0.523 0.216 not patched not patched
frequency_shift Sundial 59.773 36923.617 False 2.833 2.619 3.049 20.2× 0.455 1.175 1.078 0.216 not patched not patched
frequency_shift Time-MoE 59.773 36923.617 False 3.139 2.914 3.364 no floor (deterministic) 1.000 0.904 0.497 0.216 not patched not patched
frequency_shift Timer 59.773 36923.617 False 2.362 2.178 2.564 no floor (deterministic) 0.000 1.188 0.961 0.216 not patched not patched
frequency_shift TimesFM 59.773 36923.617 False 2.762 2.551 2.982 no floor (deterministic) 0.000 1.041 0.583 0.216 not patched not patched
deseasonalize Chronos-2 50.144 6222.671 False 2.446 2.240 2.655 no floor (deterministic) 0.909 0.789 0.645 0.111 0.048 encoder.block.2
deseasonalize Chronos-Bolt 50.144 6222.671 False 2.315 2.125 2.520 no floor (deterministic) 0.364 0.590 0.529 0.111 0.048 encoder.block.4
deseasonalize Chronos-T5-Base 50.144 6222.671 False 2.394 2.204 2.596 10.0× 0.000 0.308 0.253 0.111 0.106 encoder.block.10
deseasonalize Sundial 50.144 6222.671 False 2.175 1.999 2.359 15.5× 0.818 0.779 0.692 0.111 0.044 model.layers.0
deseasonalize Time-MoE 50.144 6222.671 False 2.509 2.323 2.699 no floor (deterministic) 0.909 0.539 0.283 0.111 0.045 model.layers.8
deseasonalize Timer 50.144 6222.671 False 1.589 1.434 1.748 no floor (deterministic) 0.714 0.752 0.630 0.111 0.077 model.layers.6
deseasonalize TimesFM 50.144 6222.671 False 2.291 2.088 2.508 no floor (deterministic) 0.000 0.559 0.400 0.111 0.043 stacked_xf.12
detrend Chronos-2 19.154 1521.604 False 1.789 1.579 2.005 no floor (deterministic) 0.909 0.302 0.217 0.422 not patched not patched
detrend Chronos-Bolt 19.154 1521.604 False 1.746 1.540 1.958 no floor (deterministic) 0.364 0.216 0.186 0.422 not patched not patched
detrend Chronos-T5-Base 19.154 1521.604 False 1.795 1.606 1.997 7.5× 0.000 0.202 0.160 0.422 not patched not patched
detrend Sundial 19.154 1521.604 False 1.468 1.300 1.645 10.4× 0.818 0.269 0.233 0.422 not patched not patched
detrend Time-MoE 19.154 1521.604 False 1.644 1.458 1.834 no floor (deterministic) 0.909 0.192 0.101 0.422 not patched not patched
detrend Timer 19.154 1521.604 False 1.377 1.193 1.573 no floor (deterministic) 0.714 0.287 0.210 0.422 not patched not patched
detrend TimesFM 19.154 1521.604 False 1.642 1.441 1.850 no floor (deterministic) 0.947 0.131 0.108 0.422 not patched not patched
warp Chronos-2 45.764 27448.598 False 1.505 1.369 1.642 no floor (deterministic) 0.909 0.776 0.686 -0.651 0.009 encoder.block.10
warp Chronos-Bolt 45.764 27448.598 False 1.623 1.490 1.764 no floor (deterministic) 0.364 0.521 0.495 -0.651 0.009 encoder.block.2
warp Chronos-T5-Base 45.764 27448.598 False 1.831 1.682 1.982 7.7× 0.478 0.254 0.153 -0.651 0.192 encoder.block.4
warp Sundial 45.764 27448.598 False 1.397 1.286 1.511 9.9× 0.818 0.705 0.642 -0.651 0.078 model.layers.0
warp Time-MoE 45.764 27448.598 False 1.814 1.694 1.934 no floor (deterministic) 0.909 0.475 0.224 -0.651 0.064 model.layers.10
warp Timer 45.764 27448.598 False 0.918 0.835 1.002 no floor (deterministic) 0.000 0.888 0.654 -0.651 0.188 model.layers.6
warp TimesFM 45.764 27448.598 False 1.492 1.352 1.637 no floor (deterministic) 0.000 0.895 0.405 -0.651 0.072 stacked_xf.12
noise Chronos-2 60.258 24487.969 False 1.222 1.114 1.333 no floor (deterministic) 0.909 0.826 0.753 -0.749 0.018 encoder.block.10
noise Chronos-Bolt 60.258 24487.969 False 1.371 1.265 1.479 no floor (deterministic) 0.091 0.669 0.628 -0.749 0.010 encoder.block.4
noise Chronos-T5-Base 60.258 24487.969 False 1.623 1.509 1.739 6.8× 0.478 0.313 0.244 -0.749 0.429 encoder.block.8
noise Sundial 60.258 24487.969 False 1.280 1.189 1.376 9.1× 0.727 0.917 0.852 -0.749 -0.012 model.layers.10
noise Time-MoE 60.258 24487.969 False 1.832 1.728 1.939 no floor (deterministic) 0.909 0.652 0.326 -0.749 0.032 model.layers.10
noise Timer 60.258 24487.969 False 0.973 0.887 1.068 no floor (deterministic) 0.000 0.846 0.716 -0.749 0.186 model.layers.6
noise TimesFM 60.258 24487.969 False 1.189 1.084 1.304 no floor (deterministic) 0.000 0.979 0.485 -0.749 0.002 stacked_xf.16
smooth Chronos-2 22.078 10730.068 False 0.942 0.873 1.012 no floor (deterministic) 0.909 0.743 0.603 -0.418 not patched not patched
smooth Chronos-Bolt 22.078 10730.068 False 1.081 1.012 1.151 no floor (deterministic) 0.273 0.484 0.449 -0.418 not patched not patched
smooth Chronos-T5-Base 22.078 10730.068 False 1.605 1.486 1.736 6.7× 0.478 0.478 0.234 -0.418 not patched not patched
smooth Sundial 22.078 10730.068 False 1.003 0.932 1.077 7.1× 0.818 0.838 0.743 -0.418 not patched not patched
smooth Time-MoE 22.078 10730.068 False 0.718 0.691 0.744 no floor (deterministic) 0.909 0.628 0.325 -0.418 not patched not patched
smooth Timer 22.078 10730.068 False 0.622 0.583 0.664 no floor (deterministic) 0.714 0.670 0.566 -0.418 not patched not patched
smooth TimesFM 22.078 10730.068 False 1.027 0.949 1.113 no floor (deterministic) 0.000 0.539 0.353 -0.418 not patched not patched
spike Chronos-2 1.629 39736.121 False 0.515 0.458 0.580 no floor (deterministic) 0.909 0.625 0.567 -0.790 0.043 encoder.block.8
spike Chronos-Bolt 1.629 39736.121 False 0.913 0.840 0.992 no floor (deterministic) 0.364 0.612 0.559 -0.790 0.000 encoder.block.4
spike Chronos-T5-Base 1.629 39736.121 False 0.963 0.878 1.050 4.0× 0.478 0.184 0.152 -0.790 0.110 encoder.block.6
spike Sundial 1.629 39736.121 False 0.981 0.899 1.067 7.0× 1.000 0.844 0.752 -0.790 0.035 model.layers.10
spike Time-MoE 1.629 39736.121 False 0.498 0.464 0.535 no floor (deterministic) 0.909 0.516 0.295 -0.790 -0.074 model.layers.6
spike Timer 1.629 39736.121 False 1.122 1.000 1.256 no floor (deterministic) 0.000 0.923 0.785 -0.790 0.131 model.layers.6
spike TimesFM 1.629 39736.121 False 0.865 0.782 0.954 no floor (deterministic) 0.000 0.823 0.416 -0.790 0.059 stacked_xf.4
dropout Chronos-2 8.261 2994.332 False 0.778 0.699 0.863 no floor (deterministic) 0.818 0.625 0.471 0.494 0.035 encoder.block.8
dropout Chronos-Bolt 8.261 2994.332 False 0.794 0.720 0.870 no floor (deterministic) 0.455 0.334 0.268 0.494 0.012 encoder.block.0
dropout Chronos-T5-Base 8.261 2994.332 False 1.259 1.151 1.373 5.3× 0.478 0.249 0.190 0.494 -0.060 encoder.block.10
dropout Sundial 8.261 2994.332 False 0.814 0.750 0.882 5.8× 0.818 0.505 0.396 0.494 0.001 model.layers.10
dropout Time-MoE 8.261 2994.332 False 0.439 0.377 0.504 no floor (deterministic) 0.909 0.384 0.206 0.494 -0.007 model.layers.0
dropout Timer 8.261 2994.332 False 0.453 0.408 0.502 no floor (deterministic) 0.714 0.418 0.330 0.494 -0.027 model.layers.4
dropout TimesFM 8.261 2994.332 False 0.793 0.703 0.890 no floor (deterministic) 0.000 0.247 0.209 0.494 -0.008 stacked_xf.16

Every corruption in this run's battery, per model: how much of the input it altered and with how much energy, how far the forecast moved, where the activations moved most, whether the two models moved at comparable depths, and how much of the damage patching recovered.

What does this mean?

How to read it
Read input touched (%) and input energy first — they are properties of the corruption, identical for every model, and they set the scale a response should be read against. A corruption altering under 1% of timesteps produces a small series-averaged forecast Δ arithmetically, whatever the model does at the points it touched. Δ in floor units divides the response by that model's own repeat-run variation, so a value near 1 is not distinguishable from the model's own noise; a model with no sampling in its forecast path has a zero floor and is labelled rather than divided by. Rows are ordered by the model-averaged forecast Δ, so the top row is this battery's strongest corruption as measured on these models, not as expected.

Limitations
strength matched is False for every row unless l3.calibrate: input_energy was set, and it is the column that decides whether comparing two rows is fair. Comparing two models within a row is fair either way — they received the same corrupted input. Activation magnitudes are not comparable across architectures (different normalization), so peak Δact/mean Δact should be compared down a model's own column and by peak location across models, not by value. best restoration is present only for the corruptions l3.patching.corruptions selected; every other row says so in the cell rather than leaving it blank, because a corruption nobody patched and a corruption whose patch recovered nothing are different findings.

Activation patching: clean → corrupted restoration

One panel per corruption, every model overlaid on a shared restoration scale — so a model's depth profile is read down a single panel, and two corruptions are compared by putting their panels side by side. Clicking a model in the legend hides it in every panel at once.

At each layer, clean (uncorrupted) token states are spliced into an otherwise-corrupted forward pass, one alignment window at a time, and each patched forecast is scored against how much of the clean-vs-corrupted forecast gap that single window's worth of clean state restored. The curve is the average restoration across all windows at that layer — a genuinely localized causal probe of where the corrupted property's effect on the *forecast* is carried.

What does this mean?

How to read it
1.0 means patching that layer (on average, one window at a time) fully restores the clean forecast; 0 means no effect; negative means patching that window actively made the corrupted forecast worse (a real and informative outcome, not an error — it means that window's clean state is actively misleading once the rest of the context is still corrupted). A curve that rises with depth suggests the corruption's effect on the output is increasingly concentrated in later layers' local token states; a flat curve near 0 suggests the damage isn't carried locally at all (check the per-window heatmaps below for exactly where it lives instead).

Limitations
Deliberately NOT a whole-context (every position at once) patch: overwriting an entire layer's complete state is mathematically guaranteed to reach exactly 100% restoration at every layer in any purely sequential residual architecture (nothing about the input survives past a fully-overwritten layer), which tests wiring, not depth. Window-local patching avoids that ceiling, but values from different corruptions aren't on a shared physical scale (each is normalized by its own clean-vs-corrupted damage) — compare shapes/crossovers within a corruption, not raw levels across corruptions. Unlike the ΔMASE figures elsewhere in this report, these values are NOT expressed in repeat-run-noise-floor units: restoration is already normalized by each corruption's own damage, and that denominator is not stored in MASE units, so the conversion would need a change to the L3 stage itself rather than to this chart. Read a near-zero restoration as "not localized here", not as "below the noise floor".

TimesFM: per-window restoration (window = 32 steps)

Where in both depth and time each corruption's effect on TimesFM's forecast is causally carried: one grid per corruption, brighter = patching that one (layer, window) cell recovered more.

The full [depth x time-window] grid the curve above averages over: each cell patches only that layer's tokens belonging to that one time window, so this is where in *both* depth and time a corruption's effect on the forecast is causally concentrated.

What does this mean?

How to read it
A bright cell means restoring just that (layer, window) recovered most of the clean forecast — the corrupted property's effect on the output is concentrated there. A hot column at a late window (near forecast start) usually just reflects recency — the model naturally weights recent context more — rather than anything specific to the corruption.

Limitations
Every window is scored against the *same* full-context damage denominator (so cells are additive/comparable within one corruption's grid), but that also means a model with many small-effect windows and one with a single dominant window can show similar curve-level averages above for very different reasons — always check the grid, not just the averaged curve.

Chronos-2: per-window restoration (window = 32 steps)

Where in both depth and time each corruption's effect on Chronos-2's forecast is causally carried: one grid per corruption, brighter = patching that one (layer, window) cell recovered more.

Sundial: per-window restoration (window = 32 steps)

Where in both depth and time each corruption's effect on Sundial's forecast is causally carried: one grid per corruption, brighter = patching that one (layer, window) cell recovered more.

Chronos-Bolt: per-window restoration (window = 32 steps)

Where in both depth and time each corruption's effect on Chronos-Bolt's forecast is causally carried: one grid per corruption, brighter = patching that one (layer, window) cell recovered more.

Timer: per-window restoration (window = 32 steps)

Where in both depth and time each corruption's effect on Timer's forecast is causally carried: one grid per corruption, brighter = patching that one (layer, window) cell recovered more.

Time-MoE: per-window restoration (window = 32 steps)

Where in both depth and time each corruption's effect on Time-MoE's forecast is causally carried: one grid per corruption, brighter = patching that one (layer, window) cell recovered more.

Chronos-T5-Base: per-window restoration (window = 32 steps)

Where in both depth and time each corruption's effect on Chronos-T5-Base's forecast is causally carried: one grid per corruption, brighter = patching that one (layer, window) cell recovered more.

Which corruptions split near-term from far-future repair

corruption TimesFM Chronos-2 Sundial Chronos-Bolt Timer Time-MoE Chronos-T5-Base
deseasonalize differs (0.84 → 0.21) differs (0.00 → 0.18) differs (0.00 → 0.91) same depth (0.36) same depth (0.86) differs (0.00 → 0.55) same depth (0.00)
noise differs (0.42 → 0.84) differs (0.36 → 0.91) same depth (0.00) differs (0.00 → 0.36) differs (0.29 → 0.86) differs (0.00 → 0.91) differs (0.00 → 0.26)
level_shift differs (0.63 → 0.42) differs (0.18 → 0.00) same depth (0.00) differs (0.18 → 0.00) differs (0.29 → 0.00) differs (0.00 → 0.91) differs (0.09 → 0.17)
spike same depth (0.21) same depth (0.73) differs (0.91 → 0.73) same depth (0.18) differs (0.86 → 0.57) differs (0.55 → 0.36) differs (0.09 → 0.26)
warp differs (0.84 → 0.63) same depth (0.91) differs (0.36 → 0.91) differs (0.36 → 0.00) differs (0.29 → 0.86) differs (0.18 → 0.91) same depth (0.00)
dropout differs (0.42 → 0.84) differs (0.36 → 0.73) differs (0.00 → 0.18) same depth (0.00) differs (0.00 → 0.86) same depth (0.00) same depth (0.43)

For each corruption, whether the layer that best repairs the first forecast step is the same layer that best repairs the last one. Depths are on each model's own relative-depth axis.

Per-model horizon heatmaps

TimesFM: per-horizon-step restoration

The same restoration, resolved by how far ahead the forecast step is rather than collapsed over the horizon, for TimesFM.

The same window-averaged restoration curve above, resolved by forecast horizon step instead of collapsed over it: each cell asks how much of the clean-vs-corrupted gap AT THAT specific forecast step (not the whole horizon on average) patching that layer restored.

What does this mean?

How to read it
A cell that fades toward the right (later horizon steps) means that layer's causal contribution to restoring the corruption's damage is concentrated in the near-term part of the forecast; a flat row means the layer's causal role is uniform across the whole forecast horizon.

Limitations
Uses the exact per-window-averaged restoration already computed for the depth curve above — no new forward passes — so it inherits the same per-corruption normalization caveat: compare shapes within one corruption's row, not raw levels across corruptions.

Chronos-2: per-horizon-step restoration

The same restoration, resolved by how far ahead the forecast step is rather than collapsed over the horizon, for Chronos-2.

Sundial: per-horizon-step restoration

The same restoration, resolved by how far ahead the forecast step is rather than collapsed over the horizon, for Sundial.

Chronos-Bolt: per-horizon-step restoration

The same restoration, resolved by how far ahead the forecast step is rather than collapsed over the horizon, for Chronos-Bolt.

Timer: per-horizon-step restoration

The same restoration, resolved by how far ahead the forecast step is rather than collapsed over the horizon, for Timer.

Time-MoE: per-horizon-step restoration

The same restoration, resolved by how far ahead the forecast step is rather than collapsed over the horizon, for Time-MoE.

Chronos-T5-Base: per-horizon-step restoration

The same restoration, resolved by how far ahead the forecast step is rather than collapsed over the horizon, for Chronos-T5-Base.

A concrete, single-series version of the aggregate patching curves above: for one series, the clean context and the corrupted context it produced, its own clean / corrupted / patched forecasts under every corruption that was patched, and its own restoration grid at the corruption that damaged it most.

How to read these case studies

How to read it
The patched forecast at each corruption uses the single (layer, window) cell that restored the most on average across the whole sampled batch — named in the table as patch_layer / patch_window — not this series' own best cell, which the table gives separately as own_best_layer / own_best_window. Where the two differ, the plotted patch is not the best available for this series, and recovered_frac is correspondingly lower than own_best_restoration. A negative recovered_frac means patching moved the forecast further from the clean one than the corruption did. The context traces are plotted on the same time axis as the forecasts but before step 0 — the corrupted context is what the model actually read before producing the forecast from corrupted input trace; the clean context is what it read for the other two forecasts. Each panel supports the usual Plotly affordances (drag to zoom into a region, double-click to reset, camera icon to save an image) via the toolbar in its top-right corner — the same detail-on-demand the SAE exemplar panels give through their click-to-enlarge modal, adapted to a multi-panel figure that already draws every corruption at once.

Limitations
These series are a family-stratified sample of the patched batch, not a typical or a worst case: useful for making the aggregate curves concrete and for checking that the patch mechanism does what the aggregate says, not for estimating how often any pattern here occurs. All quantities are scaled by each series' own naive-forecast error, so they are comparable across series of different amplitude.

TimesFM · d54b542c0edbac49 (random_parametric)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 0.560 0.452 2.491 2.441 False 2.428 2.455 stacked_xf.12 14 0.984 stacked_xf.12 14
noise 0.225 -0.176 2.491 2.441 False 2.454 2.456 stacked_xf.0 6 0.996 stacked_xf.16 14
level_shift 6.120 0.357 2.491 2.441 False 6.379 4.470 stacked_xf.8 14 0.975 stacked_xf.16 14
spike 0.422 0.156 2.491 2.441 False 2.387 2.424 stacked_xf.4 11 0.987 stacked_xf.16 14
warp 0.361 0.266 2.491 2.441 False 2.276 2.424 stacked_xf.16 14 0.988 stacked_xf.12 13
dropout 0.188 0.036 2.491 2.441 False 2.492 2.492 stacked_xf.0 8 0.991 stacked_xf.0 4

Every patched corruption for series d54b542c0edbac49 under TimesFM, in units of this series' own naive-forecast error. On this series TimesFM's clean forecast does not beat a flat line (2.49 against 2.44 for holding the last observed value, same units). That is a property of the series, not of the corruption experiment: with nothing periodic in the context to extrapolate, the best available response is a level estimate, which is why the clean, corrupted and patched traces all look flat and all sit close together. Read the clean-vs-corrupted gap on this panel; the clean-vs-truth gap is a ceiling every model in this run hits.

Series d54b542c0edbac49 under TimesFM: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series d54b542c0edbac49, level_shift (the corruption that damaged this series most under TimesFM): how much patching each single layer×window cell recovered, for this series alone.

TimesFM · c334536c37301114 (mixture)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 2.979 0.101 0.494 6.769 True 3.038 2.743 stacked_xf.12 14 0.882 stacked_xf.12 11
noise 0.548 0.010 0.494 6.769 True 0.762 0.681 stacked_xf.0 6 0.979 stacked_xf.4 10
level_shift 10.611 0.672 0.494 6.769 True 10.700 3.592 stacked_xf.8 14 0.984 stacked_xf.0 14
spike 0.426 -0.742 0.494 6.769 True 0.749 0.857 stacked_xf.4 11 0.976 stacked_xf.0 4
warp 2.365 0.324 0.494 6.769 True 2.463 1.655 stacked_xf.16 14 0.919 stacked_xf.16 14
dropout 0.274 0.040 0.494 6.769 True 0.580 0.573 stacked_xf.0 8 0.955 stacked_xf.8 12

Every patched corruption for series c334536c37301114 under TimesFM, in units of this series' own naive-forecast error.

Series c334536c37301114 under TimesFM: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series c334536c37301114, level_shift (the corruption that damaged this series most under TimesFM): how much patching each single layer×window cell recovered, for this series alone.

Chronos-2 · d54b542c0edbac49 (random_parametric)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 0.258 0.002 2.456 2.441 False 2.261 2.257 encoder.block.0 14 0.998 encoder.block.0 5
noise 0.305 -0.044 2.456 2.441 False 2.501 2.517 encoder.block.8 14 0.996 encoder.block.0 12
level_shift 7.507 0.324 2.456 2.441 False 7.209 4.961 encoder.block.0 14 0.978 encoder.block.0 14
spike 0.290 -0.223 2.456 2.441 False 2.564 2.564 encoder.block.8 14 0.995 encoder.block.0 2
warp 0.959 0.009 2.456 2.441 False 2.900 2.900 encoder.block.10 14 0.988 encoder.block.2 13
dropout 0.219 0.019 2.456 2.441 False 2.513 2.506 encoder.block.0 5 0.997 encoder.block.0 1

Every patched corruption for series d54b542c0edbac49 under Chronos-2, in units of this series' own naive-forecast error. On this series Chronos-2's clean forecast does not beat a flat line (2.46 against 2.44 for holding the last observed value, same units). That is a property of the series, not of the corruption experiment: with nothing periodic in the context to extrapolate, the best available response is a level estimate, which is why the clean, corrupted and patched traces all look flat and all sit close together. Read the clean-vs-corrupted gap on this panel; the clean-vs-truth gap is a ceiling every model in this run hits.

Series d54b542c0edbac49 under Chronos-2: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series d54b542c0edbac49, level_shift (the corruption that damaged this series most under Chronos-2): how much patching each single layer×window cell recovered, for this series alone.

Chronos-2 · c334536c37301114 (mixture)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 2.808 0.039 0.399 6.769 True 2.872 2.765 encoder.block.0 14 0.951 encoder.block.4 10
noise 0.605 0.323 0.399 6.769 True 0.741 0.556 encoder.block.8 14 0.991 encoder.block.6 14
level_shift 10.845 0.619 0.399 6.769 True 10.884 4.173 encoder.block.0 14 0.984 encoder.block.0 14
spike 0.176 -0.317 0.399 6.769 True 0.488 0.434 encoder.block.8 14 0.996 encoder.block.6 8
warp 2.267 0.011 0.399 6.769 True 2.342 2.324 encoder.block.10 14 0.932 encoder.block.2 9
dropout 0.076 0.129 0.399 6.769 True 0.432 0.426 encoder.block.0 5 0.998 encoder.block.0 4

Every patched corruption for series c334536c37301114 under Chronos-2, in units of this series' own naive-forecast error.

Series c334536c37301114 under Chronos-2: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series c334536c37301114, level_shift (the corruption that damaged this series most under Chronos-2): how much patching each single layer×window cell recovered, for this series alone.

Sundial · d54b542c0edbac49 (random_parametric)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 0.270 -0.666 2.445 2.441 False 2.490 2.522 model.layers.10 14 0.992 model.layers.10 14
noise 0.697 -0.008 2.445 2.441 False 2.056 2.379 model.layers.6 14 0.982 model.layers.10 14
level_shift 5.741 0.476 2.445 2.441 False 5.640 3.746 model.layers.6 14 0.980 model.layers.10 14
spike 0.261 -1.180 2.445 2.441 False 2.517 2.636 model.layers.10 14 0.987 model.layers.8 12
warp 0.376 -0.505 2.445 2.441 False 2.241 2.545 model.layers.10 14 0.993 model.layers.10 14
dropout 0.234 -1.005 2.445 2.441 False 2.546 2.587 model.layers.8 12 0.982 model.layers.10 14

Every patched corruption for series d54b542c0edbac49 under Sundial, in units of this series' own naive-forecast error. On this series Sundial's clean forecast does not beat a flat line (2.45 against 2.44 for holding the last observed value, same units). That is a property of the series, not of the corruption experiment: with nothing periodic in the context to extrapolate, the best available response is a level estimate, which is why the clean, corrupted and patched traces all look flat and all sit close together. Read the clean-vs-corrupted gap on this panel; the clean-vs-truth gap is a ceiling every model in this run hits.

Series d54b542c0edbac49 under Sundial: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series d54b542c0edbac49, level_shift (the corruption that damaged this series most under Sundial): how much patching each single layer×window cell recovered, for this series alone.

Sundial · c334536c37301114 (mixture)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 2.937 0.395 0.490 6.769 True 2.907 1.768 model.layers.10 14 0.897 model.layers.10 14
noise 0.982 0.254 0.490 6.769 True 1.160 0.959 model.layers.6 14 0.934 model.layers.6 14
level_shift 9.219 0.527 0.490 6.769 True 9.359 4.509 model.layers.6 14 0.989 model.layers.0 14
spike 0.535 -2.119 0.490 6.769 True 0.857 1.729 model.layers.10 14 0.971 model.layers.4 5
warp 2.880 0.868 0.490 6.769 True 2.923 0.672 model.layers.10 14 0.985 model.layers.10 14
dropout 0.176 -0.094 0.490 6.769 True 0.517 0.489 model.layers.8 12 0.973 model.layers.0 13

Every patched corruption for series c334536c37301114 under Sundial, in units of this series' own naive-forecast error.

Series c334536c37301114 under Sundial: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series c334536c37301114, level_shift (the corruption that damaged this series most under Sundial): how much patching each single layer×window cell recovered, for this series alone.

Chronos-Bolt · d54b542c0edbac49 (random_parametric)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 0.316 0.064 2.573 2.441 False 2.506 2.470 encoder.block.4 14 0.982 encoder.block.0 12
noise 0.584 0.005 2.573 2.441 False 2.298 2.322 encoder.block.0 6 0.968 encoder.block.4 0
level_shift 6.586 0.247 2.573 2.441 False 6.716 5.286 encoder.block.0 14 0.973 encoder.block.0 14
spike 0.149 -0.441 2.573 2.441 False 2.532 2.533 encoder.block.0 6 0.990 encoder.block.2 10
warp 0.715 0.163 2.573 2.441 False 2.187 2.283 encoder.block.4 7 0.961 encoder.block.0 6
dropout 0.065 -0.156 2.573 2.441 False 2.590 2.610 encoder.block.0 5 0.996 encoder.block.2 8

Every patched corruption for series d54b542c0edbac49 under Chronos-Bolt, in units of this series' own naive-forecast error. On this series Chronos-Bolt's clean forecast does not beat a flat line (2.57 against 2.44 for holding the last observed value, same units). That is a property of the series, not of the corruption experiment: with nothing periodic in the context to extrapolate, the best available response is a level estimate, which is why the clean, corrupted and patched traces all look flat and all sit close together. Read the clean-vs-corrupted gap on this panel; the clean-vs-truth gap is a ceiling every model in this run hits.

Series d54b542c0edbac49 under Chronos-Bolt: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series d54b542c0edbac49, level_shift (the corruption that damaged this series most under Chronos-Bolt): how much patching each single layer×window cell recovered, for this series alone.

Chronos-Bolt · c334536c37301114 (mixture)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 3.004 0.093 0.553 6.769 True 2.974 2.696 encoder.block.4 14 0.769 encoder.block.4 10
noise 0.937 -0.106 0.553 6.769 True 0.959 1.102 encoder.block.0 6 0.961 encoder.block.0 14
level_shift 10.751 0.876 0.553 6.769 True 10.731 1.392 encoder.block.0 14 0.993 encoder.block.0 14
spike 0.298 -0.203 0.553 6.769 True 0.586 0.717 encoder.block.0 6 0.978 encoder.block.4 13
warp 3.380 0.323 0.553 6.769 True 3.336 2.271 encoder.block.4 7 0.906 encoder.block.4 5
dropout 0.254 -0.042 0.553 6.769 True 0.597 0.599 encoder.block.0 5 0.991 encoder.block.0 12

Every patched corruption for series c334536c37301114 under Chronos-Bolt, in units of this series' own naive-forecast error.

Series c334536c37301114 under Chronos-Bolt: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series c334536c37301114, level_shift (the corruption that damaged this series most under Chronos-Bolt): how much patching each single layer×window cell recovered, for this series alone.

Timer · d54b542c0edbac49 (random_parametric)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 0.406 0.571 2.379 2.441 True 2.495 2.386 model.layers.6 13 0.986 model.layers.6 13
noise 0.220 0.608 2.379 2.441 True 2.534 2.372 model.layers.6 13 0.985 model.layers.6 13
level_shift 5.997 0.542 2.379 2.441 True 6.138 3.384 model.layers.2 13 0.986 model.layers.0 13
spike 0.291 0.277 2.379 2.441 True 2.507 2.386 model.layers.6 13 0.990 model.layers.0 13
warp 0.245 0.635 2.379 2.441 True 2.268 2.367 model.layers.6 13 0.995 model.layers.6 13
dropout 0.144 0.030 2.379 2.441 True 2.500 2.493 model.layers.2 13 0.985 model.layers.0 1

Every patched corruption for series d54b542c0edbac49 under Timer, in units of this series' own naive-forecast error.

Series d54b542c0edbac49 under Timer: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series d54b542c0edbac49, level_shift (the corruption that damaged this series most under Timer): how much patching each single layer×window cell recovered, for this series alone.

Timer · c334536c37301114 (mixture)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 2.688 0.146 0.529 6.769 True 2.693 2.311 model.layers.6 13 0.858 model.layers.0 13
noise 1.143 0.318 0.529 6.769 True 1.184 1.002 model.layers.6 13 0.908 model.layers.2 13
level_shift 8.382 0.672 0.529 6.769 True 8.395 2.741 model.layers.2 13 0.987 model.layers.0 13
spike 1.197 -0.131 0.529 6.769 True 1.470 1.546 model.layers.6 13 0.953 model.layers.2 7
warp 2.591 0.522 0.529 6.769 True 2.562 1.375 model.layers.6 13 0.943 model.layers.6 13
dropout 0.407 0.715 0.529 6.769 True 0.635 0.535 model.layers.2 13 0.971 model.layers.6 13

Every patched corruption for series c334536c37301114 under Timer, in units of this series' own naive-forecast error.

Series c334536c37301114 under Timer: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series c334536c37301114, level_shift (the corruption that damaged this series most under Timer): how much patching each single layer×window cell recovered, for this series alone.

Time-MoE · d54b542c0edbac49 (random_parametric)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 1.634 0.478 2.604 2.441 False 1.948 1.920 model.layers.8 1 0.954 model.layers.10 1
noise 1.053 0.236 2.604 2.441 False 1.932 2.785 model.layers.10 0 0.958 model.layers.10 0
level_shift 0.054 -0.037 2.604 2.441 False 2.599 2.596 model.layers.0 5 0.994 model.layers.4 2
spike 0.266 -0.006 2.604 2.441 False 2.791 2.790 model.layers.0 7 0.963 model.layers.4 13
warp 0.250 0.434 2.604 2.441 False 2.603 2.507 model.layers.10 1 0.995 model.layers.2 1
dropout 1.259 0.000 2.604 2.441 False 2.890 2.890 model.layers.0 6 0.814 model.layers.4 1

Every patched corruption for series d54b542c0edbac49 under Time-MoE, in units of this series' own naive-forecast error. On this series Time-MoE's clean forecast does not beat a flat line (2.60 against 2.44 for holding the last observed value, same units). That is a property of the series, not of the corruption experiment: with nothing periodic in the context to extrapolate, the best available response is a level estimate, which is why the clean, corrupted and patched traces all look flat and all sit close together. Read the clean-vs-corrupted gap on this panel; the clean-vs-truth gap is a ceiling every model in this run hits.

Series d54b542c0edbac49 under Time-MoE: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series d54b542c0edbac49, deseasonalize (the corruption that damaged this series most under Time-MoE): how much patching each single layer×window cell recovered, for this series alone.

Time-MoE · c334536c37301114 (mixture)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 2.523 0.135 1.004 6.769 True 2.736 2.403 model.layers.8 1 0.911 model.layers.2 0
noise 2.337 0.370 1.004 6.769 True 2.357 1.565 model.layers.10 0 0.934 model.layers.8 0
level_shift 0.322 0.001 1.004 6.769 True 0.999 1.000 model.layers.0 5 0.966 model.layers.0 7
spike 0.263 -0.004 1.004 6.769 True 1.051 1.053 model.layers.0 7 0.967 model.layers.0 3
warp 1.233 0.682 1.004 6.769 True 0.867 0.991 model.layers.10 1 0.987 model.layers.10 1
dropout 0.060 -0.043 1.004 6.769 True 1.014 1.013 model.layers.0 6 0.951 model.layers.0 5

Every patched corruption for series c334536c37301114 under Time-MoE, in units of this series' own naive-forecast error.

Series c334536c37301114 under Time-MoE: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series c334536c37301114, deseasonalize (the corruption that damaged this series most under Time-MoE): how much patching each single layer×window cell recovered, for this series alone.

Chronos-T5-Base · d54b542c0edbac49 (random_parametric)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 0.202 -1.892 2.388 2.441 True 2.373 2.258 encoder.block.6 14 0.987 encoder.block.8 1
noise 0.482 -0.046 2.388 2.441 True 2.011 1.963 encoder.block.8 5 0.990 encoder.block.8 8
level_shift 3.904 0.635 2.388 2.441 True 3.232 2.339 encoder.block.0 14 0.992 encoder.block.0 14
spike 0.286 -0.677 2.388 2.441 True 2.510 2.641 encoder.block.10 7 0.977 encoder.block.2 6
warp 0.630 -0.096 2.388 2.441 True 2.149 2.262 encoder.block.2 4 0.987 encoder.block.2 14
dropout 0.583 -0.318 2.388 2.441 True 2.233 2.380 encoder.block.10 4 0.980 encoder.block.2 4

Every patched corruption for series d54b542c0edbac49 under Chronos-T5-Base, in units of this series' own naive-forecast error.

Series d54b542c0edbac49 under Chronos-T5-Base: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series d54b542c0edbac49, level_shift (the corruption that damaged this series most under Chronos-T5-Base): how much patching each single layer×window cell recovered, for this series alone.

Chronos-T5-Base · c334536c37301114 (mixture)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 2.995 0.107 0.481 6.769 True 2.989 2.678 encoder.block.6 14 0.840 encoder.block.2 14
noise 0.784 0.143 0.481 6.769 True 0.875 0.800 encoder.block.8 5 0.984 encoder.block.10 5
level_shift 10.887 0.428 0.481 6.769 True 11.008 6.109 encoder.block.0 14 0.997 encoder.block.4 14
spike 0.161 -0.035 0.481 6.769 True 0.408 0.407 encoder.block.10 7 0.985 encoder.block.6 13
warp 3.749 0.330 0.481 6.769 True 3.832 2.581 encoder.block.2 4 0.912 encoder.block.2 5
dropout 0.194 -0.235 0.481 6.769 True 0.492 0.471 encoder.block.10 4 0.990 encoder.block.0 12

Every patched corruption for series c334536c37301114 under Chronos-T5-Base, in units of this series' own naive-forecast error.

Series c334536c37301114 under Chronos-T5-Base: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series c334536c37301114, level_shift (the corruption that damaged this series most under Chronos-T5-Base): how much patching each single layer×window cell recovered, for this series alone.

Attention

Attention structure & head causality

Where heads look as a function of temporal lag, which heads carry seasonal structure, and which heads and MLP blocks forecasts causally depend on.

What this stage tells you

Question
Which attention heads look where in time, and which of them (or which MLP blocks) actually matter to the forecast?

How
Averages each head's attention weight as a function of how far back in time it looks, flags heads whose attention concentrates near seasonal-period multiples, and separately re-runs the forecast with individual heads or MLP blocks zeroed out to see how much accuracy degrades.

Good vs. bad result
Good: a head with a clean, repeating attention stripe at a real seasonal lag (a periodicity head) whose removal via ablation measurably hurts accuracy on exactly that kind of data — pattern and causal importance agreeing. Bad: no head or MLP block's removal moves accuracy at all, or the architecture reports 'unsupported' because it exposes no attention weights to inspect.

What it cannot tell you
The lag-profile and periodicity-head numbers are unconditional averages over sampled series, so a head that's periodic only on some data families and flat on others can look unremarkable in the averaged view even though it's doing real, family-specific work. Pattern support (whether attention weights or ablation are even available) varies by architecture, so a missing or 'unsupported' result here is a capability gap, not evidence the model lacks that structure.

TimesFM

Attention mass by temporal lag

Average attention weight as a function of how many steps behind the query a key token is, for every head of every captured layer — reveals which heads act locally (mass concentrated at small lag) versus which look far back (mass at large or periodic lags).

What does this mean?

How to read it
A bright stripe at a fixed lag repeating every `period` steps is a candidate periodicity/induction head — it's specifically looking one season back. A head with all its mass at lag 0-1 is doing local/recency-based aggregation, not long-range structure.

Limitations
This is an unconditional average over sampled series, so a head that's periodic only on seasonal families and local on trend-only families will show a blurred, unremarkable average here — the top-periodicity-heads table below is computed per-family specifically to avoid that dilution. Architectures with no exposed attention pattern (purely functional attention) show 'unsupported' instead of this heatmap.

Top periodicity heads

layer head score family
stacked_xf.1 8 0.042 block_bootstrap
stacked_xf.0 3 0.025 block_bootstrap
stacked_xf.0 15 0.021 block_bootstrap
stacked_xf.0 0 0.017 block_bootstrap
stacked_xf.0 14 0.017 block_bootstrap

Per head, per family: normalized attention mass falling within ±1 lag of that family's seasonal period (and its multiples), minus a mask-fraction baseline — the mass a head paying uniform attention to every lag would put in those same positions purely by chance, given how many of the possible lags count as 'near a period multiple.' Each head keeps only its best-scoring family (shown in the table) so a head periodic on one family isn't diluted by its flat behavior on the others, the way the unconditional heatmap above would show it.

What does this mean?

How to read it
'score' is excess mass over that chance baseline, not a raw fraction: 0 means this head's mass near seasonal-lag multiples is exactly what a uniform head would show by chance (no real periodicity signal); a score of, say, 0.30 means an extra 30 percentage points of this head's attention mass sits at seasonal-lag multiples beyond chance — this is the induction-head analog for forecasting. Higher is a stronger, more specifically seasonal head.

Limitations
Only tests period multiples derived from each benchmark family's *labeled* seasonal period — a head genuinely periodic at an unlabeled or non-integer-ratio period would score near zero here despite being real. The reported family is whichever gave that head its single highest score, not every family it responds to.

Head mean-ablation ΔMASE

Each head's output projection input is fixed to its mean activation (mean-ablation: removes what's head-specific about this input while preserving the head's typical/average contribution) and the resulting forecast degradation is measured — a direct causal test of which heads the forecast depends on, not just which heads look interesting.

What does this mean?

How to read it
Positive ΔMASE (red) means removing that head hurts the forecast — it's load-bearing. Near-zero or negative (blue) means the head is redundant or even actively unhelpful for this benchmark. Concretely: a cell at +0.15 means mean-ablating that head made this model's average MASE 0.15 worse in absolute terms (e.g. 1.00 → 1.15, roughly 15% worse relative to a MASE-1.0 baseline); a cell at -0.05 means ablating it left the forecast slightly *better*. The most load-bearing head is called out in the findings.

Limitations
Mean-ablation is a specific, relatively mild intervention (replacing with the *average* behavior, not zero or noise) — a head could still matter under a harsher ablation. Heads can also compensate for each other (redundant circuits), so ablating one at a time can understate the importance of a head that's only critical once its backup is also removed.

MLP ablation unavailable: no wrapping MLP submodule found for this architecture (its feed-forward block may be exposed as separate Linear layers instead of one named module).

Chronos-2

Attention mass by temporal lag

Average attention weight as a function of how many steps behind the query a key token is, for every head of every captured layer — reveals which heads act locally (mass concentrated at small lag) versus which look far back (mass at large or periodic lags).

What does this mean?

How to read it
A bright stripe at a fixed lag repeating every `period` steps is a candidate periodicity/induction head — it's specifically looking one season back. A head with all its mass at lag 0-1 is doing local/recency-based aggregation, not long-range structure.

Limitations
This is an unconditional average over sampled series, so a head that's periodic only on seasonal families and local on trend-only families will show a blurred, unremarkable average here — the top-periodicity-heads table below is computed per-family specifically to avoid that dilution. Architectures with no exposed attention pattern (purely functional attention) show 'unsupported' instead of this heatmap.

Top periodicity heads

layer head score family
encoder.block.4 6 0.293 block_bootstrap
encoder.block.3 5 0.289 block_bootstrap
encoder.block.3 3 0.269 block_bootstrap
encoder.block.5 1 0.264 block_bootstrap
encoder.block.3 6 0.252 block_bootstrap

Per head, per family: normalized attention mass falling within ±1 lag of that family's seasonal period (and its multiples), minus a mask-fraction baseline — the mass a head paying uniform attention to every lag would put in those same positions purely by chance, given how many of the possible lags count as 'near a period multiple.' Each head keeps only its best-scoring family (shown in the table) so a head periodic on one family isn't diluted by its flat behavior on the others, the way the unconditional heatmap above would show it.

What does this mean?

How to read it
'score' is excess mass over that chance baseline, not a raw fraction: 0 means this head's mass near seasonal-lag multiples is exactly what a uniform head would show by chance (no real periodicity signal); a score of, say, 0.30 means an extra 30 percentage points of this head's attention mass sits at seasonal-lag multiples beyond chance — this is the induction-head analog for forecasting. Higher is a stronger, more specifically seasonal head.

Limitations
Only tests period multiples derived from each benchmark family's *labeled* seasonal period — a head genuinely periodic at an unlabeled or non-integer-ratio period would score near zero here despite being real. The reported family is whichever gave that head its single highest score, not every family it responds to.

Top periodicity heads — resolution-matched

layer head score family
encoder.block.3 5 0.067 block_bootstrap
encoder.block.4 4 0.067 block_bootstrap
encoder.block.3 1 0.067 block_bootstrap
encoder.block.3 2 0.067 block_bootstrap
encoder.block.3 0 0.067 block_bootstrap

The same statistic, recomputed after binning this model's lag axis to 32 time steps — the token width of the coarsest model in this run (TimesFM). Lag index means a different number of timesteps for each model (this one resolves 16 steps), so the native table above compares unlike to unlike across models.

What does this mean?

How to read it
This is the table a CROSS-MODEL claim may cite; the native one above is the right axis for a statement about this model alone. If a head's rank differs between the two, the native ranking was partly a statement about patch size.

Limitations
Binning can only lose resolution, never add it, so a genuinely sub-bin-width periodicity in the finer model is invisible here by construction — that is the point: it is not comparable to a model that cannot resolve it at all. A difference smaller than 32 steps is not interpretable across models under any mode.

Head mean-ablation ΔMASE

Each head's output projection input is fixed to its mean activation (mean-ablation: removes what's head-specific about this input while preserving the head's typical/average contribution) and the resulting forecast degradation is measured — a direct causal test of which heads the forecast depends on, not just which heads look interesting.

What does this mean?

How to read it
Positive ΔMASE (red) means removing that head hurts the forecast — it's load-bearing. Near-zero or negative (blue) means the head is redundant or even actively unhelpful for this benchmark. Concretely: a cell at +0.15 means mean-ablating that head made this model's average MASE 0.15 worse in absolute terms (e.g. 1.00 → 1.15, roughly 15% worse relative to a MASE-1.0 baseline); a cell at -0.05 means ablating it left the forecast slightly *better*. The most load-bearing head is called out in the findings.

Limitations
Mean-ablation is a specific, relatively mild intervention (replacing with the *average* behavior, not zero or noise) — a head could still matter under a harsher ablation. Heads can also compensate for each other (redundant circuits), so ablating one at a time can understate the importance of a head that's only critical once its backup is also removed.

MLP mean-ablation ΔMASE

The same mean-ablation causal test as the head heatmap above, applied to each block's MLP sublayer as a whole instead of individual attention heads.

What does this mean?

How to read it
Taller bars mean that block's MLP matters more to the forecast. Comparing this to the head-ablation heatmap for the same block shows whether a layer's causal contribution is mostly attention-driven, MLP-driven, or both.

Limitations
Same caveats as head ablation: mean-ablation is mild, and redundancy across blocks can hide a block's true importance if another block backs it up.

Sundial

Attention patterns unsupported for this architecture.

Head mean-ablation ΔMASE

Each head's output projection input is fixed to its mean activation (mean-ablation: removes what's head-specific about this input while preserving the head's typical/average contribution) and the resulting forecast degradation is measured — a direct causal test of which heads the forecast depends on, not just which heads look interesting.

What does this mean?

How to read it
Positive ΔMASE (red) means removing that head hurts the forecast — it's load-bearing. Near-zero or negative (blue) means the head is redundant or even actively unhelpful for this benchmark. Concretely: a cell at +0.15 means mean-ablating that head made this model's average MASE 0.15 worse in absolute terms (e.g. 1.00 → 1.15, roughly 15% worse relative to a MASE-1.0 baseline); a cell at -0.05 means ablating it left the forecast slightly *better*. The most load-bearing head is called out in the findings.

Limitations
Mean-ablation is a specific, relatively mild intervention (replacing with the *average* behavior, not zero or noise) — a head could still matter under a harsher ablation. Heads can also compensate for each other (redundant circuits), so ablating one at a time can understate the importance of a head that's only critical once its backup is also removed.

⚠ Sundial's most load-bearing head (L1·h3) ablates to ΔMASE +0.041 (0.3× this model's repeat-run floor of ±0.141, below its own repeat-run noise floor) — so no head in this model cleared its own repeat-run noise floor, and no ranking finding is emitted from this heatmap.

MLP mean-ablation ΔMASE

The same mean-ablation causal test as the head heatmap above, applied to each block's MLP sublayer as a whole instead of individual attention heads.

What does this mean?

How to read it
Taller bars mean that block's MLP matters more to the forecast. Comparing this to the head-ablation heatmap for the same block shows whether a layer's causal contribution is mostly attention-driven, MLP-driven, or both. The dotted line is this model's own repeat-run MASE noise floor: a bar below it is not distinguishable from calling the model twice.

Limitations
Same caveats as head ablation: mean-ablation is mild, and redundancy across blocks can hide a block's true importance if another block backs it up.

Chronos-Bolt

Attention patterns unsupported for this architecture.

Head mean-ablation ΔMASE

Each head's output projection input is fixed to its mean activation (mean-ablation: removes what's head-specific about this input while preserving the head's typical/average contribution) and the resulting forecast degradation is measured — a direct causal test of which heads the forecast depends on, not just which heads look interesting.

What does this mean?

How to read it
Positive ΔMASE (red) means removing that head hurts the forecast — it's load-bearing. Near-zero or negative (blue) means the head is redundant or even actively unhelpful for this benchmark. Concretely: a cell at +0.15 means mean-ablating that head made this model's average MASE 0.15 worse in absolute terms (e.g. 1.00 → 1.15, roughly 15% worse relative to a MASE-1.0 baseline); a cell at -0.05 means ablating it left the forecast slightly *better*. The most load-bearing head is called out in the findings.

Limitations
Mean-ablation is a specific, relatively mild intervention (replacing with the *average* behavior, not zero or noise) — a head could still matter under a harsher ablation. Heads can also compensate for each other (redundant circuits), so ablating one at a time can understate the importance of a head that's only critical once its backup is also removed.

MLP mean-ablation ΔMASE

The same mean-ablation causal test as the head heatmap above, applied to each block's MLP sublayer as a whole instead of individual attention heads.

What does this mean?

How to read it
Taller bars mean that block's MLP matters more to the forecast. Comparing this to the head-ablation heatmap for the same block shows whether a layer's causal contribution is mostly attention-driven, MLP-driven, or both.

Limitations
Same caveats as head ablation: mean-ablation is mild, and redundancy across blocks can hide a block's true importance if another block backs it up.

Timer

Attention patterns unsupported for this architecture.

Head mean-ablation ΔMASE

Each head's output projection input is fixed to its mean activation (mean-ablation: removes what's head-specific about this input while preserving the head's typical/average contribution) and the resulting forecast degradation is measured — a direct causal test of which heads the forecast depends on, not just which heads look interesting.

What does this mean?

How to read it
Positive ΔMASE (red) means removing that head hurts the forecast — it's load-bearing. Near-zero or negative (blue) means the head is redundant or even actively unhelpful for this benchmark. Concretely: a cell at +0.15 means mean-ablating that head made this model's average MASE 0.15 worse in absolute terms (e.g. 1.00 → 1.15, roughly 15% worse relative to a MASE-1.0 baseline); a cell at -0.05 means ablating it left the forecast slightly *better*. The most load-bearing head is called out in the findings.

Limitations
Mean-ablation is a specific, relatively mild intervention (replacing with the *average* behavior, not zero or noise) — a head could still matter under a harsher ablation. Heads can also compensate for each other (redundant circuits), so ablating one at a time can understate the importance of a head that's only critical once its backup is also removed.

MLP ablation unavailable: no wrapping MLP submodule found for this architecture (its feed-forward block may be exposed as separate Linear layers instead of one named module).

Time-MoE

Attention patterns unsupported for this architecture.

Head mean-ablation ΔMASE

Each head's output projection input is fixed to its mean activation (mean-ablation: removes what's head-specific about this input while preserving the head's typical/average contribution) and the resulting forecast degradation is measured — a direct causal test of which heads the forecast depends on, not just which heads look interesting.

What does this mean?

How to read it
Positive ΔMASE (red) means removing that head hurts the forecast — it's load-bearing. Near-zero or negative (blue) means the head is redundant or even actively unhelpful for this benchmark. Concretely: a cell at +0.15 means mean-ablating that head made this model's average MASE 0.15 worse in absolute terms (e.g. 1.00 → 1.15, roughly 15% worse relative to a MASE-1.0 baseline); a cell at -0.05 means ablating it left the forecast slightly *better*. The most load-bearing head is called out in the findings.

Limitations
Mean-ablation is a specific, relatively mild intervention (replacing with the *average* behavior, not zero or noise) — a head could still matter under a harsher ablation. Heads can also compensate for each other (redundant circuits), so ablating one at a time can understate the importance of a head that's only critical once its backup is also removed.

MLP ablation unavailable: no wrapping MLP submodule found for this architecture (its feed-forward block may be exposed as separate Linear layers instead of one named module).

Chronos-T5-Base

Attention mass by temporal lag

Average attention weight as a function of how many steps behind the query a key token is, for every head of every captured layer — reveals which heads act locally (mass concentrated at small lag) versus which look far back (mass at large or periodic lags).

What does this mean?

How to read it
A bright stripe at a fixed lag repeating every `period` steps is a candidate periodicity/induction head — it's specifically looking one season back. A head with all its mass at lag 0-1 is doing local/recency-based aggregation, not long-range structure.

Limitations
This is an unconditional average over sampled series, so a head that's periodic only on seasonal families and local on trend-only families will show a blurred, unremarkable average here — the top-periodicity-heads table below is computed per-family specifically to avoid that dilution. Architectures with no exposed attention pattern (purely functional attention) show 'unsupported' instead of this heatmap.

Top periodicity heads

layer head score family
encoder.block.11 10 0.504 mixture
encoder.block.9 1 0.487 mixture
encoder.block.11 1 0.411 mixture
encoder.block.8 1 0.353 mixture
encoder.block.8 10 0.332 mixture

Per head, per family: normalized attention mass falling within ±1 lag of that family's seasonal period (and its multiples), minus a mask-fraction baseline — the mass a head paying uniform attention to every lag would put in those same positions purely by chance, given how many of the possible lags count as 'near a period multiple.' Each head keeps only its best-scoring family (shown in the table) so a head periodic on one family isn't diluted by its flat behavior on the others, the way the unconditional heatmap above would show it.

What does this mean?

How to read it
'score' is excess mass over that chance baseline, not a raw fraction: 0 means this head's mass near seasonal-lag multiples is exactly what a uniform head would show by chance (no real periodicity signal); a score of, say, 0.30 means an extra 30 percentage points of this head's attention mass sits at seasonal-lag multiples beyond chance — this is the induction-head analog for forecasting. Higher is a stronger, more specifically seasonal head.

Limitations
Only tests period multiples derived from each benchmark family's *labeled* seasonal period — a head genuinely periodic at an unlabeled or non-integer-ratio period would score near zero here despite being real. The reported family is whichever gave that head its single highest score, not every family it responds to.

Top periodicity heads — resolution-matched

layer head score family
encoder.block.6 3 0.065 block_bootstrap
encoder.block.8 3 0.049 block_bootstrap
encoder.block.1 10 0.045 block_bootstrap
encoder.block.2 10 0.039 block_bootstrap
encoder.block.3 10 0.038 block_bootstrap

The same statistic, recomputed after binning this model's lag axis to 32 time steps — the token width of the coarsest model in this run (TimesFM). Lag index means a different number of timesteps for each model (this one resolves 1 steps), so the native table above compares unlike to unlike across models.

What does this mean?

How to read it
This is the table a CROSS-MODEL claim may cite; the native one above is the right axis for a statement about this model alone. If a head's rank differs between the two, the native ranking was partly a statement about patch size.

Limitations
Binning can only lose resolution, never add it, so a genuinely sub-bin-width periodicity in the finer model is invisible here by construction — that is the point: it is not comparable to a model that cannot resolve it at all. A difference smaller than 32 steps is not interpretable across models under any mode.

Head mean-ablation ΔMASE

Each head's output projection input is fixed to its mean activation (mean-ablation: removes what's head-specific about this input while preserving the head's typical/average contribution) and the resulting forecast degradation is measured — a direct causal test of which heads the forecast depends on, not just which heads look interesting.

What does this mean?

How to read it
Positive ΔMASE (red) means removing that head hurts the forecast — it's load-bearing. Near-zero or negative (blue) means the head is redundant or even actively unhelpful for this benchmark. Concretely: a cell at +0.15 means mean-ablating that head made this model's average MASE 0.15 worse in absolute terms (e.g. 1.00 → 1.15, roughly 15% worse relative to a MASE-1.0 baseline); a cell at -0.05 means ablating it left the forecast slightly *better*. The most load-bearing head is called out in the findings.

Limitations
Mean-ablation is a specific, relatively mild intervention (replacing with the *average* behavior, not zero or noise) — a head could still matter under a harsher ablation. Heads can also compensate for each other (redundant circuits), so ablating one at a time can understate the importance of a head that's only critical once its backup is also removed.

⚠ Chronos-T5-Base's most load-bearing head (L9·h1) ablates to ΔMASE +0.239 (1.0× this model's repeat-run floor of ±0.238, not distinguishable from repeat-run noise) — so no head in this model cleared its own repeat-run noise floor, and no ranking finding is emitted from this heatmap.

MLP mean-ablation ΔMASE

The same mean-ablation causal test as the head heatmap above, applied to each block's MLP sublayer as a whole instead of individual attention heads.

What does this mean?

How to read it
Taller bars mean that block's MLP matters more to the forecast. Comparing this to the head-ablation heatmap for the same block shows whether a layer's causal contribution is mostly attention-driven, MLP-driven, or both. The dotted line is this model's own repeat-run MASE noise floor: a bar below it is not distinguishable from calling the model twice.

Limitations
Same caveats as head ablation: mean-ablation is mild, and redundancy across blocks can hide a block's true importance if another block backs it up.

Decoder cross-attention at the first forecast step

Encoder-decoder architectures only: how much attention mass the decoder's first forecast step places on each encoder input position, one line per decoder layer.

What does this mean?

How to read it
A line that peaks near lag 0 (the most recent context) means that layer's forecast leans on recency; a line with a bump further back at a periodic offset suggests that layer is reading a specific earlier season. Different decoder layers often specialize in different lookback ranges.

Limitations
Decoder-only architectures (no separate encoder) have no such chart, since there's no encoder to cross-attend into — that's an architectural fact, not a missing measurement. Only the *first* forecast step is shown; later autoregressive steps can attend differently once earlier forecast steps enter the context.

Part 6 — Features and concepts

The sparse feature dictionaries trained per model and per layer, the concepts they cluster into, whether those concepts are shared across models, and concrete per-family case studies.

↑ contents
SAE

Sparse feature dictionary

Per-target reconstruction/dead-feature/forecast-preservation summary, plus exemplar series for the dictionary's ground-truth-matched features.

What this stage tells you

Question
Can each model's layer be decomposed into a small number of individually interpretable features, do those features actually matter to the forecast, and do the two models' features play the same role?

How
Trains a sparse dictionary that reconstructs a layer's activations from only a handful of active 'feature' directions at a time, then checks reconstruction quality, how many learned features ever fire at all, whether swapping in the reconstruction changes the forecast, and whether any feature's activation tracks a known ground-truth property of the data (like a trend order or a seasonal period). A causal channel battery then patches each alive feature's direction into a clean forward pass and measures a real, per-channel response (not just correlation with a label), scored against a random-direction null. Features are clustered into named 'roles' by their shared response and structural signature, and each model's roles are matched against the other model's by cosine similarity of their null-normalized response fingerprints, checked against an untrained-twin floor.

Good vs. bad result
Good: high reconstruction fidelity, a low dead-feature rate, forecast-preservation deltas that stay within the SAE's own seed-to-seed noise floor, and features whose activation clearly tracks a real ground-truth field well above what random label shuffling would produce by chance. For the causal layer: a channel response that clears the random-direction null, and a cross-model role match rate that clears its own untrained-twin floor (not just zero). Bad: the large majority of features never firing at all (a common failure mode), a forecast-preservation delta far outside the noise floor, a ground-truth alignment score that isn't meaningfully above its own permutation-null control, or a role match rate that looks large but sits below the untrained-twin floor — architecture match alone can produce that, not shared learned structure.

What it cannot tell you
A feature firing on a particular kind of series is illustrative correlation unless the causal channel battery has confirmed a real patched response for that feature — check the channel result, not just the ground-truth alignment score, before reading any feature as meaningful. A cross-model role match is a geometric correspondence in response space, not evidence the two models use that role the same way causally — read the match rate against its own untrained-twin floor before treating any match as evidence of a shared feature; a rate that does not clear that floor is not an established claim for that pair, and this is a per-run measurement, not a fixed property of the method. Only the small alive fraction of the dictionary (often under 10%) can ever show up as an example, and the headline alignment number is inflated by searching many candidate ground-truth fields per feature, so it must always be read next to its permutation-null control, never on its own.

What these numbers are for, and why reconstruction fidelity is not the headline

A sparse dictionary is only useful here if four things hold, in order, and each column below tests exactly one of them. (1) Is it a faithful stand-in for the layer? That is reconstruction fidelity — and it is a floor, not a finding: a dictionary that cannot rebuild the layer is describing something else. (2) Is enough of it actually in use? That is the dead-feature share. High fidelity from a mostly-dead dictionary means every feature shown was drawn from a small surviving minority. (3) Does the model still forecast the same way through it? That is ΔMASE, and it is a stronger test than fidelity, because fidelity is measured in activation space where all directions count equally and the forecast does not care equally about all of them — a reconstruction can be numerically excellent and still drop the one direction the forecast head reads. ΔMASE sign then asks whether that number survives refitting the dictionary at another random seed; where it does not, the damage and its direction are not a measurement at all. (4) Do its features correspond to anything nameable? That is alignment, read against each dictionary's own label-permutation null rather than against zero. This is the one closest to the question the section exists for — the goal is reading features, not rebuilding layers — and it is the one that most often disagrees with fidelity: on this evidence a dictionary can rebuild its layer almost perfectly while none of its features corresponds to any labelled property. Open the table below for each column's exact arithmetic.

⚠ 4 of 56 dictionaries exceed the dead-feature acceptance bar, so every feature shown for them is drawn from a small alive minority rather than the whole dictionary: Time-MoE/model.layers.1, Time-MoE/model.layers.11, Time-MoE/model.layers.0, Time-MoE/model.layers.2.

⚠ 6 dictionaries were trained without some real-data augmentation rows, because the model returned NaN/inf for those real contexts (for example a constant series) and a single non-finite row destroys every SAE weight: Timer/model.layers.4 (75 rows dropped), Timer/model.layers.6 (75 rows dropped), Timer/model.layers.3 (75 rows dropped), Timer/model.layers.2 (75 rows dropped), Timer/model.layers.7 (75 rows dropped), Timer/model.layers.1 (75 rows dropped).

Every trained dictionary on one row, worst first. LEFT: how much of each dictionary is dead, against the acceptance bar it was judged on. MIDDLE: how well the live part reconstructs the layer. RIGHT: each dictionary's ground-truth alignment (orange) against ITS OWN label-permutation null (grey tick) -- the bar's length is the margin, and a grey tick to the right of the orange dot means the names carry no more signal than shuffled labels would.

All 14 numbers per dictionary as a table, plus the rule behind every verdict
target reconstruction fidelity reconstruction fidelity (held out) dead rate dead-rate gate admission ΔMASE (window) ΔMASE (token) ΔMASE (token, held out) granularity gap ΔMASE vs own floor ΔMASE sign alignment mean abs rho permutation null p95 alignment vs null
Time-MoE/model.layers.1 0.530 0.558 0.979 FAILS (over 30%) REFUSED — failed: reconstruction fidelity, dead-feature rate -0.042 0.074 0.056 0.116 no floor (deterministic) resolvable (spread ±0.076 over 3 seeds) 0.336 0.121 clears null p95 by +0.215
Time-MoE/model.layers.11 0.392 0.376 0.979 FAILS (over 30%) REFUSED — failed: reconstruction fidelity, dead-feature rate -0.532 -0.502 -0.163 0.031 no floor (deterministic) resolvable (spread ±0.099 over 3 seeds) 0.345 0.111 clears null p95 by +0.234
Time-MoE/model.layers.0 0.425 0.458 0.973 FAILS (over 30%) REFUSED — failed: reconstruction fidelity, dead-feature rate 0.028 -0.202 -0.084 0.230 no floor (deterministic) resolvable (spread ±0.385 over 3 seeds) 0.384 0.094 clears null p95 by +0.290
Time-MoE/model.layers.2 0.558 0.542 0.946 FAILS (over 30%) REFUSED — failed: reconstruction fidelity, dead-feature rate -0.005 0.097 0.087 0.102 no floor (deterministic) NOT resolvable (spread ±0.154 over 3 seeds) 0.317 0.114 clears null p95 by +0.203
Chronos-T5-Base/encoder.block.3 0.916 0.908 0.260 passes (under 30%) REFUSED — failed: forecast preservation 0.870 -0.110 0.279 0.979 3.7× resolvable (spread ±0.230 over 3 seeds) 0.293 0.127 clears null p95 by +0.166
TimesFM/stacked_xf.10 0.880 0.613 0.255 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.022 0.022 -0.381 0.000 no floor (deterministic) resolvable (spread ±0.005 over 3 seeds) 0.145 0.112 clears null p95 by +0.034
Chronos-T5-Base/encoder.block.8 0.880 0.857 0.240 passes (under 30%) REFUSED — failed: forecast preservation 1.349 -0.265 0.643 1.615 5.7× resolvable (spread ±0.366 over 3 seeds) 0.274 0.116 clears null p95 by +0.158
Time-MoE/model.layers.6 0.858 0.698 0.239 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.198 0.030 -0.035 0.229 no floor (deterministic) resolvable (spread ±0.119 over 3 seeds) 0.177 0.116 clears null p95 by +0.061
TimesFM/stacked_xf.0 0.957 0.898 0.231 passes (under 30%) admitted 0.121 0.121 -0.213 0.000 no floor (deterministic) NOT resolvable (spread ±0.100 over 3 seeds) 0.182 0.115 clears null p95 by +0.067
Chronos-T5-Base/encoder.block.6 0.910 0.898 0.219 passes (under 30%) REFUSED — failed: forecast preservation 1.648 -0.116 0.369 1.765 6.9× resolvable (spread ±0.260 over 3 seeds) 0.346 0.123 clears null p95 by +0.223
Chronos-T5-Base/encoder.block.4 0.926 0.916 0.208 passes (under 30%) REFUSED — failed: forecast preservation 0.306 -0.130 0.487 0.436 1.3× resolvable (spread ±0.286 over 3 seeds) 0.306 0.122 clears null p95 by +0.184
TimesFM/stacked_xf.4 0.917 0.701 0.206 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.041 -0.041 -0.132 0.000 no floor (deterministic) resolvable (spread ±0.020 over 3 seeds) 0.146 0.112 clears null p95 by +0.034
Chronos-T5-Base/encoder.block.5 0.916 0.905 0.198 passes (under 30%) REFUSED — failed: forecast preservation 1.049 0.041 0.587 1.008 4.4× resolvable (spread ±0.274 over 3 seeds) 0.329 0.124 clears null p95 by +0.205
TimesFM/stacked_xf.8 0.881 0.609 0.191 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.026 0.026 -0.778 0.000 no floor (deterministic) NOT resolvable (spread ±0.092 over 3 seeds) 0.150 0.113 clears null p95 by +0.037
Timer/model.layers.7 0.882 0.853 0.190 passes (under 30%) admitted 0.012 0.012 0.009 0.000 no floor (deterministic) NOT resolvable (spread ±0.024 over 3 seeds) 0.143 0.117 clears null p95 by +0.026
Chronos-2/encoder.block.11 0.861 0.833 0.189 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.000 0.000 0.000 0.000 no floor (deterministic) NOT resolvable (spread ±0.000 over 3 seeds) 0.250 0.115 clears null p95 by +0.135
Chronos-T5-Base/encoder.block.9 0.869 0.841 0.182 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.701 -0.211 1.280 0.912 2.9× resolvable (spread ±0.129 over 3 seeds) 0.287 0.121 clears null p95 by +0.166
TimesFM/stacked_xf.6 0.895 0.652 0.181 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation -0.032 -0.032 -0.469 0.000 no floor (deterministic) NOT resolvable (spread ±0.067 over 3 seeds) 0.146 0.115 clears null p95 by +0.031
TimesFM/stacked_xf.12 0.894 0.622 0.179 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.037 0.037 -0.168 0.000 no floor (deterministic) resolvable (spread ±0.022 over 3 seeds) 0.150 0.112 clears null p95 by +0.038
Chronos-T5-Base/encoder.block.11 0.894 0.871 0.169 passes (under 30%) REFUSED — failed: forecast preservation 0.760 0.530 0.620 0.230 3.2× resolvable (spread ±0.282 over 3 seeds) 0.301 0.115 clears null p95 by +0.185
TimesFM/stacked_xf.2 0.939 0.818 0.166 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.033 0.033 -0.341 0.000 no floor (deterministic) NOT resolvable (spread ±0.122 over 3 seeds) 0.165 0.115 clears null p95 by +0.050
TimesFM/stacked_xf.16 0.893 0.642 0.161 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.078 0.078 0.186 0.000 no floor (deterministic) resolvable (spread ±0.057 over 3 seeds) 0.171 0.112 clears null p95 by +0.059
Time-MoE/model.layers.5 0.787 0.712 0.146 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.150 -0.011 0.016 0.138 no floor (deterministic) resolvable (spread ±0.123 over 3 seeds) 0.194 0.117 clears null p95 by +0.077
Chronos-T5-Base/encoder.block.7 0.894 0.878 0.146 passes (under 30%) REFUSED — failed: forecast preservation 0.878 -0.202 0.851 1.080 3.7× resolvable (spread ±0.244 over 3 seeds) 0.347 0.126 clears null p95 by +0.221
TimesFM/stacked_xf.14 0.793 0.590 0.142 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.149 0.149 -0.248 0.000 no floor (deterministic) resolvable (spread ±0.004 over 3 seeds) 0.154 0.114 clears null p95 by +0.040
Time-MoE/model.layers.10 0.942 0.826 0.140 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.159 -0.002 0.043 0.157 no floor (deterministic) resolvable (spread ±0.149 over 3 seeds) 0.174 0.116 clears null p95 by +0.057
Chronos-T5-Base/encoder.block.10 0.859 0.829 0.128 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.766 0.057 0.370 0.708 3.2× resolvable (spread ±0.264 over 3 seeds) 0.286 0.120 clears null p95 by +0.167
Time-MoE/model.layers.4 0.714 0.678 0.105 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.064 0.070 0.039 0.135 no floor (deterministic) resolvable (spread ±0.119 over 3 seeds) 0.226 0.117 clears null p95 by +0.109
TimesFM/stacked_xf.18 0.918 0.874 0.101 passes (under 30%) admitted -0.051 -0.051 -0.219 0.000 no floor (deterministic) NOT resolvable (spread ±0.100 over 3 seeds) 0.193 0.120 clears null p95 by +0.073
Sundial/model.layers.11 0.962 0.820 0.041 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.212 -0.020 0.044 0.232 1.5× resolvable (spread ±0.157 over 3 seeds) 0.164 0.120 clears null p95 by +0.045
Chronos-Bolt/encoder.block.3 0.954 0.879 0.035 passes (under 30%) admitted 0.063 -0.047 -0.091 0.109 no floor (deterministic) resolvable (spread ±0.086 over 3 seeds) 0.183 0.115 clears null p95 by +0.069
Chronos-Bolt/encoder.block.2 0.944 0.900 0.034 passes (under 30%) admitted 0.131 0.022 -0.210 0.109 no floor (deterministic) resolvable (spread ±0.048 over 3 seeds) 0.181 0.112 clears null p95 by +0.069
Timer/model.layers.2 0.992 0.691 0.032 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.008 -0.008 -0.040 0.000 no floor (deterministic) resolvable (spread ±0.018 over 3 seeds) 0.134 0.121 clears null p95 by +0.013
Timer/model.layers.3 0.993 0.652 0.029 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.006 -0.006 -0.240 0.000 no floor (deterministic) NOT resolvable (spread ±0.017 over 3 seeds) 0.140 0.119 clears null p95 by +0.020
Timer/model.layers.1 0.995 0.715 0.022 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.010 -0.011 0.227 0.000 no floor (deterministic) resolvable (spread ±0.011 over 3 seeds) 0.133 0.119 clears null p95 by +0.014
Timer/model.layers.4 0.994 0.576 0.020 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.006 -0.006 -0.131 0.000 no floor (deterministic) NOT resolvable (spread ±0.015 over 3 seeds) 0.138 0.120 clears null p95 by +0.018
Timer/model.layers.6 0.994 0.722 0.020 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.001 -0.001 -0.033 0.000 no floor (deterministic) resolvable (spread ±0.022 over 3 seeds) 0.131 0.120 clears null p95 by +0.010
Sundial/model.layers.10 0.950 0.736 0.020 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.178 0.070 0.267 0.109 1.3× resolvable (spread ±0.042 over 3 seeds) 0.166 0.119 clears null p95 by +0.047
Sundial/model.layers.9 0.946 0.725 0.011 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.240 0.209 0.455 0.031 1.7× resolvable (spread ±0.036 over 3 seeds) 0.163 0.119 clears null p95 by +0.044
Sundial/model.layers.8 0.948 0.740 0.010 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.229 0.023 0.411 0.207 1.6× resolvable (spread ±0.031 over 3 seeds) 0.161 0.120 clears null p95 by +0.041
Sundial/model.layers.4 0.965 0.835 0.009 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.088 -0.014 0.121 0.102 0.6× resolvable (spread ±0.104 over 3 seeds) 0.158 0.118 clears null p95 by +0.041
Sundial/model.layers.3 0.964 0.821 0.009 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.116 0.057 0.214 0.059 0.8× resolvable (spread ±0.082 over 3 seeds) 0.162 0.119 clears null p95 by +0.043
Chronos-Bolt/encoder.block.5 0.960 0.847 0.009 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.066 0.021 -0.315 0.045 no floor (deterministic) resolvable (spread ±0.185 over 3 seeds) 0.180 0.117 clears null p95 by +0.063
Chronos-Bolt/encoder.block.4 0.960 0.858 0.008 passes (under 30%) REFUSED — failed: forecast preservation 0.080 -0.034 -0.379 0.113 no floor (deterministic) resolvable (spread ±0.186 over 3 seeds) 0.187 0.116 clears null p95 by +0.071
Chronos-2/encoder.block.3 0.921 0.818 0.008 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.181 0.027 0.270 0.154 no floor (deterministic) resolvable (spread ±0.183 over 3 seeds) 0.182 0.119 clears null p95 by +0.063
Time-MoE/model.layers.3 0.820 0.794 0.008 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.094 0.112 0.077 0.018 no floor (deterministic) NOT resolvable (spread ±0.181 over 3 seeds) 0.285 0.116 clears null p95 by +0.169
Sundial/model.layers.7 0.951 0.758 0.007 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.294 0.159 0.455 0.135 2.1× resolvable (spread ±0.044 over 3 seeds) 0.159 0.120 clears null p95 by +0.039
Sundial/model.layers.6 0.954 0.780 0.006 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.206 -0.031 0.192 0.237 1.5× resolvable (spread ±0.017 over 3 seeds) 0.159 0.121 clears null p95 by +0.038
Sundial/model.layers.5 0.958 0.804 0.006 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.208 -0.014 0.323 0.222 1.5× resolvable (spread ±0.042 over 3 seeds) 0.159 0.119 clears null p95 by +0.040
Chronos-2/encoder.block.4 0.916 0.772 0.006 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.175 0.146 0.139 0.029 no floor (deterministic) resolvable (spread ±0.136 over 3 seeds) 0.176 0.115 clears null p95 by +0.061
Chronos-2/encoder.block.9 0.922 0.658 0.005 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.072 0.003 -0.091 0.069 no floor (deterministic) resolvable (spread ±0.045 over 3 seeds) 0.169 0.120 clears null p95 by +0.049
Chronos-2/encoder.block.10 0.929 0.668 0.005 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.013 0.012 -0.014 0.002 no floor (deterministic) resolvable (spread ±0.012 over 3 seeds) 0.166 0.119 clears null p95 by +0.047
Chronos-2/encoder.block.8 0.920 0.658 0.004 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.088 0.015 -0.144 0.073 no floor (deterministic) resolvable (spread ±0.048 over 3 seeds) 0.169 0.118 clears null p95 by +0.050
Chronos-2/encoder.block.5 0.914 0.711 0.004 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.204 0.099 -0.134 0.105 no floor (deterministic) resolvable (spread ±0.104 over 3 seeds) 0.175 0.117 clears null p95 by +0.058
Chronos-2/encoder.block.6 0.909 0.681 0.003 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.128 0.091 -0.032 0.037 no floor (deterministic) resolvable (spread ±0.116 over 3 seeds) 0.172 0.117 clears null p95 by +0.054
Chronos-2/encoder.block.7 0.917 0.650 0.002 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.086 0.015 -0.252 0.070 no floor (deterministic) resolvable (spread ±0.090 over 3 seeds) 0.167 0.119 clears null p95 by +0.048

Every column, in words, with its arithmetic.

ColumnWhat it means, and why it mattersHow it is calculated
targetOne trained dictionary: a model and the single layer of it this dictionary was fitted on. Every other column is a property of that one dictionary, so two rows differ in the model, the layer and the fit at once.Named `model/layer` exactly as the `sae` stage resolved it.
reconstruction fidelityHow faithfully the sparse dictionary can rebuild the layer's own activations from a handful of active features. This is the FLOOR on everything below it: a dictionary that cannot reproduce the layer is not describing the layer.1 - (sum of squared reconstruction error / sum of squared error of predicting the mean activation), over the activations the dictionary was fitted on. 1.0 is exact; 0.0 is no better than predicting the mean; negative is worse than that.
reconstruction fidelity (held out)The same quantity on SERIES the dictionary never saw during training. A large drop from the fitted value means the dictionary memorized these series rather than learning the layer's structure.Identical formula, evaluated on a held-out split of whole SERIES (never windows -- windows inside one series are dependent, so a window split would leak). Drawn as a diamond on the same bar as the fitted value, so the gap between them is a visible length.
dead rateThe fraction of the dictionary's features that never activate on any input. A dead feature is capacity that was allocated and never used, so a high rate means every feature shown was drawn from a small alive minority rather than from the whole dictionary.(features whose activation is exactly zero on every probed row) / (dictionary size).
dead-rate gateThe pass/fail verdict on the dead share, printed together with the bar it was compared against rather than only as a word.`dead rate` compared to the configured acceptance threshold. A target with no threshold configured reads `no gate configured` -- its rate was recorded but never checked, which is not the same as passing.
admissionWhether this dictionary was admitted for feature-level reading at all, and on which bar it failed if not.Every configured acceptance check (reconstruction fidelity, forecast damage) evaluated together. A bar that was never MEASURED leaves the verdict `undecidable` rather than `passed` -- an unmeasured check is not a cleared one.
ΔMASE (window)How much the model's forecast error changes when the layer's real activations are replaced by the dictionary's reconstruction of them. Near zero means the dictionary is a faithful enough stand-in that the model still forecasts the same way; large positive means the reconstruction threw away something the forecast needed.MASE(forecast from the reconstructed activations) - MASE(forecast from the real activations), with the reconstruction done on the pooled WINDOW axis and then broadcast back over the tokens each window covers. That broadcast is lossy for any model whose tokens are narrower than the window, which is why the token column beside it exists.
ΔMASE (token)The same measurement with no window pooling: every raw token is encoded and decoded on its own. This is the column to read as dictionary quality -- it has no architecture confound in it.MASE(reconstructed) - MASE(real), reconstructing each token independently.
ΔMASE (token, held out)Token-granularity forecast damage measured on series the dictionary was never fitted on.Same difference of MASEs, evaluated on the held-out series split.
granularity gapThe distance between the two ΔMASE columns. It measures an ARCHITECTURE difference, not a difference in dictionary quality: it is exactly 0 for a model whose token width equals the alignment window (nothing is broadcast, so the two are the same computation) and grows with the mismatch.|ΔMASE (window) - ΔMASE (token)|. A large value says the window number is inflated by pooling loss and should not be read as dictionary damage.
ΔMASE vs own floorWhether the forecast damage is larger than the amount this model's forecast moves between two identical runs. A model that samples its forecast has a floor above zero; a deterministic one has a floor of exactly zero, so any nonzero damage clears it by arithmetic and the comparison says nothing.|ΔMASE (token)| divided by that model's measured repeat-run MASE spread. Reads `no floor (deterministic)` when the model's repeat spread is exactly zero, rather than reporting a division by it.
ΔMASE signWhether the SIGN of the forecast damage survives retraining the dictionary at a different random seed. Training an SAE is stochastic; if refitting it moves ΔMASE by more than ΔMASE itself, then 'the reconstruction made the forecast better' and 'worse' are the same measurement and neither should be quoted.The dictionary is retrained at several seeds against a FROZEN activation store (so seed is the only thing that varies) and the standard deviation of ΔMASE across those seeds is recorded. `resolvable` means |ΔMASE| exceeds that spread; `NOT resolvable` means it does not. The spread and the seed count are printed in the cell.
alignment mean abs rhoHow strongly this dictionary's features correspond to real, labelled properties of the input series -- the closest thing here to 'are these features interpretable'. It is a different question from reconstruction fidelity, and the two can disagree: a dictionary can rebuild a layer almost perfectly while none of its features corresponds to anything nameable, and the whole point of the section is reading features, not rebuilding layers.Each probed feature's activation is correlated (Spearman, across series) against every candidate ground-truth field; the feature keeps its single best |ρ|; the column is the MEAN of those best |ρ| over all matched features. Because each feature keeps its best of many candidates, this number is inflated above zero by the search alone -- which is exactly why it is never read against zero, only against the permutation null beside it.
permutation null p95How large the alignment number gets by pure chance, for THIS dictionary, at this feature count, under this same best-of-many search. It is the reference the measured alignment has to beat.The ground-truth labels are shuffled across series and the entire matching procedure is re-run many times; this column is the 95th percentile of the resulting mean |ρ|. Every ingredient except the label-to-series correspondence is held fixed, so the difference between the two columns is the part the labels explain.
alignment vs nullThe signed margin of the measured alignment over this target's own permutation null, with the verdict it implies.`alignment mean abs rho` - `permutation null p95`. Positive means the feature names carry signal the same search on shuffled labels would not have produced; zero or negative means they do not.

The figure draws 4 of these 14 numbers -- the three that are comparisons ACROSS dictionaries, plus the null each alignment is read against. The collapsed table above carries all of them, and is the only place the rule behind each verdict is printed.

What does this mean?

How to read it
Worst dictionary first, sorted by dead-feature rate, because a dead dictionary invalidates every feature read off it where low fidelity only weakens them. Read the dead rate and the alignment verdict TOGETHER: a dictionary can be almost entirely alive and still align to labelled properties no better than a mostly-dead one, so neither column alone answers whether a target is worth reading. The alignment column is referenced against each target's own label-permutation null, never against zero, because every feature is matched to its best of many candidate fields and that search inflates the mean even on shuffled labels. `granularity gap` is the distance between the two forecast-preservation numbers: it is exactly 0 for a model whose token width equals the alignment window and grows with the mismatch, so it measures an architecture difference rather than a difference in reconstruction quality.

Limitations
Every column is a property of one dictionary, so nothing here is a cross-model comparison: two targets differ in the model, the layer, and the dictionary that was trained on them at once. A passing dead-rate gate is a floor, not a finding.

1157 of 2801 rendered ablation panels (41.3%) have a forecast sd below 10% of their context sd — read as measured before it is read as a defect.

Flat share by archetype and model

archetype n Chronos-2 Chronos-Bolt Chronos-T5-Base Sundial Time-MoE Timer TimesFM
unknown 1670 59.4% 78.6% 65.9% 59.6% 41.9% 48.9% 36.2%
intermittent_bursts 145 80.9% 100.0% 58.8% 10.5% 0.0% 90.0% 50.0%
regime_switching 31 62.5% 100.0% 0.0% 0.0% 80.0% 0.0% 0.0%
anomaly_heavy 90 91.3% 50.0% 50.0% 27.3% 12.0% 43.8% 0.0%
random_walk_drift 49 91.7% 100.0% 0.0% 25.0% 0.0% 20.0% 33.3%
ar_colored_noise 153 77.8% 40.0% 12.8% 12.0% 0.0% 81.8% 20.0%
noisy_chaotic 114 34.8% 50.0% 9.1% 14.3% 0.0% 41.7% 2.8%
trend_dominant 37 21.4% 11.1% 0.0% 0.0% 25.0% 66.7%
multi_seasonal_complex 42 0.0% 0.0% 0.0% 0.0% 33.3% 0.0%
nonsinusoidal_seasonal 81 0.0% 0.0% 14.3% 0.0% 0.0% 50.0% 0.0%
clean_low_noise 231 0.0% 0.0% 1.6% 0.0% 0.0% 13.3% 0.0%
amplitude_modulated 52 0.0% 0.0% 0.0% 0.0% 0.0% 0.0%
seasonal_dominant 106 0.0% 0.0% 0.0% 0.0% 0.0% 0.0%

Share of rendered ablation panels that are flat (forecast sd < 10% of context sd), one row per archetype the corpus recorded, ordered worst first.

What does this table mean?

How to read it
Structured archetypes (a real trend or seasonal component) should show 0% regardless of model; a noise-like archetype (no autocorrelation to extrapolate) flattening for every model is the MMSE-optimal response, not a defect. A row where one model flattens and another does not, on the SAME archetype, is the behavioral difference Item H4 below controls for.

Limitations
Archetype is a property of the CORPUS the run was built against, not of the model — a run whose corpus carries no archetype label contributes only an "unknown" row.

Does the SAE flatten the forecast, or does the model?

Each model's own raw forecast (bar) against the SAE's full reconstruction of it (diamond) — both as median forecast sd over context sd, across every rendered ablation panel. A short segment says the dictionary changes little; the per-model spread itself is what the bars carry.

model raw model (median sd ratio) SAE reconstruction (median sd ratio) raw % flat recon % flat
Chronos-Bolt 0.072 0.048 55.5% 63.2%
Chronos-2 0.119 0.087 47.3% 52.2%
Chronos-T5-Base 0.113 0.101 48.6% 49.8%
Timer 0.124 0.111 38.7% 45.1%
Sundial 0.134 0.126 43.6% 44.4%
TimesFM 0.417 0.302 19.8% 22.2%
Time-MoE 0.562 0.591 24.1% 23.0%

Whether the ~6x per-model spread in flatness is a property of each model's own forecast, or an artifact of the SAE reconstructing it.

What does this figure mean?

How to read it
The raw (unpatched) and reconstructed columns are close for every model, and the spread across models is present in the RAW column before any dictionary touches the forecast — so the spread is a model property, safe to render as one, not a reconstruction artifact.

Limitations
This is Item H4(ii): the `unpatched` forecast was already in every ablation artifact at zero extra forward passes. It does not control for a confound correlated with reconstruction FIDELITY across targets (H4(i), not computed here) — a real but smaller, partial check this one does not replace.

What each model accounts for that the others don't

Unit: correlational structural-property coverage of individual SAE features (not the causal, cross-model atlas CONCEPTS -- see Model comparison § What is shared? for that unit).

model properties covered strongest only this model shared with all
Sundial 5 seasonal_period_dominant (56%) none seasonal_period_dominant, ar_coeff_sum, n_seasonalities
Chronos-2 5 seasonal_period_dominant (46%) none seasonal_period_dominant, ar_coeff_sum, n_seasonalities
TimesFM 7 n_seasonalities (64%) none n_seasonalities, seasonal_period_dominant, ar_coeff_sum
Chronos-Bolt 6 seasonal_period_dominant (56%) none seasonal_period_dominant, n_changepoints, ar_coeff_sum
Timer 6 seasonal_period_dominant (72%) n_anomalies (10%) seasonal_period_dominant, n_seasonalities, n_changepoints
Chronos-T5-Base 7 seasonal_period_dominant (52%) trend_order (6%) seasonal_period_dominant, n_changepoints, n_seasonalities
Time-MoE 8 seasonal_period_dominant (84%) trend_scale (6%) seasonal_period_dominant, seasonal_amplitude_max, n_changepoints

One row per model, pooled over all of that model's analyzed layers. A property counts as covered when at least 5% of a layer's ground-truth-matched features track it at that layer — a maximum over layers, not an average, so a property a model represents at one depth and nowhere else still counts as covered. only this model is the direct answer to "what does this model account for that the others don't".

Share of each model's ground-truth-matched SAE features that track each property, at the layer where that model tracks it most. Columns are ordered by how many models reach the property: left of the black line are the 5 properties all 7 models account for, right of it are those only some do. A blank cell means no layer of that model devoted 5% of its matched features to that property.

The cross-model summary of the SAE section: which properties of the benchmark each model's sparse features organize around, pooled over that model's layers, and whether each property is common to every model or specific to one.

How to read this comparison

How to read it
Read the black line first. Properties to its left are the shared vocabulary — every model in this run devotes features to them, which is the closest thing this pipeline offers to 'these models learned the same thing'. Properties to its right are where the dictionaries diverge. A high share is not a quality claim: it says a large fraction of that layer's interpretable features track this property, not that the model forecasts it well. Cross-check a unique property against the models' CKA in the geometry section — two models with near-identical geometry having no unique properties is a consistent picture, and one with unique properties despite high CKA is worth a second look.

Limitations
Coverage is computed over features that matched a ground-truth field at all, so it describes the interpretable slice of each dictionary, not the whole of it — a model whose features are real but do not correspond to any field this benchmark labels will look like it covers less. The fields are the benchmark's own generator parameters, so a property the corpus does not vary cannot appear here for any model. 'Unique' is relative to the models in THIS run and to the 5% threshold; a model just under it at every layer reads as not covering the property. Correlational throughout — a feature tracking a property is not evidence the model uses it, which is what the causal channel battery exists to test.

What each dictionary's features track

One row per analyzed layer, one column per STRUCTURAL property of the input series (corpus provenance regressed out first, so no column here is a fact about how the benchmark was built). Colour is the share of that dictionary's matched features tracking that property; the number in the cell is how many. Read DOWN a model's own layers for a depth trend and ACROSS models for a difference in what they organize around.

Which properties of the data each layer's sparse features latch onto, and whether the models differ.

What does this heatmap mean?

How to read it
A column that is dark for one model and pale for another is the interesting case: it says the two dictionaries decompose the same corpus around different properties. Within one model, a property that strengthens or fades down the rows is a depth trend in what that model represents. Fields are ordered by total matches across the whole run, so the leftmost columns are the properties this corpus actually exercises -- a pale column on the right may simply be a property few series in this corpus have.

Limitations
Correlational, and only that: a cell says a feature's activation covaries with a labelled property after provenance is regressed out, not that the feature causally carries it. The causal claim is the channel battery in the roles block below, which has been run on a subset of targets. Each feature is also matched to its BEST candidate field, so a feature whose two best fields are nearly tied is assigned to one of them arbitrarily.

Within that picture, the single strongest feature per model and layer is one click away below: the one whose activation best correlates with a structural property of the input series, after regressing out which generator produced it.

Strongest structural feature at each of the 56 analyzed layers
model layer feature structural correlate ρ n series
TimesFM stacked_xf.10 #712 Seasonal component count 0.283 555
TimesFM stacked_xf.18 #279 Seasonal component count -0.238 555
TimesFM stacked_xf.6 #453 Seasonal component count 0.275 555
TimesFM stacked_xf.16 #712 Seasonal component count 0.297 555
TimesFM stacked_xf.2 #935 Dominant period -0.316 443
TimesFM stacked_xf.14 #206 Seasonal component count 0.316 555
TimesFM stacked_xf.0 #1653 Dominant period 0.325 443
TimesFM stacked_xf.4 #574 Dominant period -0.272 443
TimesFM stacked_xf.8 #2106 Dominant period -0.274 443
TimesFM stacked_xf.12 #4296 Seasonal component count 0.301 555
Chronos-2 encoder.block.8 #3440 Dominant period -0.244 443
Chronos-2 encoder.block.10 #1941 Seasonal component count -0.264 555
Chronos-2 encoder.block.11 #25 Seasonal component count 0.284 555
Chronos-2 encoder.block.9 #2898 Seasonal component count 0.271 555
Chronos-2 encoder.block.7 #5513 Seasonal component count -0.259 555
Chronos-2 encoder.block.6 #3260 Dominant period -0.289 443
Chronos-2 encoder.block.5 #3407 Seasonal component count -0.326 555
Chronos-2 encoder.block.4 #3815 Autocorrelation strength 0.296 374
Chronos-2 encoder.block.3 #5910 Dominant period 0.292 443
Sundial model.layers.3 #5767 Dominant period -0.344 443
Sundial model.layers.10 #3484 Autocorrelation strength 0.294 374
Sundial model.layers.11 #2571 Changepoint count 0.300 555
Sundial model.layers.6 #5065 Dominant period 0.367 443
Sundial model.layers.9 #2974 Seasonal component count -0.296 555
Sundial model.layers.7 #5065 Dominant period 0.401 443
Sundial model.layers.5 #2033 Dominant period -0.322 443
Sundial model.layers.4 #5686 Dominant period 0.300 443
Sundial model.layers.8 #2354 Seasonal component count -0.312 555
Chronos-Bolt encoder.block.4 #3726 Dominant period -0.275 443
Chronos-Bolt encoder.block.5 #4501 Dominant period -0.267 443
Chronos-Bolt encoder.block.3 #5125 Dominant period 0.309 443
Chronos-Bolt encoder.block.2 #5261 Dominant period 0.349 443
Timer model.layers.4 #1887 Dominant period -0.370 443
Timer model.layers.6 #3972 Dominant period -0.332 443
Timer model.layers.3 #2112 Dominant period 0.444 443
Timer model.layers.2 #1709 Dominant period -0.413 443
Timer model.layers.7 #184 Autocorrelation strength -0.163 374
Timer model.layers.1 #524 Dominant period -0.325 443
Time-MoE model.layers.1 #1656 Dominant period -0.311 443
Time-MoE model.layers.10 #1485 Dominant period 0.340 443
Time-MoE model.layers.11 #4073 Dominant period 0.362 443
Time-MoE model.layers.2 #1150 Dominant period -0.341 443
Time-MoE model.layers.3 #308 Dominant period -0.265 443
Time-MoE model.layers.4 #666 Dominant period -0.418 443
Time-MoE model.layers.0 #1131 Changepoint count -0.285 555
Time-MoE model.layers.5 #1027 Dominant period -0.409 443
Time-MoE model.layers.6 #5132 Dominant period -0.392 443
Chronos-T5-Base encoder.block.4 #92 Dominant period -0.313 443
Chronos-T5-Base encoder.block.10 #216 Seasonal component count 0.295 555
Chronos-T5-Base encoder.block.11 #314 Changepoint count -0.290 555
Chronos-T5-Base encoder.block.8 #55 Noise level 0.267 555
Chronos-T5-Base encoder.block.3 #137 Dominant period -0.278 443
Chronos-T5-Base encoder.block.5 #92 Dominant period -0.337 443
Chronos-T5-Base encoder.block.9 #216 Seasonal component count 0.302 555
Chronos-T5-Base encoder.block.6 #92 Dominant period -0.321 443
Chronos-T5-Base encoder.block.7 #142 Dominant period -0.292 443
TimesFM/stacked_xf.10 — individual features and the series they fire on

Of 6144 probed features, 586 correlate with a structural property of the series and 920 with a corpus bookkeeping label (mean |ρ| 0.080 vs 0.143). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#712This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555removing it moves no channel past its own null
parametric
parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.553 (69% of context sd)
with · without · Δ 0.483 (61% of context sd)
with · without · Δ 0.373 (50% of context sd)
parametric (generator) ρ=+0.52
#4370This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555not a candidate
random_parametric
block_bootstrap
block_bootstrap
not measuredparametric (generator) ρ=+0.32
#5638This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.436 (32% of context sd)
with · without · Δ 0.218 (29% of context sd)
with · without · Δ 0.296 (40% of context sd)
parametric (generator) ρ=+0.36
#1136This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.38
#453This feature moves the far horizon of the forecast on the series it fires on (1.04 times the random-direction null), strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555removing it reshapes far horizon (1.0x its null)
random_parametric
random_parametric
parametric
n=8
with · without · Δ 1.45 (1.1e+02% of context sd)
with · without · Δ 0.725 (98% of context sd)
with · without · Δ 0.739 (96% of context sd)
parametric (generator) ρ=+0.47
#3751This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443removing it moves no channel past its own null
random_parametric
block_bootstrap
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 1.14 (84% of context sd)
with · without · Δ 0.016 (75% of context sd)
with · without · Δ 0.408 (55% of context sd)
parametric (generator) ρ=+0.40
#301This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555not a candidate
random_parametric
block_bootstrap
parametric
not measuredparametric (generator) ρ=+0.43
#5702This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555not a candidate
mixture
random_parametric
mixture
not measuredparametric (generator) ρ=+0.35

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means
In the dataNameWhat it measuresWhat a high value means
dispersionSpreadHow much the forecast varies within itself (its standard deviation).Feature makes the forecast swing more from step to step.
flatnessFlatnessHow close the forecast is to a constant line.Feature makes the forecast closer to a flat, constant line.
horizon_shape_farFar horizonShape of the late part of the forecast -- its furthest-out steps.Feature changes the long-range forecast's shape by a larger amount.
horizon_shape_nearNear horizonShape of the first part of the forecast -- the steps just after the context ends.Feature changes the near-term forecast's shape by a larger amount.
levelLevelMean value of the forecast -- its overall height.Feature raises the whole forecast.
maseAccuracy (MASE)Forecast error against the true continuation, scaled by a naive baseline.Feature makes the forecast WORSE (higher error).
seasonalSeasonal strengthEnergy in the forecast concentrated at the series' own dominant repeating rhythm.Feature makes the forecast more strongly periodic.
spectral_centroidFrequency balanceCentre of mass of the forecast's frequency spectrum -- low means the forecast is dominated by slow, smooth movement, high means by fast wiggles.Feature shifts the forecast toward higher-frequency, choppier movement.
trendTrendSlope of the forecast -- whether it rises or falls as it continues forward.Feature pushes the forecast to slope upward more steeply.
TimesFM/stacked_xf.18 — individual features and the series they fire on

Of 1536 probed features, 262 correlate with a structural property of the series and 340 with a corpus bookkeeping label (mean |ρ| 0.090 vs 0.187). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#279This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=-0.24, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.44
#45This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.22, n 555).Seasonal component count ρ=+0.22, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.41
#1241This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.20, n 555).Seasonal component count ρ=+0.20, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.37
#598This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.19, n 555).Seasonal component count ρ=+0.19, n=555not a candidate
mixture
mixture
mixture
not measurednonsinusoidal seasonal (archetype) ρ=+0.33
#1155This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.19, n 443).Dominant period ρ=+0.19, n=443not a candidate
random_parametric
parametric
parametric
not measuredparametric (generator) ρ=+0.35
#1387This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.19, n 555).Seasonal component count ρ=+0.19, n=555not a candidate
random_parametric
random_parametric
parametric
not measuredparametric (generator) ρ=+0.39
#1201This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.18, n 555).Seasonal component count ρ=+0.18, n=555not a candidate
random_parametric
parametric
random_parametric
not measuredparametric (generator) ρ=+0.44
#387This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.18, n 555).Seasonal component count ρ=+0.18, n=555removing it moves no channel past its own null
random_parametric
parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.711 (47% of context sd)
with · without · Δ 0.271 (22% of context sd)
with · without · Δ 0.505 (29% of context sd)
parametric (generator) ρ=+0.47

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.6 — individual features and the series they fire on

Of 6144 probed features, 680 correlate with a structural property of the series and 1087 with a corpus bookkeeping label (mean |ρ| 0.079 vs 0.143). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#453This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.503 (35% of context sd)
with · without · Δ 0.174 (32% of context sd)
with · without · Δ 0.406 (59% of context sd)
realism stress (tier) ρ=-0.53
#4664This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.278 (37% of context sd)
with · without · Δ 0.195 (26% of context sd)
with · without · Δ 0.146 (41% of context sd)
realism stress (tier) ρ=-0.61
#1531This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
mixture
block_bootstrap
not measuredar colored noise (archetype) ρ=+0.31
#2106This feature moves forecast error on the series it fires on (1.12 times the random-direction null), and also moves its spectral centroid, strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443removing it raises accuracy (mase) (1.1x its null)
block_bootstrap
block_bootstrap
block_bootstrap
n=8
with · without · Δ 0.0386 (81% of context sd)
with · without · Δ 0.0127 (60% of context sd)
with · without · Δ 0.0475 (78% of context sd)
random parametric (generator) ρ=-0.43
#137This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.108 (30% of context sd)
with · without · Δ 0.0903 (32% of context sd)
with · without · Δ 0.0422 (39% of context sd)
realism stress (tier) ρ=-0.54
#846This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.22, n 374).Autocorrelation strength ρ=+0.22, n=374not a candidate
mixture
mixture
mixture
not measuredparametric (generator) ρ=+0.44
#3038This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.22, n 555).Seasonal component count ρ=+0.22, n=555removing it moves no channel past its own null
mixture
random_parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.185 (41% of context sd)
with · without · Δ 0.592 (65% of context sd)
with · without · Δ 0.353 (40% of context sd)
parametric (generator) ρ=+0.53
#3751This feature decreases the forecast's spectral centroid on the series it fires on (1.00 times the random-direction null), strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443removing it raises frequency balance (1.1x its null)
block_bootstrap
block_bootstrap
block_bootstrap
n=8
with · without · Δ 0.0131 (41% of context sd)
with · without · Δ 0.0442 (1.1e+02% of context sd)
with · without · Δ 0.032 (80% of context sd)
ar colored noise (archetype) ρ=+0.29

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.16 — individual features and the series they fire on

Of 6144 probed features, 341 correlate with a structural property of the series and 464 with a corpus bookkeeping label (mean |ρ| 0.089 vs 0.169). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#712This feature decreases the forecast's overall level on the series it fires on (1.04 times the random-direction null), strongest on series with a larger number of seasonal components (rho 0.30, n 555).Seasonal component count ρ=+0.30, n=555removing it raises level (1.0x its null)
random_parametric
random_parametric
parametric
n=8
with · without · Δ 1.08 (62% of context sd)
with · without · Δ 1.11 (74% of context sd)
with · without · Δ 0.735 (61% of context sd)
parametric (generator) ρ=+0.52
#3320This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555removing it moves no channel past its own null
parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.763 (81% of context sd)
with · without · Δ 0.861 (71% of context sd)
with · without · Δ 0.609 (66% of context sd)
parametric (generator) ρ=+0.55
#5143This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=+0.26, n=555removing it moves no channel past its own null
random_parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.724 (41% of context sd)
with · without · Δ 0.461 (50% of context sd)
with · without · Δ 0.375 (40% of context sd)
parametric (generator) ρ=+0.54
#301This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555not a candidate
random_parametric
parametric
random_parametric
not measuredparametric (generator) ρ=+0.50
#3751This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 1.48 (98% of context sd)
with · without · Δ 1.01 (75% of context sd)
with · without · Δ 1.13 (64% of context sd)
parametric (generator) ρ=+0.50
#5638This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.297 (22% of context sd)
with · without · Δ 0.745 (49% of context sd)
with · without · Δ 0.459 (26% of context sd)
parametric (generator) ρ=+0.47
#2468This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555not a candidate
parametric
random_parametric
parametric
not measuredparametric (generator) ρ=+0.50
#4395This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=+0.23, n=555removing it moves no channel past its own null
parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.953 (79% of context sd)
with · without · Δ 0.725 (77% of context sd)
with · without · Δ 0.616 (48% of context sd)
parametric (generator) ρ=+0.53

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.2 — individual features and the series they fire on

Of 6144 probed features, 518 correlate with a structural property of the series and 753 with a corpus bookkeeping label (mean |ρ| 0.089 vs 0.160). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#935This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.32, n 443).Dominant period ρ=-0.32, n=443not a candidate
sequential_par
random_parametric
random_parametric
not measuredmixture (generator) ρ=-0.35
#5923This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443not a candidate
random_parametric
random_parametric
parametric
not measuredmixture (generator) ρ=-0.45
#3751This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.108 (16% of context sd)
with · without · Δ 0.081 (32% of context sd)
with · without · Δ 0.0749 (20% of context sd)
intermittent bursts (archetype) ρ=+0.31
#5638This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0594 (10% of context sd)
with · without · Δ 0.0408 (6.8% of context sd)
with · without · Δ 0.0714 (10% of context sd)
intermittent bursts (archetype) ρ=+0.41
#4664This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=-0.31
#1568This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
mixture
block_bootstrap
not measuredintermittent bursts (archetype) ρ=+0.35
#301This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0493 (8.3% of context sd)
with · without · Δ 0.0611 (13% of context sd)
with · without · Δ 0.0673 (10% of context sd)
intermittent bursts (archetype) ρ=+0.32
#2698This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
mixture
mixture
mixture
not measuredintermittent bursts (archetype) ρ=+0.39

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.8 — individual features and the series they fire on

Of 6144 probed features, 3191 correlate with a structural property of the series and 4405 with a corpus bookkeeping label (mean |ρ| 0.082 vs 0.167). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#3440This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measurednonsinusoidal seasonal (archetype) ρ=+0.13
#5513This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=-0.24, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredregime switching (archetype) ρ=+0.30
#25This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=-0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.20
#5523This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.22, n 374).Autocorrelation strength ρ=+0.22, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.27
#15This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.22, n 555).Seasonal component count ρ=-0.22, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.00293 (2.4% of context sd)
with · without · Δ 0.00391 (2.4% of context sd)
with · without · Δ 0.00391 (2.2% of context sd)
anomaly heavy (archetype) ρ=+0.31
#2594This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.22, n 374).Autocorrelation strength ρ=-0.22, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.47
#435This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.21, n 555).Seasonal component count ρ=+0.21, n=555not a candidate
mixture
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.30
#5748This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.21, n 555).Seasonal component count ρ=+0.21, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.18

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.10 — individual features and the series they fire on

Of 6144 probed features, 3418 correlate with a structural property of the series and 4718 with a corpus bookkeeping label (mean |ρ| 0.081 vs 0.164). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1941This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=-0.26, n=555removing it moves no channel past its own null
block_bootstrap
sequential_par
sequential_par
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0171 (0.42% of context sd)
with · without · Δ 0.141 (3.7% of context sd)
with · without · Δ 0.084 (3.3% of context sd)
realism stress (tier) ρ=+0.47
#4941This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=+0.26, n=374not a candidate
random_parametric
random_parametric
sequential_par
not measurednoisy chaotic (archetype) ρ=+0.19
#1545This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=-0.24, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0254 (0.62% of context sd)
with · without · Δ 0.0471 (0.81% of context sd)
with · without · Δ 0.0439 (0.82% of context sd)
realism stress (tier) ρ=+0.50
#2165This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.24
#968This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredsequential par (generator) ρ=+0.32
#2727This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.043 (7.4% of context sd)
with · without · Δ 0.018 (5.9% of context sd)
with · without · Δ 0.00293 (2.5% of context sd)
ar colored noise (archetype) ρ=+0.25
#521This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.23, n 555).Changepoint count ρ=-0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.36
#4020This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.22, n 374).Autocorrelation strength ρ=+0.22, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.22

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.11 — individual features and the series they fire on

Of 768 probed features, 266 correlate with a structural property of the series and 331 with a corpus bookkeeping label (mean |ρ| 0.104 vs 0.246). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateTop-activating series (click to enlarge)Corpus label
#25This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555
random_parametric
random_parametric
random_parametric
random_parametric
random parametric (generator) ρ=+0.23
#285This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.26, n 555).Changepoint count ρ=-0.26, n=555
random_parametric
random_parametric
random_parametric
random_parametric
ar colored noise (archetype) ρ=+0.32
#344This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555
random_parametric
random_parametric
random_parametric
random_parametric
mixture (generator) ρ=-0.21
#190This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555
block_bootstrap
block_bootstrap
block_bootstrap
block_bootstrap
realism stress (tier) ρ=+0.50
#471This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555
random_parametric
mixture
block_bootstrap
mixture
realism stress (tier) ρ=+0.24
#708This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.22, n 555).Seasonal component count ρ=-0.22, n=555
mixture
block_bootstrap
block_bootstrap
block_bootstrap
realism stress (tier) ρ=+0.53
#36This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.22, n 443).Dominant period ρ=+0.22, n=443
block_bootstrap
block_bootstrap
block_bootstrap
block_bootstrap
realism stress (tier) ρ=+0.54
#177This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443
random_parametric
random_parametric
random_parametric
random_parametric
amplitude modulated (archetype) ρ=+0.19

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation.

Sundial/model.layers.3 — individual features and the series they fire on

Of 6144 probed features, 2131 correlate with a structural property of the series and 3453 with a corpus bookkeeping label (mean |ρ| 0.090 vs 0.159). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5767This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.34, n 443).Dominant period ρ=-0.34, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.16
#5686This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.31, n 443).Dominant period ρ=+0.31, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.32
#2033This feature increases the forecast's overall level on the series it fires on (1.26 times the random-direction null), strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443removing it lowers level (1.3x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.466 (35% of context sd)
with · without · Δ 0.459 (50% of context sd)
with · without · Δ 0.583 (38% of context sd)
parametric (generator) ρ=+0.46
#2518This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
mixture
mixture
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.27
#3917This feature moves the near horizon of the forecast on the series it fires on (1.16 times the random-direction null), strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443removing it reshapes near horizon (1.2x its null)
mixture
mixture
mixture
n=8
with · without · Δ 0.154 (17% of context sd)
with · without · Δ 0.106 (19% of context sd)
with · without · Δ 0.121 (26% of context sd)
nonsinusoidal seasonal (archetype) ρ=+0.37
#719This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.26, n 555).Changepoint count ρ=-0.26, n=555not a candidate
random_parametric
random_parametric
sequential_par
not measuredintermittent bursts (archetype) ρ=+0.27
#1626This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.118 (10% of context sd)
with · without · Δ 0.259 (21% of context sd)
with · without · Δ 0.111 (10% of context sd)
realism stress (tier) ρ=-0.49
#788This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.25, n 555).Changepoint count ρ=-0.25, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredsequential par (generator) ρ=+0.36

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.10 — individual features and the series they fire on

Of 6144 probed features, 3131 correlate with a structural property of the series and 4823 with a corpus bookkeeping label (mean |ρ| 0.087 vs 0.164). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#3484This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger AR coefficient sum (rho 0.29, n 374).Autocorrelation strength ρ=+0.29, n=374removing it moves no channel past its own null
sequential_par
random_parametric
sequential_par
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 17.8 (8.9% of context sd)
with · without · Δ 0.0738 (15% of context sd)
with · without · Δ 38.4 (8.6% of context sd)
intermittent bursts (archetype) ρ=+0.35
#518This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.29, n 374).Autocorrelation strength ρ=-0.29, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.24
#4384This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=+0.26, n=374not a candidate
sequential_par
random_parametric
sequential_par
not measuredsequential par (generator) ρ=+0.32
#4502This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=+0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.41
#6061This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=-0.24, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredregime switching (archetype) ρ=+0.28
#176This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.12
#329This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.23, n 443).Dominant period ρ=+0.23, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.26
#5543This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.23, n 555).Changepoint count ρ=+0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredregime switching (archetype) ρ=+0.18

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.11 — individual features and the series they fire on

Of 6144 probed features, 2846 correlate with a structural property of the series and 4117 with a corpus bookkeeping label (mean |ρ| 0.087 vs 0.162). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2571This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.30, n 555).Changepoint count ρ=+0.30, n=555not a candidate
mixture
mixture
mixture
not measuredparametric (generator) ρ=+0.34
#4323This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.29, n 443).Dominant period ρ=+0.29, n=443not a candidate
random_parametric
mixture
mixture
not measuredrandom walk drift (archetype) ρ=+0.26
#1082This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.28, n 555).Changepoint count ρ=+0.28, n=555not a candidate
mixture
mixture
block_bootstrap
not measuredrealism stress (tier) ρ=+0.44
#4578This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.408 (10% of context sd)
with · without · Δ 0.376 (11% of context sd)
with · without · Δ 0.42 (10% of context sd)
intermittent bursts (archetype) ρ=+0.57
#737This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredregime switching (archetype) ρ=+0.28
#5513This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.31
#1030This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=+0.26, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.33
#1275This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.22

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-Bolt/encoder.block.4 — individual features and the series they fire on

Of 6144 probed features, 928 correlate with a structural property of the series and 1353 with a corpus bookkeeping label (mean |ρ| 0.097 vs 0.183). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#3726This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
mixture
mixture
random_parametric
not measuredmixture (generator) ρ=+0.40
#2978This feature decreases the forecast's seasonal magnitude on the series it fires on (1.82 times the random-direction null), strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555removing it raises seasonal strength (1.8x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.00732 (6.6% of context sd)
with · without · Δ 0.00867 (5.3% of context sd)
with · without · Δ 0.00928 (5.2% of context sd)
ar colored noise (archetype) ρ=+0.42
#431This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.41
#5860This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=-0.14
#968This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=-0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredanomaly heavy (archetype) ρ=+0.29
#4452This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.24, n 555).Changepoint count ρ=-0.24, n=555not a candidate
mixture
random_parametric
sequential_par
not measuredmixture (generator) ρ=-0.26
#6080This feature decreases the forecast's seasonal magnitude on the series it fires on (1.22 times the random-direction null), strongest on series with a smaller number of changepoints (rho 0.24, n 555).Changepoint count ρ=-0.24, n=555removing it raises seasonal strength (1.2x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.0066 (4.7% of context sd)
with · without · Δ 0.00186 (2.1% of context sd)
with · without · Δ 0.0129 (7.4% of context sd)
intermittent bursts (archetype) ρ=+0.31
#826This feature was not tested for an effect on the forecast; it is strongest on series with a larger noise scale (rho 0.24, n 555).Noise level ρ=+0.24, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=-0.39

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-Bolt/encoder.block.5 — individual features and the series they fire on

Of 6144 probed features, 914 correlate with a structural property of the series and 1312 with a corpus bookkeeping label (mean |ρ| 0.094 vs 0.175). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#4501This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
mixture
not measurednonsinusoidal seasonal (archetype) ρ=+0.12
#75This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.10
#5824This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of changepoints (rho 0.24, n 555).Changepoint count ρ=-0.24, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0234 (3.9% of context sd)
with · without · Δ 0.00211 (2.4% of context sd)
with · without · Δ 0.00488 (2.7% of context sd)
intermittent bursts (archetype) ρ=+0.34
#3795This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.24, n 555).Changepoint count ρ=-0.24, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.31
#3035This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.27
#5852This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.23, n 555).Changepoint count ρ=+0.23, n=555not a candidate
mixture
mixture
mixture
not measuredregime switching (archetype) ρ=+0.32
#2927This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.11
#10This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.23, n 443).Dominant period ρ=+0.23, n=443not a candidate
sequential_par
sequential_par
sequential_par
not measuredrandom parametric (generator) ρ=+0.17

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Timer/model.layers.4 — individual features and the series they fire on

Of 6144 probed features, 3722 correlate with a structural property of the series and 5402 with a corpus bookkeeping label (mean |ρ| 0.075 vs 0.136). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1887This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.37, n 443).Dominant period ρ=-0.37, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.33
#5103This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.29, n 555).Seasonal component count ρ=-0.29, n=555removing it moves no channel past its own null
sequential_par
sequential_par
sequential_par
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.703 (21% of context sd)
with · without · Δ 0.781 (26% of context sd)
with · without · Δ 0.945 (30% of context sd)
realism stress (tier) ρ=+0.40
#3311This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=-0.16
#5716This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=-0.28, n=555removing it moves no channel past its own null
block_bootstrap
mixture
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.418 (7.6% of context sd)
with · without · Δ 0.0879 (11% of context sd)
with · without · Δ 0.641 (13% of context sd)
realism stress (tier) ρ=+0.41
#4465This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.101 (9.7% of context sd)
with · without · Δ 0.0635 (10% of context sd)
with · without · Δ 0.109 (16% of context sd)
mixture (generator) ρ=-0.55
#2410This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of changepoints (rho 0.28, n 555).Changepoint count ρ=-0.28, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0244 (18% of context sd)
with · without · Δ 0.115 (17% of context sd)
with · without · Δ 0.656 (43% of context sd)
mixture (generator) ρ=-0.39
#1259This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=-0.28, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.836 (16% of context sd)
with · without · Δ 0.727 (15% of context sd)
with · without · Δ 0.124 (21% of context sd)
realism stress (tier) ρ=+0.53
#3042This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555not a candidate
mixture
block_bootstrap
block_bootstrap
not measuredintermittent bursts (archetype) ρ=+0.41

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Timer/model.layers.6 — individual features and the series they fire on

Of 6144 probed features, 3361 correlate with a structural property of the series and 5161 with a corpus bookkeeping label (mean |ρ| 0.075 vs 0.129). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#3972This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.33, n 443).Dominant period ρ=-0.33, n=443not a candidate
block_bootstrap
block_bootstrap
random_parametric
not measuredblock bootstrap (generator) ρ=+0.24
#2157This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.31, n 443).Dominant period ρ=-0.31, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.22
#3176This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.29, n 555).Seasonal component count ρ=+0.29, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0996 (11% of context sd)
with · without · Δ 0.0337 (3.3% of context sd)
with · without · Δ 0.219 (14% of context sd)
realism stress (tier) ρ=-0.57
#4988This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555removing it moves no channel past its own null
random_parametric
random_parametric
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.383 (18% of context sd)
with · without · Δ 0.117 (8.7% of context sd)
with · without · Δ 0.00293 (7.5% of context sd)
mixture (generator) ρ=-0.46
#4719This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.19
#1259This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
sequential_par
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.324 (8.9% of context sd)
with · without · Δ 0.508 (10% of context sd)
with · without · Δ 0.375 (12% of context sd)
realism stress (tier) ρ=+0.48
#5817This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.27
#1656This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555removing it moves no channel past its own null
random_parametric
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.109 (12% of context sd)
with · without · Δ 0.00146 (8.3% of context sd)
with · without · Δ 0.00244 (6.3% of context sd)
mixture (generator) ρ=-0.46

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Time-MoE/model.layers.1 — individual features and the series they fire on

Of 6144 probed features, 48 correlate with a structural property of the series and 62 with a corpus bookkeeping label (mean |ρ| 0.183 vs 0.300). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1656This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.31, n 443).Dominant period ρ=-0.31, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.33
#188This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.31, n 443).Dominant period ρ=-0.31, n=443not a candidate
block_bootstrap
block_bootstrap
block_bootstrap
not measuredintermittent bursts (archetype) ρ=+0.35
#5747This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443not a candidate
sequential_par
sequential_par
sequential_par
not measuredrealism stress (tier) ρ=+0.46
#5132This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.024 (3.7% of context sd)
with · without · Δ 0.262 (25% of context sd)
with · without · Δ 0.0176 (4.1% of context sd)
sequential par (generator) ρ=+0.30
#680This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.30, n 555).Changepoint count ρ=+0.30, n=555not a candidate
mixture
mixture
mixture
not measuredar colored noise (archetype) ρ=-0.30
#4440This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
sequential_par
sequential_par
sequential_par
not measuredrealism stress (tier) ρ=+0.38
#6107This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
sequential_par
sequential_par
sequential_par
not measuredrealism stress (tier) ρ=+0.42
#5676This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
mixture
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=+0.48

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Time-MoE/model.layers.10 — individual features and the series they fire on

Of 6144 probed features, 1677 correlate with a structural property of the series and 2287 with a corpus bookkeeping label (mean |ρ| 0.084 vs 0.171). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1485This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.34, n 443).Dominant period ρ=+0.34, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.41
#3383This feature decreases the forecast's seasonal magnitude on the series it fires on (1.77 times the random-direction null), strongest on series with a larger dominant seasonal period (rho 0.30, n 443).Dominant period ρ=+0.30, n=443removing it raises seasonal strength (1.8x its null)
sequential_par
random_parametric
block_bootstrap
n=8
with · without · Δ 34.3 (14% of context sd)
with · without · Δ 0.142 (19% of context sd)
with · without · Δ 0.892 (16% of context sd)
realism stress (tier) ρ=+0.50
#50This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.18
#1337This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.602 (11% of context sd)
with · without · Δ 0.267 (8.2% of context sd)
with · without · Δ 0.493 (5.5% of context sd)
realism stress (tier) ρ=+0.43
#1601This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
mixture
random_parametric
mixture
not measurednonsinusoidal seasonal (archetype) ρ=+0.34
#525This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredtrend dominant (archetype) ρ=+0.32
#4002This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.25, n 555).Changepoint count ρ=+0.25, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.23
#4298This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=-0.24, n=555not a candidate
block_bootstrap
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=+0.34

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Time-MoE/model.layers.11 — individual features and the series they fire on

Of 6144 probed features, 71 correlate with a structural property of the series and 74 with a corpus bookkeeping label (mean |ρ| 0.209 vs 0.265). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#4073This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.36, n 443).Dominant period ρ=+0.36, n=443not a candidate
mixture
mixture
mixture
not measuredseasonal dominant (archetype) ρ=-0.34
#4430This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger dominant seasonal period (rho 0.36, n 443).Dominant period ρ=+0.36, n=443removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.137 (13% of context sd)
with · without · Δ 1.53 (12% of context sd)
with · without · Δ 0.0481 (13% of context sd)
seasonal dominant (archetype) ρ=-0.33
#1498This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.36, n 443).Dominant period ρ=+0.36, n=443not a candidate
mixture
mixture
mixture
not measuredseasonal dominant (archetype) ρ=-0.32
#4941This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger dominant seasonal period (rho 0.35, n 443).Dominant period ρ=+0.35, n=443removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.24 (24% of context sd)
with · without · Δ 2.95 (23% of context sd)
with · without · Δ 0.0892 (23% of context sd)
seasonal dominant (archetype) ρ=-0.33
#3971This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger dominant seasonal period (rho 0.35, n 443).Dominant period ρ=+0.35, n=443removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0179 (1.8% of context sd)
with · without · Δ 0.173 (1.4% of context sd)
with · without · Δ 0.00601 (1.6% of context sd)
seasonal dominant (archetype) ρ=-0.33
#5992This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger dominant seasonal period (rho 0.35, n 443).Dominant period ρ=+0.35, n=443removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.122 (12% of context sd)
with · without · Δ 1.52 (12% of context sd)
with · without · Δ 0.0443 (12% of context sd)
seasonal dominant (archetype) ρ=-0.33
#3380This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.35, n 443).Dominant period ρ=+0.35, n=443not a candidate
mixture
mixture
mixture
not measuredrandom walk drift (archetype) ρ=+0.32
#82This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger dominant seasonal period (rho 0.35, n 443).Dominant period ρ=+0.35, n=443removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0159 (1.6% of context sd)
with · without · Δ 0.173 (1.4% of context sd)
with · without · Δ 0.00526 (1.4% of context sd)
random walk drift (archetype) ρ=+0.33

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-T5-Base/encoder.block.4 — individual features and the series they fire on

Of 192 probed features, 85 correlate with a structural property of the series and 128 with a corpus bookkeeping label (mean |ρ| 0.137 vs 0.298). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#92This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.31, n 443).Dominant period ρ=-0.31, n=443not a candidate
mixture
mixture
mixture
not measuredintermittent bursts (archetype) ρ=+0.31
#137This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.29, n 555).Changepoint count ρ=-0.29, n=555not a candidate
random_parametric
mixture
mixture
not measuredar colored noise (archetype) ρ=+0.25
#142This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.28, n 555).Changepoint count ρ=-0.28, n=555not a candidate
block_bootstrap
block_bootstrap
block_bootstrap
not measuredar colored noise (archetype) ρ=+0.28
#27This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of changepoints (rho 0.27, n 555).Changepoint count ρ=-0.27, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.37 (1.5e+02% of context sd)
with · without · Δ 0.168 (1.2e+02% of context sd)
with · without · Δ 0.263 (1.6e+02% of context sd)
ar colored noise (archetype) ρ=+0.36
#46This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.27, n 555).Changepoint count ρ=-0.27, n=555not a candidate
random_parametric
mixture
mixture
not measuredblock bootstrap (generator) ρ=-0.36
#148This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.26, n 555).Changepoint count ρ=-0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.29
#30This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.26, n 555).Changepoint count ρ=-0.26, n=555not a candidate
mixture
random_parametric
random_parametric
not measuredblock bootstrap (generator) ρ=-0.35
#94This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
mixture
mixture
mixture
not measuredseasonal dominant (archetype) ρ=+0.24

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-T5-Base/encoder.block.10 — individual features and the series they fire on

Of 384 probed features, 176 correlate with a structural property of the series and 260 with a corpus bookkeeping label (mean |ρ| 0.116 vs 0.282). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#216This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.30, n 555).Seasonal component count ρ=+0.30, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredblock bootstrap (generator) ρ=-0.38
#75This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.29, n 555).Seasonal component count ρ=+0.29, n=555not a candidate
random_parametric
random_parametric
mixture
not measuredintermittent bursts (archetype) ρ=-0.43
#287This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.25, n 555).Changepoint count ρ=-0.25, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.36
#291This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443not a candidate
mixture
mixture
mixture
not measuredseasonal dominant (archetype) ρ=+0.18
#55This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.23, n 555).Changepoint count ρ=-0.23, n=555not a candidate
mixture
mixture
mixture
not measuredar colored noise (archetype) ρ=+0.37
#368This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.23, n 555).Changepoint count ρ=+0.23, n=555not a candidate
mixture
random_parametric
mixture
not measuredclean low noise (archetype) ρ=+0.36
#358This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.23, n 555).Changepoint count ρ=+0.23, n=555not a candidate
mixture
mixture
mixture
not measuredrealism stress (tier) ρ=+0.29
#102This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.22, n 374).Autocorrelation strength ρ=+0.22, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.29

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-T5-Base/encoder.block.11 — individual features and the series they fire on

Of 384 probed features, 185 correlate with a structural property of the series and 254 with a corpus bookkeeping label (mean |ρ| 0.115 vs 0.295). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#314This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.29, n 555).Changepoint count ρ=-0.29, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.38
#52This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.26, n 555).Changepoint count ρ=-0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.41
#73This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.23, n 555).Changepoint count ρ=-0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.44
#359This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.22, n 555).Seasonal component count ρ=+0.22, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.50
#348This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.22, n 374).Autocorrelation strength ρ=+0.22, n=374not a candidate
sequential_par
block_bootstrap
sequential_par
not measuredsequential par (generator) ρ=+0.33
#228This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.22, n 555).Seasonal component count ρ=+0.22, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=-0.62
#261This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.22, n 443).Dominant period ρ=+0.22, n=443not a candidate
parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.45
#312This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller AR coefficient sum (rho 0.21, n 374).Autocorrelation strength ρ=-0.21, n=374removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.114 (11% of context sd)
with · without · Δ 0.0928 (53% of context sd)
with · without · Δ 0.419 (98% of context sd)
random parametric (generator) ρ=+0.20

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.14 — individual features and the series they fire on

Of 3072 probed features, 532 correlate with a structural property of the series and 797 with a corpus bookkeeping label (mean |ρ| 0.085 vs 0.153). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#206This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.32, n 555).Seasonal component count ρ=+0.32, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.51
#949This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.31, n 555).Seasonal component count ρ=+0.31, n=555removing it moves no channel past its own null
parametric
random_parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.671 (85% of context sd)
with · without · Δ 1.08 (80% of context sd)
with · without · Δ 0.846 (99% of context sd)
parametric (generator) ρ=+0.53
#876This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.29, n 555).Seasonal component count ρ=+0.29, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 1.32 (98% of context sd)
with · without · Δ 1.65 (94% of context sd)
with · without · Δ 1.59 (1.1e+02% of context sd)
parametric (generator) ρ=+0.51
#1437This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555removing it moves no channel past its own null
random_parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.516 (29% of context sd)
with · without · Δ 0.23 (30% of context sd)
with · without · Δ 0.35 (38% of context sd)
parametric (generator) ρ=+0.54
#2523This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.46
#2382This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.48
#111This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555removing it moves no channel past its own null
random_parametric
random_parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 1.4 (1e+02% of context sd)
with · without · Δ 1.77 (1.2e+02% of context sd)
with · without · Δ 0.865 (1.1e+02% of context sd)
parametric (generator) ρ=+0.51
#757This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=+0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.46

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.0 — individual features and the series they fire on

Of 6144 probed features, 484 correlate with a structural property of the series and 615 with a corpus bookkeeping label (mean |ρ| 0.096 vs 0.170). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1653This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.32, n 443).Dominant period ρ=+0.32, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.35
#948This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
block_bootstrap
random_parametric
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.22
#5258This feature moves the forecast's seasonal magnitude on the series it fires on (2.09 times the random-direction null), strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443removing it lowers seasonal strength (2.1x its null)
random_parametric
mixture
random_parametric
n=8
with · without · Δ 0.199 (26% of context sd)
with · without · Δ 0.276 (20% of context sd)
with · without · Δ 0.0285 (8.8% of context sd)
random parametric (generator) ρ=+0.33
#3423This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=-0.27
#944This feature increases the forecast's overall level on the series it fires on (1.62 times the random-direction null), and also moves the near horizon of the forecast, strongest on series with a larger number of changepoints (rho 0.25, n 555).Changepoint count ρ=+0.25, n=555removing it lowers level (1.6x its null)
random_parametric
random_parametric
parametric
n=8
with · without · Δ 0.608 (70% of context sd)
with · without · Δ 0.779 (43% of context sd)
with · without · Δ 1.09 (59% of context sd)
multi seasonal complex (archetype) ρ=+0.18
#5638This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
mixture
not measuredseasonal dominant (archetype) ρ=+0.24
#3065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.24, n 443).Dominant period ρ=+0.24, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredclean low noise (archetype) ρ=+0.46
#4585This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.25

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.4 — individual features and the series they fire on

Of 6144 probed features, 711 correlate with a structural property of the series and 1112 with a corpus bookkeeping label (mean |ρ| 0.080 vs 0.143). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#574This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.24
#3751This feature increases the forecast's seasonal magnitude on the series it fires on (1.38 times the random-direction null), strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443removing it lowers seasonal strength (1.4x its null)
block_bootstrap
random_parametric
block_bootstrap
n=8
with · without · Δ 0.0387 (96% of context sd)
with · without · Δ 0.177 (70% of context sd)
with · without · Δ 0.0183 (87% of context sd)
ar colored noise (archetype) ρ=+0.32
#2106This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0228 (41% of context sd)
with · without · Δ 0.0332 (70% of context sd)
with · without · Δ 0.035 (89% of context sd)
clean low noise (archetype) ρ=-0.26
#5638This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0844 (27% of context sd)
with · without · Δ 0.332 (45% of context sd)
with · without · Δ 0.222 (30% of context sd)
ar colored noise (archetype) ρ=+0.31
#956This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.011 (26% of context sd)
with · without · Δ 0.016 (27% of context sd)
with · without · Δ 0.0169 (25% of context sd)
intermittent bursts (archetype) ρ=+0.34
#1742This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443not a candidate
random_parametric
mixture
block_bootstrap
not measuredar colored noise (archetype) ρ=+0.33
#3038This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443removing it moves no channel past its own null
mixture
block_bootstrap
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.327 (30% of context sd)
with · without · Δ 0.0245 (77% of context sd)
with · without · Δ 0.359 (81% of context sd)
parametric (generator) ρ=+0.30
#1136This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.21, n 555).Seasonal component count ρ=+0.21, n=555not a candidate
random_parametric
mixture
random_parametric
not measuredclean low noise (archetype) ρ=-0.30

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.8 — individual features and the series they fire on

Of 6144 probed features, 554 correlate with a structural property of the series and 886 with a corpus bookkeeping label (mean |ρ| 0.081 vs 0.146). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2106This feature moves the forecast's spectral centroid on the series it fires on (1.13 times the random-direction null), strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443removing it raises frequency balance (1.1x its null)
block_bootstrap
block_bootstrap
block_bootstrap
n=8
with · without · Δ 0.0113 (53% of context sd)
with · without · Δ 0.0265 (56% of context sd)
with · without · Δ 0.0373 (62% of context sd)
random parametric (generator) ρ=-0.50
#574This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443removing it moves no channel past its own null
random_parametric
random_parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.524 (70% of context sd)
with · without · Δ 0.509 (38% of context sd)
with · without · Δ 0.411 (52% of context sd)
parametric (generator) ρ=+0.40
#3534This feature moves the forecast's overall level on the series it fires on (1.00 times the random-direction null), strongest on series with a larger number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=+0.26, n=555removing it lowers level (1.0x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 1.28 (77% of context sd)
with · without · Δ 0.771 (48% of context sd)
with · without · Δ 0.676 (50% of context sd)
realism stress (tier) ρ=-0.39
#712This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555not a candidate
random_parametric
mixture
mixture
not measuredrandom walk drift (archetype) ρ=-0.32
#4664This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443removing it moves no channel past its own null
random_parametric
parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.128 (17% of context sd)
with · without · Δ 0.195 (24% of context sd)
with · without · Δ 0.178 (24% of context sd)
realism stress (tier) ρ=-0.52
#5638This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443not a candidate
random_parametric
mixture
mixture
not measuredar colored noise (archetype) ρ=+0.28
#3038This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=+0.23, n=555removing it moves no channel past its own null
mixture
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.187 (31% of context sd)
with · without · Δ 0.119 (14% of context sd)
with · without · Δ 0.565 (72% of context sd)
parametric (generator) ρ=+0.53
#453This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.661 (47% of context sd)
with · without · Δ 0.137 (25% of context sd)
with · without · Δ 0.191 (26% of context sd)
realism stress (tier) ρ=-0.63

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.9 — individual features and the series they fire on

Of 6144 probed features, 3382 correlate with a structural property of the series and 4626 with a corpus bookkeeping label (mean |ρ| 0.082 vs 0.167). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2898This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.28
#4696This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=-0.25, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0293 (6.1% of context sd)
with · without · Δ 0.0148 (4.6% of context sd)
with · without · Δ 0.0117 (2% of context sd)
multi seasonal complex (archetype) ρ=-0.28
#1138This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=+0.24, n=374not a candidate
random_parametric
random_parametric
sequential_par
not measurednoisy chaotic (archetype) ρ=+0.20
#2727This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=+0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.23
#3331This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=-0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.26
#4680This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=-0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.34
#1251This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.22, n 374).Autocorrelation strength ρ=+0.22, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.40
#4020This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.22, n 374).Autocorrelation strength ρ=+0.22, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.30

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.7 — individual features and the series they fire on

Of 6144 probed features, 2799 correlate with a structural property of the series and 3997 with a corpus bookkeeping label (mean |ρ| 0.084 vs 0.166). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5513This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=-0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredtrend dominant (archetype) ρ=+0.34
#5716This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.19
#3134This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=+0.23, n=374removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.00977 (3.2% of context sd)
with · without · Δ 0.0234 (4.9% of context sd)
with · without · Δ 0.00922 (4.5% of context sd)
ar colored noise (archetype) ρ=+0.25
#3440This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.16
#2729This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.22, n 555).Changepoint count ρ=+0.22, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=-0.25
#5347This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.22, n 374).Autocorrelation strength ρ=-0.22, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.29
#2381This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.21, n 555).Seasonal component count ρ=-0.21, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredanomaly heavy (archetype) ρ=+0.25
#4426This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.21, n 555).Seasonal component count ρ=-0.21, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredanomaly heavy (archetype) ρ=+0.32

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.6 — individual features and the series they fire on

Of 6144 probed features, 1930 correlate with a structural property of the series and 2887 with a corpus bookkeeping label (mean |ρ| 0.088 vs 0.170). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#3260This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.18
#3387This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.14
#2386This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.27, n 374).Autocorrelation strength ρ=+0.27, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.31
#3728This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.27, n 555).Changepoint count ρ=-0.27, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measurednonsinusoidal seasonal (archetype) ρ=+0.27
#3903This feature was not tested for an effect on the forecast; it is strongest on series with a larger seasonal amplitude (rho 0.25, n 443).Seasonal amplitude ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.28
#4581This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=+0.23, n=555not a candidate
mixture
mixture
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.27
#3952This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=+0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.17
#3440This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.14

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.6 — individual features and the series they fire on

Of 6144 probed features, 2454 correlate with a structural property of the series and 4114 with a corpus bookkeeping label (mean |ρ| 0.088 vs 0.156). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.37, n 443).Dominant period ρ=+0.37, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.29
#2354This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.32, n 555).Seasonal component count ρ=-0.32, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredsequential par (generator) ρ=+0.32
#2033This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.32, n 443).Dominant period ρ=-0.32, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.528 (34% of context sd)
with · without · Δ 0.327 (24% of context sd)
with · without · Δ 0.56 (37% of context sd)
parametric (generator) ρ=+0.45
#1284This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.12
#1534This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=+0.26, n=374not a candidate
sequential_par
sequential_par
sequential_par
not measuredrandom walk drift (archetype) ρ=+0.30
#5085This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.15
#4902This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=-0.24, n=555removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0062 (1.2% of context sd)
with · without · Δ 0.0127 (1.2% of context sd)
with · without · Δ 0.00707 (1% of context sd)
intermittent bursts (archetype) ρ=+0.32
#3704This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.22

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.9 — individual features and the series they fire on

Of 6144 probed features, 3049 correlate with a structural property of the series and 4798 with a corpus bookkeeping label (mean |ρ| 0.087 vs 0.161). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2974This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.30, n 555).Seasonal component count ρ=-0.30, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.00899 (3.1% of context sd)
with · without · Δ 0.00269 (3.3% of context sd)
with · without · Δ 0.00568 (2.1% of context sd)
random parametric (generator) ρ=+0.31
#2815This feature increases the forecast's seasonal magnitude on the series it fires on (2.10 times the random-direction null), and also moves the near horizon of the forecast, strongest on series with a larger AR coefficient sum (rho 0.27, n 374).Autocorrelation strength ρ=+0.27, n=374removing it lowers seasonal strength (2.1x its null)
sequential_par
sequential_par
random_parametric
n=8
with · without · Δ 89.9 (20% of context sd)
with · without · Δ 20.9 (11% of context sd)
with · without · Δ 0.0438 (14% of context sd)
random walk drift (archetype) ρ=+0.26
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.23
#1679This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=-0.25, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.153 (2.8% of context sd)
with · without · Δ 0.181 (6.2% of context sd)
with · without · Δ 0.0618 (6.7% of context sd)
realism stress (tier) ρ=+0.40
#3027This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.21
#1106This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=-0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.24
#5362This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=-0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.23
#5187This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=+0.23, n=374not a candidate
random_parametric
sequential_par
sequential_par
not measuredintermittent bursts (archetype) ρ=+0.33

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.7 — individual features and the series they fire on

Of 6144 probed features, 2635 correlate with a structural property of the series and 4388 with a corpus bookkeeping label (mean |ρ| 0.088 vs 0.156). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.40, n 443).Dominant period ρ=+0.40, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.33
#2354This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.32, n 555).Seasonal component count ρ=-0.32, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0219 (9.7% of context sd)
with · without · Δ 0.00523 (2.7% of context sd)
with · without · Δ 0.000834 (1% of context sd)
sequential par (generator) ρ=+0.41
#2033This feature moves the near horizon of the forecast on the series it fires on (1.51 times the random-direction null), and also decreases its spread, strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443removing it reshapes near horizon (1.5x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.359 (23% of context sd)
with · without · Δ 0.93 (61% of context sd)
with · without · Δ 0.647 (48% of context sd)
parametric (generator) ρ=+0.48
#3912This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.22
#3699This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.27, n 374).Autocorrelation strength ρ=+0.27, n=374not a candidate
random_parametric
sequential_par
random_parametric
not measuredsequential par (generator) ρ=+0.30
#5942This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=-0.26, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.22
#609This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=-0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.21
#5244This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=-0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.27

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-Bolt/encoder.block.3 — individual features and the series they fire on

Of 6144 probed features, 943 correlate with a structural property of the series and 1324 with a corpus bookkeeping label (mean |ρ| 0.097 vs 0.178). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5125This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.31, n 443).Dominant period ρ=+0.31, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.42
#5088This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.17
#649This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.15
#2830This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0703 (8.4% of context sd)
with · without · Δ 0.0625 (5.2% of context sd)
with · without · Δ 0.0938 (10% of context sd)
random walk drift (archetype) ρ=+0.35
#179This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=+0.26, n=374not a candidate
random_parametric
sequential_par
random_parametric
not measuredrandom parametric (generator) ρ=+0.24
#4935This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=-0.39
#4360This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=+0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.26
#3776This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443removing it moves no channel past its own null
random_parametric
random_parametric
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.867 (62% of context sd)
with · without · Δ 0.331 (50% of context sd)
with · without · Δ 0.00281 (13% of context sd)
parametric (generator) ρ=+0.49

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-Bolt/encoder.block.2 — individual features and the series they fire on

Of 6144 probed features, 797 correlate with a structural property of the series and 1216 with a corpus bookkeeping label (mean |ρ| 0.100 vs 0.176). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5261This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.35, n 443).Dominant period ρ=+0.35, n=443not a candidate
mixture
random_parametric
mixture
not measuredparametric (generator) ρ=-0.27
#3273This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.31, n 443).Dominant period ρ=-0.31, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.40
#3504This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
block_bootstrap
block_bootstrap
not measurednonsinusoidal seasonal (archetype) ρ=+0.35
#4239This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.39
#3510This feature moves the near horizon of the forecast on the series it fires on (1.24 times the random-direction null), and also moves forecast error, strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443removing it reshapes near horizon (1.2x its null)
mixture
mixture
mixture
n=8
with · without · Δ 0.043 (8.2% of context sd)
with · without · Δ 0.107 (10% of context sd)
with · without · Δ 0.0908 (13% of context sd)
random walk drift (archetype) ρ=+0.28
#883This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.24, n 555).Changepoint count ρ=-0.24, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.36
#2308This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.24, n 443).Dominant period ρ=+0.24, n=443not a candidate
mixture
random_parametric
parametric
not measuredmulti seasonal complex (archetype) ρ=+0.31
#3663This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.24, n 443).Dominant period ρ=+0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.29

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Timer/model.layers.3 — individual features and the series they fire on

Of 6144 probed features, 3286 correlate with a structural property of the series and 5062 with a corpus bookkeeping label (mean |ρ| 0.079 vs 0.137). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2112This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.44, n 443).Dominant period ρ=+0.44, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.36
#5858This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.39, n 443).Dominant period ρ=+0.39, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.41
#1028This feature decreases the forecast's spectral centroid on the series it fires on (1.03 times the random-direction null), strongest on series with a smaller number of seasonal components (rho 0.32, n 555).Seasonal component count ρ=-0.32, n=555removing it raises frequency balance (1.0x its null)
block_bootstrap
mixture
block_bootstrap
n=8
with · without · Δ 0.781 (21% of context sd)
with · without · Δ 0.189 (22% of context sd)
with · without · Δ 0.844 (17% of context sd)
realism stress (tier) ρ=+0.39
#1709This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.31, n 555).Seasonal component count ρ=-0.31, n=555removing it moves no channel past its own null
sequential_par
block_bootstrap
sequential_par
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.656 (22% of context sd)
with · without · Δ 0.906 (18% of context sd)
with · without · Δ 1.06 (26% of context sd)
realism stress (tier) ρ=+0.53
#5831This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.31, n 555).Seasonal component count ρ=-0.31, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.906 (18% of context sd)
with · without · Δ 0.703 (14% of context sd)
with · without · Δ 0.0759 (14% of context sd)
realism stress (tier) ρ=+0.50
#5303This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.30, n 555).Seasonal component count ρ=-0.30, n=555not a candidate
block_bootstrap
block_bootstrap
block_bootstrap
not measuredrealism stress (tier) ρ=+0.37
#5381This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmixture (generator) ρ=-0.22
#2825This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.29, n 555).Changepoint count ρ=-0.29, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredmixture (generator) ρ=-0.52

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Timer/model.layers.2 — individual features and the series they fire on

Of 6144 probed features, 2958 correlate with a structural property of the series and 4868 with a corpus bookkeeping label (mean |ρ| 0.080 vs 0.132). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1709This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.41, n 443).Dominant period ρ=-0.41, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.711 (1.3e+02% of context sd)
with · without · Δ 0.309 (34% of context sd)
with · without · Δ 0.354 (26% of context sd)
block bootstrap (generator) ρ=+0.34
#5211This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.242 (27% of context sd)
with · without · Δ 0.133 (25% of context sd)
with · without · Δ 0.16 (24% of context sd)
parametric (generator) ρ=+0.39
#972This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.19
#3301This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.15
#1616This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.28, n 443).Dominant period ρ=+0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=-0.43
#1430This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger dominant seasonal period (rho 0.28, n 443).Dominant period ρ=+0.28, n=443removing it moves no channel past its own null
block_bootstrap
random_parametric
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 1.09 (22% of context sd)
with · without · Δ 0.0967 (31% of context sd)
with · without · Δ 0.246 (29% of context sd)
parametric (generator) ρ=-0.42
#4721This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.28
#2862This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443removing it moves no channel past its own null
block_bootstrap
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.102 (2.1% of context sd)
with · without · Δ 0.0796 (7.8% of context sd)
with · without · Δ 0.0181 (4.7% of context sd)
block bootstrap (generator) ρ=+0.32

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Time-MoE/model.layers.2 — individual features and the series they fire on

Of 6144 probed features, 76 correlate with a structural property of the series and 108 with a corpus bookkeeping label (mean |ρ| 0.158 vs 0.281). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1150This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.34, n 443).Dominant period ρ=-0.34, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=+0.40
#848This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.33, n 443).Dominant period ρ=-0.33, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=-0.29
#6107This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.33, n 443).Dominant period ρ=-0.33, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=-0.36
#2281This feature moves the forecast's spectral centroid on the series it fires on (2.78 times the random-direction null), and also increases its seasonal magnitude, strongest on series with a larger dominant seasonal period (rho 0.31, n 443).Dominant period ρ=+0.31, n=443removing it raises frequency balance (2.8x its null)
random_parametric
mixture
random_parametric
n=8
with · without · Δ 0.86 (41% of context sd)
with · without · Δ 3.91 (2.8e+02% of context sd)
with · without · Δ 0.00336 (0.39% of context sd)
random parametric (generator) ρ=+0.41
#1155This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.40
#5132This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.31
#6052This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.15
#554This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
mixture
mixture
mixture
not measuredmixture (generator) ρ=+0.47

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Time-MoE/model.layers.3 — individual features and the series they fire on

Of 384 probed features, 258 correlate with a structural property of the series and 299 with a corpus bookkeeping label (mean |ρ| 0.119 vs 0.276). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#308This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.33
#99This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=-0.25, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.21
#57This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.25, n 555).Changepoint count ρ=-0.25, n=555not a candidate
sequential_par
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=-0.28
#380This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.44
#45This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.23
#358This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.18
#295This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.42
#359This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of changepoints (rho 0.23, n 555).Changepoint count ρ=-0.23, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0541 (23% of context sd)
with · without · Δ 0.027 (16% of context sd)
with · without · Δ 0.0553 (20% of context sd)
ar colored noise (archetype) ρ=+0.43

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Time-MoE/model.layers.4 — individual features and the series they fire on

Of 768 probed features, 245 correlate with a structural property of the series and 352 with a corpus bookkeeping label (mean |ρ| 0.113 vs 0.216). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#666This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.42, n 443).Dominant period ρ=-0.42, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0183 (17% of context sd)
with · without · Δ 0.0342 (14% of context sd)
with · without · Δ 0.0125 (8.6% of context sd)
sequential par (generator) ρ=+0.25
#620This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.32, n 443).Dominant period ρ=-0.32, n=443removing it moves no channel past its own null
sequential_par
sequential_par
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 1.89e+03 (69% of context sd)
with · without · Δ 1.53 (50% of context sd)
with · without · Δ 0.0194 (6.3% of context sd)
intermittent bursts (archetype) ρ=+0.35
#344This feature decreases forecast error on the series it fires on (1.57 times the random-direction null), and also decreases its spread and moves its trend slope, strongest on series with a larger dominant seasonal period (rho 0.31, n 443).Dominant period ρ=+0.31, n=443removing it raises accuracy (mase) (1.7x its null)
mixture
mixture
mixture
n=8
with · without · Δ 0.818 (6.5% of context sd)
with · without · Δ 0.737 (54% of context sd)
with · without · Δ 0.347 (38% of context sd)
parametric (generator) ρ=-0.34
#495This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.38
#547This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.28, n 443).Dominant period ρ=+0.28, n=443not a candidate
mixture
mixture
mixture
not measuredparametric (generator) ρ=-0.35
#382This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555not a candidate
mixture
mixture
mixture
not measurednonsinusoidal seasonal (archetype) ρ=-0.33
#638This feature moves forecast error on the series it fires on (1.21 times the random-direction null), strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443removing it raises accuracy (mase) (1.2x its null)
mixture
mixture
mixture
n=8
with · without · Δ 0.00898 (1.7% of context sd)
with · without · Δ 0.0156 (1.5% of context sd)
with · without · Δ 0.028 (1.5% of context sd)
intermittent bursts (archetype) ρ=+0.39
#528This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443not a candidate
mixture
mixture
mixture
not measuredrandom walk drift (archetype) ρ=-0.29

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-T5-Base/encoder.block.8 — individual features and the series they fire on

Of 384 probed features, 144 correlate with a structural property of the series and 231 with a corpus bookkeeping label (mean |ρ| 0.122 vs 0.268). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#55This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger noise scale (rho 0.27, n 555).Noise level ρ=+0.27, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.185 (60% of context sd)
with · without · Δ 0.109 (62% of context sd)
with · without · Δ 0.185 (1.1e+02% of context sd)
block bootstrap (generator) ρ=-0.42
#140This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.26, n 555).Changepoint count ρ=-0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.35
#232This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.31
#2This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.25, n 555).Changepoint count ρ=-0.25, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.26
#132This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.35
#71This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.54
#366This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.23, n 555).Changepoint count ρ=-0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.35
#150This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.23, n 555).Changepoint count ρ=-0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.32

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-T5-Base/encoder.block.3 — individual features and the series they fire on

Of 192 probed features, 75 correlate with a structural property of the series and 128 with a corpus bookkeeping label (mean |ρ| 0.126 vs 0.291). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#137This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
block_bootstrap
mixture
not measuredintermittent bursts (archetype) ρ=-0.35
#142This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
block_bootstrap
block_bootstrap
block_bootstrap
not measuredar colored noise (archetype) ρ=+0.26
#4This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of changepoints (rho 0.26, n 555).Changepoint count ρ=-0.26, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.128 (54% of context sd)
with · without · Δ 0.0674 (56% of context sd)
with · without · Δ 0.187 (1.1e+02% of context sd)
ar colored noise (archetype) ρ=+0.36
#147This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of changepoints (rho 0.25, n 555).Changepoint count ρ=-0.25, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.301 (98% of context sd)
with · without · Δ 0.222 (93% of context sd)
with · without · Δ 0.161 (24% of context sd)
realism stress (tier) ρ=-0.50
#54This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.50
#92This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.22, n 555).Changepoint count ρ=-0.22, n=555not a candidate
mixture
mixture
mixture
not measuredintermittent bursts (archetype) ρ=+0.36
#46This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.21, n 443).Dominant period ρ=-0.21, n=443not a candidate
random_parametric
mixture
mixture
not measuredblock bootstrap (generator) ρ=-0.33
#44This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.20, n 443).Dominant period ρ=+0.20, n=443not a candidate
random_parametric
mixture
mixture
not measuredclean low noise (archetype) ρ=+0.43

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-T5-Base/encoder.block.5 — individual features and the series they fire on

Of 192 probed features, 94 correlate with a structural property of the series and 132 with a corpus bookkeeping label (mean |ρ| 0.139 vs 0.315). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#92This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.34, n 443).Dominant period ρ=-0.34, n=443not a candidate
mixture
mixture
mixture
not measuredmixture (generator) ρ=+0.29
#22This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.33, n 443).Dominant period ρ=-0.33, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.24
#142This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.31, n 443).Dominant period ρ=-0.31, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredar colored noise (archetype) ρ=+0.29
#137This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredsequential par (generator) ρ=-0.26
#19This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.28, n 555).Changepoint count ρ=-0.28, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.41
#30This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
mixture
mixture
not measuredblock bootstrap (generator) ρ=-0.33
#43This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.43
#111This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443not a candidate
mixture
random_parametric
mixture
not measuredintermittent bursts (archetype) ρ=-0.41

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.12 — individual features and the series they fire on

Of 6144 probed features, 630 correlate with a structural property of the series and 943 with a corpus bookkeeping label (mean |ρ| 0.081 vs 0.147). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#4296This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.30, n 555).Seasonal component count ρ=+0.30, n=555not a candidate
mixture
random_parametric
mixture
not measuredparametric (generator) ρ=+0.43
#5516This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.28, n 443).Dominant period ρ=+0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.19
#712This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555not a candidate
random_parametric
parametric
random_parametric
not measuredparametric (generator) ρ=+0.48
#574This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443removing it moves no channel past its own null
random_parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.431 (32% of context sd)
with · without · Δ 0.321 (41% of context sd)
with · without · Δ 0.419 (53% of context sd)
parametric (generator) ρ=+0.50
#5702This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.787 (1.1e+02% of context sd)
with · without · Δ 0.526 (70% of context sd)
with · without · Δ 1.22 (90% of context sd)
parametric (generator) ρ=+0.37
#1136This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.34
#453This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=+0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.42
#137This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=+0.23, n=555removing it moves no channel past its own null
random_parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.636 (47% of context sd)
with · without · Δ 0.324 (41% of context sd)
with · without · Δ 0.431 (52% of context sd)
parametric (generator) ρ=+0.53

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.5 — individual features and the series they fire on

Of 6144 probed features, 1755 correlate with a structural property of the series and 2672 with a corpus bookkeeping label (mean |ρ| 0.090 vs 0.172). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#3407This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.33, n 555).Seasonal component count ρ=-0.33, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredtrend dominant (archetype) ρ=+0.20
#5451This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredblock bootstrap (generator) ρ=+0.26
#3206This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443not a candidate
sequential_par
sequential_par
mixture
not measuredsequential par (generator) ρ=+0.23
#6076This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=-0.26, n=555not a candidate
sequential_par
sequential_par
sequential_par
not measuredsequential par (generator) ρ=+0.36
#3244This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.35
#750This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.25, n 555).Changepoint count ρ=+0.25, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.30
#4638This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.16
#292This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.24, n 443).Dominant period ρ=+0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.29

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.4 — individual features and the series they fire on

Of 6144 probed features, 1923 correlate with a structural property of the series and 2905 with a corpus bookkeeping label (mean |ρ| 0.091 vs 0.174). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#3815This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.30, n 374).Autocorrelation strength ρ=+0.30, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.20
#1816This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.27, n 374).Autocorrelation strength ρ=+0.27, n=374not a candidate
block_bootstrap
random_parametric
sequential_par
not measuredblock bootstrap (generator) ρ=+0.35
#6078This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredtrend dominant (archetype) ρ=+0.39
#1241This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=+0.26, n=374not a candidate
random_parametric
random_parametric
sequential_par
not measuredsequential par (generator) ρ=+0.20
#5566This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.44
#5488This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.13
#589This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
sequential_par
sequential_par
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.37
#3517This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555not a candidate
mixture
sequential_par
random_parametric
not measurednonsinusoidal seasonal (archetype) ρ=+0.20

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.3 — individual features and the series they fire on

Of 6144 probed features, 1838 correlate with a structural property of the series and 2702 with a corpus bookkeeping label (mean |ρ| 0.093 vs 0.179). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5910This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.29, n 443).Dominant period ρ=+0.29, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measurednonsinusoidal seasonal (archetype) ρ=-0.14
#1227This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=-0.28, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredtrend dominant (archetype) ρ=+0.30
#5519This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=-0.50
#1591This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredblock bootstrap (generator) ρ=+0.23
#2903This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.25, n 555).Changepoint count ρ=+0.25, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredregime switching (archetype) ρ=+0.23
#4885This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.24, n 555).Changepoint count ρ=-0.24, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.27
#4788This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=+0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.23
#1678This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.14

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.5 — individual features and the series they fire on

Of 6144 probed features, 2200 correlate with a structural property of the series and 3639 with a corpus bookkeeping label (mean |ρ| 0.090 vs 0.156). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2033This feature moves the near horizon of the forecast on the series it fires on (1.36 times the random-direction null), and also increases its overall level, strongest on series with a smaller dominant seasonal period (rho 0.32, n 443).Dominant period ρ=-0.32, n=443removing it lowers level (1.8x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.531 (39% of context sd)
with · without · Δ 0.259 (37% of context sd)
with · without · Δ 0.37 (47% of context sd)
parametric (generator) ρ=+0.44
#545This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.28, n 374).Autocorrelation strength ρ=-0.28, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.22
#2140This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.27, n 374).Autocorrelation strength ρ=-0.27, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.25
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.18
#1480This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.26, n 555).Changepoint count ρ=-0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.22
#2659This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=+0.26, n=374not a candidate
sequential_par
sequential_par
sequential_par
not measuredrandom walk drift (archetype) ρ=+0.34
#4902This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=-0.26, n=555removing it moves no channel past its own null
mixture
random_parametric
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.00441 (0.84% of context sd)
with · without · Δ 0.0932 (9% of context sd)
with · without · Δ 0.0253 (4.6% of context sd)
sequential par (generator) ρ=+0.32
#4066This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.20

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.4 — individual features and the series they fire on

Of 6144 probed features, 2104 correlate with a structural property of the series and 3536 with a corpus bookkeeping label (mean |ρ| 0.090 vs 0.155). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5686This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.30, n 443).Dominant period ρ=+0.30, n=443not a candidate
mixture
mixture
random_parametric
not measuredclean low noise (archetype) ρ=+0.37
#2033This feature increases the forecast's overall level on the series it fires on (2.06 times the random-direction null), and also moves its spectral centroid, strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443removing it lowers level (2.1x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.316 (38% of context sd)
with · without · Δ 0.528 (67% of context sd)
with · without · Δ 0.238 (36% of context sd)
parametric (generator) ρ=+0.45
#5318This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.28, n 374).Autocorrelation strength ρ=+0.28, n=374not a candidate
random_parametric
mixture
mixture
not measuredparametric (generator) ρ=-0.34
#1626This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.247 (18% of context sd)
with · without · Δ 0.161 (17% of context sd)
with · without · Δ 0.0647 (25% of context sd)
realism stress (tier) ρ=-0.58
#2518This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
mixture
mixture
mixture
not measuredmulti seasonal complex (archetype) ρ=+0.32
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.27
#5486This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=-0.25, n=555not a candidate
random_parametric
mixture
mixture
not measuredsequential par (generator) ρ=+0.26
#5942This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=-0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.29

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.8 — individual features and the series they fire on

Of 6144 probed features, 2873 correlate with a structural property of the series and 4614 with a corpus bookkeeping label (mean |ρ| 0.087 vs 0.159). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2354This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.31, n 555).Seasonal component count ρ=-0.31, n=555removing it moves no channel past its own null
mixture
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0471 (5.1% of context sd)
with · without · Δ 0.142 (4.9% of context sd)
with · without · Δ 0.207 (4% of context sd)
intermittent bursts (archetype) ρ=+0.41
#1679This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.30, n 555).Seasonal component count ρ=-0.30, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.261 (4.7% of context sd)
with · without · Δ 0.219 (6% of context sd)
with · without · Δ 0.289 (7.2% of context sd)
realism stress (tier) ρ=+0.44
#4415This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger AR coefficient sum (rho 0.28, n 374).Autocorrelation strength ρ=+0.28, n=374removing it moves no channel past its own null
random_parametric
sequential_par
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.12 (38% of context sd)
with · without · Δ 83.2 (19% of context sd)
with · without · Δ 0.0702 (30% of context sd)
ar colored noise (archetype) ρ=+0.23
#3318This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.30
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.34
#1927This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=+0.25, n=374not a candidate
random_parametric
sequential_par
random_parametric
not measuredar colored noise (archetype) ρ=+0.16
#883This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=+0.24, n=374not a candidate
mixture
mixture
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.32
#925This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.31

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Timer/model.layers.7 — individual features and the series they fire on

Of 384 probed features, 83 correlate with a structural property of the series and 179 with a corpus bookkeeping label (mean |ρ| 0.084 vs 0.138). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#184This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.16, n 374).Autocorrelation strength ρ=-0.16, n=374not a candidate
mixture
sequential_par
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.12
#314This feature was not tested for an effect on the forecast; it is strongest on series with a larger seasonal amplitude (rho 0.15, n 443).Seasonal amplitude ρ=+0.15, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=-0.28
#169This feature was not tested for an effect on the forecast; it is strongest on series with a larger noise scale (rho 0.15, n 555).Noise level ρ=+0.15, n=555not a candidate
random_parametric
random_parametric
sequential_par
not measuredrandom parametric (generator) ρ=+0.20
#360This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.15, n 555).Changepoint count ρ=+0.15, n=555not a candidate
random_parametric
random_parametric
mixture
not measuredmulti seasonal complex (archetype) ρ=+0.10
#61This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.14, n 555).Changepoint count ρ=+0.14, n=555not a candidate
random_parametric
mixture
mixture
not measuredmulti seasonal complex (archetype) ρ=+0.18
#201This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.14, n 443).Dominant period ρ=+0.14, n=443not a candidate
mixture
mixture
mixture
not measuredrandom parametric (generator) ρ=+0.38
#220This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.13, n 443).Dominant period ρ=-0.13, n=443not a candidate
mixture
mixture
mixture
not measuredmixture (generator) ρ=+0.25
#283This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.13, n 443).Dominant period ρ=-0.13, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.09

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real.

What each channel means: see the first target's legend above (same nine channels every target).

Timer/model.layers.1 — individual features and the series they fire on

Of 6144 probed features, 2891 correlate with a structural property of the series and 4817 with a corpus bookkeeping label (mean |ρ| 0.078 vs 0.130). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#524This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.33, n 443).Dominant period ρ=-0.33, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measurednonsinusoidal seasonal (archetype) ρ=+0.33
#4860This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measurednonsinusoidal seasonal (archetype) ρ=+0.17
#104This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0972 (16% of context sd)
with · without · Δ 0.122 (18% of context sd)
with · without · Δ 0.118 (15% of context sd)
realism stress (tier) ρ=+0.45
#5492This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.19
#18This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555removing it moves no channel past its own null
block_bootstrap
random_parametric
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.383 (7.5% of context sd)
with · without · Δ 0.00635 (4.7% of context sd)
with · without · Δ 0.32 (6% of context sd)
intermittent bursts (archetype) ρ=+0.35
#4835This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.294 (28% of context sd)
with · without · Δ 0.18 (21% of context sd)
with · without · Δ 0.438 (45% of context sd)
random parametric (generator) ρ=+0.37
#5831This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=-0.26, n=555removing it moves no channel past its own null
block_bootstrap
mixture
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.719 (25% of context sd)
with · without · Δ 0.657 (72% of context sd)
with · without · Δ 0.0801 (26% of context sd)
realism stress (tier) ρ=+0.47
#4900This feature decreases the forecast's spread on the series it fires on (1.18 times the random-direction null), strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443removing it raises spread (1.2x its null)
mixture
mixture
mixture
n=8
with · without · Δ 1.25 (9.9% of context sd)
with · without · Δ 0.127 (12% of context sd)
with · without · Δ 0.197 (19% of context sd)
realism stress (tier) ρ=+0.42

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Time-MoE/model.layers.0 — individual features and the series they fire on

Of 1536 probed features, 36 correlate with a structural property of the series and 38 with a corpus bookkeeping label (mean |ρ| 0.119 vs 0.384). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1131This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.28, n 555).Changepoint count ρ=-0.28, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=-0.38
#396This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.22, n 555).Changepoint count ρ=-0.22, n=555not a candidate
random_parametric
mixture
mixture
not measuredrealism stress (tier) ρ=-0.42
#1029This feature moves the far horizon of the forecast on the series it fires on (1.15 times the random-direction null), and also increases its overall level, strongest on series with a smaller number of changepoints (rho 0.21, n 555).Changepoint count ρ=-0.21, n=555removing it reshapes far horizon (1.2x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.223 (2.5e+02% of context sd)
with · without · Δ 0.388 (2.1e+02% of context sd)
with · without · Δ 0.46 (2.5e+02% of context sd)
realism stress (tier) ρ=-0.42
#778This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.19, n 555).Seasonal component count ρ=-0.19, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.27
#285This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.18, n 443).Dominant period ρ=-0.18, n=443not a candidate
random_parametric
mixture
mixture
not measuredrealism stress (tier) ρ=-0.39
#1351This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.15, n 443).Dominant period ρ=-0.15, n=443not a candidate
random_parametric
mixture
mixture
not measuredrealism stress (tier) ρ=-0.41
#645This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.14, n 555).Changepoint count ρ=+0.14, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=-0.48
#393This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of changepoints (rho 0.14, n 555).Changepoint count ρ=-0.14, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.329 (54% of context sd)
with · without · Δ 0.115 (5.5% of context sd)
with · without · Δ 0.115 (6.3% of context sd)
realism stress (tier) ρ=-0.33

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Time-MoE/model.layers.5 — individual features and the series they fire on

Of 1536 probed features, 331 correlate with a structural property of the series and 481 with a corpus bookkeeping label (mean |ρ| 0.100 vs 0.186). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1027This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.41, n 443).Dominant period ρ=-0.41, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0176 (13% of context sd)
with · without · Δ 0.103 (10% of context sd)
with · without · Δ 0.0311 (11% of context sd)
intermittent bursts (archetype) ρ=+0.30
#733This feature increases the forecast's seasonal magnitude on the series it fires on (1.02 times the random-direction null), strongest on series with a smaller dominant seasonal period (rho 0.40, n 443).Dominant period ρ=-0.40, n=443removing it lowers seasonal strength (1.0x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 1.13 (1.7e+02% of context sd)
with · without · Δ 3.26 (2.7e+02% of context sd)
with · without · Δ 1.56 (1.5e+02% of context sd)
parametric (generator) ρ=+0.29
#112This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.00343 (9.2% of context sd)
with · without · Δ 0.00537 (15% of context sd)
with · without · Δ 0.0117 (20% of context sd)
parametric (generator) ρ=+0.45
#1300This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.28, n 443).Dominant period ρ=+0.28, n=443not a candidate
mixture
mixture
mixture
not measuredmulti seasonal complex (archetype) ρ=+0.29
#308This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=-0.63
#1084This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555not a candidate
mixture
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.33
#1361This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.24
#121This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=-0.38

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Time-MoE/model.layers.6 — individual features and the series they fire on

Of 6144 probed features, 540 correlate with a structural property of the series and 751 with a corpus bookkeeping label (mean |ρ| 0.087 vs 0.172). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5132This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.39, n 443).Dominant period ρ=-0.39, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.32
#4019This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.34, n 443).Dominant period ρ=+0.34, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.30
#1633This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.33, n 443).Dominant period ρ=-0.33, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.267 (40% of context sd)
with · without · Δ 0.258 (31% of context sd)
with · without · Δ 0.203 (66% of context sd)
parametric (generator) ρ=+0.44
#2615This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.30, n 443).Dominant period ρ=+0.30, n=443not a candidate
mixture
mixture
sequential_par
not measuredparametric (generator) ρ=-0.46
#1201This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443removing it moves no channel past its own null
random_parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.388 (1.2e+02% of context sd)
with · without · Δ 0.86 (1.1e+02% of context sd)
with · without · Δ 0.609 (76% of context sd)
random parametric (generator) ρ=-0.51
#1155This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.50
#4921This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0855 (13% of context sd)
with · without · Δ 0.0998 (12% of context sd)
with · without · Δ 0.13 (13% of context sd)
realism stress (tier) ρ=-0.25
#1485This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.53 (80% of context sd)
with · without · Δ 0.539 (69% of context sd)
with · without · Δ 0.792 (82% of context sd)
realism stress (tier) ρ=-0.77

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-T5-Base/encoder.block.9 — individual features and the series they fire on

Of 384 probed features, 162 correlate with a structural property of the series and 241 with a corpus bookkeeping label (mean |ρ| 0.117 vs 0.282). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#216This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.30, n 555).Seasonal component count ρ=+0.30, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredblock bootstrap (generator) ρ=-0.39
#183This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.42
#14This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.26, n 555).Changepoint count ρ=-0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.41
#271This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
mixture
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.59
#22This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.52
#18This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.20
#38This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555not a candidate
mixture
mixture
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.25
#365This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of changepoints (rho 0.23, n 555).Changepoint count ρ=-0.23, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0 (0% of context sd)
with · without · Δ 0 (0% of context sd)
with · without · Δ 0 (0% of context sd)
parametric (generator) ρ=-0.44

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-T5-Base/encoder.block.6 — individual features and the series they fire on

Of 192 probed features, 100 correlate with a structural property of the series and 131 with a corpus bookkeeping label (mean |ρ| 0.129 vs 0.335). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#92This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.32, n 443).Dominant period ρ=-0.32, n=443not a candidate
mixture
mixture
mixture
not measuredmixture (generator) ρ=+0.29
#142This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.31, n 443).Dominant period ρ=-0.31, n=443not a candidate
block_bootstrap
block_bootstrap
block_bootstrap
not measuredintermittent bursts (archetype) ρ=+0.27
#49This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.26, n 555).Changepoint count ρ=-0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.47
#123This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.25, n 555).Changepoint count ρ=-0.25, n=555not a candidate
mixture
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.33
#137This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredparametric (generator) ρ=+0.21
#27This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.24, n 555).Changepoint count ρ=-0.24, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.37
#165This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443removing it moves no channel past its own null
parametric
random_parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.439 (56% of context sd)
with · without · Δ 0.231 (75% of context sd)
with · without · Δ 0.472 (60% of context sd)
realism stress (tier) ρ=-0.47
#77This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredsequential par (generator) ρ=-0.36

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-T5-Base/encoder.block.7 — individual features and the series they fire on

Of 192 probed features, 109 correlate with a structural property of the series and 142 with a corpus bookkeeping label (mean |ρ| 0.131 vs 0.335). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#142This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443not a candidate
mixture
random_parametric
block_bootstrap
not measuredrealism stress (tier) ρ=+0.28
#98This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.29, n 443).Dominant period ρ=-0.29, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 1.1 (1.2e+02% of context sd)
with · without · Δ 0.727 (70% of context sd)
with · without · Δ 0.179 (64% of context sd)
seasonal dominant (archetype) ρ=+0.38
#86This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.28, n 443).Dominant period ρ=+0.28, n=443not a candidate
mixture
mixture
mixture
not measurednonsinusoidal seasonal (archetype) ρ=+0.26
#92This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
mixture
mixture
mixture
not measuredmixture (generator) ρ=+0.32
#12This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.40
#77This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=-0.41
#14This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of changepoints (rho 0.24, n 555).Changepoint count ρ=-0.24, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.122 (51% of context sd)
with · without · Δ 0.0528 (32% of context sd)
with · without · Δ 0.0891 (51% of context sd)
ar colored noise (archetype) ρ=+0.45
#58This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.19

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

For each SAE target, the series-level ground-truth feature-alignment score is computed for every dictionary feature; this table shows, for the top few features with a significant ground-truth match, the exemplar series that feature fires hardest on -- the field it matches, that match's Spearman ρ, and (`field_value`) that exemplar series' own actual value of the matched field, so a reader can eyeball whether the correlation the number claims is real.

What does this table mean?

How to read it
A high |ρ| with `field_value` varying sensibly across the listed exemplars (e.g. activation tracking a seasonal period or trend order up and down) is a genuine, ground-truth-verified interpretable feature. `activation` is that feature's own encoded value for the listed series, not comparable in scale across different features or models.

Limitations
Illustrative evidence only, same class as the Exemplars section -- a feature firing here is not a causal claim about the forecast. A feature-level ablation/steering battery exists and has real-checkpoint numbers on record, but is off by default and not shown in this table. Only the small alive fraction of the dictionary can ever appear here (dead-feature rate is typically 90%+, shown above per target); real-derived-tier series carry no ground truth and never appear as exemplars regardless of how hard a feature fires on them. Separately, the 'ground-truth alignment' line's mean |ρ| above picks, per feature, the best of many candidate ground-truth fields -- a real inflation above zero from that search alone, even on pure noise, since the max of many weak correlations is not itself weak. The label-permutation null next to it reruns the identical search with each feature's series correspondence shuffled, so it shows how large that same number gets by chance; only a mean |ρ| clearly above the null's p95 supports reading the dictionary's alignment as real structure rather than search inflation.

Seed-to-seed noise floor

11 of 56 targets' forecast-preservation ΔMASE is larger than 2× its own seed-to-seed spread. Each cell in the table below is the mean across seeds ± its spread; the two ΔMASE columns are IDENTICAL by construction for a model whose token width equals the alignment window, so where they differ the gap is the window-broadcast confound rather than a second opinion. 🔴 The frozen-store control FAILED at TimesFM/stacked_xf.10 (mase_clean_window sd 0.334), TimesFM/stacked_xf.10 (mase_clean_token sd 0.334), TimesFM/stacked_xf.18 (mase_clean_window sd 0.334), TimesFM/stacked_xf.18 (mase_clean_token sd 0.334), TimesFM/stacked_xf.6 (mase_clean_window sd 0.334), TimesFM/stacked_xf.6 (mase_clean_token sd 0.334), TimesFM/stacked_xf.16 (mase_clean_window sd 0.334), TimesFM/stacked_xf.16 (mase_clean_token sd 0.334), TimesFM/stacked_xf.2 (mase_clean_window sd 0.334), TimesFM/stacked_xf.2 (mase_clean_token sd 0.334), Chronos-2/encoder.block.8 (mase_clean_window sd 0.395), Chronos-2/encoder.block.8 (mase_clean_token sd 0.395), Chronos-2/encoder.block.10 (mase_clean_window sd 0.395), Chronos-2/encoder.block.10 (mase_clean_token sd 0.395), Chronos-2/encoder.block.11 (mase_clean_window sd 0.395), Chronos-2/encoder.block.11 (mase_clean_token sd 0.395), Sundial/model.layers.3 (mase_clean_window sd 0.522), Sundial/model.layers.3 (mase_clean_token sd 0.522), Sundial/model.layers.10 (mase_clean_window sd 0.522), Sundial/model.layers.10 (mase_clean_token sd 0.522), Sundial/model.layers.11 (mase_clean_window sd 0.522), Sundial/model.layers.11 (mase_clean_token sd 0.522), Chronos-Bolt/encoder.block.4 (mase_clean_window sd 0.229), Chronos-Bolt/encoder.block.4 (mase_clean_token sd 0.229), Chronos-Bolt/encoder.block.5 (mase_clean_window sd 0.229), Chronos-Bolt/encoder.block.5 (mase_clean_token sd 0.229), Timer/model.layers.4 (mase_clean_window sd 0.218), Timer/model.layers.4 (mase_clean_token sd 0.218), Timer/model.layers.6 (mase_clean_window sd 0.218), Timer/model.layers.6 (mase_clean_token sd 0.218), Time-MoE/model.layers.1 (mase_clean_window sd 0.0706), Time-MoE/model.layers.1 (mase_clean_token sd 0.0706), Time-MoE/model.layers.10 (mase_clean_window sd 0.0706), Time-MoE/model.layers.10 (mase_clean_token sd 0.0706), Time-MoE/model.layers.11 (mase_clean_window sd 0.0706), Time-MoE/model.layers.11 (mase_clean_token sd 0.0706), Chronos-T5-Base/encoder.block.4 (mase_clean_window sd 0.448), Chronos-T5-Base/encoder.block.4 (mase_clean_token sd 0.448), Chronos-T5-Base/encoder.block.10 (mase_clean_window sd 0.448), Chronos-T5-Base/encoder.block.10 (mase_clean_token sd 0.448), Chronos-T5-Base/encoder.block.11 (mase_clean_window sd 0.448), Chronos-T5-Base/encoder.block.11 (mase_clean_token sd 0.448), TimesFM/stacked_xf.14 (mase_clean_window sd 0.334), TimesFM/stacked_xf.14 (mase_clean_token sd 0.334), TimesFM/stacked_xf.0 (mase_clean_window sd 0.334), TimesFM/stacked_xf.0 (mase_clean_token sd 0.334), TimesFM/stacked_xf.4 (mase_clean_window sd 0.334), TimesFM/stacked_xf.4 (mase_clean_token sd 0.334), TimesFM/stacked_xf.8 (mase_clean_window sd 0.334), TimesFM/stacked_xf.8 (mase_clean_token sd 0.334), Chronos-2/encoder.block.9 (mase_clean_window sd 0.395), Chronos-2/encoder.block.9 (mase_clean_token sd 0.395), Chronos-2/encoder.block.7 (mase_clean_window sd 0.395), Chronos-2/encoder.block.7 (mase_clean_token sd 0.395), Chronos-2/encoder.block.6 (mase_clean_window sd 0.395), Chronos-2/encoder.block.6 (mase_clean_token sd 0.395), Sundial/model.layers.6 (mase_clean_window sd 0.522), Sundial/model.layers.6 (mase_clean_token sd 0.522), Sundial/model.layers.9 (mase_clean_window sd 0.522), Sundial/model.layers.9 (mase_clean_token sd 0.522), Sundial/model.layers.7 (mase_clean_window sd 0.522), Sundial/model.layers.7 (mase_clean_token sd 0.522), Chronos-Bolt/encoder.block.3 (mase_clean_window sd 0.229), Chronos-Bolt/encoder.block.3 (mase_clean_token sd 0.229), Chronos-Bolt/encoder.block.2 (mase_clean_window sd 0.229), Chronos-Bolt/encoder.block.2 (mase_clean_token sd 0.229), Timer/model.layers.3 (mase_clean_window sd 0.218), Timer/model.layers.3 (mase_clean_token sd 0.218), Timer/model.layers.2 (mase_clean_window sd 0.218), Timer/model.layers.2 (mase_clean_token sd 0.218), Time-MoE/model.layers.2 (mase_clean_window sd 0.0706), Time-MoE/model.layers.2 (mase_clean_token sd 0.0706), Time-MoE/model.layers.3 (mase_clean_window sd 0.0706), Time-MoE/model.layers.3 (mase_clean_token sd 0.0706), Time-MoE/model.layers.4 (mase_clean_window sd 0.0706), Time-MoE/model.layers.4 (mase_clean_token sd 0.0706), Chronos-T5-Base/encoder.block.8 (mase_clean_window sd 0.448), Chronos-T5-Base/encoder.block.8 (mase_clean_token sd 0.448), Chronos-T5-Base/encoder.block.3 (mase_clean_window sd 0.448), Chronos-T5-Base/encoder.block.3 (mase_clean_token sd 0.448), Chronos-T5-Base/encoder.block.5 (mase_clean_window sd 0.448), Chronos-T5-Base/encoder.block.5 (mase_clean_token sd 0.448), TimesFM/stacked_xf.12 (mase_clean_window sd 0.334), TimesFM/stacked_xf.12 (mase_clean_token sd 0.334), Chronos-2/encoder.block.5 (mase_clean_window sd 0.395), Chronos-2/encoder.block.5 (mase_clean_token sd 0.395), Chronos-2/encoder.block.4 (mase_clean_window sd 0.395), Chronos-2/encoder.block.4 (mase_clean_token sd 0.395), Chronos-2/encoder.block.3 (mase_clean_window sd 0.395), Chronos-2/encoder.block.3 (mase_clean_token sd 0.395), Sundial/model.layers.5 (mase_clean_window sd 0.522), Sundial/model.layers.5 (mase_clean_token sd 0.522), Sundial/model.layers.4 (mase_clean_window sd 0.522), Sundial/model.layers.4 (mase_clean_token sd 0.522), Sundial/model.layers.8 (mase_clean_window sd 0.522), Sundial/model.layers.8 (mase_clean_token sd 0.522), Timer/model.layers.7 (mase_clean_window sd 0.218), Timer/model.layers.7 (mase_clean_token sd 0.218), Timer/model.layers.1 (mase_clean_window sd 0.218), Timer/model.layers.1 (mase_clean_token sd 0.218), Time-MoE/model.layers.0 (mase_clean_window sd 0.0706), Time-MoE/model.layers.0 (mase_clean_token sd 0.0706), Time-MoE/model.layers.5 (mase_clean_window sd 0.0706), Time-MoE/model.layers.5 (mase_clean_token sd 0.0706), Time-MoE/model.layers.6 (mase_clean_window sd 0.0706), Time-MoE/model.layers.6 (mase_clean_token sd 0.0706), Chronos-T5-Base/encoder.block.9 (mase_clean_window sd 0.448), Chronos-T5-Base/encoder.block.9 (mase_clean_token sd 0.448), Chronos-T5-Base/encoder.block.6 (mase_clean_window sd 0.448), Chronos-T5-Base/encoder.block.6 (mase_clean_token sd 0.448), Chronos-T5-Base/encoder.block.7 (mase_clean_window sd 0.448), Chronos-T5-Base/encoder.block.7 (mase_clean_token sd 0.448) — the unpatched forecast moved between seeds, so something other than the SAE seed varied and every spread above is suspect.

Per-seed spread at each of the 56 analyzed layers
target seeds reconstruction fidelity dead-feature rate ΔMASE (token) ΔMASE (window) is that ΔMASE resolvable at one seed?
TimesFM/stacked_xf.10 3 0.887 ± 0.012 0.229 ± 0.039 0.017 ± 0.005 0.017 ± 0.005 resolvable — 3.4× its own seed spread (bar is 2×)
TimesFM/stacked_xf.18 3 0.908 ± 0.009 0.148 ± 0.048 0.060 ± 0.100 0.060 ± 0.100 NOT resolvable — 0.6× its own seed spread (bar is 2×)
TimesFM/stacked_xf.6 3 0.897 ± 0.002 0.202 ± 0.019 -0.039 ± 0.067 -0.039 ± 0.067 NOT resolvable — 0.6× its own seed spread (bar is 2×)
TimesFM/stacked_xf.16 3 0.901 ± 0.008 0.137 ± 0.036 0.127 ± 0.057 0.127 ± 0.057 resolvable — 2.2× its own seed spread (bar is 2×)
TimesFM/stacked_xf.2 3 0.936 ± 0.006 0.176 ± 0.014 -0.107 ± 0.122 -0.107 ± 0.122 NOT resolvable — 0.9× its own seed spread (bar is 2×)
Chronos-2/encoder.block.8 3 0.920 ± 0.000 0.004 ± 0.000 0.020 ± 0.034 0.141 ± 0.048 NOT resolvable — 0.6× its own seed spread (bar is 2×)
Chronos-2/encoder.block.10 3 0.930 ± 0.000 0.005 ± 0.001 -0.009 ± 0.018 0.026 ± 0.012 NOT resolvable — 0.5× its own seed spread (bar is 2×)
Chronos-2/encoder.block.11 3 0.899 ± 0.033 0.100 ± 0.078 0.000 ± 0.000 0.000 ± 0.000 no effect and no spread — nothing to resolve
Sundial/model.layers.3 3 0.964 ± 0.000 0.008 ± 0.001 0.042 ± 0.029 0.210 ± 0.082 NOT resolvable — 1.4× its own seed spread (bar is 2×)
Sundial/model.layers.10 3 0.950 ± 0.000 0.021 ± 0.001 0.058 ± 0.030 0.227 ± 0.042 NOT resolvable — 1.9× its own seed spread (bar is 2×)
Sundial/model.layers.11 3 0.962 ± 0.000 0.036 ± 0.005 0.112 ± 0.130 0.390 ± 0.157 NOT resolvable — 0.9× its own seed spread (bar is 2×)
Chronos-Bolt/encoder.block.4 3 0.959 ± 0.001 0.007 ± 0.001 -0.117 ± 0.075 0.294 ± 0.186 NOT resolvable — 1.6× its own seed spread (bar is 2×)
Chronos-Bolt/encoder.block.5 3 0.960 ± 0.002 0.009 ± 0.001 0.062 ± 0.058 0.273 ± 0.185 NOT resolvable — 1.1× its own seed spread (bar is 2×)
Timer/model.layers.4 3 0.994 ± 0.000 0.020 ± 0.003 0.008 ± 0.015 0.008 ± 0.015 NOT resolvable — 0.5× its own seed spread (bar is 2×)
Timer/model.layers.6 3 0.993 ± 0.000 0.021 ± 0.001 -0.025 ± 0.022 -0.025 ± 0.022 NOT resolvable — 1.1× its own seed spread (bar is 2×)
Time-MoE/model.layers.1 3 0.641 ± 0.119 0.978 ± 0.002 0.121 ± 0.041 -0.112 ± 0.076 resolvable — 3.0× its own seed spread (bar is 2×)
Time-MoE/model.layers.10 3 0.942 ± 0.010 0.130 ± 0.009 0.090 ± 0.091 -0.331 ± 0.149 NOT resolvable — 1.0× its own seed spread (bar is 2×)
Time-MoE/model.layers.11 3 0.716 ± 0.289 0.978 ± 0.001 -0.226 ± 0.243 -0.419 ± 0.099 NOT resolvable — 0.9× its own seed spread (bar is 2×)
Chronos-T5-Base/encoder.block.4 3 0.920 ± 0.007 0.229 ± 0.018 0.088 ± 0.198 0.610 ± 0.286 NOT resolvable — 0.4× its own seed spread (bar is 2×)
Chronos-T5-Base/encoder.block.10 3 0.864 ± 0.005 0.115 ± 0.017 0.183 ± 0.125 0.463 ± 0.264 NOT resolvable — 1.5× its own seed spread (bar is 2×)
Chronos-T5-Base/encoder.block.11 3 0.894 ± 0.002 0.152 ± 0.018 0.850 ± 0.315 0.448 ± 0.282 resolvable — 2.7× its own seed spread (bar is 2×)
TimesFM/stacked_xf.14 3 0.798 ± 0.010 0.181 ± 0.050 0.145 ± 0.004 0.145 ± 0.004 resolvable — 37.0× its own seed spread (bar is 2×)
TimesFM/stacked_xf.0 3 0.957 ± 0.002 0.213 ± 0.021 0.008 ± 0.100 0.008 ± 0.100 NOT resolvable — 0.1× its own seed spread (bar is 2×)
TimesFM/stacked_xf.4 3 0.915 ± 0.003 0.222 ± 0.014 -0.048 ± 0.020 -0.048 ± 0.020 resolvable — 2.4× its own seed spread (bar is 2×)
TimesFM/stacked_xf.8 3 0.880 ± 0.007 0.191 ± 0.020 0.012 ± 0.092 0.012 ± 0.092 NOT resolvable — 0.1× its own seed spread (bar is 2×)
Chronos-2/encoder.block.9 3 0.923 ± 0.001 0.005 ± 0.000 0.022 ± 0.022 0.124 ± 0.045 NOT resolvable — 1.0× its own seed spread (bar is 2×)
Chronos-2/encoder.block.7 3 0.917 ± 0.000 0.002 ± 0.001 0.013 ± 0.034 0.190 ± 0.090 NOT resolvable — 0.4× its own seed spread (bar is 2×)
Chronos-2/encoder.block.6 3 0.910 ± 0.001 0.003 ± 0.000 0.029 ± 0.056 0.262 ± 0.116 NOT resolvable — 0.5× its own seed spread (bar is 2×)
Sundial/model.layers.6 3 0.954 ± 0.001 0.006 ± 0.001 0.016 ± 0.050 0.222 ± 0.017 NOT resolvable — 0.3× its own seed spread (bar is 2×)
Sundial/model.layers.9 3 0.946 ± 0.000 0.012 ± 0.000 0.117 ± 0.089 0.281 ± 0.036 NOT resolvable — 1.3× its own seed spread (bar is 2×)
Sundial/model.layers.7 3 0.951 ± 0.000 0.007 ± 0.000 0.104 ± 0.081 0.279 ± 0.044 NOT resolvable — 1.3× its own seed spread (bar is 2×)
Chronos-Bolt/encoder.block.3 3 0.955 ± 0.002 0.020 ± 0.014 -0.103 ± 0.066 0.158 ± 0.086 NOT resolvable — 1.6× its own seed spread (bar is 2×)
Chronos-Bolt/encoder.block.2 3 0.945 ± 0.001 0.027 ± 0.006 -0.054 ± 0.072 0.186 ± 0.048 NOT resolvable — 0.7× its own seed spread (bar is 2×)
Timer/model.layers.3 3 0.993 ± 0.000 0.028 ± 0.003 0.005 ± 0.017 0.005 ± 0.017 NOT resolvable — 0.3× its own seed spread (bar is 2×)
Timer/model.layers.2 3 0.992 ± 0.002 0.027 ± 0.007 -0.028 ± 0.018 -0.028 ± 0.018 NOT resolvable — 1.6× its own seed spread (bar is 2×)
Time-MoE/model.layers.2 3 0.601 ± 0.051 0.938 ± 0.009 0.107 ± 0.012 -0.084 ± 0.154 resolvable — 8.7× its own seed spread (bar is 2×)
Time-MoE/model.layers.3 3 0.760 ± 0.053 0.049 ± 0.035 0.121 ± 0.023 -0.097 ± 0.181 resolvable — 5.2× its own seed spread (bar is 2×)
Time-MoE/model.layers.4 3 0.709 ± 0.026 0.134 ± 0.038 0.108 ± 0.037 -0.202 ± 0.119 resolvable — 3.0× its own seed spread (bar is 2×)
Chronos-T5-Base/encoder.block.8 3 0.878 ± 0.006 0.229 ± 0.012 0.288 ± 0.519 1.027 ± 0.366 NOT resolvable — 0.6× its own seed spread (bar is 2×)
Chronos-T5-Base/encoder.block.3 3 0.918 ± 0.021 0.266 ± 0.005 0.124 ± 0.210 0.653 ± 0.230 NOT resolvable — 0.6× its own seed spread (bar is 2×)
Chronos-T5-Base/encoder.block.5 3 0.916 ± 0.006 0.184 ± 0.012 0.251 ± 0.184 1.366 ± 0.274 NOT resolvable — 1.4× its own seed spread (bar is 2×)
TimesFM/stacked_xf.12 3 0.889 ± 0.006 0.177 ± 0.005 0.032 ± 0.022 0.032 ± 0.022 NOT resolvable — 1.5× its own seed spread (bar is 2×)
Chronos-2/encoder.block.5 3 0.915 ± 0.001 0.004 ± 0.000 -0.022 ± 0.105 0.325 ± 0.104 NOT resolvable — 0.2× its own seed spread (bar is 2×)
Chronos-2/encoder.block.4 3 0.916 ± 0.000 0.006 ± 0.002 -0.008 ± 0.135 0.332 ± 0.136 NOT resolvable — 0.1× its own seed spread (bar is 2×)
Chronos-2/encoder.block.3 3 0.921 ± 0.000 0.008 ± 0.002 0.068 ± 0.036 0.392 ± 0.183 NOT resolvable — 1.9× its own seed spread (bar is 2×)
Sundial/model.layers.5 3 0.958 ± 0.000 0.005 ± 0.001 0.021 ± 0.035 0.242 ± 0.042 NOT resolvable — 0.6× its own seed spread (bar is 2×)
Sundial/model.layers.4 3 0.966 ± 0.000 0.008 ± 0.001 0.019 ± 0.035 0.201 ± 0.104 NOT resolvable — 0.5× its own seed spread (bar is 2×)
Sundial/model.layers.8 3 0.948 ± 0.001 0.010 ± 0.000 0.047 ± 0.056 0.262 ± 0.031 NOT resolvable — 0.8× its own seed spread (bar is 2×)
Timer/model.layers.7 3 0.878 ± 0.006 0.159 ± 0.030 -0.004 ± 0.024 -0.004 ± 0.024 NOT resolvable — 0.2× its own seed spread (bar is 2×)
Timer/model.layers.1 3 0.994 ± 0.002 0.023 ± 0.001 -0.023 ± 0.011 -0.023 ± 0.011 resolvable — 2.1× its own seed spread (bar is 2×)
Time-MoE/model.layers.0 3 0.252 ± 0.257 0.970 ± 0.004 -0.450 ± 0.217 -0.416 ± 0.385 resolvable — 2.1× its own seed spread (bar is 2×)
Time-MoE/model.layers.5 3 0.808 ± 0.019 0.137 ± 0.017 0.118 ± 0.121 -0.292 ± 0.123 NOT resolvable — 1.0× its own seed spread (bar is 2×)
Time-MoE/model.layers.6 3 0.852 ± 0.023 0.246 ± 0.010 0.122 ± 0.106 -0.272 ± 0.119 NOT resolvable — 1.1× its own seed spread (bar is 2×)
Chronos-T5-Base/encoder.block.9 3 0.874 ± 0.006 0.153 ± 0.026 0.301 ± 0.453 0.789 ± 0.129 NOT resolvable — 0.7× its own seed spread (bar is 2×)
Chronos-T5-Base/encoder.block.6 3 0.907 ± 0.003 0.194 ± 0.033 0.000 ± 0.119 1.778 ± 0.260 NOT resolvable — 0.0× its own seed spread (bar is 2×)
Chronos-T5-Base/encoder.block.7 3 0.891 ± 0.010 0.146 ± 0.021 -0.049 ± 0.160 0.988 ± 0.244 NOT resolvable — 0.3× its own seed spread (bar is 2×)

Every column, in words, with its arithmetic.

ColumnWhat it means, and why it mattersHow it is calculated
targetOne trained dictionary: a model and the single layer of it this dictionary was fitted on. Every other column is a property of that one dictionary, so two rows differ in the model, the layer and the fit at once.Named `model/layer` exactly as the `sae` stage resolved it.
seedsHow many times this dictionary was retrained from scratch, varying nothing but the random seed, to size the spread every other number in this table carries.Retrained against a FROZEN activation store, so the model, the layer and the rows are bit-identical across seeds and training stochasticity is the only variable.
reconstruction fidelityHow faithfully the sparse dictionary can rebuild the layer's own activations from a handful of active features. This is the FLOOR on everything below it: a dictionary that cannot reproduce the layer is not describing the layer.1 - (sum of squared reconstruction error / sum of squared error of predicting the mean activation), over the activations the dictionary was fitted on. 1.0 is exact; 0.0 is no better than predicting the mean; negative is worse than that.
dead-feature rateSame quantity as `dead rate` in the dictionary-health table above, here as a mean across seeds with its spread.(features that never activate) / (dictionary size), averaged over the retrained seeds.
ΔMASE (token)The same measurement with no window pooling: every raw token is encoded and decoded on its own. This is the column to read as dictionary quality -- it has no architecture confound in it.MASE(reconstructed) - MASE(real), reconstructing each token independently.
ΔMASE (window)How much the model's forecast error changes when the layer's real activations are replaced by the dictionary's reconstruction of them. Near zero means the dictionary is a faithful enough stand-in that the model still forecasts the same way; large positive means the reconstruction threw away something the forecast needed.MASE(forecast from the reconstructed activations) - MASE(forecast from the real activations), with the reconstruction done on the pooled WINDOW axis and then broadcast back over the tokens each window covers. That broadcast is lossy for any model whose tokens are narrower than the window, which is why the token column beside it exists.
is that ΔMASE resolvable at one seed?Same question as `ΔMASE sign` in the dictionary-health table above: whether the forecast damage is larger than the amount retraining the dictionary moves it. Where it is not, 'the reconstruction made the forecast better' and 'worse' are the same measurement.|mean ΔMASE across seeds| compared against the standard deviation of ΔMASE across those same seeds.

The same SAE target retrained at several training seeds against the identical, already-frozen activations. Nothing upstream varies — same store, same rows, same checkpoint — so the spread here is SAE-training stochasticity alone, and it is the floor every headline number in this section has to be read against.

What does this floor mean?

How to read it
The ± is what a ΔMASE must exceed before its sign means anything: a delta smaller than twice it is one draw from a distribution that contains both signs, which is what the last column decides and says. The unpatched forecast is a CONTROL, not a result — it cannot depend on the SAE seed, so its spread must be exactly zero, and that verdict is stated once beneath the table rather than repeated as a row of zeros per target; a failure there means something other than the seed varied and every spread above it is suspect. Dead-feature rate and reconstruction fidelity are usually far more stable across seeds than the forecast deltas are.

Limitations
This floor is measured for this run's own targets and settings only; it does not transfer to a different layer, corpus, dictionary size, or k. It is also not the behavioral repeat-run floor shown elsewhere — that one measures the model's own forecast nondeterminism, this one measures the SAE's. A ΔMASE has to clear both to be a result.

Concepts

Cross-model concepts

Which of each model's causal features cluster into named concepts, whether another model groups the same series the same way, and how similar every model pair is overall -- the evidence behind the compact answer boxes in “At a glance”.

What this stage tells you

Question
Which features does each model's dictionary actually use when it forecasts, do they group into named concepts, and does another model group the same series the same way?

How
For every trained dictionary, zeroes each candidate feature out of the model's own reconstruction on the series where that feature fires hardest, and measures nine properties of the forecast against a random-direction null. Features that move something are clustered by what they move into concepts (or the dictionary is declared non-modular when no clean grouping exists). Each concept's top series are then checked in every other model: does some feature there separate the same series better than random series of the same kind would, and does that feature's own top series come back the other way? Finally every concept is described in a sentence composed only from what was measured. Separately, every causal feature across every model is also pooled into one shared space and clustered directly against each other, so a group there can span several models even when a dictionary's own per-target clustering above found no clean grouping within it.

Good vs. bad result
Good: features whose removal moves the forecast well above the null, concepts with several members each, and transfers that clear the matched null in both directions. Bad: most targets declared non-modular (the dictionary's causal features do not group), or transfer rates that are high only because the matched null is weak for that kind of series.

What it cannot tell you
A transfer that clears its null says another model separates the same series, not that it uses the feature the same way causally. The rates are uncorrected for the many tests made, and nothing yet says how often a concept would transfer to a second dictionary trained on the SAME model, so a rate cannot be read as high or low on its own. Everything here is measured on the development corpus only.

A concept family groups SAE features -- from any model in this run -- whose removal changes the forecast in a similar way; features land in the same family purely by the similarity of their own measured 9-channel causal-ablation effect, never by which model, layer or SAE dictionary they came from. This run has 9 families, covering 192 of 194 causal features (99.0%); 9 of 9 span more than one model. A column-permuted null (destroying each feature's own channel-to-channel structure, then re-clustering) produces about as many families and about as much coverage on its own (p_n_families=0.6766, p_frac_assigned=0.2289): the models' features do not fall into sharp, separated groups here -- these 9 families are a readable way to divide a continuum, not discovered clusters. Evidence class: descriptive. Every family draws member features from all 7 models in this run, but within each family, membership leans toward one model more than a model-label-shuffled null would (p_purity_above=0.0050) -- read this as "segregated by model", not as "each family belongs to one model": a family spanning every model and a family whose members lean toward one model are BOTH true at once, about different questions (how many models touch a family vs. how evenly they are mixed inside it).

Family overview

Level raisers

These features steer the first third of the forecast (removing them moves it), and increase the forecast's overall level. Found in 7 models (Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). Its features fire most often on real weather/ETT-derived mixtures.

45 feature(s) across 7 model(s); fires on: real weather/ETT-derived mixtures (2) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property); synthetic parametric series (trend, seasonality and noise, exact ground truth) (2); resampled real weather series (1) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property).

Chronos-2: 10 (24% of its causal features)Chronos-Bolt: 3 (25% of its causal features)Chronos-T5-Base: 5 (31% of its causal features)Sundial: 6 (16% of its causal features)Time-MoE: 3 (12% of its causal features)Timer: 4 (16% of its causal features)TimesFM: 14 (40% of its causal features)
L3 — model-specific, reproducible
Trend slope-0.29
Seasonal magnitude-0.02
Spectral centroid-0.14
Overall level+1.05
Spread+0.03
Near horizon of the forecast-7.26
Far horizon of the forecast-0.92
Forecast error-0.58
Flatness-0.02
Level lowerers

These features steer the first third of the forecast (removing them moves it), and decrease the forecast's overall level. Found in 7 models (Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). Its features fire most often on resampled real weather series.

44 feature(s) across 7 model(s); fires on: resampled real weather series (4) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property); sequential-PAR real-derived series (4) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property); real weather/ETT-derived mixtures (2) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property).

Chronos-2: 9 (21% of its causal features)Chronos-Bolt: 2 (17% of its causal features)Chronos-T5-Base: 6 (38% of its causal features)Sundial: 10 (26% of its causal features)Time-MoE: 4 (15% of its causal features)Timer: 6 (24% of its causal features)TimesFM: 7 (20% of its causal features)
L3 — shared: same effect, same inputs, reproducible
Trend slope-0.04
Seasonal magnitude-0.03
Spectral centroid-0.25
Overall level-1.25
Spread-0.38
Near horizon of the forecast-1.35
Far horizon of the forecast-1.24
Forecast error-0.65
Flatness-0.02
Seasonality dampeners

These features decrease the forecast's seasonal magnitude. Found in 7 models (Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). Its features fire most often on noisy autocorrelated series.

25 feature(s) across 7 model(s); fires on: noisy autocorrelated series (2); resampled real weather series (2) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property); real weather/ETT-derived mixtures (2) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property).

Chronos-2: 5 (12% of its causal features)Chronos-Bolt: 5 (42% of its causal features)Chronos-T5-Base: 2 (12% of its causal features)Sundial: 9 (24% of its causal features)Time-MoE: 1 (4% of its causal features)Timer: 2 (8% of its causal features)TimesFM: 1 (3% of its causal features)
L1 — shared effect, different inputs (convergent)
Trend slope-0.09
Seasonal magnitude-1.28
Spectral centroid-0.29
Overall level+0.18
Spread-0.69
Near horizon of the forecast-0.67
Far horizon of the forecast-0.62
Forecast error+0.07
Flatness+0.09
Mixed-effect features II

No channel in this family clears its own null on average. Found in 6 models (Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, TimesFM).

13 feature(s) across 6 model(s); fires on: no enrichment label survived its own permutation null for any member.

Chronos-2: 3 (7% of its causal features)Chronos-Bolt: 1 (8% of its causal features)Chronos-T5-Base: 1 (6% of its causal features)Sundial: 2 (5% of its causal features)Time-MoE: 3 (12% of its causal features)TimesFM: 3 (9% of its causal features)
no tight concept inside
Trend slope+0.62
Seasonal magnitude+0.07
Spectral centroid+0.73
Overall level+0.46
Spread+0.17
Near horizon of the forecast-0.70
Far horizon of the forecast-0.79
Forecast error-0.28
Flatness-0.09
Volatility dampeners

These features decrease the forecast's spread. Found in 6 models (Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer). Its features fire most often on resampled real weather series.

10 feature(s) across 6 model(s); fires on: resampled real weather series (3) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property).

Chronos-2: 4 (10% of its causal features)Chronos-Bolt: 1 (8% of its causal features)Chronos-T5-Base: 1 (6% of its causal features)Sundial: 1 (3% of its causal features)Time-MoE: 2 (8% of its causal features)Timer: 1 (4% of its causal features)
L3 — shared: same effect, same inputs, reproducible
Trend slope+0.13
Seasonal magnitude-0.04
Spectral centroid-0.26
Overall level+0.24
Spread-1.45
Near horizon of the forecast-0.51
Far horizon of the forecast-0.50
Forecast error-0.41
Flatness+0.38
Mixed-effect features

No channel in this family clears its own null on average. Found in 5 models (Chronos-2, Sundial, Time-MoE, Timer, TimesFM).

14 feature(s) across 5 model(s); fires on: no enrichment label survived its own permutation null for any member.

Chronos-2: 4 (10% of its causal features)Sundial: 2 (5% of its causal features)Time-MoE: 3 (12% of its causal features)Timer: 4 (16% of its causal features)TimesFM: 1 (3% of its causal features)
no tight concept inside
Trend slope-0.75
Seasonal magnitude+0.83
Spectral centroid-0.35
Overall level-0.64
Spread+0.73
Near horizon of the forecast-0.80
Far horizon of the forecast-0.99
Forecast error+0.82
Flatness-0.11
Trend boosters

These features increase the forecast's trend slope. Found in 5 models (Chronos-2, Sundial, Time-MoE, Timer, TimesFM).

11 feature(s) across 5 model(s); fires on: no enrichment label survived its own permutation null for any member.

Chronos-2: 3 (7% of its causal features)Sundial: 1 (3% of its causal features)Time-MoE: 1 (4% of its causal features)Timer: 5 (20% of its causal features)TimesFM: 1 (3% of its causal features)
no tight concept inside
Trend slope+1.82
Seasonal magnitude-0.00
Spectral centroid-1.64
Overall level+1.30
Spread+1.22
Near horizon of the forecast-0.75
Far horizon of the forecast-1.75
Forecast error+1.01
Flatness+0.04
Seasonality amplifiers

These features increase the forecast's seasonal magnitude. Found in 4 models (Sundial, Time-MoE, Timer, TimesFM).

19 feature(s) across 4 model(s); fires on: no enrichment label survived its own permutation null for any member.

Sundial: 4 (11% of its causal features)Time-MoE: 9 (35% of its causal features)Timer: 2 (8% of its causal features)TimesFM: 4 (11% of its causal features)
no tight concept inside
Trend slope+0.18
Seasonal magnitude+1.13
Spectral centroid-0.27
Overall level+0.59
Spread+0.67
Near horizon of the forecast-0.74
Far horizon of the forecast-0.79
Forecast error+0.25
Flatness+0.23
Mixed-effect features III

No channel in this family clears its own null on average. Found in 4 models (Chronos-2, Sundial, Timer, TimesFM).

11 feature(s) across 4 model(s); fires on: no enrichment label survived its own permutation null for any member.

Chronos-2: 4 (10% of its causal features)Sundial: 3 (8% of its causal features)Timer: 1 (4% of its causal features)TimesFM: 3 (9% of its causal features)
no tight concept inside
Trend slope-0.92
Seasonal magnitude-0.06
Spectral centroid+0.96
Overall level-0.09
Spread+0.81
Near horizon of the forecast-0.76
Far horizon of the forecast-0.84
Forecast error+0.26
Flatness-0.21

How many causal features from each model land in each family, and what share of that MODEL's own causal features that is.

What does this mean?

How to read it
The number in each cell is a raw feature count; the colour is that count divided by the total number of causal features this model contributed to the whole pool (never by the family's own size), so a dark cell means a large share of one model's own vocabulary, not necessarily a large family.

Limitations
Descriptive: a shared family does not mean a shared INPUT -- see the drill-down below for each tight concept's own input-agreement test.

Each family's mean causal-ablation effect, one column per channel, in the direction the feature's PRESENCE moves the forecast (never the raw ablation direction) -- all nine channels are in the SAME units (multiples of a random-direction null), so one shared diverging colour scale is honest here.

What does this mean?

How to read it
Red/blue is sign; the number in each cell is the size in null units. A blank-looking (near-white) cell is a channel this family does not move.

Limitations
This is the family's own MEAN over its members -- individual members can vary; the per-family drill-down below shows each member tight concept's own profile.

Concept map

Every pooled causal feature, coloured by its FAMILY (grey = idiosyncratic, assigned to no family); a black-outlined marker is also a member of some atlas TIGHT concept (hover for which one).

Why can two close points be in different families?

How to read it
Coordinates are a linear PCA fit once across the whole pooled 9-channel space (a UMAP toggle is offered above the plot when available, purely as an alternative layout).

Limitations
Family membership is decided in the FULL 9-dimensional ablation-effect space, never in this 2-D projection -- two points drawn close together here can belong to different families (and two points far apart can belong to the same one) whenever the dimensions this projection does not show are where they actually differ. Read this map for the overall shape of the space, not for a single point's own family assignment.

Per-family drill-down

Level raisers — 45 feature(s)

These features steer the first third of the forecast (removing them moves it), and increase the forecast's overall level. Found in 7 models (Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). Its features fire most often on real weather/ETT-derived mixtures.

Accuracy improvers & Level raisers — model-specific, reproducible (TimesFM)

internal name: mild raises mase · unusually lowers level (concept 1)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
TimesFM/stacked_xf.10ar_order (raw ρ=0.469, resid ρ=0.469, n=555); seasonal_period_dominant (raw ρ=-0.454, resid ρ=-0.454, n=443); n_seasonalities (raw ρ=0.405, resid ρ=0.405, n=555)0.0010parametric (5.94x, q=0.0000)no
TimesFM/stacked_xf.14n_seasonalities (raw ρ=0.470, resid ρ=0.470, n=555); seasonal_period_dominant (raw ρ=-0.467, resid ρ=-0.467, n=443); ar_coeff_sum (raw ρ=0.440, resid ρ=0.440, n=374)0.0010parametric (5.20x, q=0.0000)no
TimesFM/stacked_xf.18ar_coeff_sum (raw ρ=0.377, resid ρ=0.377, n=374); n_seasonalities (raw ρ=0.281, resid ρ=0.281, n=555); n_changepoints (raw ρ=0.275, resid ρ=0.275, n=555)0.0010mixture (2.33x, q=0.0007)no
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for TimesFM/stacked_xf.10 (series c7c2f35cd9505889, clean_low_noise).

Exemplar for TimesFM/stacked_xf.14 (series c7c2f35cd9505889, clean_low_noise).

Exemplar for TimesFM/stacked_xf.18 (series 9721b6a6f8cbd81b, parametric).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 2, no specific agreement: 9, not scorable: 93)). L6: confirmed on private data (transfer: 14/14; causal: 0/1).

Level shifters III — shared effect, different inputs (convergent) (Chronos-Bolt, TimesFM)

internal name: shifts the level (concept 8)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-Bolt/encoder.block.2n_seasonalities (raw ρ=-0.623, resid ρ=-0.623, n=555); seasonal_amplitude_max (raw ρ=-0.569, resid ρ=-0.569, n=443); noise_scale (raw ρ=0.321, resid ρ=0.321, n=555)0.0010block_bootstrap (5.51x, q=0.0001); mixture (2.00x, q=0.0048)no
TimesFM/stacked_xf.6has_intermittency (raw ρ=0.310, resid ρ=0.310, n=555); seasonal_period_dominant (raw ρ=-0.296, resid ρ=-0.296, n=443); noise_scale (raw ρ=0.291, resid ρ=0.291, n=555)0.0010mixture (3.16x, q=0.0000)YES -- mixture (95%)
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-BoltTimesFM00.411.0000nono0.362
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-Bolt/encoder.block.2 (series 26866501cb0bbc79, mixture).

Exemplar for TimesFM/stacked_xf.6 (series 0455fcd12e1372d6, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 1, level only: 1, no specific agreement: 7, not scorable: 82)). L6: confirmed on private data (causal: 1/3; atlas: 0/1).

38 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.3: 1; Chronos-2/encoder.block.5: 1; Chronos-2/encoder.block.6: 2; Chronos-2/encoder.block.7: 2; Chronos-2/encoder.block.8: 2; Chronos-2/encoder.block.9: 2; Chronos-Bolt/encoder.block.2: 1; Chronos-T5-Base/encoder.block.3: 3; Chronos-T5-Base/encoder.block.5: 1; Chronos-T5-Base/encoder.block.9: 1; Sundial/model.layers.3: 2; Sundial/model.layers.4: 1; Sundial/model.layers.5: 1; Sundial/model.layers.8: 1; Sundial/model.layers.9: 1; Time-MoE/model.layers.1: 2; Time-MoE/model.layers.2: 1; Timer/model.layers.3: 1; Timer/model.layers.6: 1; Timer/model.layers.7: 2; TimesFM/stacked_xf.0: 1; TimesFM/stacked_xf.10: 1; TimesFM/stacked_xf.14: 1; TimesFM/stacked_xf.6: 4; TimesFM/stacked_xf.8: 2.

Level lowerers — 44 feature(s)

These features steer the first third of the forecast (removing them moves it), and decrease the forecast's overall level. Found in 7 models (Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). Its features fire most often on resampled real weather series.

Level shifters — model-specific, reproducible (Chronos-2)

internal name: shifts the level (concept 2)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.5has_intermittency (raw ρ=0.232, resid ρ=0.232, n=555); n_seasonalities (raw ρ=-0.232, resid ρ=-0.232, n=555); n_changepoints (raw ρ=-0.142, resid ρ=-0.142, n=555)0.0010sequential_par (19.30x, q=0.0000)YES -- sequential_par (100%)
Chronos-2/encoder.block.7n_seasonalities (raw ρ=-0.174, resid ρ=-0.174, n=555); has_intermittency (raw ρ=0.149, resid ρ=0.149, n=555); n_anomalies (raw ρ=0.112, resid ρ=0.112, n=555)0.0060sequential_par (19.30x, q=0.0000)YES -- sequential_par (100%)
Chronos-2/encoder.block.8has_intermittency (raw ρ=0.239, resid ρ=0.239, n=555); n_seasonalities (raw ρ=-0.238, resid ρ=-0.238, n=555); ar_coeff_sum (raw ρ=-0.117, resid ρ=-0.117, n=374)0.0010sequential_par (19.30x, q=0.0000)YES -- sequential_par (100%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Chronos-2/encoder.block.5 (series 4e65e6f52451a874, sequential_par).

Exemplar for Chronos-2/encoder.block.7 (series a6e59adac19ddf3b, sequential_par).

Exemplar for Chronos-2/encoder.block.8 (series a6e59adac19ddf3b, sequential_par).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 10, level only: 12, no specific agreement: 28, not scorable: 84, shape only: 2)). L6: confirmed on private data (causal: 0/3; atlas: 1/1; agreement: 0/4).

Accuracy improvers & Level lowerers — not reproducible across SAE seeds (Chronos-2, Sundial, TimesFM)

internal name: mild raises mase · unusually raises horizon_shape_near (concept 5)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.8seasonal_amplitude_max (raw ρ=-0.062, resid ρ=-0.062, n=443); ar_order (raw ρ=-0.059, resid ρ=-0.059, n=555); n_anomalies (raw ρ=-0.053, resid ρ=-0.053, n=555)0.8322trend_dominant (12.06x, q=0.0019)no
Sundial/model.layers.6ar_coeff_sum (raw ρ=0.649, resid ρ=0.649, n=374); seasonal_period_dominant (raw ρ=-0.589, resid ρ=-0.589, n=443); trend_order (raw ρ=0.499, resid ρ=0.499, n=555)0.0010mixture (3.33x, q=0.0000)YES -- mixture (100%)
TimesFM/stacked_xf.0seasonal_period_dominant (raw ρ=0.416, resid ρ=0.416, n=443); has_random_walk (raw ρ=0.206, resid ρ=0.206, n=555); seasonal_amplitude_max (raw ρ=-0.164, resid ρ=-0.164, n=443)0.0010trend_dominant (27.14x, q=0.0000); random_walk_drift (6.52x, q=0.0016); regime_switching (4.67x, q=0.0394)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Sundial00.411.0000nono-0.079
Chronos-2TimesFM60.410.0000yesyes0.116
SundialTimesFM00.411.0000nono-0.130
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.8 (series 30b6a99249a5e9ff, trend_dominant).

Exemplar for Sundial/model.layers.6 (series 5483841f5c4c4f0e, mixture).

Exemplar for TimesFM/stacked_xf.0 (series 278475b2a2dea6a7, trend_dominant).

How sure: L3 reproducible: not reached (the concept's grouping did NOT survive an independent replicate SAE). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (level only: 9, no specific agreement: 9, not scorable: 81)). L6: not measured: no registered concept_transfer claim for this concept.

Level shifters II — shared: same effect, same inputs, reproducible (Chronos-2, Chronos-Bolt, Sundial)

internal name: shifts the level (concept 6)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.9has_intermittency (raw ρ=0.159, resid ρ=0.159, n=555); ar_order (raw ρ=-0.104, resid ρ=-0.104, n=555); seasonal_period_dominant (raw ρ=0.091, resid ρ=0.091, n=443)0.0040block_bootstrap (13.79x, q=0.0000)YES -- block_bootstrap (100%)
Chronos-Bolt/encoder.block.2seasonal_period_dominant (raw ρ=0.220, resid ρ=0.220, n=443); has_intermittency (raw ρ=0.122, resid ρ=0.122, n=555); ar_order (raw ρ=-0.112, resid ρ=-0.112, n=555)0.0010block_bootstrap (8.27x, q=0.0000)no
Sundial/model.layers.5has_intermittency (raw ρ=0.316, resid ρ=0.316, n=555); n_seasonalities (raw ρ=-0.249, resid ρ=-0.249, n=555); seasonal_amplitude_max (raw ρ=-0.217, resid ρ=-0.217, n=443)0.0010block_bootstrap (10.34x, q=0.0000)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Chronos-Bolt90.410.0000yesyes0.512
Chronos-2Sundial120.410.0000yesyes0.637
Chronos-BoltSundial60.410.0000yesyes0.670
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.9 (series 25933fdb1371a64c, block_bootstrap).

Exemplar for Chronos-Bolt/encoder.block.2 (series 6400924ee89f0b4d, block_bootstrap).

Exemplar for Sundial/model.layers.5 (series c87cdfe6df1cf96f, block_bootstrap).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 3, level only: 1, no specific agreement: 4, not scorable: 138)). L6: confirmed on private data (causal: 1/3; atlas: 0/1).

Level lowerers — shared effect, different inputs (convergent) (Chronos-Bolt, Sundial)

internal name: mild raises horizon_shape_near (concept 9)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-Bolt/encoder.block.4n_seasonalities (raw ρ=-0.424, resid ρ=-0.424, n=555); seasonal_amplitude_max (raw ρ=-0.355, resid ρ=-0.355, n=443); trend_order (raw ρ=-0.271, resid ρ=-0.271, n=555)0.0010sequential_par (19.30x, q=0.0000)YES -- sequential_par (100%)
Sundial/model.layers.8ar_coeff_sum (raw ρ=0.640, resid ρ=0.640, n=374); seasonal_period_dominant (raw ρ=-0.551, resid ρ=-0.551, n=443); trend_order (raw ρ=0.538, resid ρ=0.538, n=555)0.0010parametric (7.42x, q=0.0000)no
Sundial/model.layers.9ar_coeff_sum (raw ρ=0.614, resid ρ=0.614, n=374); seasonal_period_dominant (raw ρ=-0.511, resid ρ=-0.511, n=443); trend_order (raw ρ=0.500, resid ρ=0.500, n=555)0.0010parametric (7.05x, q=0.0000)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-BoltSundial00.411.0000nono-0.340
Chronos-BoltSundial00.411.0000nono-0.341
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-Bolt/encoder.block.4 (series 5ea6c60d50ed412f, sequential_par).

Exemplar for Sundial/model.layers.8 (series 8d858ceaa74180a7, parametric).

Exemplar for Sundial/model.layers.9 (series 8d858ceaa74180a7, parametric).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 1, level only: 6, no specific agreement: 26, not scorable: 37)). L6: confirmed on private data (causal: 2/3; atlas: 0/1; agreement: 0/1).

Accuracy improvers & Volatility dampeners — partially shared (Chronos-T5-Base, Sundial, Time-MoE)

internal name: mild raises mase · unusually raises dispersion (concept 10)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-T5-Base/encoder.block.10seasonal_amplitude_max (raw ρ=-0.266, resid ρ=-0.266, n=443); noise_scale (raw ρ=0.259, resid ρ=0.259, n=555); n_changepoints (raw ρ=0.198, resid ρ=0.198, n=555)0.0010none survive BHno
Sundial/model.layers.3has_intermittency (raw ρ=0.464, resid ρ=0.464, n=555); n_seasonalities (raw ρ=-0.328, resid ρ=-0.328, n=555); seasonal_amplitude_max (raw ρ=-0.185, resid ρ=-0.185, n=443)0.0010block_bootstrap (10.34x, q=0.0000)no
Time-MoE/model.layers.4seasonal_period_dominant (raw ρ=0.616, resid ρ=0.616, n=443); ar_coeff_sum (raw ρ=-0.347, resid ρ=-0.347, n=374); ar_order (raw ρ=-0.259, resid ρ=-0.259, n=555)0.0010mixture (2.83x, q=0.0000)YES -- mixture (85%)
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-T5-BaseSundial00.411.0000nono0.452
Chronos-T5-BaseTime-MoE70.410.0000yesyes0.390
SundialTime-MoE00.411.0000nono0.528
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-T5-Base/encoder.block.10 (series f13d63c808e2f375, mixture).

Exemplar for Sundial/model.layers.3 (series 2487efeec25d0e32, block_bootstrap).

Exemplar for Time-MoE/model.layers.4 (series 26866501cb0bbc79, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (no specific agreement: 10, not scorable: 130, shape only: 1)). L6: registered but not confirmed on private data (causal: 0/2).

29 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.3: 1; Chronos-2/encoder.block.4: 1; Chronos-2/encoder.block.6: 1; Chronos-2/encoder.block.9: 1; Chronos-T5-Base/encoder.block.4: 1; Chronos-T5-Base/encoder.block.5: 1; Chronos-T5-Base/encoder.block.6: 1; Chronos-T5-Base/encoder.block.7: 1; Chronos-T5-Base/encoder.block.9: 1; Sundial/model.layers.10: 2; Sundial/model.layers.5: 1; Sundial/model.layers.8: 2; Time-MoE/model.layers.0: 1; Time-MoE/model.layers.2: 1; Time-MoE/model.layers.4: 1; Timer/model.layers.1: 1; Timer/model.layers.2: 1; Timer/model.layers.3: 4; TimesFM/stacked_xf.14: 1; TimesFM/stacked_xf.16: 1; TimesFM/stacked_xf.2: 1; TimesFM/stacked_xf.4: 2; TimesFM/stacked_xf.6: 1.

Seasonality dampeners — 25 feature(s)

These features decrease the forecast's seasonal magnitude. Found in 7 models (Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). Its features fire most often on noisy autocorrelated series.

Seasonality dampeners — shared effect, different inputs (convergent) (Chronos-Bolt, Chronos-T5-Base, Time-MoE)

internal name: mild raises seasonal (concept 0)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-Bolt/encoder.block.4n_seasonalities (raw ρ=-0.584, resid ρ=-0.584, n=555); seasonal_amplitude_max (raw ρ=-0.491, resid ρ=-0.491, n=443); has_intermittency (raw ρ=0.402, resid ρ=0.402, n=555)0.0010intermittent_bursts (14.62x, q=0.0000); ar_colored_noise (4.20x, q=0.0250)no
Chronos-T5-Base/encoder.block.11has_intermittency (raw ρ=0.397, resid ρ=0.397, n=555); n_seasonalities (raw ρ=-0.287, resid ρ=-0.287, n=555); seasonal_amplitude_max (raw ρ=-0.199, resid ρ=-0.199, n=443)0.0010mixture (2.83x, q=0.0000)YES -- mixture (85%)
Chronos-T5-Base/encoder.block.6seasonal_period_dominant (raw ρ=0.286, resid ρ=0.286, n=443); noise_scale (raw ρ=-0.267, resid ρ=-0.267, n=555); trend_scale (raw ρ=0.148, resid ρ=0.148, n=555)0.0010none survive BHno
Time-MoE/model.layers.10n_seasonalities (raw ρ=-0.586, resid ρ=-0.586, n=555); seasonal_period_dominant (raw ρ=0.538, resid ρ=0.538, n=443); seasonal_amplitude_max (raw ρ=-0.464, resid ρ=-0.464, n=443)0.0010block_bootstrap (4.14x, q=0.0142)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-BoltChronos-T5-Base00.411.0000nono0.038
Chronos-BoltChronos-T5-Base00.411.0000nono-0.195
Chronos-BoltTime-MoE00.411.0000nono0.200
Chronos-T5-BaseTime-MoE10.411.0000nono0.383
Chronos-T5-BaseTime-MoE00.411.0000nono0.019
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-Bolt/encoder.block.4 (series c2dc73ec3f9aee41, intermittent_bursts).

Exemplar for Chronos-T5-Base/encoder.block.11 (series 6c37572a7b7742bb, random_walk_drift).

Exemplar for Chronos-T5-Base/encoder.block.6 (series 67fab51c30b778c2, mixture).

Exemplar for Time-MoE/model.layers.10 (series affa868fe51230d7, sequential_par).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 2, level only: 7, no specific agreement: 29, not scorable: 129)). L6: registered but not confirmed on private data (causal: 0/2; agreement: 0/0 (1 not testable)).

Seasonality dampeners II — shared effect, different inputs (convergent) (Chronos-2, Sundial)

internal name: mild raises seasonal (concept 3)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.6n_seasonalities (raw ρ=-0.368, resid ρ=-0.368, n=555); ar_coeff_sum (raw ρ=-0.216, resid ρ=-0.216, n=374); n_changepoints (raw ρ=-0.211, resid ρ=-0.211, n=555)0.0010anomaly_heavy (9.19x, q=0.0000); ar_colored_noise (7.34x, q=0.0000); intermittent_bursts (5.85x, q=0.0050)no
Sundial/model.layers.11ar_coeff_sum (raw ρ=0.568, resid ρ=0.568, n=374); n_seasonalities (raw ρ=0.500, resid ρ=0.500, n=555); trend_order (raw ρ=0.437, resid ρ=0.437, n=555)0.0010block_bootstrap (6.20x, q=0.0000)no
Sundial/model.layers.6seasonal_period_dominant (raw ρ=-0.267, resid ρ=-0.267, n=443); noise_scale (raw ρ=0.264, resid ρ=0.264, n=555); has_intermittency (raw ρ=0.184, resid ρ=0.184, n=555)0.0010mixture (3.16x, q=0.0000)YES -- mixture (95%)
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Sundial00.411.0000nono-0.236
Chronos-2Sundial00.411.0000nono0.099
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.6 (series 2b61d1a0bfa0fc15, anomaly_heavy).

Exemplar for Sundial/model.layers.11 (series 15b1a281a0eb45b6, block_bootstrap).

Exemplar for Sundial/model.layers.6 (series cb2ed00a0b48d1ce, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (level only: 1, no specific agreement: 2, not scorable: 116)). L6: confirmed on private data (6/6 registered claim(s); by mode -- search: 6/6).

Seasonality dampeners III — not reproducible across SAE seeds (Chronos-2, Chronos-Bolt)

internal name: mild raises seasonal (concept 7)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.9ar_order (raw ρ=0.126, resid ρ=0.126, n=555); seasonal_amplitude_max (raw ρ=-0.079, resid ρ=-0.079, n=443); seasonal_period_dominant (raw ρ=-0.073, resid ρ=-0.073, n=443)0.0589ar_colored_noise (5.24x, q=0.0071); block_bootstrap (4.14x, q=0.0071)no
Chronos-Bolt/encoder.block.4n_seasonalities (raw ρ=-0.455, resid ρ=-0.455, n=555); has_intermittency (raw ρ=0.391, resid ρ=0.391, n=555); seasonal_amplitude_max (raw ρ=-0.327, resid ρ=-0.327, n=443)0.0010noisy_chaotic (11.74x, q=0.0000); ar_colored_noise (6.29x, q=0.0006)no
Chronos-Bolt/encoder.block.5n_seasonalities (raw ρ=-0.624, resid ρ=-0.624, n=555); seasonal_amplitude_max (raw ρ=-0.532, resid ρ=-0.532, n=443); ar_coeff_sum (raw ρ=-0.364, resid ρ=-0.364, n=374)0.0010ar_colored_noise (8.39x, q=0.0000); noisy_chaotic (7.82x, q=0.0001)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Chronos-Bolt20.410.1241nono0.084
Chronos-2Chronos-Bolt10.410.3450nono0.040
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.9 (series 3019e4c595efb628, intermittent_bursts).

Exemplar for Chronos-Bolt/encoder.block.4 (series 505f806985c40eb6, noisy_chaotic).

Exemplar for Chronos-Bolt/encoder.block.5 (series 5a8f637dcde26a0e, ar_colored_noise).

How sure: L3 reproducible: not reached (the concept's grouping did NOT survive an independent replicate SAE). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 1, level only: 2, no specific agreement: 5, not scorable: 60)). L6: not measured: no registered concept_transfer claim for this concept.

15 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.10: 1; Chronos-2/encoder.block.5: 1; Chronos-2/encoder.block.9: 1; Chronos-Bolt/encoder.block.3: 1; Chronos-Bolt/encoder.block.4: 1; Sundial/model.layers.5: 1; Sundial/model.layers.7: 2; Sundial/model.layers.8: 3; Sundial/model.layers.9: 1; Timer/model.layers.3: 2; TimesFM/stacked_xf.14: 1.

Mixed-effect features II — 13 feature(s)

No channel in this family clears its own null on average. Found in 6 models (Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, TimesFM).

13 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.3: 1; Chronos-2/encoder.block.4: 1; Chronos-2/encoder.block.9: 1; Chronos-Bolt/encoder.block.5: 1; Chronos-T5-Base/encoder.block.10: 1; Sundial/model.layers.10: 1; Sundial/model.layers.9: 1; Time-MoE/model.layers.1: 1; Time-MoE/model.layers.2: 1; Time-MoE/model.layers.4: 1; TimesFM/stacked_xf.0: 1; TimesFM/stacked_xf.4: 1; TimesFM/stacked_xf.6: 1.

Volatility dampeners — 10 feature(s)

These features decrease the forecast's spread. Found in 6 models (Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer). Its features fire most often on resampled real weather series.

Volatility dampeners — shared: same effect, same inputs, reproducible (Chronos-2, Chronos-Bolt, Timer)

internal name: mild raises dispersion (concept 4)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.8has_intermittency (raw ρ=0.491, resid ρ=0.491, n=555); n_seasonalities (raw ρ=-0.393, resid ρ=-0.393, n=555); seasonal_amplitude_max (raw ρ=-0.221, resid ρ=-0.221, n=443)0.0010block_bootstrap (13.10x, q=0.0000)YES -- block_bootstrap (95%)
Chronos-Bolt/encoder.block.4has_intermittency (raw ρ=0.352, resid ρ=0.352, n=555); n_seasonalities (raw ρ=-0.331, resid ρ=-0.331, n=555); ar_coeff_sum (raw ρ=-0.263, resid ρ=-0.263, n=374)0.0010block_bootstrap (12.41x, q=0.0000)YES -- block_bootstrap (90%)
Timer/model.layers.1seasonal_period_dominant (raw ρ=0.533, resid ρ=0.533, n=443); ar_coeff_sum (raw ρ=-0.392, resid ρ=-0.392, n=374); n_seasonalities (raw ρ=-0.361, resid ρ=-0.361, n=555)0.0010block_bootstrap (3.45x, q=0.0114); mixture (2.50x, q=0.0001)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Chronos-Bolt160.410.0000yesyes0.810
Chronos-2Timer30.410.0104noyes0.581
Chronos-BoltTimer20.410.0620nono0.592
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.8 (series 9be4b438cd59dddf, block_bootstrap).

Exemplar for Chronos-Bolt/encoder.block.4 (series 6400924ee89f0b4d, block_bootstrap).

Exemplar for Timer/model.layers.1 (series 26866501cb0bbc79, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 2, level only: 6, no specific agreement: 4, not scorable: 124, same causal effect: 7, shape only: 6)). L6: confirmed on private data (causal: 1/2; agreement: 0/1 (4 not testable)).

7 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.6: 2; Chronos-2/encoder.block.7: 1; Chronos-T5-Base/encoder.block.10: 1; Sundial/model.layers.6: 1; Time-MoE/model.layers.10: 1; Time-MoE/model.layers.3: 1.

Mixed-effect features — 14 feature(s)

No channel in this family clears its own null on average. Found in 5 models (Chronos-2, Sundial, Time-MoE, Timer, TimesFM).

14 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.10: 2; Chronos-2/encoder.block.5: 1; Chronos-2/encoder.block.9: 1; Sundial/model.layers.11: 1; Sundial/model.layers.5: 1; Time-MoE/model.layers.10: 1; Time-MoE/model.layers.2: 1; Time-MoE/model.layers.4: 1; Timer/model.layers.2: 1; Timer/model.layers.3: 1; Timer/model.layers.7: 2; TimesFM/stacked_xf.16: 1.

Trend boosters — 11 feature(s)

These features increase the forecast's trend slope. Found in 5 models (Chronos-2, Sundial, Time-MoE, Timer, TimesFM).

11 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.4: 1; Chronos-2/encoder.block.6: 1; Chronos-2/encoder.block.8: 1; Sundial/model.layers.9: 1; Time-MoE/model.layers.2: 1; Timer/model.layers.1: 1; Timer/model.layers.2: 1; Timer/model.layers.7: 3; TimesFM/stacked_xf.2: 1.

Seasonality amplifiers — 19 feature(s)

These features increase the forecast's seasonal magnitude. Found in 4 models (Sundial, Time-MoE, Timer, TimesFM).

19 feature(s) in this family without a tight (atlas) concept of their own -- Sundial/model.layers.5: 1; Sundial/model.layers.7: 1; Sundial/model.layers.8: 1; Sundial/model.layers.9: 1; Time-MoE/model.layers.0: 1; Time-MoE/model.layers.10: 2; Time-MoE/model.layers.2: 3; Time-MoE/model.layers.3: 1; Time-MoE/model.layers.4: 1; Time-MoE/model.layers.5: 1; Timer/model.layers.6: 1; Timer/model.layers.7: 1; TimesFM/stacked_xf.0: 1; TimesFM/stacked_xf.16: 1; TimesFM/stacked_xf.4: 2.

Mixed-effect features III — 11 feature(s)

No channel in this family clears its own null on average. Found in 4 models (Chronos-2, Sundial, Timer, TimesFM).

11 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.10: 2; Chronos-2/encoder.block.7: 1; Chronos-2/encoder.block.9: 1; Sundial/model.layers.3: 1; Sundial/model.layers.4: 1; Sundial/model.layers.8: 1; Timer/model.layers.6: 1; TimesFM/stacked_xf.14: 1; TimesFM/stacked_xf.16: 1; TimesFM/stacked_xf.6: 1.

What is unique to each model, and why?

TimesFM -- 1 reproducible model-specific concept(s)
Accuracy improvers & Level raisers — model-specific, reproducible (TimesFM)

internal name: mild raises mase · unusually lowers level (concept 1)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
TimesFM/stacked_xf.10ar_order (raw ρ=0.469, resid ρ=0.469, n=555); seasonal_period_dominant (raw ρ=-0.454, resid ρ=-0.454, n=443); n_seasonalities (raw ρ=0.405, resid ρ=0.405, n=555)0.0010parametric (5.94x, q=0.0000)no
TimesFM/stacked_xf.14n_seasonalities (raw ρ=0.470, resid ρ=0.470, n=555); seasonal_period_dominant (raw ρ=-0.467, resid ρ=-0.467, n=443); ar_coeff_sum (raw ρ=0.440, resid ρ=0.440, n=374)0.0010parametric (5.20x, q=0.0000)no
TimesFM/stacked_xf.18ar_coeff_sum (raw ρ=0.377, resid ρ=0.377, n=374); n_seasonalities (raw ρ=0.281, resid ρ=0.281, n=555); n_changepoints (raw ρ=0.275, resid ρ=0.275, n=555)0.0010mixture (2.33x, q=0.0007)no
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for TimesFM/stacked_xf.10 (series c7c2f35cd9505889, clean_low_noise).

Exemplar for TimesFM/stacked_xf.14 (series c7c2f35cd9505889, clean_low_noise).

Exemplar for TimesFM/stacked_xf.18 (series 9721b6a6f8cbd81b, parametric).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 2, no specific agreement: 9, not scorable: 93)). L6: confirmed on private data (transfer: 14/14; causal: 0/1).

Why panel for 'Accuracy improvers & Level raisers': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: no model is clearly better or worse than this one on these series; removing it does not move this model's MASE beyond the random-direction null (0.821x)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Strengths vs. unique inputs
archetype TimesFM median MASE next-best median MASE coincides with a unique concept's inputs
anomaly_heavy 0.724 0.733 no
nonsinusoidal_seasonal 3.159 3.197 no
trend_dominant 0.761 0.763 no

Archetypes where this model has the lowest median MASE, beside whether that archetype is also an enriched input trigger of one of this model's own unique concepts above. A 'no' here is exactly as informative as a 'yes' -- it says this model's advantage on that archetype is not traced to any of its unique concepts' own input triggers.

Chronos-2 -- 1 reproducible model-specific concept(s)
Level shifters — model-specific, reproducible (Chronos-2)

internal name: shifts the level (concept 2)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.5has_intermittency (raw ρ=0.232, resid ρ=0.232, n=555); n_seasonalities (raw ρ=-0.232, resid ρ=-0.232, n=555); n_changepoints (raw ρ=-0.142, resid ρ=-0.142, n=555)0.0010sequential_par (19.30x, q=0.0000)YES -- sequential_par (100%)
Chronos-2/encoder.block.7n_seasonalities (raw ρ=-0.174, resid ρ=-0.174, n=555); has_intermittency (raw ρ=0.149, resid ρ=0.149, n=555); n_anomalies (raw ρ=0.112, resid ρ=0.112, n=555)0.0060sequential_par (19.30x, q=0.0000)YES -- sequential_par (100%)
Chronos-2/encoder.block.8has_intermittency (raw ρ=0.239, resid ρ=0.239, n=555); n_seasonalities (raw ρ=-0.238, resid ρ=-0.238, n=555); ar_coeff_sum (raw ρ=-0.117, resid ρ=-0.117, n=374)0.0010sequential_par (19.30x, q=0.0000)YES -- sequential_par (100%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Chronos-2/encoder.block.5 (series 4e65e6f52451a874, sequential_par).

Exemplar for Chronos-2/encoder.block.7 (series a6e59adac19ddf3b, sequential_par).

Exemplar for Chronos-2/encoder.block.8 (series a6e59adac19ddf3b, sequential_par).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 10, level only: 12, no specific agreement: 28, not scorable: 84, shape only: 2)). L6: confirmed on private data (causal: 0/3; atlas: 1/1; agreement: 0/4).

Why panel for 'Level shifters': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: no model is clearly better or worse than this one on these series; removing it does not move this model's MASE beyond the random-direction null (-0.072x)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Strengths vs. unique inputs
archetype Chronos-2 median MASE next-best median MASE coincides with a unique concept's inputs
amplitude_modulated 1.797 1.856 no
ar_colored_noise 0.735 0.761 no
clean_low_noise 2.161 2.238 no
intermittent_bursts 1.025 1.042 no
multi_seasonal_complex 0.905 1.143 no
noisy_chaotic 0.871 0.952 no
regime_switching 2.085 2.263 no
seasonal_dominant 0.357 0.402 no

Archetypes where this model has the lowest median MASE, beside whether that archetype is also an enriched input trigger of one of this model's own unique concepts above. A 'no' here is exactly as informative as a 'yes' -- it says this model's advantage on that archetype is not traced to any of its unique concepts' own input triggers.

Sundial -- 0 model-specific concepts (reproducible or not yet measured)
Chronos-Bolt -- 0 model-specific concepts (reproducible or not yet measured)
Timer -- 0 model-specific concepts (reproducible or not yet measured)
Time-MoE -- 0 model-specific concepts (reproducible or not yet measured)
Chronos-T5-Base -- 0 model-specific concepts (reproducible or not yet measured)
Statistical detail

Verdict for every tight concept

Conceptn modelssame forecast effectsame inputsreproducibleother dictionaries select the same inputssame causal effect on the same inputsconfirmed on private dataVerdictHighest rung
mild raises dispersion3reached
3 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
reached
every model in this concept agrees, pairwise, on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 2, level only: 6, no specific agreement: 4, not scorable: 124, same causal effect: 7, shape only: 6)
reached
confirmed on private data (causal: 1/2; agreement: 0/1 (4 not testable))
shared: same effect, same inputs, reproducibleL3
shifts the level3reached
3 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
reached
every model in this concept agrees, pairwise, on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 3, level only: 1, no specific agreement: 4, not scorable: 138)
reached
confirmed on private data (causal: 1/3; atlas: 0/1)
shared: same effect, same inputs, reproducibleL3
mild raises mase · unusually lowers level1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer
not reached
acts differently on at least one shared-input test (acts differently: 2, no specific agreement: 9, not scorable: 93)
reached
confirmed on private data (transfer: 14/14; causal: 0/1)
model-specific, reproducibleL3
shifts the level1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 10, level only: 12, no specific agreement: 28, not scorable: 84, shape only: 2)
reached
confirmed on private data (causal: 0/3; atlas: 1/1; agreement: 0/4)
model-specific, reproducibleL3
mild raises mase · unusually raises dispersion3reached
3 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
partial
some but not every cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (no specific agreement: 10, not scorable: 130, shape only: 1)
not reached
registered but not confirmed on private data (causal: 0/2)
partially sharedL2
mild raises seasonal3reached
3 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 2, level only: 7, no specific agreement: 29, not scorable: 129)
not reached
registered but not confirmed on private data (causal: 0/2; agreement: 0/0 (1 not testable))
shared effect, different inputs (convergent)L1
mild raises mase · unusually raises horizon_shape_near3reached
3 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
partial
some but not every cross-model pair in this concept agrees on which series drive it
not reached
the concept's grouping did NOT survive an independent replicate SAE
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (level only: 9, no specific agreement: 9, not scorable: 81)
not measured
not measured: no registered concept_transfer claim for this concept
not reproducible across SAE seedsL1
mild raises seasonal2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (level only: 1, no specific agreement: 2, not scorable: 116)
reached
confirmed on private data (6/6 registered claim(s); by mode -- search: 6/6)
shared effect, different inputs (convergent)L1
mild raises seasonal2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
not reached
the concept's grouping did NOT survive an independent replicate SAE
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 1, level only: 2, no specific agreement: 5, not scorable: 60)
not measured
not measured: no registered concept_transfer claim for this concept
not reproducible across SAE seedsL1
shifts the level2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 1, level only: 1, no specific agreement: 7, not scorable: 82)
reached
confirmed on private data (causal: 1/3; atlas: 0/1)
shared effect, different inputs (convergent)L1
mild raises horizon_shape_near2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 1, level only: 6, no specific agreement: 26, not scorable: 37)
reached
confirmed on private data (causal: 2/3; atlas: 0/1; agreement: 0/1)
shared effect, different inputs (convergent)L1

verdict = f(sharing_class, stable): sharing_class == 'shared (same effect, same inputs)' and stable is True -> 'shared: same effect, same inputs, reproducible'; that sharing_class with stable is False -> 'not reproducible across SAE seeds'; that sharing_class with stable unmeasured -> 'not measured: L3 reproducibility <reason>'; sharing_class == 'convergent (same effect, different inputs)' -> 'shared effect, different inputs (convergent)' unless stable is False; sharing_class == 'partially shared' -> 'partially shared' unless stable is False; either of those with stable is False -> 'not reproducible across SAE seeds'; sharing_class == 'single-model' and stable is True -> 'model-specific, reproducible'; that sharing_class with stable is False -> 'not reproducible across SAE seeds'; that sharing_class with stable unmeasured -> 'not measured: L3 reproducibility <reason>'.

Shared-input causal agreement, per model pair

Capped. This step was limited to the 60 strongest tests per ordered model pair (concepts.agreement_max_tests_per_pair, ranked by reciprocal transfer margin), so 6 of 1296 reciprocal-FDR tests were not scored. Not scored, by pair: Chronos-2->TimesFM: 4; Chronos-Bolt->Sundial: 2. The counts below describe the strongest-transfer tests only.

Cross-model causal agreement, per ordered model pair, on the SAME shared series -- every FDR-surviving reciprocal atlas-transfer test's verdict.

What does this mean?

How to read it
Each cell counts (concept, source target, destination target) tests scored 'source→destination'. A test is scored only when both sides' ablation clears its own within-model null on the shared series; otherwise it is 'not scorable'.

Limitations
Evidence class: causal WITHIN each model (each side's ablation must clear its own random-direction null on the shared series to be scorable; the agreement statistics must beat the 95th percentile of both models' activation-matched random-feature-set floors, and 'acts differently' requires falling below both floors' 5th percentile), compared ACROSS models only on the same corpus inputs -- never a transplant of one model's activation into another (invariant 5). A pair's counts are not symmetric: source and destination are the ordered roles the transfer test itself assigned.

Model pair (source→destination)same causal effectlevel onlyshape onlyacts differentlyno specific agreementnot scorableTotal
Chronos-2->Chronos-Bolt250161428
Chronos-2->Chronos-T5-Base010135358
Chronos-2->Sundial022264759
Chronos-2->Time-MoE0000114051
Chronos-2->Timer060022836
Chronos-2->TimesFM022954260
Chronos-Bolt->Chronos-2540154257
Chronos-Bolt->Chronos-T5-Base000074552
Chronos-Bolt->Sundial043174560
Chronos-Bolt->Time-MoE0202104256
Chronos-Bolt->Timer010143036
Chronos-Bolt->TimesFM011154654
Chronos-T5-Base->Chronos-2000002626
Chronos-T5-Base->Chronos-Bolt00003912
Chronos-T5-Base->Sundial000021921
Chronos-T5-Base->Time-MoE000061622
Chronos-T5-Base->Timer000031215
Chronos-T5-Base->TimesFM010012729
Sundial->Chronos-2001043843
Sundial->Chronos-Bolt000041822
Sundial->Chronos-T5-Base000034245
Sundial->Time-MoE010004445
Sundial->Timer010012527
Sundial->TimesFM030134350
Time-MoE->Chronos-2000031518
Time-MoE->Chronos-Bolt0000167
Time-MoE->Chronos-T5-Base000041418
Time-MoE->Sundial030021318
Time-MoE->Timer02001811
Time-MoE->TimesFM000011718
Timer->Chronos-20000099
Timer->Chronos-Bolt0000044
Timer->Chronos-T5-Base0000099
Timer->Sundial0000099
Timer->Time-MoE0000279
Timer->TimesFM000001010
TimesFM->Chronos-2040123542
TimesFM->Chronos-Bolt000001717
TimesFM->Chronos-T5-Base000023840
TimesFM->Sundial010043439
TimesFM->Time-MoE000081826
TimesFM->Timer010121822

Transfer, FDR-controlled

Cross-model transfer — significance and FDR control
Per-target concept transfer, by ordered model pair
source model destination model tests uncorrected reciprocal FDR reciprocal
Chronos-2 Chronos-Bolt 8 8 8
Chronos-2 Chronos-T5-Base 18 14 13
Chronos-2 Sundial 18 15 14
Chronos-2 Time-MoE 18 12 11
Chronos-2 Timer 12 3 3
Chronos-2 TimesFM 20 8 3
Sundial Chronos-2 32 17 8
Sundial Chronos-Bolt 16 10 9
Sundial Chronos-T5-Base 36 18 16
Sundial Time-MoE 36 23 22
Sundial Timer 24 15 14
Sundial TimesFM 40 23 21
Timer Chronos-2 32 19 18
Timer Chronos-Bolt 16 13 13
Timer Chronos-T5-Base 36 13 13
Timer Sundial 36 23 21
Timer Time-MoE 36 19 17
Timer TimesFM 40 29 28

For each ordered (source, destination) model pair, how many per-target concept transfer tests ran, how many cleared the raw p95 null in both directions ("uncorrected reciprocal"), and how many still clear once each leg is Benjamini-Hochberg corrected within its own (pair, leg) family at q=0.05 ("FDR reciprocal").

What does this mean?

How to read it
A test's exact permutation p is floored at 1/201. p_method='exact' leaves floor-hitting tests AT that floor: BH then passes them only as a batch, so a lone strong transfer in a large family can be missed (see the multiplicity ledger's 'min. batch to survive' column).

Limitations
FDR reciprocal is always <= uncorrected reciprocal: BH can only remove survivors relative to the raw p95 comparison, never add them. Read this table beside the multiplicity ledger, which records each (pair, leg) as its own correction family rather than pooling them.

Concept-atlas transfer, by ordered model pair
source model destination model tests uncorrected reciprocal FDR reciprocal
Chronos-2 Chronos-Bolt 32 28 28
Chronos-2 Chronos-T5-Base 72 58 58
Chronos-2 Sundial 72 61 59
Chronos-2 Time-MoE 72 51 51
Chronos-2 Timer 48 37 36
Chronos-2 TimesFM 80 65 64
Chronos-Bolt Chronos-2 63 57 57
Chronos-Bolt Chronos-T5-Base 63 53 52
Chronos-Bolt Sundial 63 62 62
Chronos-Bolt Time-MoE 63 56 56
Chronos-Bolt Timer 42 36 36
Chronos-Bolt TimesFM 70 56 54
Chronos-T5-Base Chronos-2 27 27 26
Chronos-T5-Base Chronos-Bolt 12 12 12
Chronos-T5-Base Sundial 27 21 21
Chronos-T5-Base Time-MoE 27 22 22
Chronos-T5-Base Timer 18 15 15
Chronos-T5-Base TimesFM 30 29 29
Sundial Chronos-2 63 44 43
Sundial Chronos-Bolt 28 24 22
Sundial Chronos-T5-Base 63 48 45
Sundial Time-MoE 63 47 45
Sundial Timer 42 29 27
Sundial TimesFM 70 52 50
Time-MoE Chronos-2 18 18 18
Time-MoE Chronos-Bolt 8 8 7
Time-MoE Chronos-T5-Base 18 18 18
Time-MoE Sundial 18 18 18
Time-MoE Timer 12 11 11
Time-MoE TimesFM 20 18 18
Timer Chronos-2 9 9 9
Timer Chronos-Bolt 4 4 4
Timer Chronos-T5-Base 9 9 9
Timer Sundial 9 9 9
Timer Time-MoE 9 9 9
Timer TimesFM 10 10 10
TimesFM Chronos-2 45 42 42
TimesFM Chronos-Bolt 20 18 17
TimesFM Chronos-T5-Base 45 40 40
TimesFM Sundial 45 40 39
TimesFM Time-MoE 45 30 26
TimesFM Timer 30 22 22

The same transfer test, over the cross-model ATLAS's own concepts instead of each target's own per-target clusters: for every atlas concept's part at one model, does another model's dictionary select the same top-firing series.

What does this mean?

How to read it
Built from the identical draw-building and scoring path as the per-target table above (`sae/transfer.py::transfer_one`), just over a different source unit -- an atlas concept's part at one target, rather than that target's own concept.

Limitations
A concept with only one model's worth of members contributes no row here at all (there is no other model to test against); read `sae/atlas_transfer.json::concept_summary` for which concepts were skipped for that reason.

Effect space vs. input space
cell count
spans effect space, transfers (input space) 37
spans effect space, does not transfer 1
does not span effect space, transfers 109
does not span effect space, does not transfer 3

For every (atlas concept, ordered model pair) cell that was actually tested: does the concept span both models in EFFECT space (both hold >=1 member of the same causal-profile concept), and does it also transfer in INPUT space (FDR-reciprocal at some tested target pair)?

What does this mean?

How to read it
Of the 38 cell(s) that span both models in effect space, 37 also transfer in input space and 1 do not -- a concept's shared causal profile does not by itself guarantee its members were selected by similar inputs.

Limitations
Every cell here was TESTED; a (concept, pair) combination with no persisted features at one of the two models contributes to neither axis rather than counting as a measured "No" -- so these four counts do not sum to every concept times every pair, only to every pair actually examined.

Family structure null (real vs. permuted control)

statistic value null mean null p95 p p (more segregated)
n_families (real) 9.000 10.305 18.000 0.677 NaN
frac_assigned (real) 0.990 0.840 0.995 0.229 NaN
final-partition silhouette (real) 0.324 0.256 NaN 0.045 NaN
n_multi_model (real) 9.000 9.000 NaN 1.000 NaN
mean_purity (real) 0.345 0.299 NaN NaN 0.005

descriptive, not a significance test of separation: the final-partition silhouette is flat across the whole grid on every run measured so far (~0.31-0.34), so a real silhouette near or below the null mean does not mean the families are arbitrary -- p_n_families/p_frac_assigned are the tests that carry the 'is there more structure than chance' claim; p_silhouette only says whether the CHOSEN (coarsest, tolerance-matched) cut happens to also be tighter than chance, which it need not be by construction

Misfits — members whose own fingerprint diverges from their concept

Misfit detection: 55 target(s) checked at a cosine gap of 0.3 below each concept's own mean member-to-centroid cosine; zero misfits found — every clustered member's own ablation fingerprint sits within its concept's own cohesion.

Earlier concept units (superseded by the families above)

Concept universality

Concept universality
bucket n_concepts
universal 5
partial 5
model-specific 0

For each source model's concepts, the fraction whose top-firing series are grouped the same way by the destination model's own SAE dictionary -- reciprocally, in both directions.

What does this heatmap mean?

How to read it
A cell near 1.0 means that source's concepts transfer to the destination almost universally; a low cell means most concepts are specific to the source. The diagonal is blank -- a model's transfer rate against itself is not a comparison.

Limitations
Transfer is a statistical (AUC-based) test against a matched-stratum null (k_top_series=20, n_null_draws=200, stratified by archetype|family), not a causal claim -- it says the two dictionaries GROUP series alike, not that either model's forecast depends on the other's feature.

Per-target concepts (earlier unit; families above supersede it)
Concept cards — top 10 of 10 by interest

interest = 0.50×causal_strength + 0.30×transfer_informative + 0.20×(members clearing any channel / members). Grouped by universality bucket, deepest interest first within each.

universal (5)

These 3 features move the near horizon of the forecast (1.15 times the random-direction null). (composed from the measurements)

mild raises horizon_shape_near — Sundial/model.layers.5, concept 0

chart shows 1 representative member (feature 2033) of this concept's 3; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.531 (39% of context sd)
with · without · Δ 0.259 (37% of context sd)
with · without · Δ 0.37 (47% of context sd)
the numbers behind this

3 member(s), 3 clearing at least one channel's own null; interest 0.90.
profile: horizon_shape_near +1.15x null (3 members)
transfer: reciprocally reaches Chronos-2, Chronos-Bolt, Chronos-T5-Base, Time-MoE, Timer, TimesFM

These 4 features decrease the forecast's spread (1.13 times the random-direction null). (composed from the measurements)

mild lowers dispersion — Timer/model.layers.7, concept 1

chart shows 1 representative member (feature 363) of this concept's 4; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.539 (59% of context sd)
with · without · Δ 0.252 (60% of context sd)
with · without · Δ 0.25 (63% of context sd)
the numbers behind this

4 member(s), 4 clearing at least one channel's own null; interest 0.89.
profile: dispersion -1.13x null (4 members)
transfer: reciprocally reaches Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, TimesFM

These 6 features were not tested for an effect on the forecast and have no structural correlate. (composed from the measurements)

moves horizon_shape_far — Chronos-2/encoder.block.9, concept 1

chart shows 1 representative member (feature 3742) of this concept's 6; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.156 (4.2% of context sd)
with · without · Δ 0.172 (4.2% of context sd)
with · without · Δ 0.104 (3.7% of context sd)
the numbers behind this

6 member(s), 6 clearing at least one channel's own null; interest 0.32.
profile: no channel cleared 1.0 null units
transfer: reciprocally reaches Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, Timer, TimesFM

These 3 features were not tested for an effect on the forecast and have no structural correlate. (composed from the measurements)

moves horizon_shape_far — Sundial/model.layers.5, concept 1

chart shows 1 representative member (feature 4164) of this concept's 3; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.0511 (1.8% of context sd)
with · without · Δ 0.114 (3.2% of context sd)
with · without · Δ 0.174 (4.3% of context sd)
the numbers behind this

3 member(s), 3 clearing at least one channel's own null; interest 0.32.
profile: no channel cleared 1.0 null units
transfer: reciprocally reaches Chronos-2, Chronos-Bolt, Chronos-T5-Base, Time-MoE, Timer, TimesFM

These 5 features were not tested for an effect on the forecast; they are strongest on series with a smaller number of seasonal components (rho 0.29, n 2). (composed from the measurements)

moves spectral_centroid — Timer/model.layers.3, concept 0

chart shows 1 representative member (feature 5400) of this concept's 5; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.477 (13% of context sd)
with · without · Δ 1.3 (26% of context sd)
with · without · Δ 1.39 (34% of context sd)
the numbers behind this

5 member(s), 5 clearing at least one channel's own null; interest 0.32.
profile: no channel cleared 1.0 null units
transfer: reciprocally reaches Chronos-2, Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, TimesFM

partial (5)

These 3 features move the near horizon of the forecast (1.21 times the random-direction null), and also move the far horizon of the forecast. (composed from the measurements)

mild raises horizon_shape_near · unusually raises horizon_shape_far — Chronos-2/encoder.block.9, concept 0

chart shows 1 representative member (feature 803) of this concept's 3; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.164 (17% of context sd)
with · without · Δ 0.0801 (13% of context sd)
with · without · Δ 0.0737 (11% of context sd)
the numbers behind this

3 member(s), 3 clearing at least one channel's own null; interest 1.10.
profile: horizon_shape_near +1.21x null (2 members); horizon_shape_far +1.20x null (2 members)
transfer: reciprocally reaches Chronos-Bolt, Chronos-T5-Base, Sundial, Time-MoE, TimesFM; reaches non-reciprocally: Timer

These 4 features increase the forecast's overall level (1.14 times the random-direction null), and also move the near horizon of the forecast. (composed from the measurements)

mild raises level — Sundial/model.layers.8, concept 1

chart shows 1 representative member (feature 1935) of this concept's 4; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.331 (34% of context sd)
with · without · Δ 0.0802 (8.2% of context sd)
with · without · Δ 0.287 (28% of context sd)
the numbers behind this

4 member(s), 4 clearing at least one channel's own null; interest 1.07.
profile: level +1.14x null (2 members); horizon_shape_near +1.11x null (2 members)
transfer: reciprocally reaches Chronos-2, Chronos-Bolt, Chronos-T5-Base, Time-MoE, Timer; reaches non-reciprocally: TimesFM

These 4 features were not tested for an effect on the forecast and have no structural correlate. (composed from the measurements)

moves horizon_shape_near — Timer/model.layers.7, concept 0

chart shows 1 representative member (feature 192) of this concept's 4; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.648 (83% of context sd)
with · without · Δ 0.597 (78% of context sd)
with · without · Δ 0.419 (82% of context sd)
the numbers behind this

4 member(s), 4 clearing at least one channel's own null; interest 0.50.
profile: no channel cleared 1.0 null units
transfer: reciprocally reaches Chronos-2, Chronos-Bolt, Chronos-T5-Base, Time-MoE; reaches non-reciprocally: Sundial, TimesFM

These 5 features were not tested for an effect on the forecast and have no structural correlate. (composed from the measurements)

moves seasonal — Sundial/model.layers.8, concept 0

chart shows 1 representative member (feature 2854) of this concept's 5; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.255 (20% of context sd)
with · without · Δ 0.261 (29% of context sd)
with · without · Δ 0.271 (36% of context sd)
the numbers behind this

5 member(s), 5 clearing at least one channel's own null; interest 0.50.
profile: no channel cleared 1.0 null units
transfer: reciprocally reaches Chronos-2, Chronos-Bolt, Time-MoE, Timer, TimesFM; reaches non-reciprocally: Chronos-T5-Base

These 3 features were not tested for an effect on the forecast and have no structural correlate. (composed from the measurements)

moves trend — Timer/model.layers.3, concept 1

chart shows 1 representative member (feature 5222) of this concept's 3; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.81 (91% of context sd)
with · without · Δ 0.557 (56% of context sd)
with · without · Δ 1.17 (76% of context sd)
the numbers behind this

3 member(s), 3 clearing at least one channel's own null; interest 0.50.
profile: no channel cleared 1.0 null units
transfer: reciprocally reaches Chronos-2, Chronos-Bolt, Sundial, Time-MoE, TimesFM; reaches non-reciprocally: Chronos-T5-Base

Causally interesting individual features — top 15 of 194

Every SAE feature across this run's targets whose own ablation battery cleared at least one channel's null — independent of whether it landed in a concept above — ranked by the average of two percentile ranks: how far it moved the mase channel in null units, and its overall causal fingerprint magnitude across all nine channels (sae/matching.py::causal_fingerprint). This is the per-feature view the concept cards cannot give: a target whose causally-alive features never clustered into a group of three or more still has its strongest individual features shown here.

Time-MoE/model.layers.2, feature 3608 — not part of any formed concept

n=2
with · without · Δ 0.305 (15% of context sd)
with · without · Δ 0.0412 (0.78% of context sd)

fires on only 2 series in this sample — every number in this row is an n-of-2.

the numbers behind this

overall fingerprint magnitude 29.81, 6 of 9 channels clearing; mase channel -12.42x null.
top channels: spectral_centroid +14.56x null; trend -14.17x null; level -13.12x null; mase -12.42x null; horizon_shape_far +11.43x null; dispersion -4.23x null

Chronos-T5-Base/encoder.block.9, feature 307 — not part of any formed concept

n=8
with · without · Δ 0.00121 (0.12% of context sd)
with · without · Δ 0 (0% of context sd)
with · without · Δ 0.00272 (0.5% of context sd)
the numbers behind this

overall fingerprint magnitude 270.01, 6 of 9 channels clearing; mase channel -6.45x null.
top channels: horizon_shape_near +269.82x null; level -6.52x null; mase -6.45x null; horizon_shape_far +2.97x null; dispersion +2.54x null; trend -1.40x null

Time-MoE/model.layers.0, feature 1415 — not part of any formed concept

n=8
with · without · Δ 7.01 (56% of context sd)
with · without · Δ 0.68 (67% of context sd)
with · without · Δ 0.56 (54% of context sd)
the numbers behind this

overall fingerprint magnitude 15.32, 7 of 9 channels clearing; mase channel +5.53x null.
top channels: level +8.47x null; horizon_shape_far +7.85x null; horizon_shape_near +7.53x null; mase +5.53x null; flatness +3.25x null; dispersion +1.23x null; trend +1.16x null

Chronos-2/encoder.block.8, feature 2801 — not part of any formed concept

n=8
with · without · Δ 0.0234 (5.9% of context sd)
with · without · Δ 0.0234 (3.2% of context sd)
with · without · Δ 0.0938 (13% of context sd)
the numbers behind this

overall fingerprint magnitude 3.64, 4 of 9 channels clearing; mase channel +2.90x null.
top channels: mase +2.90x null; horizon_shape_far +1.42x null; horizon_shape_near +1.31x null; level -0.54x null

Sundial/model.layers.7, feature 3136 — not part of any formed concept

n=1
with · without · Δ 0.0993 (17% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 5.26, 8 of 9 channels clearing; mase channel -1.81x null.
top channels: spectral_centroid +2.21x null; dispersion +2.12x null; horizon_shape_far +1.91x null; level -1.84x null; mase -1.81x null; seasonal +1.71x null; trend -1.59x null; horizon_shape_near +1.59x null

Time-MoE/model.layers.4, feature 466 — not part of any formed concept

n=8
with · without · Δ 0.52 (1.1e+02% of context sd)
with · without · Δ 0.196 (34% of context sd)
with · without · Δ 1.14 (1.1e+02% of context sd)
the numbers behind this

overall fingerprint magnitude 5.27, 8 of 9 channels clearing; mase channel -1.79x null.
top channels: spectral_centroid +2.29x null; seasonal -2.18x null; level +1.95x null; horizon_shape_near +1.94x null; horizon_shape_far +1.86x null; dispersion -1.82x null; mase -1.79x null; trend +0.49x null

Chronos-T5-Base/encoder.block.3, feature 111 — not part of any formed concept

n=8
with · without · Δ 0.158 (38% of context sd)
with · without · Δ 0.00257 (0.3% of context sd)
with · without · Δ 0.00358 (0.52% of context sd)
the numbers behind this

overall fingerprint magnitude 3.68, 3 of 9 channels clearing; mase channel +2.07x null.
top channels: horizon_shape_near +2.45x null; mase +2.07x null; level -1.60x null

Sundial/model.layers.8, feature 1076 — member of concept 'mild raises level' above

n=1
with · without · Δ 0.0144 (4.2% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 4.02, 3 of 9 channels clearing; mase channel +1.92x null.
top channels: seasonal -2.16x null; dispersion -2.12x null; mase +1.92x null

Chronos-T5-Base/encoder.block.7, feature 173 — not part of any formed concept

n=8
with · without · Δ 0 (0% of context sd)
with · without · Δ 0.183 (30% of context sd)
with · without · Δ 0.0913 (18% of context sd)
the numbers behind this

overall fingerprint magnitude 4.57, 5 of 9 channels clearing; mase channel +1.84x null.
top channels: horizon_shape_near +3.39x null; mase +1.84x null; level +1.79x null; horizon_shape_far +1.34x null; dispersion +0.79x null

TimesFM/stacked_xf.0, feature 4305 — not part of any formed concept

n=8
with · without · Δ 0.563 (60% of context sd)
with · without · Δ 0.397 (39% of context sd)
with · without · Δ 0.342 (55% of context sd)
the numbers behind this

overall fingerprint magnitude 3.38, 4 of 9 channels clearing; mase channel +2.17x null.
top channels: mase +2.17x null; horizon_shape_near +1.55x null; level +1.35x null; horizon_shape_far +1.29x null

Chronos-T5-Base/encoder.block.10, feature 195 — not part of any formed concept

n=2
with · without · Δ 0.013 (2.1% of context sd)
with · without · Δ 0.598 (1.4e+02% of context sd)

fires on only 2 series in this sample — every number in this row is an n-of-2.

the numbers behind this

overall fingerprint magnitude 3.96, 4 of 9 channels clearing; mase channel +1.58x null.
top channels: dispersion +2.24x null; spectral_centroid +2.06x null; mase +1.58x null; level -1.00x null

Time-MoE/model.layers.1, feature 710 — not part of any formed concept

n=8
with · without · Δ 0.0166 (19% of context sd)
with · without · Δ 0.127 (1.1e+02% of context sd)
with · without · Δ 0.177 (74% of context sd)
the numbers behind this

overall fingerprint magnitude 3.48, 8 of 9 channels clearing; mase channel +1.60x null.
top channels: horizon_shape_near +1.82x null; mase +1.60x null; seasonal +1.45x null; horizon_shape_far +1.24x null; dispersion +1.12x null; level -1.10x null; spectral_centroid -0.35x null; trend +0.04x null

TimesFM/stacked_xf.6, feature 1568 — not part of any formed concept

n=8
with · without · Δ 0.367 (97% of context sd)
with · without · Δ 0.497 (83% of context sd)
with · without · Δ 0.32 (69% of context sd)
the numbers behind this

overall fingerprint magnitude 3.19, 4 of 9 channels clearing; mase channel +1.68x null.
top channels: mase +1.68x null; level -1.57x null; horizon_shape_near +1.55x null; horizon_shape_far +1.49x null

Chronos-T5-Base/encoder.block.10, feature 72 — not part of any formed concept

n=8
with · without · Δ 0.407 (39% of context sd)
with · without · Δ 0.0437 (8.4% of context sd)
with · without · Δ 0.238 (66% of context sd)
the numbers behind this

overall fingerprint magnitude 3.04, 5 of 9 channels clearing; mase channel +1.71x null.
top channels: mase +1.71x null; horizon_shape_far +1.52x null; level +1.10x null; trend +1.07x null; dispersion +0.91x null

Sundial/model.layers.8, feature 1935 — member of concept 'mild raises level' above

n=8
with · without · Δ 0.331 (34% of context sd)
with · without · Δ 0.0802 (8.2% of context sd)
with · without · Δ 0.287 (28% of context sd)
the numbers behind this

overall fingerprint magnitude 3.36, 5 of 9 channels clearing; mase channel -1.22x null.
top channels: horizon_shape_near +1.78x null; level +1.64x null; horizon_shape_far +1.55x null; mase -1.22x null; trend -1.00x null

Exemplars

Exemplar case studies

A few concrete series per family, told end to end: both forecasts, where each model's answer forms in depth, and where it looks in the context.

What this stage tells you

Question
What does an aggregate difference between models actually look like on one real series?

How
Picks a handful of concrete series per data family — specifically ones where the models' forecasts disagree the most — and shows each one's context, true continuation, both forecasts, per-layer lens curves, and pooled attention pattern side by side.

Good vs. bad result
Good: a case that makes an aggregate statistic from an earlier section tangible — you can see exactly where one model's forecast goes wrong on a concrete series. Bad: a case that reads as an ordinary, unremarkable series despite being flagged as the most divergent — worth treating skeptically rather than trusting the selection blindly.

What it cannot tell you
These series are deliberately chosen for maximal disagreement, not for being typical or representative — this stage cannot tell you how often such a disagreement happens, only that it can happen and roughly what it looks like when it does. It is illustrative evidence only, the same evidence class as a hand-picked example in a paper, not a statistical claim.

Every selected series

series_id family archetype TimesFM Chronos-2 Sundial Chronos-Bolt Timer Time-MoE Chronos-T5-Base spread gap_in_floor_units selection
0ec99c21297dbc2a parametric None 3.636 2.908 4.402 3.626 3.270 24.078 5.428 21.170 88.882 largest disagreement in family
8cfdeb0847a5a8f4 parametric None 3.014 2.964 3.514 2.893 3.370 6.844 2.859 3.985 16.733 mid-range disagreement
7930742ba6af53a8 parametric None 4.095 3.455 3.762 3.480 3.952 6.016 3.469 2.561 10.752 closest agreement in family
e0e62c64763accb6 random_parametric clean_low_noise 8.337 2.183 7.847 18.342 20.713 53.323 17.292 51.140 214.710 largest disagreement in family
8618a145be2ad181 random_parametric seasonal_dominant 0.611 0.700 2.006 2.181 3.802 2.553 0.622 3.191 13.398 mid-range disagreement
eb98d36dce5082db random_parametric noisy_chaotic 0.888 0.846 0.996 0.889 0.984 1.993 0.974 1.147 4.816 closest agreement in family
a9305abedf315600 mixture None 9.836 3.323 0.867 6.721 3.242 27.294 0.402 26.893 112.910 largest disagreement in family
6d0460fb73e25b4c mixture None 0.596 0.416 0.761 0.537 0.639 0.990 0.469 0.574 2.411 mid-range disagreement
84c677391c8c6fff mixture None 1.131 1.109 1.222 1.169 1.270 1.426 1.116 0.317 1.333 closest agreement in family
749150dd94c86d6a block_bootstrap None 1.691 1.666 1.605 2.299 2.700 2.735 11.353 9.747 40.925 largest disagreement in family
67008fc564d2e8c3 block_bootstrap None 0.606 0.606 0.765 0.607 1.011 1.264 0.602 0.662 2.779 mid-range disagreement
2b238ea7946fe008 block_bootstrap None 0.704 0.797 0.894 0.753 1.095 1.098 0.678 0.420 1.765 closest agreement in family
4ce25b081f3f861d sequential_par None 3.618 2.939 3.889 3.235 3.739 3.369 2.367 1.521 6.388 largest disagreement in family
e544dc462bc42c98 sequential_par None 1.001 1.001 1.043 1.003 1.067 1.194 1.059 0.193 0.811 mid-range disagreement
b61aa267483fc8f0 sequential_par None 0.725 0.745 0.752 0.713 0.766 0.757 0.841 0.127 0.535 closest agreement in family

All 15 series this run selected as case studies, with each model's own MASE on that series, the gap between them, and how large that gap is in units of the noisiest model's own repeat-run variation.

What does this mean?

How to read it
`selection` is derived from where each series sits in its own family's gap distribution, not assigned by hand: the family's largest and smallest absolute gaps are labelled as such and everything between them is mid-range. `gap_in_floor_units` divides the absolute gap by the largest per-model repeat-run MASE variation measured in this run (the Behavioral profile section's noise floor) -- a value near or below 1 means the two models' forecasts for that series differ by no more than the same model differs from itself between calls.

Limitations
Selection is deliberately not random: `_select_exemplars` takes each family's largest-gap series plus interior quantiles of the gap distribution, so this set over-represents disagreement by construction and cannot be used to estimate how often models disagree. The per-family tables in the Behavioral profile section are for that. `gap_in_floor_units` is absent for a run where every model is deterministic, since there is no floor to divide by.

parametric — 3 cases

0ec99c21297dbc2a · largest disagreement in family

Series 0ec99c21297dbc2a (parametric): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 3.636 3.175 0.105
Chronos-2 2.908 2.917 0.000
Sundial 4.402 3.063 0.000
Chronos-Bolt 3.626 3.624 0.455
Timer 3.270 3.270 1.000
Time-MoE 24.078 11.399 0.000
Chronos-T5-Base 5.428 4.840 0.391

TimesFM, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-2, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-T5-Base, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

One card per selected series: left, the raw context tail, what actually happened next, and each model's forecast; right, the same series' skip-lens MASE at every captured layer, which is where that model's forecast for this series stops changing.

What does this mean?

How to read it
The table under each card gives that series' per-model final MASE, its best (lowest) skip-lens MASE and the relative depth where that minimum occurs, so a case where a model's forecast is already settled early is distinguishable from one where the last layers are still doing work. Where an attention map is shown it is the same series, at that model's L1 peak-CKA layer, pooled onto windows and averaged over heads.

Limitations
A single series is noisy: a feature of one card that does not appear in the aggregate curves of the Forecast lens and Attention sections is a property of this series, not of the model. Attention maps are computed only for the first series of each family, so most cards legitimately have none.

8cfdeb0847a5a8f4 · mid-range disagreement

Series 8cfdeb0847a5a8f4 (parametric): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 3.014 2.912 0.947
Chronos-2 2.964 2.961 0.000
Sundial 3.514 3.007 0.727
Chronos-Bolt 2.893 2.791 0.364
Timer 3.370 3.370 1.000
Time-MoE 6.844 3.598 0.000
Chronos-T5-Base 2.859 2.551 0.478
7930742ba6af53a8 · closest agreement in family

Series 7930742ba6af53a8 (parametric): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 4.095 3.286 0.000
Chronos-2 3.455 3.450 0.000
Sundial 3.762 2.714 0.636
Chronos-Bolt 3.480 2.724 0.273
Timer 3.952 3.003 0.000
Time-MoE 6.016 3.485 0.545
Chronos-T5-Base 3.469 2.785 0.391

random_parametric — 3 cases

e0e62c64763accb6 · archetype clean_low_noise · largest disagreement in family

Series e0e62c64763accb6 (random_parametric · archetype clean_low_noise): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 8.337 2.931 0.947
Chronos-2 2.183 2.167 0.000
Sundial 7.847 7.850 1.000
Chronos-Bolt 18.342 9.406 0.091
Timer 20.713 12.791 0.429
Time-MoE 53.323 9.543 0.364
Chronos-T5-Base 17.292 17.403 0.478

TimesFM, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-2, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-T5-Base, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

8618a145be2ad181 · archetype seasonal_dominant · mid-range disagreement

Series 8618a145be2ad181 (random_parametric · archetype seasonal_dominant): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 0.611 0.973 0.947
Chronos-2 0.700 0.700 0.000
Sundial 2.006 1.801 1.000
Chronos-Bolt 2.181 1.579 0.182
Timer 3.802 3.750 0.000
Time-MoE 2.553 2.385 0.818
Chronos-T5-Base 0.622 0.577 0.478
eb98d36dce5082db · archetype noisy_chaotic · closest agreement in family

Series eb98d36dce5082db (random_parametric · archetype noisy_chaotic): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 0.888 0.909 0.947
Chronos-2 0.846 0.846 0.000
Sundial 0.996 0.925 0.909
Chronos-Bolt 0.889 0.888 0.455
Timer 0.984 0.984 1.000
Time-MoE 1.993 1.451 0.000
Chronos-T5-Base 0.974 1.100 0.478

mixture — 3 cases

a9305abedf315600 · largest disagreement in family

Series a9305abedf315600 (mixture): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 9.836 3.608 0.000
Chronos-2 3.323 3.243 0.000
Sundial 0.867 1.086 1.000
Chronos-Bolt 6.721 0.934 0.091
Timer 3.242 3.242 1.000
Time-MoE 27.294 12.487 0.727
Chronos-T5-Base 0.402 0.404 0.478

TimesFM, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-2, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-T5-Base, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

6d0460fb73e25b4c · mid-range disagreement

Series 6d0460fb73e25b4c (mixture): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 0.596 0.704 0.947
Chronos-2 0.416 0.418 0.000
Sundial 0.761 0.647 0.909
Chronos-Bolt 0.537 0.537 0.455
Timer 0.639 0.639 1.000
Time-MoE 0.990 0.989 1.000
Chronos-T5-Base 0.469 0.476 0.478
84c677391c8c6fff · closest agreement in family

Series 84c677391c8c6fff (mixture): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 1.131 1.163 0.947
Chronos-2 1.109 1.108 0.000
Sundial 1.222 1.278 0.455
Chronos-Bolt 1.169 1.169 0.455
Timer 1.270 1.270 1.000
Time-MoE 1.426 1.099 0.091
Chronos-T5-Base 1.116 1.098 0.435

block_bootstrap — 3 cases

749150dd94c86d6a · largest disagreement in family

Series 749150dd94c86d6a (block_bootstrap): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 1.691 1.605 0.947
Chronos-2 1.666 1.665 0.000
Sundial 1.605 1.740 1.000
Chronos-Bolt 2.299 1.659 0.000
Timer 2.700 2.406 0.714
Time-MoE 2.735 1.568 0.000
Chronos-T5-Base 11.353 1.429 0.217

TimesFM, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-2, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-T5-Base, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

67008fc564d2e8c3 · mid-range disagreement

Series 67008fc564d2e8c3 (block_bootstrap): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 0.606 0.696 0.947
Chronos-2 0.606 0.606 0.000
Sundial 0.765 0.729 0.727
Chronos-Bolt 0.607 0.607 0.455
Timer 1.011 1.011 1.000
Time-MoE 1.264 0.857 0.000
Chronos-T5-Base 0.602 0.596 0.435
2b238ea7946fe008 · closest agreement in family

Series 2b238ea7946fe008 (block_bootstrap): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 0.704 0.773 0.947
Chronos-2 0.797 0.797 0.000
Sundial 0.894 0.884 0.909
Chronos-Bolt 0.753 0.731 0.364
Timer 1.095 0.918 0.857
Time-MoE 1.098 0.910 0.182
Chronos-T5-Base 0.678 0.678 0.478

sequential_par — 3 cases

4ce25b081f3f861d · largest disagreement in family

Series 4ce25b081f3f861d (sequential_par): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 3.618 2.758 0.000
Chronos-2 2.939 2.941 0.000
Sundial 3.889 1.582 0.000
Chronos-Bolt 3.235 3.236 0.455
Timer 3.739 3.003 0.000
Time-MoE 3.369 2.704 0.091
Chronos-T5-Base 2.367 1.443 0.087

TimesFM, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-2, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-T5-Base, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

e544dc462bc42c98 · mid-range disagreement

Series e544dc462bc42c98 (sequential_par): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 1.001 0.982 0.737
Chronos-2 1.001 1.001 0.000
Sundial 1.043 0.959 0.091
Chronos-Bolt 1.003 0.986 0.273
Timer 1.067 0.931 0.714
Time-MoE 1.194 1.085 0.000
Chronos-T5-Base 1.059 1.000 0.000
b61aa267483fc8f0 · closest agreement in family

Series b61aa267483fc8f0 (sequential_par): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 0.725 0.695 0.947
Chronos-2 0.745 0.745 0.000
Sundial 0.752 0.729 1.000
Chronos-Bolt 0.713 0.704 0.273
Timer 0.766 0.766 1.000
Time-MoE 0.757 0.714 0.182
Chronos-T5-Base 0.841 0.803 0.000

Part 7 — Robustness and held-out confirmation

How much of the above depends on one analysis-knob choice, and the one-shot confirmatory test on the sealed private corpus.

↑ contents
Confirm

Private benchmark confirmation

One-shot confirmatory tests of the dev findings on a sealed held-out corpus. This is the gold standard: exploration above, evidence here.

What this stage tells you

Question
Which of the exploratory dev-corpus findings are actually real, rather than an artifact of looking at many comparisons?

How
Re-runs exactly the pre-registered hypotheses, exactly once, on a sealed corpus that no exploratory analysis in this run has ever seen, and reports which ones hold up.

Good vs. bad result
Good: a hypothesis that replicates on the private corpus with the same direction and a confidence interval excluding zero after correction — the strongest evidence this pipeline can produce. Bad: a dev finding that fails to replicate (a real and expected outcome some of the time, since dev findings are exploratory by construction), or a hypothesis marked 'untestable' because this stage doesn't yet re-test that kind of claim on private data.

What it cannot tell you
This section is the actual evidence, but only for the specific hypotheses that were pre-registered — it says nothing about any exploratory finding that wasn't registered. It also cannot be re-run: if the private corpus is ever peeked at, this evidence is spent and a fresh held-out corpus is required. A 'not confirmed' verdict does not mean the dev finding was wrong, only that it didn't survive being tested exactly once, out of sample.

Held-out private corpus: 971 series, tested once at α=0.05 (Holm-corrected across hypotheses). Everything above this section is exploratory; this is the confirmatory evidence.

Private corpus: visibility private, epoch 3, digest 6b4d17cc2cc2e8f5. Leakage audit: not_recorded (no sealed manifest, or the manifest predates the audit block). Dev corpus is a different epoch (0) -- legitimate under the regeneration protocol, but this confirmation is not against the same epoch the dev findings above were explored on.

What held up (8 of 11)

Every re-test this stage ran, by kind. Each row is an independent replication on the same held-out series, so a row that fails does not undermine the others — it narrows what this run supports. The detailed tables for each row follow below.

what was re-tested evidence class held up did not not testable what a failure would mean
Accuracy differences (per family) behavioral 1 0 0 the accuracy gap was specific to the exploratory data, not to the models
Where in depth models react to corruption causal within model 6 3 0 the depth agreement was a property of those particular series, not of the models
Strongest representational similarity geometric 1 0 0 the peak similarity was a coincidence of the exploratory sample

Multiplicity ledger

231 exploratory finding(s) examined → 128 hypotheses registered (82 replicable by this stage today) → 1 confirmed. The registry (hypotheses.json, sha256 ff6c4f9e75a9) pins exactly which dev claims this stage tests, plus the exact content hash of the dev artifact each was derived from — confirm refuses to run at all if any of those hashes no longer match, which is what makes "tested exactly once" an enforced fact rather than a convention. "Exploratory findings examined" is every finding text this report generated before this section ran — a real but approximate multiplicity count, not a formal comparison tally.

Registered but not yet replicated (46)

Counted in the ledger above (they were real dev comparisons), but this stage does not yet re-test them on private data — a stated gap, not a silent one. Grouped by reason, since the reason belongs to the stage rather than to the individual claim.

stage(s) claims why not replicated on private data
l2 42 L2 replication (re-fitting stitching probes on private data) not yet implemented.
l0_archetype 3 archetype-level replication not yet implemented; private corpora don't guarantee the same archetype composition as dev.
clustering 1 Clustering replication (re-fitting cluster labels on private data) not yet implemented.
The individual claims not replicated
stage claim
l0_archetype Chronos-2 is significantly stronger than its comparison partner on archetype 'mixture'.
l0_archetype Chronos-2 is significantly stronger than its comparison partner on archetype 'multi_seasonal_complex'.
l0_archetype Chronos-2 is significantly stronger than its comparison partner on archetype 'parametric'.
l2 L2 stitching gain over the input-feature baseline (TimesFM->Chronos-2) = 0.709.
l2 L2 stitching gain over the input-feature baseline (Chronos-2->TimesFM) = 0.609.
l2 L2 stitching gain over the input-feature baseline (TimesFM->Sundial) = 0.687.
l2 L2 stitching gain over the input-feature baseline (Sundial->TimesFM) = 0.610.
l2 L2 stitching gain over the input-feature baseline (TimesFM->Chronos-Bolt) = 0.651.
l2 L2 stitching gain over the input-feature baseline (Chronos-Bolt->TimesFM) = 0.575.
l2 L2 stitching gain over the input-feature baseline (TimesFM->Timer) = 0.361.
l2 L2 stitching gain over the input-feature baseline (Timer->TimesFM) = 0.295.
l2 L2 stitching gain over the input-feature baseline (TimesFM->Time-MoE) = 0.581.
l2 L2 stitching gain over the input-feature baseline (Time-MoE->TimesFM) = 0.550.
l2 L2 stitching gain over the input-feature baseline (TimesFM->Chronos-T5-Base) = 0.466.
l2 L2 stitching gain over the input-feature baseline (Chronos-T5-Base->TimesFM) = 0.519.
l2 L2 stitching gain over the input-feature baseline (Chronos-2->Sundial) = 0.891.
l2 L2 stitching gain over the input-feature baseline (Sundial->Chronos-2) = 0.911.
l2 L2 stitching gain over the input-feature baseline (Chronos-2->Chronos-Bolt) = 0.893.
l2 L2 stitching gain over the input-feature baseline (Chronos-Bolt->Chronos-2) = 0.907.
l2 L2 stitching gain over the input-feature baseline (Chronos-2->Timer) = 0.377.
l2 L2 stitching gain over the input-feature baseline (Timer->Chronos-2) = 0.414.
l2 L2 stitching gain over the input-feature baseline (Chronos-2->Time-MoE) = 0.829.
l2 L2 stitching gain over the input-feature baseline (Time-MoE->Chronos-2) = 0.557.
l2 L2 stitching gain over the input-feature baseline (Chronos-2->Chronos-T5-Base) = 0.609.
l2 L2 stitching gain over the input-feature baseline (Chronos-T5-Base->Chronos-2) = 0.580.
l2 L2 stitching gain over the input-feature baseline (Sundial->Chronos-Bolt) = 0.877.
l2 L2 stitching gain over the input-feature baseline (Chronos-Bolt->Sundial) = 0.860.
l2 L2 stitching gain over the input-feature baseline (Sundial->Timer) = 0.377.
l2 L2 stitching gain over the input-feature baseline (Timer->Sundial) = 0.396.
l2 L2 stitching gain over the input-feature baseline (Sundial->Time-MoE) = 0.833.
l2 L2 stitching gain over the input-feature baseline (Time-MoE->Sundial) = 0.673.
l2 L2 stitching gain over the input-feature baseline (Sundial->Chronos-T5-Base) = 0.538.
l2 L2 stitching gain over the input-feature baseline (Chronos-T5-Base->Sundial) = 0.586.
l2 L2 stitching gain over the input-feature baseline (Chronos-Bolt->Timer) = 0.367.
l2 L2 stitching gain over the input-feature baseline (Timer->Chronos-Bolt) = 0.412.
l2 L2 stitching gain over the input-feature baseline (Chronos-Bolt->Time-MoE) = 0.778.
l2 L2 stitching gain over the input-feature baseline (Time-MoE->Chronos-Bolt) = 0.646.
l2 L2 stitching gain over the input-feature baseline (Chronos-Bolt->Chronos-T5-Base) = 0.569.
l2 L2 stitching gain over the input-feature baseline (Chronos-T5-Base->Chronos-Bolt) = 0.669.
l2 L2 stitching gain over the input-feature baseline (Timer->Time-MoE) = 0.501.
l2 L2 stitching gain over the input-feature baseline (Time-MoE->Timer) = 0.349.
l2 L2 stitching gain over the input-feature baseline (Timer->Chronos-T5-Base) = 0.332.
l2 L2 stitching gain over the input-feature baseline (Chronos-T5-Base->Timer) = 0.314.
l2 L2 stitching gain over the input-feature baseline (Time-MoE->Chronos-T5-Base) = 0.545.
l2 L2 stitching gain over the input-feature baseline (Chronos-T5-Base->Time-MoE) = 0.737.
clustering Cross-model clustering AMI = 0.596.

Dev hypotheses on private data

Of 1 registered accuracy claim, held up on mixture. A claim counts as confirmed only when its Holm-corrected p clears α and its interval excludes zero — a direction that merely repeats is not enough.

family dev favored dev ratio private ΔMASE lo hi p (Holm) verdict private MDE
mixture Chronos-2 1.097 0.209 0.119 0.313 0.000 CONFIRMED No difference detected. A true difference of >= 0.133 MASE would have been detected 80% of the time at this n.

`private MDE`: the smallest true effect this claim's private-split sample size could have caught, computed BEFORE this test spent the private data — the pre-registration half of the power question.

What does this mean?

How to read it
A claim marked 'not confirmed' beside a large or 'not testable' MDE was never in a position to confirm, regardless of how the test came out — the private split simply wasn't big enough (or the Holm correction across this many claims too strict) to detect an effect of that size. That is a different, weaker kind of non-confirmation than one with a small MDE.

Limitations
Computed independently of `dev ratio` — a claim can have a large dev effect and still carry a large private MDE if the private split has far fewer series in that family than dev did.

Overall paired ΔMASE on private data

-0.07 [-0.13, -0.01] (p=0.025 (n_boot=5000, p floored at 1/n_boot=0.0002); positive favors TimesFM).

Perturbation replication (6 of 9 replicate)

The whole corruption battery re-run on 800 private series — same corruptions at the same strengths, same fingerprint, same paired cluster bootstrap — and each registered per-corruption depth agreement between TimesFM and Chronos-2 re-tested. A dev value counts as replicated when it falls inside the private interval, the same rule the representational replication below uses.

corruption dev ρ private ρ (95% CI) verdict
noise -0.749 -0.74 [-0.76, -0.72] replicates
detrend +0.422 0.37 [0.32, 0.57] replicates
deseasonalize +0.111 0.09 [-0.03, 0.19] replicates
frequency_shift +0.216 0.38 [0.31, 0.48] does NOT replicate
level_shift -0.188 0.11 [-0.03, 0.16] does NOT replicate
spike -0.790 -0.78 [-0.80, -0.78] replicates
smooth -0.418 -0.58 [-0.67, -0.51] does NOT replicate
warp -0.651 -0.65 [-0.67, -0.63] replicates
dropout +0.494 0.51 [0.49, 0.56] replicates

Representational replication

Dev peak CKA 0.43 at L4 ↔ L7; private estimate 0.41 [0.40, 0.43] — dev value replicates within the private CI.

Concept transfer replication (20 of 20 tested confirmed, 20 registered)

The top 20 reciprocal-FDR, seed-stable atlas-transfer tests by dev AUC margin, re-tested on private strata with the SAME saved SAE checkpoint (never retrained). Combined per-claim p = max(forward p, reverse p) (both legs must hold), Holm-corrected across the 20 registered claims (n_null=2000).

concept mode src → dst feature dev AUC dev margin private AUC p (Holm) verdict
3 search Sundial L6 → TimesFM L16 4317 → 6118 0.971 0.288 0.931 0.010 confirmed
1 search TimesFM L18 → Timer L1 1693 → 984 0.959 0.272 0.953 0.010 confirmed
1 search TimesFM L18 → Timer L6 2804 → 2804 0.983 0.265 0.954 0.010 confirmed
3 search Sundial L6 → TimesFM L10 3966 → 3966 0.974 0.265 0.920 0.010 confirmed
1 search TimesFM L18 → Timer L3 5221 → 1050 0.966 0.260 0.970 0.010 confirmed
1 search TimesFM L18 → Time-MoE L6 1986 → 1986 0.972 0.256 0.949 0.010 confirmed
1 search TimesFM L18 → Chronos-2 L11 107 → 766 0.960 0.253 0.956 0.010 confirmed
3 search Sundial L6 → TimesFM L14 1043 → 1043 0.973 0.247 0.919 0.010 confirmed
1 search TimesFM L18 → Sundial L4 393 → 4047 0.966 0.244 0.949 0.010 confirmed
1 search TimesFM L18 → Chronos-T5-Base L11 240 → 194 0.954 0.244 0.947 0.010 confirmed
1 search TimesFM L18 → Timer L2 2073 → 2073 0.964 0.243 0.961 0.010 confirmed
1 search TimesFM L18 → Chronos-T5-Base L9 6 → 242 0.980 0.242 0.944 0.010 confirmed
1 search TimesFM L18 → Sundial L5 4705 → 1610 0.979 0.241 0.924 0.010 confirmed
3 search Sundial L6 → TimesFM L4 3228 → 2475 0.974 0.240 0.940 0.010 confirmed
1 search TimesFM L18 → Sundial L3 1610 → 4047 0.962 0.238 0.960 0.010 confirmed
3 search Sundial L6 → TimesFM L12 233 → 5429 0.974 0.237 0.958 0.010 confirmed
1 search TimesFM L18 → Chronos-2 L10 487 → 487 0.951 0.237 0.960 0.010 confirmed
1 search TimesFM L18 → Chronos-Bolt L4 6008 → 4297 0.972 0.233 0.965 0.010 confirmed
3 search Sundial L6 → Timer L1 4582 → 4582 0.969 0.231 0.967 0.010 confirmed
1 search TimesFM L18 → Timer L4 2073 → 2073 0.974 0.231 0.947 0.010 confirmed

Concept multiplicity ledger

family m n_null alpha min_attainable_p_holm satisfiable note basis n_tested n_not_testable
concept_transfer 20 2000.000 0.050 0.010 True NaN NaN NaN NaN
concept_knob 0 NaN NaN NaN None empty by design: the P6a found no (concept, knob) response surviving BH on dev (0/98 go/no-go, 0/151 registered retry), so no dev claim exists to freeze and no private counterfactual path is built. NaN NaN NaN
reliability_u1 2 1000.000 0.050 0.002 True NaN registered claims; p floored at 1/n_boot, so the Holm floor is m/n_boot 2.000 0.000

Held-out confirmation of a correlational transfer claim: does the source model's concept and the destination model's dictionary still select the SAME series on data neither the SAE nor the concept atlas ever saw.

What does this mean?

How to read it
'Confirmed' means the two dictionaries still group the same series at a Holm-corrected significance on fresh data — it is NOT evidence the concept causes the same forecast behavior in both models (that is L5's shared-input causal agreement, an entirely separate, dev-only measurement). 'search' mode confirms only that the destination dictionary has SOME feature that selects the source concept's series (private data re-searches the whole dictionary); 'frozen' mode confirms the sharper claim that THIS SPECIFIC dev feature pair does, since it is scored with no search and no max-over-features null.

Limitations
The concept_knob family is empty: the P6a found no dev (concept, knob) response surviving BH correction, so no knob claim was registered and no private counterfactual path is built.

Causal feature claims (10 of 31 tested confirmed, 32 registered, 1 not testable)

claim channel sign dev effect / q95 private effect p p method p (Holm) MDE reading verdict
Chronos-Bolt L4 f4679 dispersion + 1.956 0.060 0.001 adaptive 0.031 0.06935 (1.92 x null p95) confirmed (dev-sized effect below this test's MDE) confirmed
Sundial L9 f1935 horizon_shape_near + 1.786 0.138 0.001 adaptive 0.031 0.142 (1.20 x null p95) confirmed (dev-sized effect below this test's MDE) confirmed
Sundial L8 f1935 horizon_shape_near + 1.780 0.125 0.001 adaptive 0.031 0.1365 (1.32 x null p95) confirmed with power confirmed
Time-MoE L10 f3383 seasonal + 1.769 0.134 0.657 exact 1.000 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-Bolt L2 f3556 mase + 1.748 0.335 0.045 exact 0.492 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Time-MoE L4 f344 mase + 1.725 0.547 0.025 exact 0.373 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-T5-Base L10 f72 mase + 1.707 4.200 0.008 adaptive 0.160 15.61 (1.84 x null p95) a dev-sized effect is BELOW this test's MDE: a non-confirmation reads as underpowered, not absent not confirmed
TimesFM L6 f1568 mase + 1.676 1.029 0.001 adaptive 0.031 1.094 (2.34 x null p95) confirmed (dev-sized effect below this test's MDE) confirmed
Chronos-2 L8 f3327 dispersion + 1.577 0.005 0.003 adaptive 0.063 0.007759 (1.33 x null p95) a dev-sized effect is BELOW this test's MDE: a non-confirmation reads as underpowered, not absent not confirmed
Chronos-2 L9 f3851 level + 1.569 0.118 0.050 exact 0.497 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-Bolt L2 f276 mase + 1.396 0.020 0.010 exact 0.189 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Sundial L5 f4164 mase + 1.245 0.013 0.129 exact 0.955 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
TimesFM L14 f1513 level - 1.230 0.341 0.119 exact 0.955 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-Bolt L4 f6080 seasonal + 1.224 0.178 0.134 exact 0.955 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-Bolt L2 f3821 horizon_shape_near + 1.219 0.410 0.001 adaptive 0.031 0.4868 (1.39 x null p95) confirmed (dev-sized effect below this test's MDE) confirmed
Chronos-2 L8 f4757 horizon_shape_near + 1.111 0.151 0.060 exact 0.537 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-Bolt L4 f2261 level + 1.107 0.098 0.015 exact 0.239 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-2 L5 f1852 horizon_shape_far + 1.094 0.233 0.030 exact 0.388 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-2 L7 f4757 horizon_shape_near + 1.014 0.254 0.035 exact 0.418 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Time-MoE L2 f3608 spectral_centroid + 15.153 0.099 0.562 exact 1.000 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-T5-Base L7 f173 horizon_shape_near + 3.389 0.018 0.184 exact 0.955 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Time-MoE L1 f4951 horizon_shape_near + 3.372 0.136 0.001 adaptive 0.031 0.1272 (1.39 x null p95) confirmed with power confirmed
Chronos-2 L8 f2801 mase + 3.141 0.193 0.001 adaptive 0.031 0.2356 (1.97 x null p95) confirmed (dev-sized effect below this test's MDE) confirmed
Time-MoE L4 f466 spectral_centroid + 2.979 1.471 0.001 adaptive 0.031 1.93 (4.58 x null p95) confirmed (dev-sized effect below this test's MDE) confirmed
Time-MoE L4 f623 level - 2.934 0.316 0.025 exact 0.373 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Time-MoE L2 f2281 spectral_centroid + 2.776 0.457 0.010 exact 0.189 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-T5-Base L3 f111 horizon_shape_near + 2.451 0.015 0.776 exact 1.000 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-T5-Base L10 f195 dispersion + 2.322 0.002 0.736 exact 1.000 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
Chronos-2 L5 f416 seasonal - 2.261 0.516 0.010 exact 0.189 not computable (unsatisfiable_correction) tested at 200 null draws and not at the p floor, so the adaptive redraw to 1000 could not rescue it: a non-confirmation reads as not detected (power at this effect size not computed) not confirmed
TimesFM L4 f886 spectral_centroid + 2.254 3.727 0.001 adaptive 0.031 3.378 (1.38 x null p95) confirmed with power confirmed
TimesFM L0 f4305 mase + 2.171 5.532 0.001 adaptive 0.031 4.84 (1.16 x null p95) confirmed (dev-sized effect below this test's MDE) confirmed
Sundial L8 f1076 seasonal - 2.162 NaN NaN None NaN the feature fires on no private series not testable

Held-out test of the causal ablation claims: does ablating the same dev SAE feature on its private top-firing series still move the same forecast channel in the same direction, beyond a random-direction null?

What does this mean?

How to read it
'confirmed' = the exact/adaptive permutation p against the random-direction null, Holm-corrected over the tested causal claims, is below alpha AND the sign matches dev. 'MDE' is the smallest effect this test could detect at power 0.8: a non-confirmation with a dev effect below the MDE reads as underpowered, not absent.

Limitations
Within-model causal evidence only. Features are the frozen dev SAE's; nothing was retrained or re-searched. A withheld target (its reach probe failed on private data) is 'not testable', never 'not confirmed'. The MDE resamples the private per-row effects (dev per-row effects are not stored).

Atlas concept claims (1 of 4 tested confirmed, 4 registered)

concept members (testable/all) models pair fraction >= cos centroid cos vs dev p p (Holm) verdict reason
2 3/3 Chronos-2 1.000 0.959 0.002 0.008 confirmed
6 3/3 Chronos-2, Chronos-Bolt, Sundial 0.333 0.981 0.045 0.135 not confirmed
8 3/3 Chronos-Bolt, TimesFM 0.333 0.988 0.065 0.135 not confirmed
9 3/3 Chronos-Bolt, Sundial 0.333 0.955 0.046 0.135 not confirmed

Held-out test of the seed-stable atlas concepts: do the frozen member features still share a causal effect profile on private data?

What does this mean?

How to read it
Statistics are the fraction of member pairs with private cosine >= the atlas threshold and the cosine of the private centroid with the dev centroid, each against random same-composition member sets from the private causal pool. Confirmed needs both to beat that null (Holm), centroid cosine >= the threshold and >= half the pairs.

Limitations
A shared causal effect PROFILE on the forecast, not shared inputs or shared learning. The private causal pool is the frozen dev candidates re-scored on private data, so the null is only as wide as that pool.

Shared-input agreement claims (0 of 6 tested confirmed, 11 registered, 5 not testable)

claim dev verdict private verdict p p (Holm) verdict reason
c4 Chronos-2 L8 → Chronos-Bolt L4 f4679 same causal effect NaN NaN not testable Chronos-2/encoder.block.8 has no channel (raw level or level-removed shape) clearing its own random-direction null on the shared series
c4 Chronos-Bolt L4 → Chronos-2 L7 f3327 same causal effect same causal effect 0.011 0.066 not confirmed
c4 Chronos-Bolt L4 → Chronos-2 L8 f3327 same causal effect NaN NaN not testable Chronos-2/encoder.block.8 has no channel (raw level or level-removed shape) clearing its own random-direction null on the shared series
c4 Chronos-Bolt L4 → Chronos-2 L9 f3327 same causal effect NaN NaN not testable Chronos-2/encoder.block.9 has no channel (raw level or level-removed shape) clearing its own random-direction null on the shared series
c2 Chronos-2 L5 → Sundial L9 f4252 acts differently no specific agreement 0.096 0.288 not confirmed
c2 Chronos-2 L7 → TimesFM L4 f4558 acts differently no specific agreement 0.105 0.288 not confirmed
c2 Chronos-2 L7 → TimesFM L6 f3632 acts differently acts differently 0.032 0.160 not confirmed
c4 Chronos-2 L8 → Chronos-T5-Base L7 f184 acts differently NaN NaN not testable Chronos-T5-Base/encoder.block.7 has no channel (raw level or level-removed shape) clearing its own random-direction null on the shared series
c2 Chronos-2 L8 → TimesFM L4 f4558 acts differently acts differently 0.048 0.192 not confirmed
c0 Chronos-Bolt L4 → Time-MoE L2 f745 acts differently NaN NaN not testable Chronos-Bolt/encoder.block.4 has no channel (raw level or level-removed shape) clearing its own random-direction null on the shared series
c9 Chronos-Bolt L4 → TimesFM L14 f191 acts differently no specific agreement 0.149 0.288 not confirmed

Held-out test of cross-model causal agreement on the same inputs: 'same causal effect' must beat both matched-feature floors again; 'acts differently' must fall below both floors' lower tail.

What does this mean?

How to read it
Floors are re-drawn on private data; the p is an empirical tail p from the raw floor draws, Holm-corrected. Not beating a p95 floor is never counted as disagreement.

Limitations
Each side must clear its own random-direction null on the private shared series to be scorable; otherwise the claim is 'not testable'. Causal within each model, compared across models only on the same inputs.

Structure claims (2 of 2 tested confirmed, 2 registered)

claim private statistic p p (Holm) verdict reason
no_concept_in_all_models 10 concept(s), max 3 model(s) per concept NaN NaN confirmed
majority_prominent_features_causally_null null share 0.835 (lower 95%: 0.817, n=927) 0.001 0.001 confirmed

Held-out test of two directional aggregates: no atlas concept spans every model, and most activation-prominent features are causally null.

What does this mean?

How to read it
The first is rule-based (the atlas recomputed on private vectors of the same pool); the second is confirmed when the private null share's one-sided 95% lower bound exceeds 0.5.

Limitations
The rate is resampled over features stratified by target, not series. 'Convergent concepts outnumber shared ones' is exploratory and not registered; 'families do not beat the shuffle null' is a negative result that stays descriptive.

Causal-concept multiplicity ledger

One Holm family per claim type. m is the registered count, n_null the null each family's p-values are resolved against, so the smallest attainable Holm-adjusted p is m/(n_null+1); the split is refused before it opens if that exceeds alpha.

family m n_null alpha min_attainable_p_holm satisfiable basis n_tested n_not_testable
concept_causal 32 1000 0.050 0.032 True registered claims 31 1
concept_atlas 4 2000 0.050 0.002 True registered claims 4 0
shared_input_agreement 11 1000 0.050 0.011 True registered claims 6 5
concept_structure 1 2000 0.050 0.000 True registered claims 2 0

Appendix

Findings — 240 claims, grouped by stage

The findings below are a summary — each is backed by the data, tables, and figures in the sections further up this report. Expand to read them.

Compare

  • No learned concept clears the full bar (same effect, same inputs, reproducible) across every model in this comparison.

    [exploratory — not pre-registered] Model comparison -- 0 of 11 atlas concept(s) are shared (same effect, same inputs, reproducible) by all 7 models in this run.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Different ways of measuring how similar two models are broadly agree on which pair is closest.

    [exploratory — not pre-registered] Model comparison -- cross-metric agreement on which pair is most similar: Kendall's W=0.2544 (p=0.0095) across 7 metric(s).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Grouping every model's causal SAE features by what they DO to the forecast (not by which model they came from) gives 9 readable families covering nearly all of them.

    [exploratory — not pre-registered] Concept families -- 9 families cover 192 of 194 causal features (99.0%); 9 of 9 span more than one model.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • These families are a readable tiling of a continuum, not a set of naturally separated clusters -- a column-permuted control produces about as many families and as much coverage on its own.

    [exploratory — not pre-registered] Concept families -- structure null: p_n_families=0.6766, p_frac_assigned=0.2289 (does not clear its own permutation null)

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

Corpus

  • No series here is a copy of a real reference series (68 of 2000 candidates rejected): above.

    [exploratory — not pre-registered] Corpus trust — No series here is a copy of a real reference series (68 of 2000 candidates rejected): 0.352 distance vs. gate threshold (dtw) (0.350 distance) — above.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • No two series within a split are near-duplicates of each other: does not clear.

    [exploratory — not pre-registered] Corpus trust — No two series within a split are near-duplicates of each other: 7 pairs vs. 0 within-split near-duplicate pairs (0 pairs) — does not clear.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • The dev and private splits share no series: does not clear.

    [exploratory — not pre-registered] Corpus trust — The dev and private splits share no series: 14 pairs vs. 0 cross-split near-duplicate pairs (0 pairs) — does not clear.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • The private split looks like the dev split: inconclusive.

    [exploratory — not pre-registered] Corpus trust — The private split looks like the dev split: not measured vs. a declared equivalence margin (not measured) — inconclusive.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • A model cannot do well here by memorizing one shape (effective dimensionality): not_run.

    [exploratory — not pre-registered] Corpus trust — A model cannot do well here by memorizing one shape (effective dimensionality): not measured vs. benchmark_validation's default min_effective_dimensionality (gates.py) -- not read from this report's own config (2) — not_run.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Series here vary in more than one way (0 distinct per-group dominant features of 0 groups): not_run.

    [exploratory — not pre-registered] Corpus trust — Series here vary in more than one way (0 distinct per-group dominant features of 0 groups): not measured vs. at least 2 distinct dominant features across groups (2) — not_run.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • The models being compared were not trained on this data: not_verifiable.

    [exploratory — not pre-registered] Corpus trust — The models being compared were not trained on this data: not measured vs. a checkpoint's own training corpus (not measured) — not_verifiable.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

L0 — forecast accuracy

  • TimesFM gives the exact same forecast every time you ask it twice, so any change in its accuracy elsewhere in this report is a real effect, not random noise.

    [exploratory — not pre-registered] Noise floor — TimesFM is deterministic (repeat calls identical); any ΔMASE for this model is real signal, not repeat-run noise.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    4 more of the same kind
    • Chronos-2 gives the exact same forecast every time you ask it twice, so any change in its accuracy elsewhere in this report is a real effect, not random noise.

      [exploratory — not pre-registered] Noise floor — Chronos-2 is deterministic (repeat calls identical); any ΔMASE for this model is real signal, not repeat-run noise.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Chronos-Bolt gives the exact same forecast every time you ask it twice, so any change in its accuracy elsewhere in this report is a real effect, not random noise.

      [exploratory — not pre-registered] Noise floor — Chronos-Bolt is deterministic (repeat calls identical); any ΔMASE for this model is real signal, not repeat-run noise.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Timer gives the exact same forecast every time you ask it twice, so any change in its accuracy elsewhere in this report is a real effect, not random noise.

      [exploratory — not pre-registered] Noise floor — Timer is deterministic (repeat calls identical); any ΔMASE for this model is real signal, not repeat-run noise.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Time-MoE gives the exact same forecast every time you ask it twice, so any change in its accuracy elsewhere in this report is a real effect, not random noise.

      [exploratory — not pre-registered] Noise floor — Time-MoE is deterministic (repeat calls identical); any ΔMASE for this model is real signal, not repeat-run noise.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Sundial gives a slightly different forecast every time you ask it twice, so small accuracy changes for this model elsewhere in this report could just be that randomness, not a real difference.

    [exploratory — not pre-registered] Noise floor — Sundial: repeat-run MASE varies by 0.1405 on average (p95 0.4890); ΔMASE figures for this model smaller than this are not distinguishable from repeat-run noise.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    1 more of the same kind
    • Chronos-T5-Base gives a slightly different forecast every time you ask it twice, so small accuracy changes for this model elsewhere in this report could just be that randomness, not a real difference.

      [exploratory — not pre-registered] Noise floor — Chronos-T5-Base: repeat-run MASE varies by 0.2382 on average (p95 0.9612); ΔMASE figures for this model smaller than this are not distinguishable from repeat-run noise.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • 168 of 6755 test series were too flat or erratic to score fairly, so they were left out of the main accuracy numbers rather than distorting them.

    [exploratory — not pre-registered] L0 — 168/6755 series excluded from MASE aggregates as unreliable (scale='mean_abs_diff', min_scale_frac=0.05).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Chronos-2 forecasts mixture, multi_seasonal_complex, parametric-style data clearly better than the other model, and this held up under a randomization check, not just eyeballing.

    [exploratory — not pre-registered] L0 — Chronos-2 is significantly stronger on archetype(s): mixture, multi_seasonal_complex, parametric (paired bootstrap, Holm-corrected α=0.05).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • TimesFM's stated confidence ranges are well calibrated — its forecast intervals cover the true value about as often as claimed. It also produces occasional self-contradictory forecast ranges.

    [exploratory — not pre-registered] L0 calibration — TimesFM: max reliability-curve gap 0.035, outer-interval coverage 0.779 (nominal 0.800), quantile-crossing rate 0.001.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    2 more of the same kind
    • Chronos-2's stated confidence ranges are well calibrated — its forecast intervals cover the true value about as often as claimed. It also produces occasional self-contradictory forecast ranges.

      [exploratory — not pre-registered] L0 calibration — Chronos-2: max reliability-curve gap 0.029, outer-interval coverage 0.757 (nominal 0.800), quantile-crossing rate 0.000.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Chronos-Bolt's stated confidence ranges are well calibrated — its forecast intervals cover the true value about as often as claimed. It also produces occasional self-contradictory forecast ranges.

      [exploratory — not pre-registered] L0 calibration — Chronos-Bolt: max reliability-curve gap 0.034, outer-interval coverage 0.732 (nominal 0.800), quantile-crossing rate 0.000.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Sundial's stated confidence ranges are poorly calibrated — its forecast intervals cover the true value noticeably less often than claimed (36% vs 80% nominal). Its uncertainty ranges are internally consistent.

    [exploratory — not pre-registered] L0 calibration — Sundial: max reliability-curve gap 0.240, outer-interval coverage 0.360 (nominal 0.800), quantile-crossing rate 0.000.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    3 more of the same kind
    • Timer's stated confidence ranges are poorly calibrated — its forecast intervals cover the true value noticeably less often than claimed (0% vs 80% nominal). Its uncertainty ranges are internally consistent.

      [exploratory — not pre-registered] L0 calibration — Timer: max reliability-curve gap 0.442, outer-interval coverage 0.000 (nominal 0.800), quantile-crossing rate 0.000.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Time-MoE's stated confidence ranges are poorly calibrated — its forecast intervals cover the true value noticeably less often than claimed (0% vs 80% nominal). Its uncertainty ranges are internally consistent.

      [exploratory — not pre-registered] L0 calibration — Time-MoE: max reliability-curve gap 0.447, outer-interval coverage 0.000 (nominal 0.800), quantile-crossing rate 0.000.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Chronos-T5-Base's stated confidence ranges are poorly calibrated — its forecast intervals cover the true value noticeably less often than claimed (44% vs 80% nominal). Its uncertainty ranges are internally consistent.

      [exploratory — not pre-registered] L0 calibration — Chronos-T5-Base: max reliability-curve gap 0.203, outer-interval coverage 0.436 (nominal 0.800), quantile-crossing rate 0.000.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • When TimesFM reports a wider uncertainty range for a series, that series really does tend to have a bigger forecast error — its own confidence band is a useful, free signal.

    [exploratory — not pre-registered] L0 reliability — TimesFM's own quantile width predicts its error at Spearman 0.834 (own-width-vs-error, equal-count deciles).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    4 more of the same kind
    • When Chronos-2 reports a wider uncertainty range for a series, that series really does tend to have a bigger forecast error — its own confidence band is a useful, free signal.

      [exploratory — not pre-registered] L0 reliability — Chronos-2's own quantile width predicts its error at Spearman 0.829 (own-width-vs-error, equal-count deciles).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • When Sundial reports a wider uncertainty range for a series, that series really does tend to have a bigger forecast error — its own confidence band is a useful, free signal.

      [exploratory — not pre-registered] L0 reliability — Sundial's own quantile width predicts its error at Spearman 0.819 (own-width-vs-error, equal-count deciles).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • When Chronos-Bolt reports a wider uncertainty range for a series, that series really does tend to have a bigger forecast error — its own confidence band is a useful, free signal.

      [exploratory — not pre-registered] L0 reliability — Chronos-Bolt's own quantile width predicts its error at Spearman 0.767 (own-width-vs-error, equal-count deciles).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • When Chronos-T5-Base reports a wider uncertainty range for a series, that series really does tend to have a bigger forecast error — its own confidence band is a useful, free signal.

      [exploratory — not pre-registered] L0 reliability — Chronos-T5-Base's own quantile width predicts its error at Spearman 0.736 (own-width-vs-error, equal-count deciles).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • TimesFM's forecasts get noticeably less accurate the further ahead it predicts, which is the normal, expected pattern for a forecasting model.

    [exploratory — not pre-registered] L0 horizon profile — TimesFM: MASE 0.784 at h=1 vs 2.300 at h=64 (ratio 2.93x).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    5 more of the same kind
    • Chronos-2's forecasts get noticeably less accurate the further ahead it predicts, which is the normal, expected pattern for a forecasting model.

      [exploratory — not pre-registered] L0 horizon profile — Chronos-2: MASE 0.784 at h=1 vs 2.127 at h=64 (ratio 2.71x).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Sundial's forecasts get noticeably less accurate the further ahead it predicts, which is the normal, expected pattern for a forecasting model.

      [exploratory — not pre-registered] L0 horizon profile — Sundial: MASE 0.793 at h=1 vs 2.647 at h=64 (ratio 3.34x).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Chronos-Bolt's forecasts get noticeably less accurate the further ahead it predicts, which is the normal, expected pattern for a forecasting model.

      [exploratory — not pre-registered] L0 horizon profile — Chronos-Bolt: MASE 0.920 at h=1 vs 2.781 at h=64 (ratio 3.02x).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Timer's forecasts get noticeably less accurate the further ahead it predicts, which is the normal, expected pattern for a forecasting model.

      [exploratory — not pre-registered] L0 horizon profile — Timer: MASE 0.966 at h=1 vs 3.057 at h=64 (ratio 3.17x).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Chronos-T5-Base's forecasts get noticeably less accurate the further ahead it predicts, which is the normal, expected pattern for a forecasting model.

      [exploratory — not pre-registered] L0 horizon profile — Chronos-T5-Base: MASE 0.759 at h=1 vs 2.734 at h=64 (ratio 3.60x).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Time-MoE's forecasts get a little less accurate the further ahead it predicts, which is the normal, expected pattern for a forecasting model.

    [exploratory — not pre-registered] L0 horizon profile — Time-MoE: MASE 4.633 at h=1 vs 5.512 at h=64 (ratio 1.19x).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Chronos-2 clearly forecasts these kinds of data better than the other model: mixture.

    [exploratory — not pre-registered] L0 — Chronos-2 is significantly stronger on: mixture (paired bootstrap, Holm-corrected α=0.05).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Averaged across the whole test set, Chronos-2 forecasts a bit better than the other model, and that gap looks like a real effect rather than chance.

    [exploratory — not pre-registered] L0 — overall paired ΔMASE -0.09 [-0.14, -0.04] (positive favors the first model, p=0.002 (n_boot=5000, p floored at 1/n_boot=0.0002)).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. No repeat-run noise floor was checked against this specific number, so it is not yet established whether it exceeds ordinary run-to-run noise. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • TimesFM clearly forecasts these kinds of data better than Sundial: block_bootstrap, random_parametric.

    [exploratory — not pre-registered] L0 — TimesFM is significantly stronger than Sundial on: block_bootstrap, random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved; ~79% of Sundial's forward computation is unobserved.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~57% of TimesFM's forward computation is unobserved; ~79% of Sundial's forward computation is unobserved) -- the coverage qualifier.

    1 more of the same kind
    • Chronos-2 clearly forecasts these kinds of data better than Chronos-T5-Base: block_bootstrap, random_parametric.

      [exploratory — not pre-registered] L0 — Chronos-2 is significantly stronger than Chronos-T5-Base on: block_bootstrap, random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs) — within the captured surface only; ~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • TimesFM clearly forecasts these kinds of data better than Chronos-Bolt: random_parametric.

    [exploratory — not pre-registered] L0 — TimesFM is significantly stronger than Chronos-Bolt on: random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    5 more of the same kind
    • TimesFM clearly forecasts these kinds of data better than Chronos-T5-Base: random_parametric.

      [exploratory — not pre-registered] L0 — TimesFM is significantly stronger than Chronos-T5-Base on: random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Sundial clearly forecasts these kinds of data better than Chronos-Bolt: random_parametric.

      [exploratory — not pre-registered] L0 — Sundial is significantly stronger than Chronos-Bolt on: random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Sundial clearly forecasts these kinds of data better than Chronos-T5-Base: random_parametric.

      [exploratory — not pre-registered] L0 — Sundial is significantly stronger than Chronos-T5-Base on: random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Chronos-T5-Base clearly forecasts these kinds of data better than Chronos-Bolt: random_parametric.

      [exploratory — not pre-registered] L0 — Chronos-T5-Base is significantly stronger than Chronos-Bolt on: random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Chronos-T5-Base clearly forecasts these kinds of data better than Timer: random_parametric.

      [exploratory — not pre-registered] L0 — Chronos-T5-Base is significantly stronger than Timer on: random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Chronos-Bolt clearly forecasts these kinds of data better than TimesFM: mixture.

    [exploratory — not pre-registered] L0 — Chronos-Bolt is significantly stronger than TimesFM on: mixture (paired bootstrap, Holm-corrected across all 21 model pairs).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    1 more of the same kind
    • Chronos-Bolt clearly forecasts these kinds of data better than Sundial: mixture.

      [exploratory — not pre-registered] L0 — Chronos-Bolt is significantly stronger than Sundial on: mixture (paired bootstrap, Holm-corrected across all 21 model pairs).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • TimesFM clearly forecasts these kinds of data better than Timer: block_bootstrap, random_parametric, parametric.

    [exploratory — not pre-registered] L0 — TimesFM is significantly stronger than Timer on: block_bootstrap, random_parametric, parametric (paired bootstrap, Holm-corrected across all 21 model pairs) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

    1 more of the same kind
    • Sundial clearly forecasts these kinds of data better than Timer: block_bootstrap, random_parametric, parametric.

      [exploratory — not pre-registered] L0 — Sundial is significantly stronger than Timer on: block_bootstrap, random_parametric, parametric (paired bootstrap, Holm-corrected across all 21 model pairs) — within the captured surface only; ~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • TimesFM clearly forecasts these kinds of data better than Time-MoE: block_bootstrap, mixture, parametric, random_parametric.

    [exploratory — not pre-registered] L0 — TimesFM is significantly stronger than Time-MoE on: block_bootstrap, mixture, parametric, random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved; ~50% of Time-MoE's forward computation is unobserved.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~57% of TimesFM's forward computation is unobserved; ~50% of Time-MoE's forward computation is unobserved) -- the coverage qualifier.

    3 more of the same kind
    • Chronos-2 clearly forecasts these kinds of data better than Time-MoE: block_bootstrap, mixture, parametric, random_parametric.

      [exploratory — not pre-registered] L0 — Chronos-2 is significantly stronger than Time-MoE on: block_bootstrap, mixture, parametric, random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs) — within the captured surface only; ~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    • Sundial clearly forecasts these kinds of data better than Time-MoE: block_bootstrap, mixture, parametric, random_parametric.

      [exploratory — not pre-registered] L0 — Sundial is significantly stronger than Time-MoE on: block_bootstrap, mixture, parametric, random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs) — within the captured surface only; ~79% of Sundial's forward computation is unobserved; ~50% of Time-MoE's forward computation is unobserved.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~79% of Sundial's forward computation is unobserved; ~50% of Time-MoE's forward computation is unobserved) -- the coverage qualifier.

    • Timer clearly forecasts these kinds of data better than Time-MoE: block_bootstrap, mixture, parametric, random_parametric.

      [exploratory — not pre-registered] L0 — Timer is significantly stronger than Time-MoE on: block_bootstrap, mixture, parametric, random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs) — within the captured surface only; ~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • Chronos-2 clearly forecasts these kinds of data better than Sundial: block_bootstrap, mixture, random_parametric, parametric.

    [exploratory — not pre-registered] L0 — Chronos-2 is significantly stronger than Sundial on: block_bootstrap, mixture, random_parametric, parametric (paired bootstrap, Holm-corrected across all 21 model pairs) — within the captured surface only; ~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • Chronos-2 clearly forecasts these kinds of data better than Chronos-Bolt: random_parametric, block_bootstrap.

    [exploratory — not pre-registered] L0 — Chronos-2 is significantly stronger than Chronos-Bolt on: random_parametric, block_bootstrap (paired bootstrap, Holm-corrected across all 21 model pairs) — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

  • Chronos-2 clearly forecasts these kinds of data better than Timer: block_bootstrap, parametric, random_parametric.

    [exploratory — not pre-registered] L0 — Chronos-2 is significantly stronger than Timer on: block_bootstrap, parametric, random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

  • Chronos-Bolt clearly forecasts these kinds of data better than Timer: mixture, parametric, random_parametric.

    [exploratory — not pre-registered] L0 — Chronos-Bolt is significantly stronger than Timer on: mixture, parametric, random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    1 more of the same kind
    • Chronos-T5-Base clearly forecasts these kinds of data better than Time-MoE: mixture, parametric, random_parametric.

      [exploratory — not pre-registered] L0 — Chronos-T5-Base is significantly stronger than Time-MoE on: mixture, parametric, random_parametric (paired bootstrap, Holm-corrected across all 21 model pairs).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Chronos-Bolt clearly forecasts these kinds of data better than Time-MoE: block_bootstrap, mixture, parametric, random_parametric, sequential_par.

    [exploratory — not pre-registered] L0 — Chronos-Bolt is significantly stronger than Time-MoE on: block_bootstrap, mixture, parametric, random_parametric, sequential_par (paired bootstrap, Holm-corrected across all 21 model pairs) — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved; ~50% of Time-MoE's forward computation is unobserved.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved; ~50% of Time-MoE's forward computation is unobserved) -- the coverage qualifier.

  • We ran 4238 statistical comparisons in this report, and corrected for having run several at once.

    [exploratory — not pre-registered] L0 — this report made 4238 corrected comparisons across 123 independent correction families (L0 per-family paired tests: 105; L0 per-archetype paired tests: 16; Confirm — pre-registered hypotheses (private corpus): 1; Transfer — Chronos-2 → Chronos-Bolt (forward leg, exact): 8; Transfer — Chronos-2 → Chronos-Bolt (reverse leg, exact): 8; Transfer — Chronos-2 → Chronos-T5-Base (forward leg, exact): 18; Transfer — Chronos-2 → Chronos-T5-Base (reverse leg, exact): 18; Transfer — Chronos-2 → Sundial (forward leg, exact): 18; Transfer — Chronos-2 → Sundial (reverse leg, exact): 18; Transfer — Chronos-2 → Time-MoE (forward leg, exact): 18; Transfer — Chronos-2 → Time-MoE (reverse leg, exact): 18; Transfer — Chronos-2 → Timer (forward leg, exact): 12; Transfer — Chronos-2 → Timer (reverse leg, exact): 12; Transfer — Chronos-2 → TimesFM (forward leg, exact): 20; Transfer — Chronos-2 → TimesFM (reverse leg, exact): 20; Transfer — Sundial → Chronos-2 (forward leg, exact): 32; Transfer — Sundial → Chronos-2 (reverse leg, exact): 32; Transfer — Sundial → Chronos-Bolt (forward leg, exact): 16; Transfer — Sundial → Chronos-Bolt (reverse leg, exact): 16; Transfer — Sundial → Chronos-T5-Base (forward leg, exact): 36; Transfer — Sundial → Chronos-T5-Base (reverse leg, exact): 36; Transfer — Sundial → Time-MoE (forward leg, exact): 36; Transfer — Sundial → Time-MoE (reverse leg, exact): 36; Transfer — Sundial → Timer (forward leg, exact): 24; Transfer — Sundial → Timer (reverse leg, exact): 24; Transfer — Sundial → TimesFM (forward leg, exact): 40; Transfer — Sundial → TimesFM (reverse leg, exact): 40; Transfer — Timer → Chronos-2 (forward leg, exact): 32; Transfer — Timer → Chronos-2 (reverse leg, exact): 32; Transfer — Timer → Chronos-Bolt (forward leg, exact): 16; Transfer — Timer → Chronos-Bolt (reverse leg, exact): 16; Transfer — Timer → Chronos-T5-Base (forward leg, exact): 36; Transfer — Timer → Chronos-T5-Base (reverse leg, exact): 36; Transfer — Timer → Sundial (forward leg, exact): 36; Transfer — Timer → Sundial (reverse leg, exact): 36; Transfer — Timer → Time-MoE (forward leg, exact): 36; Transfer — Timer → Time-MoE (reverse leg, exact): 36; Transfer — Timer → TimesFM (forward leg, exact): 40; Transfer — Timer → TimesFM (reverse leg, exact): 40; Atlas Transfer — Chronos-2 → Chronos-Bolt (forward leg, exact): 32; Atlas Transfer — Chronos-2 → Chronos-Bolt (reverse leg, exact): 32; Atlas Transfer — Chronos-2 → Chronos-T5-Base (forward leg, exact): 72; Atlas Transfer — Chronos-2 → Chronos-T5-Base (reverse leg, exact): 72; Atlas Transfer — Chronos-2 → Sundial (forward leg, exact): 72; Atlas Transfer — Chronos-2 → Sundial (reverse leg, exact): 72; Atlas Transfer — Chronos-2 → Time-MoE (forward leg, exact): 72; Atlas Transfer — Chronos-2 → Time-MoE (reverse leg, exact): 72; Atlas Transfer — Chronos-2 → Timer (forward leg, exact): 48; Atlas Transfer — Chronos-2 → Timer (reverse leg, exact): 48; Atlas Transfer — Chronos-2 → TimesFM (forward leg, exact): 80; Atlas Transfer — Chronos-2 → TimesFM (reverse leg, exact): 80; Atlas Transfer — Chronos-Bolt → Chronos-2 (forward leg, exact): 63; Atlas Transfer — Chronos-Bolt → Chronos-2 (reverse leg, exact): 63; Atlas Transfer — Chronos-Bolt → Chronos-T5-Base (forward leg, exact): 63; Atlas Transfer — Chronos-Bolt → Chronos-T5-Base (reverse leg, exact): 63; Atlas Transfer — Chronos-Bolt → Sundial (forward leg, exact): 63; Atlas Transfer — Chronos-Bolt → Sundial (reverse leg, exact): 63; Atlas Transfer — Chronos-Bolt → Time-MoE (forward leg, exact): 63; Atlas Transfer — Chronos-Bolt → Time-MoE (reverse leg, exact): 63; Atlas Transfer — Chronos-Bolt → Timer (forward leg, exact): 42; Atlas Transfer — Chronos-Bolt → Timer (reverse leg, exact): 42; Atlas Transfer — Chronos-Bolt → TimesFM (forward leg, exact): 70; Atlas Transfer — Chronos-Bolt → TimesFM (reverse leg, exact): 70; Atlas Transfer — Chronos-T5-Base → Chronos-2 (forward leg, exact): 27; Atlas Transfer — Chronos-T5-Base → Chronos-2 (reverse leg, exact): 27; Atlas Transfer — Chronos-T5-Base → Chronos-Bolt (forward leg, exact): 12; Atlas Transfer — Chronos-T5-Base → Chronos-Bolt (reverse leg, exact): 12; Atlas Transfer — Chronos-T5-Base → Sundial (forward leg, exact): 27; Atlas Transfer — Chronos-T5-Base → Sundial (reverse leg, exact): 27; Atlas Transfer — Chronos-T5-Base → Time-MoE (forward leg, exact): 27; Atlas Transfer — Chronos-T5-Base → Time-MoE (reverse leg, exact): 27; Atlas Transfer — Chronos-T5-Base → Timer (forward leg, exact): 18; Atlas Transfer — Chronos-T5-Base → Timer (reverse leg, exact): 18; Atlas Transfer — Chronos-T5-Base → TimesFM (forward leg, exact): 30; Atlas Transfer — Chronos-T5-Base → TimesFM (reverse leg, exact): 30; Atlas Transfer — Sundial → Chronos-2 (forward leg, exact): 63; Atlas Transfer — Sundial → Chronos-2 (reverse leg, exact): 63; Atlas Transfer — Sundial → Chronos-Bolt (forward leg, exact): 28; Atlas Transfer — Sundial → Chronos-Bolt (reverse leg, exact): 28; Atlas Transfer — Sundial → Chronos-T5-Base (forward leg, exact): 63; Atlas Transfer — Sundial → Chronos-T5-Base (reverse leg, exact): 63; Atlas Transfer — Sundial → Time-MoE (forward leg, exact): 63; Atlas Transfer — Sundial → Time-MoE (reverse leg, exact): 63; Atlas Transfer — Sundial → Timer (forward leg, exact): 42; Atlas Transfer — Sundial → Timer (reverse leg, exact): 42; Atlas Transfer — Sundial → TimesFM (forward leg, exact): 70; Atlas Transfer — Sundial → TimesFM (reverse leg, exact): 70; Atlas Transfer — Time-MoE → Chronos-2 (forward leg, exact): 18; Atlas Transfer — Time-MoE → Chronos-2 (reverse leg, exact): 18; Atlas Transfer — Time-MoE → Chronos-Bolt (forward leg, exact): 8; Atlas Transfer — Time-MoE → Chronos-Bolt (reverse leg, exact): 8; Atlas Transfer — Time-MoE → Chronos-T5-Base (forward leg, exact): 18; Atlas Transfer — Time-MoE → Chronos-T5-Base (reverse leg, exact): 18; Atlas Transfer — Time-MoE → Sundial (forward leg, exact): 18; Atlas Transfer — Time-MoE → Sundial (reverse leg, exact): 18; Atlas Transfer — Time-MoE → Timer (forward leg, exact): 12; Atlas Transfer — Time-MoE → Timer (reverse leg, exact): 12; Atlas Transfer — Time-MoE → TimesFM (forward leg, exact): 20; Atlas Transfer — Time-MoE → TimesFM (reverse leg, exact): 20; Atlas Transfer — Timer → Chronos-2 (forward leg, exact): 9; Atlas Transfer — Timer → Chronos-2 (reverse leg, exact): 9; Atlas Transfer — Timer → Chronos-Bolt (forward leg, exact): 4; Atlas Transfer — Timer → Chronos-Bolt (reverse leg, exact): 4; Atlas Transfer — Timer → Chronos-T5-Base (forward leg, exact): 9; Atlas Transfer — Timer → Chronos-T5-Base (reverse leg, exact): 9; Atlas Transfer — Timer → Sundial (forward leg, exact): 9; Atlas Transfer — Timer → Sundial (reverse leg, exact): 9; Atlas Transfer — Timer → Time-MoE (forward leg, exact): 9; Atlas Transfer — Timer → Time-MoE (reverse leg, exact): 9; Atlas Transfer — Timer → TimesFM (forward leg, exact): 10; Atlas Transfer — Timer → TimesFM (reverse leg, exact): 10; Atlas Transfer — TimesFM → Chronos-2 (forward leg, exact): 45; Atlas Transfer — TimesFM → Chronos-2 (reverse leg, exact): 45; Atlas Transfer — TimesFM → Chronos-Bolt (forward leg, exact): 20; Atlas Transfer — TimesFM → Chronos-Bolt (reverse leg, exact): 20; Atlas Transfer — TimesFM → Chronos-T5-Base (forward leg, exact): 45; Atlas Transfer — TimesFM → Chronos-T5-Base (reverse leg, exact): 45; Atlas Transfer — TimesFM → Sundial (forward leg, exact): 45; Atlas Transfer — TimesFM → Sundial (reverse leg, exact): 45; Atlas Transfer — TimesFM → Time-MoE (forward leg, exact): 45; Atlas Transfer — TimesFM → Time-MoE (reverse leg, exact): 45; Atlas Transfer — TimesFM → Timer (forward leg, exact): 30; Atlas Transfer — TimesFM → Timer (reverse leg, exact): 30).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

Cost and capacity

  • Chronos-2 is more accurate than Timer, but it also costs 9.7 times more compute to run — so some of that accuracy edge may simply be buying more compute, not a better model.

    [exploratory — not pre-registered] Cost — Chronos-2 wins on accuracy (MASE 1.86 vs 2.58) while costing 9.7× the compute of Timer (8.18 GFLOPs vs 841.65 MFLOPs per series), so every cross-model comparison in this report is size-confounded in its favor.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • TimesFM has 231 million parameters and takes about 39 milliseconds to forecast one series in this run's setup.

    [exploratory — not pre-registered] Cost — TimesFM: 231.29M parameters, 6.96 GFLOPs/series forward, 39 ms median forward at batch 8.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    6 more of the same kind
    • Chronos-2 has 119 million parameters and takes about 22 milliseconds to forecast one series in this run's setup.

      [exploratory — not pre-registered] Cost — Chronos-2: 119.48M parameters, 8.18 GFLOPs/series forward, 22 ms median forward at batch 8.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Sundial has 128 million parameters and takes about 8 milliseconds to forecast one series in this run's setup.

      [exploratory — not pre-registered] Cost — Sundial: 128.33M parameters, 6.98 GFLOPs/series forward, 8 ms median forward at batch 8.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-Bolt has 48 million parameters and takes about 14 milliseconds to forecast one series in this run's setup.

      [exploratory — not pre-registered] Cost — Chronos-Bolt: 47.72M parameters, 1.49 GFLOPs/series forward, 14 ms median forward at batch 8.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Timer has 84 million parameters and takes about 5 milliseconds to forecast one series in this run's setup.

      [exploratory — not pre-registered] Cost — Timer: 84.14M parameters, 841.65 MFLOPs/series forward, 5 ms median forward at batch 8.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Time-MoE has 113 million parameters and takes about 51 milliseconds to forecast one series in this run's setup.

      [exploratory — not pre-registered] Cost — Time-MoE: 113.35M parameters, 51.85 GFLOPs/series forward, 51 ms median forward at batch 8.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-T5-Base has 201 million parameters and takes about 37 milliseconds to forecast one series in this run's setup.

      [exploratory — not pre-registered] Cost — Chronos-T5-Base: 201.37M parameters, 90.24 GFLOPs/series forward, 37 ms median forward at batch 8.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

Input front-end diagnostics

  • Chronos-T5-Base quantizes its input into discrete bins; on this sample, one bin step is about 0.2% of a typical series' own swing, and 15.6% of series have at least one point pushed into the coarsest bin at the extreme.

    [exploratory — not pre-registered] Frontend — Chronos-T5-Base's re-quantizing tokenizer's bin width is a mean 0.0020 of a series' own amplitude (95% CI [0.0018, 0.0023], resample unit: series), and 15.6% of series saturate at least one context step into the tokenizer's extreme bin.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Scaling TimesFM's input up or down and unscaling the forecast back reproduces the original forecast essentially exactly (worst mismatch 1.7e-06 times the series' own typical step size, at a 1000.0× scale change).

    [exploratory — not pre-registered] Frontend — TimesFM's worst scale-equivariance residual across tested factors is 0.0000 context-scale units, at scale factor 1000.0 (95% CI [0.0000, 0.0000]).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    1 more of the same kind
    • Scaling Chronos-T5-Base's input up or down and unscaling the forecast back reproduces the original forecast essentially exactly (worst mismatch 2.8e-07 times the series' own typical step size, at a 1000.0× scale change).

      [exploratory — not pre-registered] Frontend — Chronos-T5-Base's worst scale-equivariance residual across tested factors is 0.0000 context-scale units, at scale factor 1000.0 (95% CI [0.0000, 0.0000]).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Scaling Chronos-2's input up or down and unscaling the forecast back doesn't perfectly reproduce the original forecast — the worst mismatch measured was about 0.010 times the series' own typical step size, at a 1000.0× scale change.

    [exploratory — not pre-registered] Frontend — Chronos-2's worst scale-equivariance residual across tested factors is 0.0104 context-scale units, at scale factor 1000.0 (95% CI [0.0069, 0.0149]).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    4 more of the same kind
    • Scaling Sundial's input up or down and unscaling the forecast back doesn't perfectly reproduce the original forecast — the worst mismatch measured was about 0.031 times the series' own typical step size, at a 0.001× scale change.

      [exploratory — not pre-registered] Frontend — Sundial's worst scale-equivariance residual across tested factors is 0.0310 context-scale units, at scale factor 0.001 (95% CI [0.0222, 0.0409]).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Scaling Chronos-Bolt's input up or down and unscaling the forecast back doesn't perfectly reproduce the original forecast — the worst mismatch measured was about 0.010 times the series' own typical step size, at a 0.001× scale change.

      [exploratory — not pre-registered] Frontend — Chronos-Bolt's worst scale-equivariance residual across tested factors is 0.0101 context-scale units, at scale factor 0.001 (95% CI [0.0066, 0.0146]).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Scaling Timer's input up or down and unscaling the forecast back doesn't perfectly reproduce the original forecast — the worst mismatch measured was about 0.026 times the series' own typical step size, at a 0.001× scale change.

      [exploratory — not pre-registered] Frontend — Timer's worst scale-equivariance residual across tested factors is 0.0262 context-scale units, at scale factor 0.001 (95% CI [0.0166, 0.0383]).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Scaling Time-MoE's input up or down and unscaling the forecast back doesn't perfectly reproduce the original forecast — the worst mismatch measured was about 0.037 times the series' own typical step size, at a 0.001× scale change.

      [exploratory — not pre-registered] Frontend — Time-MoE's worst scale-equivariance residual across tested factors is 0.0368 context-scale units, at scale factor 0.001 (95% CI [0.0290, 0.0459]).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • When TimesFM is missing its most recent context (a data-staleness scenario, not just a shorter history), its accuracy degrades gradually rather than the other way around.

    [exploratory — not pre-registered] Frontend — TimesFM's accuracy degrades in a 'graceful' shape as the most recent context is withheld: MASE 1.149 at full context vs. 3.810 at the shortest tested available length (64 of 480 points).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    3 more of the same kind
    • When Chronos-2 is missing its most recent context (a data-staleness scenario, not just a shorter history), its accuracy degrades gradually rather than the other way around.

      [exploratory — not pre-registered] Frontend — Chronos-2's accuracy degrades in a 'graceful' shape as the most recent context is withheld: MASE 1.138 at full context vs. 3.601 at the shortest tested available length (64 of 480 points).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • When Sundial is missing its most recent context (a data-staleness scenario, not just a shorter history), its accuracy degrades gradually rather than the other way around.

      [exploratory — not pre-registered] Frontend — Sundial's accuracy degrades in a 'graceful' shape as the most recent context is withheld: MASE 1.370 at full context vs. 3.982 at the shortest tested available length (64 of 480 points).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • When Chronos-T5-Base is missing its most recent context (a data-staleness scenario, not just a shorter history), its accuracy degrades gradually rather than the other way around.

      [exploratory — not pre-registered] Frontend — Chronos-T5-Base's accuracy degrades in a 'graceful' shape as the most recent context is withheld: MASE 1.165 at full context vs. 3.430 at the shortest tested available length (64 of 480 points).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • When Chronos-Bolt is missing its most recent context (a data-staleness scenario, not just a shorter history), its accuracy degrades sharply at one point rather than the other way around.

    [exploratory — not pre-registered] Frontend — Chronos-Bolt's accuracy degrades in a 'cliff' shape as the most recent context is withheld: MASE 1.383 at full context vs. 3.969 at the shortest tested available length (64 of 480 points).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • TimesFM silently turns a missing context value into a broken (non-finite) forecast, with no error to flag it.

    [exploratory — not pre-registered] Frontend — TimesFM's NaN-handling verdict is 'propagates' across 3 injection scenarios (front/middle/back of context): 0 raised an error, 3 silently produced a non-finite forecast, 0 handled it cleanly.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    3 more of the same kind
    • Sundial silently turns a missing context value into a broken (non-finite) forecast, with no error to flag it.

      [exploratory — not pre-registered] Frontend — Sundial's NaN-handling verdict is 'propagates' across 3 injection scenarios (front/middle/back of context): 0 raised an error, 3 silently produced a non-finite forecast, 0 handled it cleanly.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Timer silently turns a missing context value into a broken (non-finite) forecast, with no error to flag it.

      [exploratory — not pre-registered] Frontend — Timer's NaN-handling verdict is 'propagates' across 3 injection scenarios (front/middle/back of context): 0 raised an error, 3 silently produced a non-finite forecast, 0 handled it cleanly.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Time-MoE silently turns a missing context value into a broken (non-finite) forecast, with no error to flag it.

      [exploratory — not pre-registered] Frontend — Time-MoE's NaN-handling verdict is 'propagates' across 3 injection scenarios (front/middle/back of context): 0 raised an error, 3 silently produced a non-finite forecast, 0 handled it cleanly.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Chronos-2 produces a normal, finite forecast even when a context value is missing.

    [exploratory — not pre-registered] Frontend — Chronos-2's NaN-handling verdict is 'handled' across 3 injection scenarios (front/middle/back of context): 0 raised an error, 0 silently produced a non-finite forecast, 3 handled it cleanly.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    2 more of the same kind
    • Chronos-Bolt produces a normal, finite forecast even when a context value is missing.

      [exploratory — not pre-registered] Frontend — Chronos-Bolt's NaN-handling verdict is 'handled' across 3 injection scenarios (front/middle/back of context): 0 raised an error, 0 silently produced a non-finite forecast, 3 handled it cleanly.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-T5-Base produces a normal, finite forecast even when a context value is missing.

      [exploratory — not pre-registered] Frontend — Chronos-T5-Base's NaN-handling verdict is 'handled' across 3 injection scenarios (front/middle/back of context): 0 raised an error, 0 silently produced a non-finite forecast, 3 handled it cleanly.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

Layer screen

  • For TimesFM, the cheap pre-screen flagged L9, L10, L15, L18, L19 as the layer(s) most worth spending expensive analysis on.

    [exploratory — not pre-registered] Layer screen — TimesFM: work_bend selected L9, L10, L15, L18, L19 of 20 screened layers — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

  • For Chronos-2, the cheap pre-screen flagged L8, L10, L11 as the layer(s) most worth spending expensive analysis on.

    [exploratory — not pre-registered] Layer screen — Chronos-2: work_bend selected L8, L10, L11 of 12 screened layers.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    3 more of the same kind
    • For Sundial, the cheap pre-screen flagged L3, L10, L11 as the layer(s) most worth spending expensive analysis on.

      [exploratory — not pre-registered] Layer screen — Sundial: work_bend selected L3, L10, L11 of 12 screened layers — within the captured surface only; ~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    • For Time-MoE, the cheap pre-screen flagged L1, L10, L11 as the layer(s) most worth spending expensive analysis on.

      [exploratory — not pre-registered] Layer screen — Time-MoE: work_bend selected L1, L10, L11 of 12 screened layers — within the captured surface only; ~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    • For Chronos-T5-Base, the cheap pre-screen flagged L4, L10, L11 as the layer(s) most worth spending expensive analysis on.

      [exploratory — not pre-registered] Layer screen — Chronos-T5-Base: work_bend selected L4, L10, L11 of 12 screened layers — within the captured surface only; ~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • For Chronos-Bolt, the cheap pre-screen flagged L4, L5 as the layer(s) most worth spending expensive analysis on.

    [exploratory — not pre-registered] Layer screen — Chronos-Bolt: work_bend selected L4, L5 of 6 screened layers — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

    1 more of the same kind
    • For Timer, the cheap pre-screen flagged L4, L6 as the layer(s) most worth spending expensive analysis on.

      [exploratory — not pre-registered] Layer screen — Timer: work_bend selected L4, L6 of 8 screened layers.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

Profile — what is in each model

  • Chronos-2 most clearly 'knows' what kind of data it's looking at around layer L9 of its network.

    [exploratory — not pre-registered] Profile — Chronos-2: family information peaks at L9 (probe 0.97 [0.95, 0.98] vs chance 0.43, permutation-null p95 0.43 (5 reshuffles)).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    6 more of the same kind
    • Chronos-Bolt most clearly 'knows' what kind of data it's looking at around layer L4 of its network.

      [exploratory — not pre-registered] Profile — Chronos-Bolt: family information peaks at L4 (probe 0.83 [0.80, 0.86] vs chance 0.43, permutation-null p95 0.45 (5 reshuffles)).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-T5-Base most clearly 'knows' what kind of data it's looking at around layer L10 of its network.

      [exploratory — not pre-registered] Profile — Chronos-T5-Base: family information peaks at L10 (probe 0.95 [0.93, 0.97] vs chance 0.43, permutation-null p95 0.44 (5 reshuffles)).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Sundial most clearly 'knows' what kind of data it's looking at around layer L6 of its network.

      [exploratory — not pre-registered] Profile — Sundial: family information peaks at L6 (probe 0.94 [0.93, 0.96] vs chance 0.43, permutation-null p95 0.45 (5 reshuffles)).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Time-MoE most clearly 'knows' what kind of data it's looking at around layer L9 of its network.

      [exploratory — not pre-registered] Profile — Time-MoE: family information peaks at L9 (probe 0.95 [0.93, 0.96] vs chance 0.43, permutation-null p95 0.45 (5 reshuffles)).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Timer most clearly 'knows' what kind of data it's looking at around layer L5 of its network.

      [exploratory — not pre-registered] Profile — Timer: family information peaks at L5 (probe 0.85 [0.82, 0.88] vs chance 0.43, permutation-null p95 0.45 (5 reshuffles)).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • TimesFM most clearly 'knows' what kind of data it's looking at around layer L12 of its network.

      [exploratory — not pre-registered] Profile — TimesFM: family information peaks at L12 (probe 0.94 [0.92, 0.95] vs chance 0.43, permutation-null p95 0.44 (5 reshuffles)).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

Lens — where the forecast forms

  • TimesFM never fully settles on its forecast early — it keeps revising it all the way through its layers.

    [exploratory — not pre-registered] Lens — TimesFM: forecast crystallizes at never (within tolerance) (within 10% of final MASE 2.16) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

  • Sundial has essentially settled on its forecast by 91% of the way through its layers — the rest of the network only refines it.

    [exploratory — not pre-registered] Lens — Sundial: forecast crystallizes at 0.91 of depth (within 10% of final MASE 2.21) — within the captured surface only; ~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    3 more of the same kind
    • Chronos-Bolt has essentially settled on its forecast by 27% of the way through its layers — the rest of the network only refines it.

      [exploratory — not pre-registered] Lens — Chronos-Bolt: forecast crystallizes at 0.27 of depth (within 10% of final MASE 2.68) — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

    • Time-MoE has essentially settled on its forecast by 0% of the way through its layers — the rest of the network only refines it.

      [exploratory — not pre-registered] Lens — Time-MoE: forecast crystallizes at 0.00 of depth (within 10% of final MASE 5.93) — within the captured surface only; ~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    • Chronos-T5-Base has essentially settled on its forecast by 39% of the way through its layers — the rest of the network only refines it.

      [exploratory — not pre-registered] Lens — Chronos-T5-Base: forecast crystallizes at 0.39 of depth (within 10% of final MASE 2.97) — within the captured surface only; ~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • Timer settles on its forecast only in its last layers (at 100% of its depth) — earlier layers do not yet carry it.

    [exploratory — not pre-registered] Lens — Timer: forecast crystallizes at 1.00 of depth (within 10% of final MASE 2.84).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

  • Sundial commits to its near-term and far-future forecasts at about the same point in its layers.

    [exploratory — not pre-registered] Lens horizon-resolved crystallization — Sundial: horizon step 1 crystallizes at 1.00 relative depth vs. 1.00 at the final step (64) — within the captured surface only; ~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    3 more of the same kind
    • Chronos-Bolt commits to its near-term and far-future forecasts at about the same point in its layers.

      [exploratory — not pre-registered] Lens horizon-resolved crystallization — Chronos-Bolt: horizon step 1 crystallizes at 0.45 relative depth vs. 0.36 at the final step (64) — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

    • Timer commits to its near-term and far-future forecasts at about the same point in its layers.

      [exploratory — not pre-registered] Lens horizon-resolved crystallization — Timer: horizon step 1 crystallizes at 1.00 relative depth vs. 0.00 at the final step (64).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    • Time-MoE commits to its near-term and far-future forecasts at about the same point in its layers.

      [exploratory — not pre-registered] Lens horizon-resolved crystallization — Time-MoE: horizon step 1 crystallizes at 0.00 relative depth vs. 0.00 at the final step (64) — within the captured surface only; ~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • Chronos-T5-Base commits to its very-next-step forecast earlier in its layers than it commits to its far-future forecast.

    [exploratory — not pre-registered] Lens horizon-resolved crystallization — Chronos-T5-Base: horizon step 1 crystallizes at 0.17 relative depth vs. 0.43 at the final step (64) — within the captured surface only; ~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

L1 — shared geometry

  • At their most similar layers, TimesFM and Chronos-2 organize the data somewhat alike.

    [exploratory — not pre-registered] L1 — peak similarity CKA=0.43 (95% CI [0.42, 0.44], series bootstrap) at TimesFM L4 ↔ Chronos-2 L7 (relative depths 0.21 / 0.64, block axis); shuffled-series null ≈0.04 — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a geometric similarity measure between two models' representations (do they organize the data alike), not evidence that the models compute anything the same way. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

  • The two models organize 'parametric'-type data the most differently of any data type tested.

    [exploratory — not pre-registered] L1 — representational agreement is weakest on family 'parametric' (best CKA 0.65 [0.62, 0.72]).

    Caveats

    This is a geometric similarity measure between two models' representations (do they organize the data alike), not evidence that the models compute anything the same way. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Even after squeezing each model down to a sparse, human-legible feature dictionary, TimesFM and Chronos-2 still agree on which series look alike.

    [exploratory — not pre-registered] L1 (SAE feature space) — TimesFM × Chronos-2: best feature-space CKA 0.62 [0.61, 0.64] at stacked_xf.0 ↔ encoder.block.3 (n=965 series) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a geometric similarity measure between two models' representations (do they organize the data alike), not evidence that the models compute anything the same way. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

L2 — linear translatability

  • You can predict what Chronos-2 is doing from what TimesFM is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

    [exploratory — not pre-registered] L2 — TimesFM→Chronos-2: best stitching gain 0.71 [0.69, 0.73] R² above the input baseline at L2→L0 (CI excludes zero).

    Caveats

    This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    41 more of the same kind
    • You can predict what TimesFM is doing from what Chronos-2 is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-2→TimesFM: best stitching gain 0.61 [0.59, 0.63] R² above the input baseline at L1→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Sundial is doing from what TimesFM is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — TimesFM→Sundial: best stitching gain 0.69 [0.67, 0.70] R² above the input baseline at L4→L4 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what TimesFM is doing from what Sundial is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Sundial→TimesFM: best stitching gain 0.61 [0.58, 0.64] R² above the input baseline at L10→L18 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-Bolt is doing from what TimesFM is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — TimesFM→Chronos-Bolt: best stitching gain 0.65 [0.63, 0.67] R² above the input baseline at L2→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what TimesFM is doing from what Chronos-Bolt is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-Bolt→TimesFM: best stitching gain 0.58 [0.56, 0.60] R² above the input baseline at L2→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Timer is doing from what TimesFM is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — TimesFM→Timer: best stitching gain 0.36 [0.34, 0.38] R² above the input baseline at L4→L3 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what TimesFM is doing from what Timer is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Timer→TimesFM: best stitching gain 0.30 [0.28, 0.31] R² above the input baseline at L2→L8 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Time-MoE is doing from what TimesFM is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — TimesFM→Time-MoE: best stitching gain 0.58 [0.56, 0.60] R² above the input baseline at L4→L4 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what TimesFM is doing from what Time-MoE is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Time-MoE→TimesFM: best stitching gain 0.55 [0.52, 0.58] R² above the input baseline at L10→L18 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-T5-Base is doing from what TimesFM is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — TimesFM→Chronos-T5-Base: best stitching gain 0.47 [0.45, 0.48] R² above the input baseline at L6→L9 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what TimesFM is doing from what Chronos-T5-Base is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-T5-Base→TimesFM: best stitching gain 0.52 [0.48, 0.55] R² above the input baseline at L9→L18 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Sundial is doing from what Chronos-2 is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-2→Sundial: best stitching gain 0.89 [0.88, 0.90] R² above the input baseline at L0→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-2 is doing from what Sundial is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Sundial→Chronos-2: best stitching gain 0.91 [0.90, 0.92] R² above the input baseline at L1→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-Bolt is doing from what Chronos-2 is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-2→Chronos-Bolt: best stitching gain 0.89 [0.88, 0.91] R² above the input baseline at L0→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-2 is doing from what Chronos-Bolt is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-Bolt→Chronos-2: best stitching gain 0.91 [0.90, 0.92] R² above the input baseline at L1→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Timer is doing from what Chronos-2 is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-2→Timer: best stitching gain 0.38 [0.36, 0.39] R² above the input baseline at L3→L2 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-2 is doing from what Timer is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Timer→Chronos-2: best stitching gain 0.41 [0.38, 0.45] R² above the input baseline at L2→L11 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Time-MoE is doing from what Chronos-2 is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-2→Time-MoE: best stitching gain 0.83 [0.80, 0.86] R² above the input baseline at L0→L1 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-2 is doing from what Time-MoE is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Time-MoE→Chronos-2: best stitching gain 0.56 [0.53, 0.59] R² above the input baseline at L5→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-T5-Base is doing from what Chronos-2 is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-2→Chronos-T5-Base: best stitching gain 0.61 [0.59, 0.62] R² above the input baseline at L4→L9 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-2 is doing from what Chronos-T5-Base is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-T5-Base→Chronos-2: best stitching gain 0.58 [0.56, 0.61] R² above the input baseline at L8→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-Bolt is doing from what Sundial is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Sundial→Chronos-Bolt: best stitching gain 0.88 [0.86, 0.89] R² above the input baseline at L1→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Sundial is doing from what Chronos-Bolt is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-Bolt→Sundial: best stitching gain 0.86 [0.85, 0.87] R² above the input baseline at L0→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Timer is doing from what Sundial is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Sundial→Timer: best stitching gain 0.38 [0.36, 0.40] R² above the input baseline at L3→L2 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Sundial is doing from what Timer is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Timer→Sundial: best stitching gain 0.40 [0.37, 0.43] R² above the input baseline at L0→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Time-MoE is doing from what Sundial is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Sundial→Time-MoE: best stitching gain 0.83 [0.81, 0.86] R² above the input baseline at L2→L1 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Sundial is doing from what Time-MoE is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Time-MoE→Sundial: best stitching gain 0.67 [0.66, 0.69] R² above the input baseline at L4→L4 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-T5-Base is doing from what Sundial is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Sundial→Chronos-T5-Base: best stitching gain 0.54 [0.52, 0.56] R² above the input baseline at L4→L8 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Sundial is doing from what Chronos-T5-Base is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-T5-Base→Sundial: best stitching gain 0.59 [0.56, 0.61] R² above the input baseline at L8→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Timer is doing from what Chronos-Bolt is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-Bolt→Timer: best stitching gain 0.37 [0.35, 0.38] R² above the input baseline at L5→L2 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-Bolt is doing from what Timer is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Timer→Chronos-Bolt: best stitching gain 0.41 [0.39, 0.44] R² above the input baseline at L1→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Time-MoE is doing from what Chronos-Bolt is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-Bolt→Time-MoE: best stitching gain 0.78 [0.75, 0.81] R² above the input baseline at L2→L1 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-Bolt is doing from what Time-MoE is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Time-MoE→Chronos-Bolt: best stitching gain 0.65 [0.62, 0.68] R² above the input baseline at L2→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-T5-Base is doing from what Chronos-Bolt is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-Bolt→Chronos-T5-Base: best stitching gain 0.57 [0.55, 0.59] R² above the input baseline at L4→L9 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-Bolt is doing from what Chronos-T5-Base is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-T5-Base→Chronos-Bolt: best stitching gain 0.67 [0.64, 0.70] R² above the input baseline at L8→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Time-MoE is doing from what Timer is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Timer→Time-MoE: best stitching gain 0.50 [0.46, 0.54] R² above the input baseline at L2→L1 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Timer is doing from what Time-MoE is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Time-MoE→Timer: best stitching gain 0.35 [0.33, 0.37] R² above the input baseline at L4→L2 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-T5-Base is doing from what Timer is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Timer→Chronos-T5-Base: best stitching gain 0.33 [0.30, 0.36] R² above the input baseline at L2→L7 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Timer is doing from what Chronos-T5-Base is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-T5-Base→Timer: best stitching gain 0.31 [0.30, 0.33] R² above the input baseline at L9→L6 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-T5-Base is doing from what Time-MoE is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Time-MoE→Chronos-T5-Base: best stitching gain 0.55 [0.52, 0.57] R² above the input baseline at L3→L7 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Time-MoE is doing from what Chronos-T5-Base is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-T5-Base→Time-MoE: best stitching gain 0.74 [0.71, 0.76] R² above the input baseline at L7→L1 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

Clustering

  • The two models group the data into largely the same clusters.

    [exploratory — not pre-registered] Clusters — partition agreement AMI=0.60 [0.56, 0.63]; 1.0 means both models carve the benchmark identically, 0 means unrelated groupings.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

L3 — causal structure

  • Of the ways this run damaged the input, 'level_shift' moved the forecasts most and 'dropout' least — but the two also alter different amounts of the series, which the breakdown table shows alongside.

    [exploratory — not pre-registered] L3 — strongest corruption by model-averaged forecast change is level_shift (Δ=9.53, altering 38% of the input); weakest is dropout (Δ=0.76, altering 8%).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • TimesFM and Chronos-2 react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'spike'-style corruption.

    [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.49 [0.47, 0.51]; most divergent corruption: spike (ρ=-0.79 [-0.80, -0.78]).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    20 more of the same kind
    • TimesFM and Sundial react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'spike'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.50 [0.49, 0.52]; most divergent corruption: spike (ρ=-0.96 [-0.98, -0.96]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • TimesFM and Chronos-Bolt react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'frequency_shift'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.50 [0.49, 0.51]; most divergent corruption: frequency_shift (ρ=-0.89 [-0.90, -0.88]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • TimesFM and Timer react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'level_shift'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.69 [0.68, 0.70]; most divergent corruption: level_shift (ρ=-0.64 [-0.69, -0.60]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • TimesFM and Time-MoE react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'spike'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.18 [0.16, 0.19]; most divergent corruption: spike (ρ=-0.98 [-0.99, -0.98]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • TimesFM and Chronos-T5-Base react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'smooth'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.18 [0.16, 0.21]; most divergent corruption: smooth (ρ=-0.84 [-0.88, -0.77]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-2 and Sundial react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'level_shift'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.81 [0.79, 0.82]; most divergent corruption: level_shift (ρ=-0.24 [-0.28, -0.20]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-2 and Chronos-Bolt react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'noise'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.90 [0.90, 0.91]; most divergent corruption: noise (ρ=-0.84 [-0.90, -0.76]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-2 and Timer react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'spike'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.71 [0.70, 0.71]; most divergent corruption: spike (ρ=-0.50 [-0.51, -0.48]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-2 and Time-MoE react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'frequency_shift'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.59 [0.58, 0.60]; most divergent corruption: frequency_shift (ρ=-0.24 [-0.35, -0.14]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-2 and Chronos-T5-Base react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'frequency_shift'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.68 [0.66, 0.70]; most divergent corruption: frequency_shift (ρ=-0.54 [-0.62, -0.36]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Sundial and Chronos-Bolt react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'noise'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.93 [0.92, 0.93]; most divergent corruption: noise (ρ=-0.53 [-0.58, -0.48]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Sundial and Timer react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'spike'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.67 [0.66, 0.68]; most divergent corruption: spike (ρ=-0.93 [-0.95, -0.91]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Sundial and Time-MoE react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'level_shift'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.73 [0.73, 0.74]; most divergent corruption: level_shift (ρ=-0.04 [-0.12, 0.06]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Sundial and Chronos-T5-Base react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'level_shift'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.70 [0.68, 0.71]; most divergent corruption: level_shift (ρ=-0.80 [-0.82, -0.77]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-Bolt and Timer react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'smooth'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.84 [0.83, 0.84]; most divergent corruption: smooth (ρ=-0.99 [-0.99, -0.94]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-Bolt and Time-MoE react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'noise'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.76 [0.75, 0.77]; most divergent corruption: noise (ρ=-0.53 [-0.58, -0.48]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-Bolt and Chronos-T5-Base react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'noise'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.63 [0.61, 0.65]; most divergent corruption: noise (ρ=-0.96 [-0.97, -0.94]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Timer and Time-MoE react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'frequency_shift'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.29 [0.28, 0.30]; most divergent corruption: frequency_shift (ρ=-0.92 [-0.93, -0.92]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Timer and Chronos-T5-Base react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'level_shift'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.31 [0.28, 0.33]; most divergent corruption: level_shift (ρ=-0.89 [-0.90, -0.87]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Time-MoE and Chronos-T5-Base react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'level_shift'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.64 [0.63, 0.66]; most divergent corruption: level_shift (ρ=-0.58 [-0.62, -0.56]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • TimesFM's forecasts barely change when data is corrupted with 'dropout', but change the most under 'level_shift' — though these corruptions weren't all made equally strong, so that comparison is only rough.

    [exploratory — not pre-registered] L3 — TimesFM: least behaviorally-sensitive corruption is dropout (0.79), most is level_shift (11.38) — not necessarily comparable, since corruption strengths are not calibrated to match.

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    3 more of the same kind
    • Sundial's forecasts barely change when data is corrupted with 'dropout', but change the most under 'level_shift' — though these corruptions weren't all made equally strong, so that comparison is only rough.

      [exploratory — not pre-registered] L3 — Sundial: least behaviorally-sensitive corruption is dropout (0.81), most is level_shift (10.63) — not necessarily comparable, since corruption strengths are not calibrated to match.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-Bolt's forecasts barely change when data is corrupted with 'dropout', but change the most under 'level_shift' — though these corruptions weren't all made equally strong, so that comparison is only rough.

      [exploratory — not pre-registered] L3 — Chronos-Bolt: least behaviorally-sensitive corruption is dropout (0.79), most is level_shift (11.44) — not necessarily comparable, since corruption strengths are not calibrated to match.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Timer's forecasts barely change when data is corrupted with 'dropout', but change the most under 'level_shift' — though these corruptions weren't all made equally strong, so that comparison is only rough.

      [exploratory — not pre-registered] L3 — Timer: least behaviorally-sensitive corruption is dropout (0.45), most is level_shift (10.96) — not necessarily comparable, since corruption strengths are not calibrated to match.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Chronos-2's forecasts barely change when data is corrupted with 'spike', but change the most under 'level_shift' — though these corruptions weren't all made equally strong, so that comparison is only rough.

    [exploratory — not pre-registered] L3 — Chronos-2: least behaviorally-sensitive corruption is spike (0.52), most is level_shift (11.52) — not necessarily comparable, since corruption strengths are not calibrated to match.

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    1 more of the same kind
    • Chronos-T5-Base's forecasts barely change when data is corrupted with 'spike', but change the most under 'level_shift' — though these corruptions weren't all made equally strong, so that comparison is only rough.

      [exploratory — not pre-registered] L3 — Chronos-T5-Base: least behaviorally-sensitive corruption is spike (0.96), most is level_shift (10.55) — not necessarily comparable, since corruption strengths are not calibrated to match.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Time-MoE's forecasts barely change when data is corrupted with 'level_shift', but change the most under 'frequency_shift' — though these corruptions weren't all made equally strong, so that comparison is only rough.

    [exploratory — not pre-registered] L3 — Time-MoE: least behaviorally-sensitive corruption is level_shift (0.26), most is frequency_shift (3.14) — not necessarily comparable, since corruption strengths are not calibrated to match.

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • In TimesFM, 5 of 6 corruption types are repaired by a different part of the network near-term than far-future.

    [exploratory — not pre-registered] L3 horizon-resolved patching — TimesFM: the layer best restoring horizon step 1 differs from the layer best restoring the final step for: deseasonalize, dropout, level_shift, noise, warp. The remaining 1 share one depth — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

    6 more of the same kind
    • In Chronos-2, 4 of 6 corruption types are repaired by a different part of the network near-term than far-future.

      [exploratory — not pre-registered] L3 horizon-resolved patching — Chronos-2: the layer best restoring horizon step 1 differs from the layer best restoring the final step for: deseasonalize, dropout, level_shift, noise. The remaining 2 share one depth.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    • In Sundial, 4 of 6 corruption types are repaired by a different part of the network near-term than far-future.

      [exploratory — not pre-registered] L3 horizon-resolved patching — Sundial: the layer best restoring horizon step 1 differs from the layer best restoring the final step for: deseasonalize, dropout, spike, warp. The remaining 2 share one depth — within the captured surface only; ~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    • In Chronos-Bolt, 3 of 6 corruption types are repaired by a different part of the network near-term than far-future.

      [exploratory — not pre-registered] L3 horizon-resolved patching — Chronos-Bolt: the layer best restoring horizon step 1 differs from the layer best restoring the final step for: level_shift, noise, warp. The remaining 3 share one depth — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

    • In Timer, 5 of 6 corruption types are repaired by a different part of the network near-term than far-future.

      [exploratory — not pre-registered] L3 horizon-resolved patching — Timer: the layer best restoring horizon step 1 differs from the layer best restoring the final step for: dropout, level_shift, noise, spike, warp. The remaining 1 share one depth.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    • In Time-MoE, 5 of 6 corruption types are repaired by a different part of the network near-term than far-future.

      [exploratory — not pre-registered] L3 horizon-resolved patching — Time-MoE: the layer best restoring horizon step 1 differs from the layer best restoring the final step for: deseasonalize, level_shift, noise, spike, warp. The remaining 1 share one depth — within the captured surface only; ~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    • In Chronos-T5-Base, 3 of 6 corruption types are repaired by a different part of the network near-term than far-future.

      [exploratory — not pre-registered] L3 horizon-resolved patching — Chronos-T5-Base: the layer best restoring horizon step 1 differs from the layer best restoring the final step for: level_shift, noise, spike. The remaining 3 share one depth — within the captured surface only; ~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

Attention

  • TimesFM has a specific attention head that specializes in looking back exactly one season for 'block_bootstrap'-type data — a seasonality detector.

    [exploratory — not pre-registered] Attention — TimesFM: strongest periodicity head L1·h8 (excess seasonal mass 0.04, family block_bootstrap) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

    2 more of the same kind
    • Chronos-2 has a specific attention head that specializes in looking back exactly one season for 'block_bootstrap'-type data — a seasonality detector.

      [exploratory — not pre-registered] Attention — Chronos-2: strongest periodicity head L4·h6 (excess seasonal mass 0.29, family block_bootstrap).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    • Chronos-T5-Base has a specific attention head that specializes in looking back exactly one season for 'mixture'-type data — a seasonality detector.

      [exploratory — not pre-registered] Attention — Chronos-T5-Base: strongest periodicity head L11·h10 (excess seasonal mass 0.50, family mixture).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • TimesFM's forecast depends noticeably on one specific attention head (L0·h11) — disabling it measurably hurts accuracy.

    [exploratory — not pre-registered] Attention — TimesFM: most load-bearing head L0·h11 (ΔMASE +0.103 (this model is deterministic; the delta is real signal) when ablated).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The effect exceeds this model's own repeat-run noise floor, so it is not explained by ordinary call-to-call variation alone.

    4 more of the same kind
    • Chronos-2's forecast depends noticeably on one specific attention head (L11·h7) — disabling it measurably hurts accuracy.

      [exploratory — not pre-registered] Attention — Chronos-2: most load-bearing head L11·h7 (ΔMASE +0.051 (this model is deterministic; the delta is real signal) when ablated).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The effect exceeds this model's own repeat-run noise floor, so it is not explained by ordinary call-to-call variation alone.

    • Chronos-Bolt's forecast depends noticeably on one specific attention head (L5·h7) — disabling it measurably hurts accuracy.

      [exploratory — not pre-registered] Attention — Chronos-Bolt: most load-bearing head L5·h7 (ΔMASE +0.121 (this model is deterministic; the delta is real signal) when ablated).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The effect exceeds this model's own repeat-run noise floor, so it is not explained by ordinary call-to-call variation alone.

    • Timer's forecast depends noticeably on one specific attention head (L7·h3) — disabling it measurably hurts accuracy.

      [exploratory — not pre-registered] Attention — Timer: most load-bearing head L7·h3 (ΔMASE +0.044 (this model is deterministic; the delta is real signal) when ablated).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The effect exceeds this model's own repeat-run noise floor, so it is not explained by ordinary call-to-call variation alone.

    • Time-MoE's forecast depends noticeably on one specific attention head (L0·h5) — disabling it measurably hurts accuracy.

      [exploratory — not pre-registered] Attention — Time-MoE: most load-bearing head L0·h5 (ΔMASE +0.519 (this model is deterministic; the delta is real signal) when ablated).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The effect exceeds this model's own repeat-run noise floor, so it is not explained by ordinary call-to-call variation alone.

  • Judged on the coarser model's own timescale, Chronos-2's most seasonal attention head is L3·h5.

    [exploratory — not pre-registered] Attention — Chronos-2: at the resolution-matched 32-step lag axis, the strongest periodicity head is L3·h5 (excess seasonal mass 0.07, family block_bootstrap). This, not the native ranking, is the number a cross-model claim may cite — binning to the coarsest model's token width discards finer periodicity by construction, which is the cost of making the two comparable.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    1 more of the same kind
    • Judged on the coarser model's own timescale, Chronos-T5-Base's most seasonal attention head is L6·h3.

      [exploratory — not pre-registered] Attention — Chronos-T5-Base: at the resolution-matched 32-step lag axis, the strongest periodicity head is L6·h3 (excess seasonal mass 0.06, family block_bootstrap). This, not the native ranking, is the number a cross-model claim may cite — binning to the coarsest model's token width discards finer periodicity by construction, which is the cost of making the two comparable — within the captured surface only; ~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

SAE features

  • Of 56 sparse dictionaries trained, 52 have enough live features to read from.

    [exploratory — not pre-registered] SAE dictionary health: 52 of 56 targets pass their dead-feature bar; 0 of 56 fail to align to labelled properties above their own permutation null.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • In TimesFM, learned internal features track 2 real properties of the input series: seasonal component count, dominant period.

    [exploratory — not pre-registered] SAE — TimesFM: across 10 analyzed layers the strongest STRUCTURAL correlates (provenance regressed out) are n_seasonalities, seasonal_period_dominant; strongest is feature 1653 at stacked_xf.0 matching seasonal_period_dominant (ρ=0.32, n=443) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

  • In Chronos-2, learned internal features track 3 real properties of the input series: autocorrelation strength, seasonal component count, dominant period.

    [exploratory — not pre-registered] SAE — Chronos-2: across 9 analyzed layers the strongest STRUCTURAL correlates (provenance regressed out) are ar_coeff_sum, n_seasonalities, seasonal_period_dominant; strongest is feature 3407 at encoder.block.5 matching n_seasonalities (ρ=-0.33, n=555).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

  • In Sundial, learned internal features track 4 real properties of the input series: autocorrelation strength, changepoint count, seasonal component count, dominant period.

    [exploratory — not pre-registered] SAE — Sundial: across 9 analyzed layers the strongest STRUCTURAL correlates (provenance regressed out) are ar_coeff_sum, n_changepoints, n_seasonalities, seasonal_period_dominant; strongest is feature 5065 at model.layers.7 matching seasonal_period_dominant (ρ=0.40, n=443) — within the captured surface only; ~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • In Chronos-Bolt, the same real property of the input series (dominant period) is the strongest match at all 4 analyzed layers.

    [exploratory — not pre-registered] SAE — Chronos-Bolt: across 4 analyzed layers the strongest STRUCTURAL correlates (provenance regressed out) are seasonal_period_dominant; strongest is feature 5261 at encoder.block.2 matching seasonal_period_dominant (ρ=0.35, n=443) — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

  • In Timer, learned internal features track 2 real properties of the input series: autocorrelation strength, dominant period.

    [exploratory — not pre-registered] SAE — Timer: across 6 analyzed layers the strongest STRUCTURAL correlates (provenance regressed out) are ar_coeff_sum, seasonal_period_dominant; strongest is feature 2112 at model.layers.3 matching seasonal_period_dominant (ρ=0.44, n=443).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

  • In Time-MoE, learned internal features track 2 real properties of the input series: changepoint count, dominant period.

    [exploratory — not pre-registered] SAE — Time-MoE: across 9 analyzed layers the strongest STRUCTURAL correlates (provenance regressed out) are n_changepoints, seasonal_period_dominant; strongest is feature 666 at model.layers.4 matching seasonal_period_dominant (ρ=-0.42, n=443) — within the captured surface only; ~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • In Chronos-T5-Base, learned internal features track 4 real properties of the input series: changepoint count, seasonal component count, noise level, dominant period.

    [exploratory — not pre-registered] SAE — Chronos-T5-Base: across 9 analyzed layers the strongest STRUCTURAL correlates (provenance regressed out) are n_changepoints, n_seasonalities, noise_scale, seasonal_period_dominant; strongest is feature 92 at encoder.block.5 matching seasonal_period_dominant (ρ=-0.34, n=443) — within the captured surface only; ~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~86% of Chronos-T5-Base's forward computation is unobserved (116.4M parameters (58%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 14% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • 41% of ablation panels show a near-flat forecast.

    [exploratory — not pre-registered] Ablation panel flatness: 1157 of 2801 panels (41.3%) have forecast sd < 10% of context sd. Noise-like contexts (lag-1 autocorrelation < 0.2, n=851) are flat 82.3% of the time; smooth contexts (lag-1 > 0.8, n=1272) are flat 8.5% of the time. Flat panels score better on MASE (median 0.891 vs 2.065 for non-flat panels).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • All 7 models build features for the same 5 basic properties of the data, but Timer is alone in devoting a large share of its features to n anomalies.

    [exploratory — not pre-registered] SAE — 5 of 10 structural properties are accounted for by all 7 models (ar_coeff_sum, n_changepoints, n_seasonalities, seasonal_amplitude_max, seasonal_period_dominant); the largest model-specific coverage is Timer on n_anomalies (10% of its matched features at Timer/model.layers.7), which no other model reaches.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

  • Of 10 sparse-feature concepts found across this run's models, 5 are universal, 5 are partial, 0 are model-specific when checked against every other model's own dictionary.

    [exploratory — not pre-registered] SAE concept universality: of 10 concepts across 5 analyzed target(s), 5 universal, 5 partial, 0 model-specific (checked against 6 other model(s) per target).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • In Chronos-2/encoder.block.9, a cluster of 6 sparse features named 'moves horizon_shape_far' causally moves the forecast beyond what random steering of the same size does.

    [exploratory — not pre-registered] SAE concepts — Chronos-2/encoder.block.9 (universal): 1 concept(s) in this run's top 10 by interest; strongest is 'moves horizon_shape_far' (6 members), dominant profile effect 0.00x its own null.

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    1 more of the same kind
    • In Chronos-2/encoder.block.9, a cluster of 3 sparse features named 'mild raises horizon_shape_near · unusually raises horizon_shape_far' causally moves the forecast beyond what random steering of the same size does.

      [exploratory — not pre-registered] SAE concepts — Chronos-2/encoder.block.9 (partial): 1 concept(s) in this run's top 10 by interest; strongest is 'mild raises horizon_shape_near · unusually raises horizon_shape_far' (3 members), dominant profile effect 1.21x its own null.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

  • In Sundial/model.layers.5, a cluster of 3 sparse features named 'mild raises horizon_shape_near' causally moves the forecast beyond what random steering of the same size does.

    [exploratory — not pre-registered] SAE concepts — Sundial/model.layers.5 (universal): 2 concept(s) in this run's top 10 by interest; strongest is 'mild raises horizon_shape_near' (3 members), dominant profile effect 1.15x its own null — within the captured surface only; ~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    5 more of the same kind
    • In Timer/model.layers.3, a cluster of 5 sparse features named 'moves spectral_centroid' causally moves the forecast beyond what random steering of the same size does.

      [exploratory — not pre-registered] SAE concepts — Timer/model.layers.3 (universal): 1 concept(s) in this run's top 10 by interest; strongest is 'moves spectral_centroid' (5 members), dominant profile effect 0.00x its own null.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    • In Timer/model.layers.7, a cluster of 4 sparse features named 'mild lowers dispersion' causally moves the forecast beyond what random steering of the same size does.

      [exploratory — not pre-registered] SAE concepts — Timer/model.layers.7 (universal): 1 concept(s) in this run's top 10 by interest; strongest is 'mild lowers dispersion' (4 members), dominant profile effect 1.13x its own null.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    • In Sundial/model.layers.8, a cluster of 4 sparse features named 'mild raises level' causally moves the forecast beyond what random steering of the same size does.

      [exploratory — not pre-registered] SAE concepts — Sundial/model.layers.8 (partial): 2 concept(s) in this run's top 10 by interest; strongest is 'mild raises level' (4 members), dominant profile effect 1.14x its own null — within the captured surface only; ~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~79% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 22% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    • In Timer/model.layers.3, a cluster of 3 sparse features named 'moves trend' causally moves the forecast beyond what random steering of the same size does.

      [exploratory — not pre-registered] SAE concepts — Timer/model.layers.3 (partial): 1 concept(s) in this run's top 10 by interest; strongest is 'moves trend' (3 members), dominant profile effect 0.00x its own null.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    • In Timer/model.layers.7, a cluster of 4 sparse features named 'moves horizon_shape_near' causally moves the forecast beyond what random steering of the same size does.

      [exploratory — not pre-registered] SAE concepts — Timer/model.layers.7 (partial): 1 concept(s) in this run's top 10 by interest; strongest is 'moves horizon_shape_near' (4 members), dominant profile effect 0.00x its own null.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

  • Of 194 individual SAE features measured across this run, feature 3608 in Time-MoE/model.layers.2 moves the forecast most convincingly when ablated.

    [exploratory — not pre-registered] SAE causally interesting individual features: 194 feature(s) across 13 target(s) clear at least one channel's null in the ablation battery; strongest is Time-MoE/model.layers.2 feature 3608 (6 of 9 channels clearing, fingerprint magnitude 29.81) — within the captured surface only; ~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~50% of Time-MoE's forward computation is unobserved (the captured forward pass performs only 50% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

Exemplars

  • This report shows 15 worked examples across 5 kinds of data, chosen to span the range from the biggest to the smallest disagreement within each kind.

    [exploratory — not pre-registered] Exemplars — 15 case studies rendered across 5 families; selection spans each family's own MASE-gap distribution.

    Caveats

    This is a single illustrative example chosen to make an aggregate pattern concrete, not a statistical claim on its own. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • 2 of the 15 worked examples show a difference between the models no bigger than the variation one model shows against itself when run twice.

    [exploratory — not pre-registered] Exemplars — 2/15 selected series have a cross-model MASE gap below one repeat-run noise floor.

    Caveats

    This is a single illustrative example chosen to make an aggregate pattern concrete, not a statistical claim on its own. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The effect exceeds this model's own repeat-run noise floor, so it is not explained by ordinary call-to-call variation alone.

Confirm — held-out test

  • 1 of 1 accuracy differences spotted earlier in this report held up when re-tested on fresh, never-before-seen data.

    CONFIRM — 1/1 dev family hypotheses confirmed on the private benchmark (paired bootstrap, Holm α=0.05).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.18×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • 6 of 9 claims about where in depth the two models react to a given kind of data corruption held up on fresh, never-before-seen data.

    CONFIRM — L3 fingerprint agreement: 6/9 registered per-corruption values replicate on private data (overall ρ=0.52 [0.50, 0.54]).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward.

  • The strongest similarity found earlier between the two models' internal representations held up on fresh data.

    CONFIRM — peak-CKA layer pair replicates on private data (0.41 [0.40, 0.43]).

    Caveats

    This is a geometric similarity measure between two models' representations (do they organize the data alike), not evidence that the models compute anything the same way. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

  • 20 of 20 claims that two models' dictionaries select the same series for a shared concept held up on fresh, never-before-seen data.

    CONFIRM — concept transfer: 20/20 registered concept_transfer claims confirmed on private data (Holm α=0.05).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward.

  • 10 of 31 tested feature-ablation claims held up on fresh data: the same feature still moved the same forecast channel the same way.

    CONFIRM — causal feature claims: 10/31 tested registered claims confirmed on private data (Holm alpha=0.05; 1 not testable).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward.

  • 1 of 4 tested atlas concepts still hold together on fresh data.

    CONFIRM — atlas concept claims: 1/4 tested registered claims confirmed on private data (Holm alpha=0.05; 0 not testable).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward.

  • 0 of 6 tested cross-model agreement claims held up on fresh data.

    CONFIRM — shared-input agreement claims: 0/6 tested registered claims confirmed on private data (Holm alpha=0.05; 5 not testable).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward.

  • 2 of 2 tested structure claims held up on fresh data.

    CONFIRM — structure claims: 2/2 tested registered claims confirmed on private data (Holm alpha=0.05; 0 not testable).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward.

Report-level checks

  • 1 of this report's accuracy-change numbers are small enough that they could just be random noise from calling a model twice, not a real effect.

    Noise floor — 1 of 7 ΔMASE values in this report fall at or below their own model's repeat-run noise floor; findings suppressed as uninterpretable: Attention head ranking (Sundial), Attention head ranking (Chronos-T5-Base).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. This fell at or below the model's own repeat-run noise floor and should not be read as a real effect.

Before the numbers

How to read this report

Each section below answers a progressively stronger question, and each one exists because of a specific limitation in the question before it. Read a number's strength according to which rung it sits on, not by how confident its chart looks:

  • Geometric (Representational geometry) — do two models' layers organize the benchmark similarly at all? Correlational; the models seeing the same input inflates this on its own.
  • Linearly-translatable (Stitching probes) — can one model's layer be linearly mapped to the other's, beyond what a plain input-feature probe already achieves? Stronger than geometry, still not causal.
  • Causal, within one model (Perturbation & patching, head/MLP ablation) — does intervening on this model's own activations actually change its own forecast? The strongest evidence short of confirmation, but never compared across models by transplanting activations between them (only the resulting within-model curves are compared).
  • Descriptive (Model internals, Activation clusters) — how does a model organize its own representations, on its own terms? No cross-model or causal claim at all.
  • Illustrative (Exemplar case studies) — concrete series chosen because they show a difference clearly, not because they're typical; useful for intuition, not for estimating how often something happens.
  • Confirmatory (Private benchmark confirmation) — the one section tested exactly once, on held-out data no exploration above ever touched. Treat it as the actual evidence; treat everything above it as hypothesis-generation, however significant it looks.

Two terms recur in almost every chart below. A window is a pooled ~32-timestep interval (`alignment.window`), not one raw model timestep — every model's tokens are pooled onto this same axis specifically so an architecture reading one timestep per token and one reading many become comparable at all. Relative depth rescales each layer's position to 0–1 so models with different layer counts sit on a shared axis — a convention that makes comparison possible, not a claim that the same relative depth means the same computational stage in both architectures. Sign conventions (whether a positive Δ means better or worse) differ section to section and are restated locally in each chart's own note — check before comparing a ΔMASE bar to a ΔR² heatmap.

Glossary — the terms that recur below

Activation patching
Writing a model's own cached clean activations back into its corrupted forward pass, one layer (and optionally one window) at a time, so that recovered forecast quality localizes where a property is causally carried; always within one model, never transplanted between models. Where it appears: Perturbation & patching's restoration curves and layer × window heatmaps.

AMI (adjusted mutual information)
How much two clusterings of the same series agree, corrected for the agreement expected by chance, used to ask whether two models carve the benchmark into similar groups without requiring their cluster labels to correspond. Where it appears: Activation clusters.

Captured FLOP fraction (coverage)
The share of a model's real per-forecast computation that the captured layers actually perform, measured rather than assumed — an encoder-only capture surface or a strided capture leaves the rest unobserved, and any depth-located claim about a model below 90% carries that qualifier automatically. Where it appears: The fairness card; Cost and capacity; auto-appended to depth-located findings.

catch22 (feature space)
The 22 (or 24, adding mean/std) general-purpose time-series features `benchmark_validation` computes per series and robustly scales (with winsorization against outlier swamping) before computing diversity, effective dimensionality, or near-collisions on them — the space every diversity number in this report is measured in, never the UMAP coordinates used only for the companion plot. Where it appears: The corpus card's diversity and feature-space-map figures.

Concept
A group of SAE features from one model's dictionary whose removal moves the forecast in the same way (the same channels, the same direction), found by clustering each feature's ablation fingerprint and admitted only when every group has at least a minimum number of members, so a dictionary whose causal features do not group is reported as non-modular rather than forced into concepts. Where it appears: The SAE section's concept cards; produced by the concepts stage.

Concept atlas
A grouping of causal SAE features pooled across every model and clustered by ablation-fingerprint similarity, so that every pair inside a group clears a minimum cosine, groups below the minimum size stay unassigned, and a group can span several models (unlike a plain 'concept', which stays within one model's dictionary). Where it appears: The SAE section's concept atlas figure and table; produced by the concepts stage.

Convergent concept
An atlas concept whose member models share the same causal EFFECT on the forecast but fire on different, unrelated INPUTS per model — a measured finding about this run's own data, not a weaker or failed version of a fully shared concept. Where it appears: Model comparison — sharing-class column and Q1's answer box.

Corruption sensitivity fingerprint
A layers × corruptions matrix of how much each layer's activations move when a specific structural property is destroyed in the input, forming a per-model signature whose *shape across depth* is what gets compared across models — never the raw magnitudes, which are not calibrated between corruptions. Where it appears: Perturbation & patching's sensitivity heatmap and cross-model agreement.

Crystallization depth
The shallowest relative depth at which the skip-lens forecast is already within a set tolerance (10% by default) of the model's final forecast quality — where the answer is essentially settled, not where computation stops. Where it appears: Forecast lens.

Dead feature
A dictionary atom in a trained sparse autoencoder that never activates on any evaluation row, so it contributes nothing and inflates any statistic computed over "all features"; the dead rate is reported because a mostly-dead dictionary can otherwise look like a healthy one. Where it appears: Sparse features (SAE) — dictionary health, next to reconstruction fidelity.

Depth axis (`index` / `block` / `compute`)
Which definition of "how deep" a figure uses: `index` counts only the layers this run captured, `block` (the default) counts every block in the whole stack including surfaces never captured, and `compute` uses cumulative measured FLOPs; an encoder-only capture surface therefore caps well below 1.0 on `block` rather than misleadingly reaching it. Where it appears: The fairness card's "Depth axis" row, and every depth-plotted figure's own note.

Diagonal-hit fraction (alignment)
The share of probe windows where injecting an impulse at window *w* perturbs aligned window *w* most, verifying empirically that the token-to-time mapping an adapter declares is true for the installed library version; below 1.0 at late layers is normal, near zero anywhere is a broken mapping. Where it appears: The Alignment & Provenance panel; run by a gate at extraction time.

Effective dimensionality
The participation ratio of a representation's PCA spectrum — roughly, how many directions actually carry variance — used as a descriptive profile of where a model expands or compresses, not as a quality score. Where it appears: Model internals' per-layer depth profile.

Epoch (corpus)
A fresh, non-overlapping seed range used to mint a brand-new private split when an existing one is suspected of having leaked, so a peeked-at private corpus is regenerated rather than reused. Where it appears: The corpus card's header line; private benchmark confirmation.

Evidence class
The rung a claim sits on — geometric, linearly-translatable, causal-within-model, descriptive, illustrative, or confirmatory — stated for every finding so that a confident-looking chart cannot be read as stronger evidence than its method supports. Where it appears: "How to read this report", and the caveat under every finding.

Evidence ladder
The six rungs a cross-model concept claim climbs, from weakest to strongest: same forecast effect, same driving inputs, reproducible across an independent SAE seed, other models' own dictionaries select the same inputs, the same causal effect measured on the same inputs, and confirmed on a sealed private corpus — a concept's verdict names the highest rung it actually reaches, and a rung nothing in this run measures renders 'not measured', never a failed rung. Where it appears: Model comparison — the verdict table; produced by `report/derived.py::concept_verdicts`.

Family and archetype
Two levels of benchmark grouping: the *family* is which generator produced a series (`parametric`, `random_parametric`, `mixture`, …) and the *archetype* is the structural recipe drawn within it (`seasonal_dominant`, `intermittent_bursts`, …); per-family statistics are the unit multiple-comparison correction is applied across. Where it appears: Behavioral profile, Representational geometry's per-family CKA, Activation clusters.

Far horizon
Shape of the late part of the forecast -- its furthest-out steps -- a higher value changes the long-range forecast's shape by a larger amount. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Flatness
How close the forecast is to a constant line -- a higher value makes the forecast closer to a flat, constant line. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Frequency balance
Centre of mass of the forecast's frequency spectrum -- low means the forecast is dominated by slow, smooth movement, high means by fast wiggles -- a higher value shifts the forecast toward higher-frequency, choppier movement. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Ground-truth feature alignment
The correlation between a learned sparse feature's activation and a known generator parameter (a seasonal period, a trend order, an anomaly flag), which is this repo's substitute for the subjective max-activating-example judgment usual in SAE work; because each feature is matched to its *best* of many candidate fields, it is read against a label-permutation null. Where it appears: Sparse features (SAE).

Holm correction
The multiple-comparison adjustment applied across families so that testing several groups at once does not manufacture a significant result; a claimed strength needs both a corrected p below alpha and a confidence interval excluding zero. Where it appears: Behavioral profile; Private benchmark confirmation.

Input-feature baseline
A deliberately simple probe (raw window values, FFT magnitudes, summary statistics) predicting the same targets the stitching map does, whose whole job is to absorb the part of the agreement that follows from shared input rather than shared learned structure. Where it appears: Stitching probes; the quantity every reported gain is measured against.

Leakage (instance-level vs. distributional)
Two different failures a benchmark can have: instance-level leakage is the exact series having been seen in a model's training data, which the leakage gate audits directly against real reference series; distributional leakage is only *that kind* of data having been seen, which is carried by construction for every `real_derived`-tier sample and cannot be audited by this or any other check. Where it appears: The corpus card's leakage-gate figure and trust ladder.

Level
Mean value of the forecast -- its overall height -- a higher value raises the whole forecast. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Linear CKA
A 0–1 similarity between two models' representations of the same series at a chosen layer pair, computed on the shared window axis and bootstrapped with the series as the resampling unit; it is correlational, and both models seeing the same input inflates it on its own. Where it appears: Representational geometry (the layer-pair heatmap and its depth curve).

MASE
Mean absolute error divided by the error of a naive same-scale baseline on the same series, so that 1.0 means "no better than naive" and series of wildly different amplitudes can be averaged together; series whose scale denominator is too small to be reliable are excluded and counted, not silently kept. Where it appears: Behavioral profile (the primary forecast-quality metric), and every ΔMASE elsewhere.

Mean ablation (head / MLP)
Replacing one attention head's or MLP's output with its average over the batch and measuring the forecast damage, which ranks components by how load-bearing they are without needing to know what they compute. Where it appears: Attention analysis' head and MLP ΔMASE rankings.

Minimal sufficient set
The smallest set of a model's own attention heads found by a greedy search whose patching restores most of a corruption's damage — sufficient because patching it works, but never proven the unique or provably smallest such set, since a greedy search only ever finds *a* small set, not *the* smallest. Where it appears: The seasonality circuit.

Near horizon
Shape of the first part of the forecast -- the steps just after the context ends -- a higher value changes the near-term forecast's shape by a larger amount. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Near-collision fraction
In the catch22 feature space — never on UMAP coordinates — the fraction of series whose nearest neighbor sits closer than a fixed threshold; a distinct diversity signal from the shape-matching redundancy fraction, since the two are computed on different representations and never merged until the report. Where it appears: The corpus card's diversity figure.

Necessity
Whether ablating a candidate head set on an otherwise-clean forecast damages it toward the fully-corrupted level — the complement of sufficiency, and required alongside it because either alone is a weaker claim than both together. Where it appears: The seasonality circuit.

Noise floor
How much a model's own metric moves between two identical repeat runs (nonzero for a sampled decoder, zero for a deterministic one), measured so that a delta can be reported as a multiple of it rather than against an implied zero — a ΔMASE under about 2× its own floor is not interpretable. Where it appears: The fairness card's determinism row; every ΔMASE in ablation, patching and SAE sections.

Path patching
Decomposing one head's total causal effect into a direct part (measured with every other head in the found set frozen at its clean value) plus a part routed through each other head individually, then checking whether the parts sum back to the total — a check that can fail even for a correctly-implemented decomposition, if the heads genuinely interact nonlinearly rather than contributing independent, additive paths. Where it appears: The seasonality circuit.

Periodicity head
An attention head that puts more mass than a uniform-baseline share at multiples of a series' dominant seasonal lag — the time-series analogue of an induction head, identified by lag profile rather than by what it is named. Where it appears: Attention analysis' head taxonomy.

Probe decodability
The held-out accuracy of a simple linear classifier reading a property (family, seasonality, trend) straight off a layer's activations, which establishes that the information is linearly *present* there and nothing more — never that the model uses it. Where it appears: Model internals; the SAE section's ground-truth alignment.

Provenance-driven
Said of a concept's part when what best explains which series it fires on is a fact about how the benchmark was BUILT (which tier or generator produced a series) rather than a structural property of the time series itself, so 'fires on sequential_par series' is read as a property of the corpus, not of time series in general. Where it appears: Model comparison — every input-profile table; produced by `sae/concept_profiles.py`.

Random-direction null
The same causal channel battery re-run on directions drawn at random from the same activation space instead of a trained SAE feature's decoder direction, so a channel response is only quotable once it is compared against how large a response chance alone produces, not against zero. Where it appears: SAE causal channel testing (Component A).

Reach
Whether a patched-in intervention (a feature direction, a layer's activations) actually changes anything the forecast head reads, checked before any effect is trusted — confirmed by two controls: patching a layer into itself must move the forecast by exactly 0.0, and patching an earlier layer into a later read must move it by something nonzero; a clean, flat, entirely plausible-looking curve can still mean the intervention never reached anywhere the model reads. Where it appears: SAE causal channel testing (Component A).

Redundancy fraction
The share of all pairwise series comparisons — by cross-correlation or banded DTW shape matching, after z-normalization — that fall below a near-duplicate distance threshold; a high value can be a true finding rather than a defect, e.g. many pure-seasonal series sharing one period and differing only in noise. Where it appears: The corpus card's diversity figure, read alongside effective dimensionality.

Registered hypothesis
A dev-corpus finding written down *before* the private corpus is opened; only registered hypotheses can be confirmed, and a finding discovered afterwards cannot be rescued by the confirmation stage no matter how strong it looks. Where it appears: Private benchmark confirmation; the "[exploratory]" prefix marks everything that is not one.

Relative depth
A layer's position rescaled to 0–1 so models with different layer counts share one axis — a convention that makes the comparison drawable, not a claim that the same fraction is the same computational stage in two architectures. Where it appears: Model internals, Forecast lens, Representational geometry, Perturbation — any curve plotted against depth.

Response fingerprint
A feature's or role's vector of null-normalized responses across the causal channel battery, used as the primary signal for matching one model's roles against another's by cosine similarity — a match rate computed this way is never rendered without its own untrained-twin floor beside it, because two architecturally similar but never-jointly-trained models can already look substantially 'matched' by chance. Where it appears: Cross-model role correspondence table (Component C).

Role
A cluster of a single model's SAE features that share a similar structural signature and causal response profile, named from its dominant response channel and its best-matching ground-truth field — a description of that model's own feature space, not a claim that any other model has an equivalent role until cross-model matching (see response fingerprint) has actually checked. Where it appears: Superseded by concept clustering (2026-09-11) -- see the concept cards and concept universality table instead; the roles table/role cards this pointer named are no longer rendered.

RSA (representational similarity analysis)
The rank-correlation companion to CKA: instead of comparing representations directly it compares each model's *matrix of series-to-series distances*, so it survives any monotone rescaling CKA would not. Where it appears: Representational geometry, reported alongside CKA.

Sealed corpus (public dev / private test)
A corpus written with per-sample hashes and a manifest, split into a public dev half used for all exploration and a private test half drawn from a disjoint seed range that is opened exactly once; the private half is a consumable, and a peeked one is replaced rather than reused. Where it appears: Private benchmark confirmation; the run header's dataset line.

Seasonal strength
Energy in the forecast concentrated at the series' own dominant repeating rhythm -- a higher value makes the forecast more strongly periodic. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Sharing class
Whether an atlas concept's models also agree on the INPUTS that drive it, not just its effect: 'shared' when every model in it is connected through agreeing cross-model input pairs, 'partially shared' when only some pairs agree, 'convergent' when none do, and 'single-model' when only one model holds the concept at all. Where it appears: Model comparison — the sharing map and every concept card; produced by `sae/concept_profiles.py`.

Skip lens and tuned lens
Two ways to ask what forecast a middle layer already implies: the skip lens patches that layer's states in as the final block's output and lets the model's own head decode them, while the tuned lens fits a held-out ridge probe instead, correcting the skip lens's miscalibration at early layers. Where it appears: Forecast lens.

sMAPE and pinball loss
The two companion forecast metrics: sMAPE is a symmetric percentage error (scale-free but unstable near zero), and pinball loss scores the predicted *quantiles* rather than the point forecast, which is the only one of the three sensitive to whether a model's uncertainty is honest. Where it appears: Behavioral profile's per-family metric table.

Spread
How much the forecast varies within itself (its standard deviation) -- a higher value makes the forecast swing more from step to step. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Stitching gain
The extra held-out R² a ridge map from one model's layer to the other's achieves *above* a hand-crafted input-feature probe on the same targets — the gain, never the raw R², is the evidence, because the models read the same input and a raw R² is therefore partly trivial. Where it appears: Stitching probes (both directions, A→B and B→A, reported separately).

Sufficiency
Whether patching a candidate head set's clean values into an otherwise-corrupted forecast restores it toward the clean level — the complement of necessity. Where it appears: The seasonality circuit.

The series as the resampling unit
Every bootstrap and every train/test split in this repo resamples whole series, never windows, because windows within one series are strongly dependent and every model scores the same series — splitting on windows would make every interval far too narrow. Where it appears: Every confidence interval and p-value in the report.

Tier (`synthetic` / `real_derived`)
Whether a benchmark series touched real data at all: `synthetic` series are generated from scratch and carry exact ground truth with no distributional leakage, while `real_derived` series are built from real corpora and inherit their distribution even though every instance still passes the leakage audit. Where it appears: The corpus this run reads; recorded per sample in the sealed manifest.

Token width
How many timesteps one of a model's tokens covers (about 32 for a patch tokenizer, 1 for a per-timestep quantizer), which sets the finest lag that model's attention can express and is multiplied into every plotted lag axis so a lag of 300 means the same 300 timesteps for every model. Where it appears: Attention analysis' lag axes; the fairness card's finest-resolvable-lag row.

Transfer
Whether another model separates the same series a concept fires hardest on, scored as the best of that model's features against random series sets drawn with the same mix of series kinds, and called reciprocal only when that feature's own top series are in turn separated by the original concept. Where it appears: The SAE section's concept universality table; produced by the concepts stage.

Trend
Slope of the forecast -- whether it rises or falls as it continues forward -- a higher value pushes the forecast to slope upward more steeply. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Untrained-twin floor
The same measurement run against a randomly-initialized copy of a model's own architecture, giving the level any two networks of that shape reach before either has learned anything; a similarity that fails to clear it is architecture, not learning. Where it appears: Null-baseline comparisons for CKA and stitching gain.

Window
A pooled fixed-length interval of real time (32 timesteps by default, `alignment.window`) that every model's own tokens are mapped onto, so an architecture reading one timestep per token and one reading thirty-two become comparable at all; it is a unit of time, never a unit of any one model's tokenization. Where it appears: Every cross-model section — the shared [series, window, dim] axis all of them operate on.

Methods appendix — estimator details for reviewers

Linear CKA and RSA (L1 representational geometry) Source: tsfm_lens/analysis/l1_geometry.py's own module docstring
L1 — representational geometry. Linear CKA between every selected layer pair, computed in feature space on the accelerator: with column-centered X and Y, CKA = ||Y'X||_F^2 / (||X'X||_F ||Y'Y||_F), which equals Gram-based linear CKA exactly while never materializing an N x N matrix. Global similarity uses window-level rows for statistical power; family-conditioned similarity uses series-level embeddings so "on which data regimes do these models agree" gets a direct answer. RSA (Spearman-correlated representational dissimilarity matrices) is an optional second opinion that is invariant to linear transforms in a different way than CKA. CKA is correlational: it evidences shared geometry, not shared mechanism. L2 and L3 exist to push past that limitation.

Ridge stitching (L2 cross-model probes) Source: tsfm_lens/analysis/l2_stitching.py's own module docstring
L2 — cross-model stitching probes. For strided layer pairs and both directions, a closed-form ridge regression maps one model's window states onto the other's, evaluated as R^2 on a held-out series split. The critical control: both models saw the same input, so predictability alone can reflect shared input structure rather than shared computation. An input-feature baseline (raw window values, FFT magnitudes, summary statistics) predicts the same targets, and only the gain above that baseline is reported as evidence of shared learned structure. Splits are by series, never by window, to prevent leakage between highly correlated windows of one series.

Forecast lens -- skip lens and tuned ridge lens Source: tsfm_lens/analysis/lens.py's own module docstring
Forecast lens — the logit-lens analog for forecasting models. Answers "where in depth does each model's forecast crystallize?", the missing bridge between the behavioral level (L0) and every representation-level analysis. Two complementary lenses per layer: 1. Skip lens: layer-l token states are patched in as the final block's output and the model's own head produces a forecast from them -- "head" meaning whatever that architecture actually uses, which for an encoder-decoder is its entire decoder. This is the direct logit-lens translation — it uses the model's real output pathway and needs no access to head internals, only the existing `token_patch` primitive. Like classic logit lens it can be miscalibrated at early layers, which is exactly what the second lens corrects for. 2. Tuned lens: a held-out ridge probe from each layer's stored window states to (a) the model's own final forecast and (b) the true targets. High R^2 against the final forecast at layer l means the forecast is already linearly readable there even if the raw head cannot decode it. Every model in a run gets both lenses, so a claim of the form "this one front-loads then compresses, that one accumulates" becomes a testable statement about where forecast quality appears in depth, not just where family information does. The shapes are named from the measured curves; no architecture is described here in advance, since this docstring is rendered verbatim into the report's methods appendix and would otherwise assert something about models the run may not contain. The skip lens inherits L3 patching's constraints: one batch per call (contexts capped at the model batch size) and a forecasting path that calls the backbone once per prediction.

MASE / sMAPE / pinball (L0 behavioral profiling) Source: tsfm_lens/analysis/l0_behavioral.py's own module docstring
L0 — behavioral profiling. Answers the purely behavioral questions ("is one model better on high-frequency data?") before any internals are touched, and generates the family-level hypotheses the mechanistic levels then try to explain. Metrics are computed per series and aggregated per family: MASE against the naive one-step scale of each context, sMAPE, and mean pinball loss over the configured quantiles.

Bootstrap designs -- paired, cluster, percentile Source: tsfm_lens/analysis/stats.py's own module docstring
Shared statistical machinery for every stage. The resampling unit is always the series. Windows within a series are strongly dependent, both models score the same series, and corruptions are applied to the same series — so cluster (series-level) bootstrap and paired designs are the honest defaults throughout. Family-level comparisons are Holm-corrected because a benchmark with a dozen families is a dozen hypotheses. Bootstrap p-values are approximate by construction and floored at 1/n_boot; they are decision aids, not precision instruments.

Adjusted mutual information (L4 activation clustering) Source: tsfm_lens/analysis/clustering.py's own module docstring
Activation clustering with approximate "what does this activate for" labels. Series-level embeddings at a chosen layer (by default, each model's side of the L1 peak-CKA pair) are clustered, and each cluster is labeled two ways: by benchmark ground truth (majority family and purity) and by interpretable signal statistics of its member series (dominant frequency, trend, noise level, spectral entropy, autocorrelation) expressed as z-scores against the corpus. The cross-model question "do these models carve the data the same way" is answered by adjusted mutual information between the two partitions plus a contingency matrix, which is robust to arbitrary cluster relabeling.

SAE fidelity and dead-feature rate
Reconstruction fidelity is fraction-of-variance-explained (`sae/eval.py::reconstruction_fidelity`) computed over held-out window rows at the store's own train/eval split; dead-feature rate is the fraction of dictionary atoms with zero activation above a threshold over the same rows. Neither carries a bootstrap CI in the current implementation -- both are point estimates over one already-large row sample, not a series-resampled statistic, so read them as descriptive rather than as having a stated uncertainty. The known, already-measured failure mode is severe: every SAE number recorded in this repo before the Stage 0 gate was measured on a dictionary **94.5-97.3% dead**, which the same subsystem later proved is not intrinsic -- an AuxK auxiliary loss the production `sae` stage still leaves off by default reaches 3.2% dead on the same checkpoints. A second, orthogonal failure mode: `forecast_preservation`'s original window-pooled broadcast approximation is exact for a patch-tokenizing model (TimesFM) but badly lossy for a per-timestep one (Chronos-T5), producing a ΔMASE of +3.9 that a token-granularity re-measurement of the identical trained SAE resolves to +0.25 -- **the invalidating assumption is that every captured model tokenizes at the same granularity as the pooling window**, which is false by construction for any model whose token width differs from `alignment.window`.

relative_decoder_norm (crosscoder shared/specific split)
`||dec_a[f]|| / (||dec_a[f]|| + ||dec_b[f]||)` per feature, on a **jointly** decoder-normalized crosscoder dictionary -- 0.5 reads as shared, 0 or 1 as source-specific. It is not resampled or bootstrapped in the current implementation, and its point value is provably sensitive to something orthogonal to the shared/specific question it is meant to answer: on a mostly-**dead** dictionary, dead atoms sit near a symmetric norm split by construction, which inflated the shared-fraction reading to roughly 98% before the Stage 0 gate produced a mostly-alive dictionary to measure it on properly. Even on that alive dictionary, a same-shape untrained-twin control read as *more* shared with itself than the real cross-model pair, and that control's own value proved **seed-fragile** (0.696-0.856 across 3 seeds) -- so **the invalidating assumption is that a single point estimate, or even a single-seed floor, is informative on its own**; this repo's own recorded practice is to never quote it without both an untrained-twin floor computed at multiple seeds and the dictionary's own alive-fraction stated alongside it.

Specification curve (analysis-knob robustness) Source: tsfm_lens/analysis/spec_curve.py's own module docstring
Specification curve over the analysis knobs. Every analysis knob in this repo is individually defended, and the defences are good -- but none is swept, and this repo's own history is evidence that matters: the layer-screen row records selector verdicts *flipping* when the gold ranking changed, and the L1/L2 untrained-weights null work records a verdict flipping depending on which layer of the null run it was read against. Knob sensitivity is a demonstrated property of this pipeline, not a hypothetical this module has to argue for. This is **not a pipeline stage** -- a standalone reducer over one already- completed run directory, exactly the shape of `report/meta_report.py` and `analysis/error_fingerprint.py`. It re-derives the corpus deterministically from the run's own `config_resolved.yaml` (contexts are not persisted in the activation store) and reads everything else -- predictions, lens curves, layer-screen scores, attention head tables, per-block FLOPs -- from artifacts already on disk. **No model is loaded and no forward pass is run.** Scope, per A2.1: only knobs that need no re-extraction. Six are swept: alignment.depth_axis index | block | compute | functional attention.resolution_mode native | matched l0.scale mean_abs_diff | seasonal_naive stats.n_boot configured value | 4x corpus_subsample_seed 3 seeds, 80% stratified draw layer_screen.method work_bend | coverage | factor_emergence Four claim families, one per group of `report/findings.json` claim_ids that actually depends on one of the six knobs above -- everything else in a run's findings is recorded as excluded, with the specific reason, rather than silently left out of the denominator (A2's own stated failure mode: "Silently sweeping a subset and reporting '11 of 11 robust' is the failure this bullet exists to prevent"): l0_strength_set which families a model is significantly stronger on (matches the `l0.*` "is significantly stronger on/ than" findings). Applicable: l0.scale, stats.n_boot, corpus_subsample_seed. lens_crystallization whether a model's forecast crystallizes within tolerance at all (matches `lens.*`). Applicable: alignment.depth_axis only -- the VALUE of a crystallization depth is axis-dependent by definition (the same layer gets a different coordinate under `index` vs `block`), so the only fair thing to compare across axes is the qualitative state (crystallizes / never crystallizes within the configured tolerance), not the raw number. layer_screen_selection which layers a selector method picks (matches `layer_screen.*`). Applicable: layer_screen.method only. Recomputed against the run's own MAIN store (already on disk), not a fresh stride-1 screening extraction -- the premise that this knob is "free" turned out to be wrong as literally stated (the dedicated screening store is deleted after selection by default, `layer_screen.keep_store: false`); re-running `coverage`/`factor_emergence` the way the pipeline stage does would need a second extraction pass, which A2.1 rules out of scope. What IS free is re-scoring the SAME three selectors against the main store's already-captured (possibly strided) layers -- exactly what `run_layer_screen` itself falls back to when `require_full_capture: false`. Every cell here is therefore marked `fair_to_all_layers: false`, an honest, stated deviation from the production selection's own fairness guarantee -- see this module's own Findings for the corrected premise. attention_periodicity which head is the strongest periodicity head (matches `attention.*`). Applicable: attention.resolution_mode only. Both resolutions are *always* computed and persisted in `attention/meta.json`, so this one needs no recomputation at all -- just reading two keys that are already on disk. A2.3: never render the best cell, only the fraction. A claim's `robust_frac` is computed over its *applicable* cells only -- a `not_applicable` cell is excluded from the denominator, never counted as robust (A2's own failure-mode bullet). `evidence_class` for every claim here is `descriptive`: this module answers "how much does the reported conclusion depend on an analysis choice", never "is this difference real" -- reading a specification curve as a significance test is the specific misuse A2 warns against.

Run coverage — 19 rendered, 2 skipped
SectionStatusDetail
At a glance — Model comparison — at a glance rendered
Fairness — The fairness card rendered
Corpus — The corpus card rendered
L0 — Behavioral profile rendered
Cost — Cost and capacity rendered
Frontend — Input front-end diagnostics rendered
Screen — Layer screening rendered
Profile — Model internals rendered
Lens — Forecast lens rendered
L1 — Representational geometry rendered
L2 — Stitching probes rendered
L4 — Activation clusters rendered
Similarity — Pair similarity across metrics rendered
L3 — Perturbation & patching rendered
Attention — Attention structure & head causality rendered
Circuit — The seasonality circuit skippedbuilder returned no content
SAE — Sparse feature dictionary rendered
Concepts — Cross-model concepts rendered
Exemplars — Exemplar case studies rendered
Spec curve — Analysis-knob robustness skippedbuilder returned no content
Confirm — Private benchmark confirmation rendered

family_key = auto → 5 family/families (block_bootstrap: 70, mixture: 290, parametric: 130, random_parametric: 425, sequential_par: 50).

Resolved configuration
run:
 name: panel7_v2_dev
 out_dir: runs
 device: [redacted]
 dtype: bfloat16
 seed: 0
 keep_models_loaded: false
data:
 source: sealed
 path:../benchmark_large_v2/public_dev
 context_len: 480
 horizon: 64
 max_series: null
 family_key: auto
 smoke_series_per_family: 20
models:
- name: TimesFM
 adapter: timesfm
 checkpoint: google/timesfm-2.5-200m-pytorch
 layer_regex: ''
 batch_size: 32
 capture_layer_stride: 2
 kwargs: {}
 random_init: false
- name: Chronos-2
 adapter: chronos2
 checkpoint: amazon/chronos-2
 layer_regex: ''
 batch_size: 24
 capture_layer_stride: 1
 kwargs: {}
 random_init: false
- name: Sundial
 adapter: sundial
 checkpoint: thuml/sundial-base-128m
 layer_regex: ''
 batch_size: 16
 capture_layer_stride: 1
 kwargs: {}
 random_init: false
- name: Chronos-Bolt
 adapter: chronos_bolt
 checkpoint: amazon/chronos-bolt-small
 layer_regex: ''
 batch_size: 32
 capture_layer_stride: 1
 kwargs: {}
 random_init: false
- name: Timer
 adapter: generic_hf
 checkpoint: thuml/timer-base-84m
 layer_regex: ''
 batch_size: 16
 capture_layer_stride: 1
 kwargs:
 auto_class: AutoModelForCausalLM
 random_init: false
- name: Time-MoE
 adapter: generic_hf
 checkpoint: Maple728/TimeMoE-50M
 layer_regex: ''
 batch_size: 16
 capture_layer_stride: 1
 kwargs:
 auto_class: AutoModelForCausalLM
 input_normalization: zscore
 random_init: false
- name: Chronos-T5-Base
 adapter: chronos
 checkpoint: amazon/chronos-t5-base
 layer_regex: ''
 batch_size: 24
 capture_layer_stride: 1
 kwargs: {}
 random_init: false
alignment:
 window: 32
 sanity_check: true
 min_diagonal_frac: 0.5
 on_failure: warn
 calibrate_amplitude: true
 depth_axis: block
extraction:
 enabled: true
 store_dtype: float16
l0:
 enabled: true
 quantiles:
 - 0.1
 - 0.5
 - 0.9
 scale: mean_abs_diff
 min_scale_frac: 0.05
 noise_floor_repeats: 3
 noise_floor_series: 16
 calibration: true
 horizon_resolved: true
l1:
 enabled: true
 layer_stride: 1
 max_rows: 20000
 family_conditioned: true
 min_family_series: 15
 rsa: true
 rsa_max_series: 800
l2:
 enabled: true
 layer_stride: 1
 lambdas:
 - 0.001
 - 0.01
 - 0.1
 - 1.0
 val_frac: 0.25
 max_rows: 40000
 input_baseline: true
l3:
 enabled: true
 corruptions:
 noise:
 snr_db: 0.0
 detrend: {}
 deseasonalize:
 top_k: 2
 frequency_shift:
 factor: 2.0
 level_shift:
 position_frac: 0.6
 scale: 3.0
 spike:
 count: 8
 scale: 10.0
 smooth:
 kernel: 9
 warp:
 strength: 0.15
 dropout:
 frac: 0.15
 n_blocks: 3
 max_series: 800
 patching:
 enabled: true
 layer_stride: 2
 corruptions:
 - deseasonalize
 - noise
 - level_shift
 - spike
 - warp
 - dropout
 max_series: 16
 num_samples: 8
 per_window: true
 window_stride: 1
 horizon_resolved: true
 calibrate: none
lens:
 enabled: true
 layer_stride: 1
 max_series: 16
 tuned: true
 tuned_max_series: 800
 val_frac: 0.25
 lambdas:
 - 0.001
 - 0.01
 - 0.1
 - 1.0
 crystallization_tol: 0.1
 horizon_resolved: true
 depth_max_series: 0
attention:
 enabled: true
 patterns: true
 max_series: 400
 batch_series: 16
 max_lag_tokens: 128
 ablation: true
 ablation_max_series: 16
 head_layer_stride: 1
 top_k: 5
 resolution_mode: matched
exemplars:
 enabled: true
 per_family: 3
 max_families: 5
stats:
 enabled: true
 n_boot: 5000
 n_boot_heavy: 200
 ci: 0.95
 alpha: 0.05
 min_series: 8
internals:
 enabled: true
 layer_stride: 1
 max_rows: 40000
 probe_pca_dim: 50
 probe_permutation_repeats: 5
 probe_max_iter: 2000
confirm:
 enabled: true
 source: sealed
 path:../benchmark_large_v2/private_epoch3
 max_series: 1024
 require_seal: true
 alpha: 0.05
 concept_transfer_n_null: 2000
 register_concept_claims: true
 register_requires_target_significance: true
 register_requires_defined_firing: true
 register_reliability_claims: true
 reliability_dev_json: reliability_panel7.json
 causal_n_null: 200
 causal_max_null: 1000
 atlas_n_null: 2000
 agreement_n_null: 1000
 structure_n_boot: 2000
clustering:
 enabled: true
 layer: auto
 k: auto
 pca_dim: 50
 max_series: 800
 use_umap: true
layer_screen:
 enabled: true
 method: work_bend
 budget_frac: 0.25
 min_budget: 2
 max_series: 100000
 use_curvature: true
 min_gap: 1
 seed: null
 stride: 1
 require_full_capture: true
 keep_store: false
budget:
 enabled: true
 batch: 8
 repeats: 5
 warmup: 2
 measure_predict: true
 predict_repeats: 3
frontend:
 enabled: true
 max_series: 64
 quantization_resolution: true
 scale_equivariance: true
 scale_factors:
 - 1000.0
 - 0.001
 context_truncation: true
 context_truncation_n_points: 5
 context_truncation_min_frac: 0.125
 nan_handling: true
 nan_frac: 0.05
 nan_series: 8
 constant_context: true
sae:
 enabled: true
 checkpoints: {}
 targets: []
 dict_size_mult: 8
 k: 32
 lr: 0.001
 epochs: 60
 batch_size: 4096
 resample_dead_every_epochs: 5
 aux_k: 64
 aux_coef: 0.03125
 aux_dead_steps: 20
 min_train_steps: 720
 aux_dead_steps_frac: 0.028
 dict_size_policy: search
 dict_size_ladder:
 - 192
 - 384
 - 768
 - 1536
 - 3072
 - 6144
 max_dead_rate: 0.3
 min_fidelity: 0.5
 dict_size_search_seeds: 2
 dict_size_search_margin: 0.03
 n_seeds: 3
 holdout_frac: 0.2
 min_fidelity_gate: 0.85
 max_abs_delta_mase: 0.25
 layer_substitution_attempts: 2
 forecast_preservation_max_series: 16
 ground_truth_max_series: 2000
 ground_truth_permutation_repeats: 3
 ground_truth_permutation_max_features: 2000
 real_data_enabled: true
 real_data_source: Monash-University/monash_tsf
 real_data_n_windows: 4000
 real_data_pool_limit: 500
 feature_ablation_enabled: false
 feature_ablation_top_k: 8
 feature_ablation_max_series: 64
 feature_steering_enabled: false
 feature_steering_top_k: 8
 feature_steering_max_series: 64
 feature_steering_strength_sigma: 2.0
 persist_features: true
 role_k: auto
 role_min_silhouette: 0.1
 role_matching_untrained_twin_runs: {}
 role_matching_cosine_threshold: 0.5
 role_matching_depth_tolerance: 0.15
 describe_from_exemplars: true
 concepts_enabled: true
 concept_causal_only: true
 concept_k: auto
 concept_min_silhouette: 0.1
 concept_min_members: 3
 concept_misfit_cosine_gap: 0.3
 concept_cards_max: 24
 transfer_enabled: true
 transfer_top_k: 20
 transfer_n_null: 200
 transfer_seed: 0
 interest_weights:
 - 0.5
 - 0.3
 - 0.2
 ablation_null: profile_matched
 ablation_empirical_chance: true
report:
 enabled: true
 title: "Wide panel \u2014 TimesFM 2.5, Chronos-2, Sundial, Chronos-Bolt, Timer,\
 \ Time-MoE, Chronos-T5-Base"
 verbose: true
 verbose_series: 2
 allow_partial: false
corpus:
 enabled: true
 validation_report:../validation_large/validation_report.json
concepts:
 enabled: true
 top_k_series: 8
 n_null_directions: 16
 max_series: 64
 keep_forecasts: 3
 n_features_per_rule: 12
 describe: true
 describe_top_features: 8
 atlas_enabled: true
 atlas_min_cosine: 0.9
 atlas_min_members: 3
 atlas_n_null: 200
 atlas_family_min_members: 5
 atlas_family_assign_min: 0.5
 atlas_family_sil_tol: 0.02
 n_sae_seeds: 3
 transfer_p_method: exact
 transfer_fdr_q: 0.05
 transfer_max_redraw: 5000
 profiles_enabled: true
 profile_n_perm: 1000
 min_relative_reach: 0.001
 level_share_threshold: 0.9
 shared_input_enabled: true
 shared_input_n_null: 50
 agreement_max_tests_per_pair: 60
 agreement_dst_set: feature
 agreement_k_top_series: null
 agreement_partial_rung: false
 agreement_require_defined_firing: false
 cf_enabled: false
 cf_max_series: 64
 cf_doses:
 - 0.0
 - 0.5
 - 1.0
 - 1.5
 - 2.0
 cf_n_null: 2000
 cf_encode_min_spearman: 0.98
 n_registered: 20
 transfer_claim_mode: search
 n_registered_causal: 32
 n_registered_agreement_differs: 30