S&P 5007,659.44-1.09%Nasdaq26,140.03-2.15%Dow52,002.41-0.34%Nikkei 22565,324.29+1.39%Hang Seng24,186.83+0.52%EuroStoxx 506,204.23+0.58%Dollar (DXY)101.84-0.16%EUR/USD1.12-0.17%USD/JPY157.96-0.12%GBP/USD1.33+0.27%USD/CNY6.68-0.21%US 10Y yield5.10+1bpUS 5Y yield4.90+0bpGold4,181.10+0.26%Silver57.31+0.82%Copper6.57+0.95%Platinum1,633.10+1.39%Palladium1,118.60-0.21%WTI99.02+1.07%Brent109.86+3.72%Henry Hub3.12-3.71%Gasoline3.14-1.13%Heating oil4.72-2.53%Wheat660.50-1.42%Corn474.25-0.78%Soybeans1,261.25-0.14%Coffee305.55+3.65%Sugar20.85-1.33%Cocoa5,686.00-2.49%Cotton80.00-0.07%Lithium ETF64.05-2.32%Uranium ETF35.43-1.91%Rare Earths ETF54.23-2.71%Copper Miners ETF79.98-1.05%Bitcoin81,038.58-0.42%Ethereum2,363.30-1.52%Solana101.86-1.41%S&P 5007,659.44-1.09%Nasdaq26,140.03-2.15%Dow52,002.41-0.34%Nikkei 22565,324.29+1.39%Hang Seng24,186.83+0.52%EuroStoxx 506,204.23+0.58%Dollar (DXY)101.84-0.16%EUR/USD1.12-0.17%USD/JPY157.96-0.12%GBP/USD1.33+0.27%USD/CNY6.68-0.21%US 10Y yield5.10+1bpUS 5Y yield4.90+0bpGold4,181.10+0.26%Silver57.31+0.82%Copper6.57+0.95%Platinum1,633.10+1.39%Palladium1,118.60-0.21%WTI99.02+1.07%Brent109.86+3.72%Henry Hub3.12-3.71%Gasoline3.14-1.13%Heating oil4.72-2.53%Wheat660.50-1.42%Corn474.25-0.78%Soybeans1,261.25-0.14%Coffee305.55+3.65%Sugar20.85-1.33%Cocoa5,686.00-2.49%Cotton80.00-0.07%Lithium ETF64.05-2.32%Uranium ETF35.43-1.91%Rare Earths ETF54.23-2.71%Copper Miners ETF79.98-1.05%Bitcoin81,038.58-0.42%Ethereum2,363.30-1.52%Solana101.86-1.41%

MacroTerminal

updated 2026-10-18 21:43 UTCAccount

How this is built

Anyone can publish a dashboard. What is hard to copy is the method underneath — what gets measured, what gets thrown away, and what happens when we are wrong. Every figure on this page is read live from the systems it describes.

What runs, every day Grade D · descriptiveas of 2026-10-19

signal modules
130
terminal panels
74
healthy today
75
the rest serve last-good, flagged stale
tracked series
46,305
stored daily since 2026-09-04
Counted from the repository and the live build at page-generation time, not maintained by hand — if a module is deleted this number falls.
scalars
fieldvalue
signal modules130
panels74
healthy75
tracked series46,305
history values1,385,475
history days44
history from2026-09-04
history to2026-10-18

The calibration study — 121.7M resolved trades Grade C · counted distributionas of 2026-09-06

trades scored
121,671,888
trade-time Brier
0.1685
vs 0.25 coin-flip
calibration error
0.7%
ECE
· Across 121,671,888 resolved trades (both sides scored), Kalshi prices are remarkably well calibrated at trade time: ECE 0.7%, trade-time Brier 0.1685 vs the 0.25 coin-flip baseline.
· Longshot bias is real and asymmetric: takers buying 1-20c contracts average -1.3c EV per contract on the YES side and -1.1c on the NO side — the lottery-ticket buyer funds the market.
· The mirror image: takers of 81-99c favorites average -0.7c (YES) and -0.2c (NO) per contract — being boring pays roughly its keep.
· Longshots still pull volume: 1-20c contracts took 30.5% of taker contract volume in the latest quarter.
Both sides of every trade are scored (the taker at their price, the counterparty at its complement) against the market's actual resolution. The widely-quoted 'day before resolution' Brier of ~0.05 flatters a market by scoring it once the answer is nearly known; trade-time scoring is the honest number, and it is what we hold ourselves to as well. Full study →

The leaf is how well the Kalshi crowd is calibrated, measured over resolved trades. Its own multi-year record exists and is drawn below.

-1.18c6.24c13.64c2021-082023-042024-092026-01cal… 1.05c
The pane's own leaf over 51 months, 2021-08 to 2026-01: mean absolute distance in cents between the price the crowd paid and the rate those trades actually won. There are NO regime bands on this chart and that is deliberate - there is no regime state for a calibration curve, and shading it with a market state fitted to something else would assert a relationship this pane has not measured.
Point 1 carries no regime bands here, for two independent reasons and neither is an omission. FIRST, a calibration curve has no regime state: shading it with a market state fitted to something else would assert a relationship this pane has not measured. SECOND, it could not be shaded even if it had one - this leaf is MONTHLY, so five years of it is 60 points at most and this build holds 51, against charts.MIN_POINTS['dateline'] of 60. Below that floor the line is drawn by stepline, which takes no shading at all. The line above is the pane's own leaf over 51 months, 2021-08 to 2026-01, and it is real.
No analog table: no linked price for a calibration curve: a calibration error in cents is not linked to any traded price - it is a property of the crowd across thousands of unrelated markets. Point 2 of the History contract asks for the forward move of the price this leaf is linked to, and this leaf is not linked to one; no other series' episodes are shown in its place.

What changed since last week

leafthennowchangecompared with
brier trade time0.170.17unchanged2026-10-11
ece0.010.01unchanged2026-10-11
log loss0.500.50unchanged2026-10-11
longshot volume share latest0.310.31unchanged2026-10-11
n resolved markets3,722,314.003,722,314.00unchanged2026-10-11
n trades analyzed121,671,888.00121,671,888.00unchanged2026-10-11
0 of 6 headline leaves moved. A repeated value can mean the upstream had not published, not that nothing happened.
Price analogs are the part of this contract that is missing here, and the reason is printed above rather than left blank.
calibration mad by month · 51 rows
monthmad centsn
2021-081.452,282
2021-100.523,034
2021-110.392,012
2021-120.062,462
2022-010.905,906
2022-042.934,280
2022-051.99127,214
2022-061.96224,796
2022-072.45229,908
2022-081.12297,818
2022-092.02249,188
2022-101.80208,634
2022-112.46168,694
2022-122.06124,122
2023-012.7353,088
2023-022.88100,578
2023-031.23351,430
2023-041.71271,242
2023-052.52463,642
2023-061.35421,682
2023-072.79443,192
2023-082.22244,042
2023-091.59207,136
2023-101.52316,192
2023-112.01191,146
2023-122.43218,992
2024-013.01385,032
2024-021.63372,168
2024-031.88353,356
2024-041.63337,132
2024-051.31241,464
2024-062.11232,672
2024-071.98249,528
2024-081.61220,996
2024-093.67217,104
2024-1012.41870,024
2024-115.735,123,450
2024-120.922,016,926
2025-010.942,427,836
2025-022.353,364,986
2025-034.125,529,812
2025-043.443,930,924
2025-052.454,726,954
2025-062.945,838,492
2025-071.855,694,832
2025-081.595,908,696
2025-092.5813,549,064
2025-102.7019,697,290
2025-111.1215,550,418
2025-121.9554,292,896
2026-011.0586,603,532
scalars
fieldvalue
n trades analyzed121,671,888
brier trade time0.17
ece0.01
dataset/

The regime engine Grade D · descriptiveas of 2026-10-19

current state
calm / risk-on
since 2026-04-17
training days
4,296
cross-check
0.064
Markov P(high-vol)

A sparse statistical jump model: k-means clustering with an explicit penalty on switching states, so the label cannot flap day to day the way a plain hidden Markov model's does. Every day is labelled by online inference — using only data available up to that day. We do not publish an in-sample regime chart, because a curve fitted with hindsight describes the past rather than forecasting anything.

selected featureweight
ret_600.777
sortino_600.71
dd_200.662
iv_vix0.514
stress_volatility0.469
The model chooses its own inputs from a wider candidate set; those above are what survived. It is cross-checked against PELT change-point detection and a Markov-switching variance model — and that cross-check has already earned its keep by catching a labelling error of ours before publication.

The jump model labels 4,296 daily observations from 2009-09-18, but regime_model_cache.json caches the state statistics and not the daily labelled path, so this pane's own bands cannot be drawn. The bands below are the shared Markov filter's on the S&P 500. Its own published change-points: 2021-11-22, 2023-03-24, 2025-03-03, 2025-04-29.

3,3295,6978,0652021-10-292023-01-272024-04-262025-07-252026-10-16S&P 5… 7,659
Five years of S&P 500 - the series this regime state is computed on - with the high-volatility weeks shaded by the same two-state Markov filter the Regime tab draws. One state, one shading, every tab: the bands are that shared filter's, not a second state fitted for this pane. The filter puts 14 stretches of these five years in the high-volatility state, and those are the shaded ones.

The last 8 times this looked like today — and what S&P 500 did next

episodezlevelS&P 500 +5dS&P 500 +21d
2026-08-281.637,711.76+0.09%-0.36%
2026-08-071.867,757.64+0.36%-1.08%
2026-07-171.537,457.69-0.61%+3.85%
2026-06-261.517,354.02+2.49%+0.80%
2026-06-051.727,383.74+0.65%+2.08%
2026-04-291.657,135.95+3.21%+5.99%
2026-04-081.066,782.81+3.54%+8.17%
2026-02-231.336,837.75+0.64%-4.12%
z in [1.0, 2.0) · n=99 episodes · 21-session hit rate 73% · median +5d 0.50, +21d 1.83 · grade C
Bucketed on the S&P 500's own z, not on the jump model's state. Episodes when this series last sat in the same trailing-365-observation z bucket, with the forward 5- and 21-session move of S&P 500. 99 episodes at least 21 days apart; the table shows the most recent 8. A conditional distribution with its count, not a signal.

What changed since last week

leafthennowchangecompared with
current state0.000.00unchanged2026-10-11
jump penalty50.0050.00unchanged2026-10-11
median run days110.00111.00+12026-10-11
run length days122.00127.00+52026-10-11
2 of 4 headline leaves moved. A repeated value can mean the upstream had not published, not that nothing happened.
selected features
keyvalue
ret_600.78
sortino_600.71
dd_200.66
iv_vix0.51
stress_volatility0.47
sample
keyvalue
start2009-09-18
end2026-10-16
rows4,296
features17
scalars
fieldvalue
current labelcalm / risk-on
training days4,296
markov p high vol0.06

How we score ourselves Grade D · descriptiveas of 2026-10-19

our Brier
0.275
base-rate Brier
0.290
the bar to beat

Every forecast carries a hard, machine-checkable threshold and a deadline. At the deadline an official series decides it — there is no judgement call and no quiet deletion. Signals that make a mean-reversion or persistence claim are snapshotted and scored 28 days later on the same terms (398 states recorded, 39 scored so far).

A 28-day score means nothing if the model behind the claim can be refitted, inside those 28 days, on the window it is about to be scored against. So every scoreable claim now takes a sealed holdout over its own forward window: the seal carries a hash of the recorded claim, so the claim cannot be reworded afterwards, and any read of that window before the horizon raises and is written to an audit table whether or not the caller catches it. 0 taken, 0 opened on schedule, 0 refused reads on the record. Across the tracked signals as a family, Hansen's test for superior predictive ability asks whether the best of them beats a coin at all once you account for having looked at every one: not yet computable, because it has nothing to run on.

The benchmark is the unconditional base rate, which is the comparison that can actually embarrass us: beating a coin flip is not a result, beating the base rate is. The ledger →

47 open, 81 resolved. Our Brier 0.275 against a base-rate 0.290.

No five-year line: the leaf here is OUR OWN scoring record and it starts when we started keeping it. 81 forecast(s) resolved and 39 signal state(s) scored so far, from a record beginning 2026-09-04 — a Brier score needs resolutions before it is a number at all, let alone a series. This is the one pane on the site where a short history is the honest headline rather than a caveat.
No analog table: no analog episodes yet, and this is a clock rather than a refusal: 81 resolved bet(s) against a pre-registered floor of 50 (grade_t_thresholds.json). Below that floor this page may not call anything a track record, and printing eight episodes and a hit rate out of what has resolved would be exactly the claim the floor exists to prevent

What changed since last week

leafthennowchangecompared with
open › 0 › base rate0.670.67unchanged2026-10-11
open › 1 › base rate0.670.67unchanged2026-10-11
open › 2 › base rate0.290.29unchanged2026-10-11
open › 3 › base rate0.560.24-0.31972026-10-11
open › 4 › base rate0.490.23-0.2572026-10-11
recently resolved › 0 › base rate0.490.73+0.2342026-10-11
recently resolved › 1 › base rate0.390.66+0.27172026-10-11
recently resolved › 2 › base rate0.720.79+0.07612026-10-11
recently resolved › 3 › base rate0.720.62-0.10422026-10-11
recently resolved › 4 › base rate0.740.49-0.24982026-10-11
7 of 10 headline leaves moved. A repeated value can mean the upstream had not published, not that nothing happened.
Price analogs are the part of this contract that is missing here, and the reason is printed above rather than left blank.
scalars
fieldvalue
open47
resolved81
brier0.27
base rate brier0.29
signal states398
signal scored39

The lockbox — how we avoid fooling ourselves Grade D · descriptiveas of 2026-10-19

Our research loop lets an optimiser propose signal rules, but the code that grades them is immutable and the most recent years of data are held back where the optimiser cannot see them. A rule is only kept if it improves on data it was never shown.

held-out excess Sharpe
-5.12
negative = correctly rejected
deflated Sharpe (DSR)
0.00
P(true Sharpe > best-of-1 expectation)
overfit probability (PBO)
not computed
CSCV over the trial ledger; needs 8 trials
SPA p-value (Hansen)
not computed
the ledger holds one trial; a family of one has no maximum to test
lockbox window
2024-01-01 → 2025-03-05
never shown to the optimiser
We publish this because a research process that has never rejected anything is not a process. The figure above is a rejection: the rule looked good on the data it was fitted to and did not survive contact with the years it had never seen.
scalars
fieldvalue
lockbox excess sharpe-5.12
lockbox window2024-01-01..2025-03-05
lockbox dsr0.00
lockbox sr0 annualised0.00
n trials1
pbonot reported

What actually happens after a signal fires Grade C · counted distributionas of 2026-10-18 11:56 UTC

Cumulative abnormal return after each trigger, measured against the sample's own drift, with 95% confidence intervals from 2,000 bootstrap resamples. Only results whose interval excludes zero are listed — and the sample size is shown beside each, because a confidence interval on seven events is a hint while one on fifty is a finding.

triggermarkethorizonmean CAR95% CIthit ratenconfidence
Implied vol below realised (the premium inverts)S&P 500
since 2018-02-14
+1d-0.71%[-1.4, -0.2]-2.2736%53reasonable
Managed money at a 3y positioning extreme (long)Silver
since 2009-12-04
+5d-2.42%[-3.9, -1.0]-3.1127%22thin
Managed money at a 3y positioning extreme (long)Silver
since 2009-12-04
+10d-3.01%[-5.1, -0.7]-2.6427%22thin
Managed money at a 3y positioning extreme (long)Silver
since 2009-12-04
+20d-5.74%[-10.1, -1.9]-2.6123%22thin
Managed money at a 3y positioning extreme (short)EUR/USD
since 2010-07-20
+20d-1.22%[-2.5, -0.1]-2.032%19thin
Managed money at a 3y positioning extreme (long)JPY
since 2010-07-20
+10d-1.06%[-2.0, -0.2]-2.3425%16thin
Of 64 relationships tested, 6 clear the significance bar and only those with n≥30 are worth leaning on. The 2s10s inversion — the most widely repeated of these relationships — shows no significant effect at any horizon we measured, which is the sort of result that only appears if you look.

64 relationship(s) tested, 6 clearing the interval, as of 2026-10-18 11:56 UTC.

No five-year line: this panel's leaf is a cumulative abnormal return per TRIGGER, not a reading that exists on every date. 64 relationship(s) were tested and each publishes one number per horizon; there is no series joining them, and the events themselves are decades apart in places (the 2s10s inversion sample reaches back to 1978).

Implied vol below realised (the premium inverts) — S&P 500, and what ^GSPC did next

event+1d+5d+10d+20d
2026-06-30-0.24%-0.34%+0.72%-2.96%
2026-06-18-0.40%-2.10%+0.25%-1.26%
2026-04-09-0.14%+3.00%+3.83%+6.75%
2025-04-09-3.55%-3.50%+0.26%+3.23%
2025-03-19-0.24%+0.53%-0.32%-7.79%
2025-01-15-0.24%+2.68%+1.77%+2.25%
2024-11-29+0.22%+0.83%+0.06%-2.59%
2024-08-09-0.02%+3.73%+5.05%+1.86%
The 8 most recent of n=53 usable event(s) · hit rate at +20d 58.3%, over the 24 event(s) whose +20d window has closed and whose return is defined, not all 53 — not the 8 printed here · cumulative abnormal return, percent, re-based to 0 on the event day · grade C

Managed money at a 3y positioning extreme (long) — Silver, and what SI=F did next

event+1d+5d+10d+20d
2025-06-06+1.79%+0.52%-0.02%+0.88%
2025-03-14-0.37%-2.85%+0.95%-7.91%
2024-10-25+0.64%-3.40%-7.29%-7.82%
2024-09-20-1.36%+0.91%+2.63%+5.03%
2024-07-12-0.73%-6.18%-10.69%-12.41%
2024-05-31+1.09%-3.41%-3.37%-4.09%
2024-05-17+3.62%-2.52%-1.69%-6.45%
2024-04-12+1.35%+1.75%-4.03%-0.68%
The 8 most recent of n=22 usable event(s) · hit rate at +20d 22.7%, over the 22 event(s) whose +20d window has closed and whose return is defined — not the 8 printed here · cumulative abnormal return, percent, re-based to 0 on the event day · grade C

Managed money at a 3y positioning extreme (short) — EUR/USD, and what EURUSD=X did next

event+1d+5d+10d+20d
2026-06-26+0.21%+0.54%+0.64%+0.15%
2026-03-27-0.37%+0.06%+1.36%+1.30%
2025-01-31-1.45%-0.11%+0.63%+0.00%
2024-11-01-0.11%-0.83%-3.31%-2.99%
2024-04-19+0.13%+0.80%+0.84%+2.10%
2020-01-31+0.55%-0.41%-1.66%-0.27%
2019-12-30+0.18%-0.18%-0.58%-1.39%
2019-04-26+0.12%+0.33%+0.77%+0.67%
The 8 most recent of n=19 usable event(s) · hit rate at +20d 26.3%, over the 19 event(s) whose +20d window has closed and whose return is defined — not the 8 printed here · cumulative abnormal return, percent, re-based to 0 on the event day · grade C

Managed money at a 3y positioning extreme (long) — JPY, and what JPY=X did next

event+1d+5d+10d+20d
2026-09-18+0.58%+1.68%+1.10%+1.10%
2025-03-28-0.82%-3.13%-4.86%-6.00%
2025-02-28+0.50%-1.30%-1.43%+0.47%
2024-08-09-0.43%+1.03%-1.04%-3.02%
2020-11-16-0.13%-0.84%-0.61%-0.79%
2019-08-16+0.32%+0.34%+0.29%+1.87%
2019-08-02-0.80%-1.48%-1.30%-1.01%
2016-01-08-0.40%+0.54%+0.28%-0.66%
The 8 most recent of n=16 usable event(s) · hit rate at +20d 43.8%, over the 16 event(s) whose +20d window has closed and whose return is defined — not the 8 printed here · cumulative abnormal return, percent, re-based to 0 on the event day · grade C
4 of the 16 relationship(s) carrying dated events are shown: the ones whose sample-wide result cleared the confidence interval, which is the same cut the Read tab makes. The other 12 are on the Read tab with their counts and intervals. Each table is that relationship's OWN events, not a pooled sample — the triggers are different questions and pooling them would produce a hit rate for no relationship in particular.

What changed since last week

leafthennowchangecompared with
window › after20.0020.00unchanged2026-10-11
window › before10.0010.00unchanged2026-10-11
0 of 2 headline leaves moved. A repeated value can mean the upstream had not published, not that nothing happened.
results · 64 rows
eventsubjectn eventsfirst eventhorizon daysmean car pctmedian car pctci95 pctt stathit rate
Managed money at a 3y positioning extreme (long)Crude (WTI)152011-03-181not reportednot reportednot reportednot reported0.47
Managed money at a 3y positioning extreme (long)Crude (WTI)152011-03-185not reportednot reportednot reportednot reported0.40
Managed money at a 3y positioning extreme (long)Crude (WTI)152011-03-1810not reportednot reportednot reportednot reported0.40
Managed money at a 3y positioning extreme (long)Crude (WTI)152011-03-1820not reportednot reportednot reportednot reported0.47
Managed money at a 3y positioning extreme (long)Nat gas (HH)72009-12-0410.44-0.80-1.24, 3.070.340.29
Managed money at a 3y positioning extreme (long)Nat gas (HH)72009-12-0450.21-2.31-3.65, 4.780.090.43
Managed money at a 3y positioning extreme (long)Nat gas (HH)72009-12-04101.97-3.23-4.21, 10.020.490.43
Managed money at a 3y positioning extreme (long)Nat gas (HH)72009-12-0420-0.56-1.37-8.10, 7.77-0.130.43
Managed money at a 3y positioning extreme (long)Gold232009-12-0410.120.04-0.23, 0.460.650.52
Managed money at a 3y positioning extreme (long)Gold232009-12-045-0.55-0.54-1.69, 0.57-0.930.43
Managed money at a 3y positioning extreme (long)Gold232009-12-04100.321.41-0.95, 1.540.480.65
Managed money at a 3y positioning extreme (long)Gold232009-12-04200.78-0.39-1.59, 3.110.640.48
Managed money at a 3y positioning extreme (long)Silver222009-12-0410.01-0.12-0.63, 0.660.020.46
Managed money at a 3y positioning extreme (long)Silver222009-12-045-2.42-2.44-3.92, -0.99-3.110.27
Managed money at a 3y positioning extreme (long)Silver222009-12-0410-3.01-3.57-5.06, -0.69-2.640.27
Managed money at a 3y positioning extreme (long)Silver222009-12-0420-5.74-5.41-10.09, -1.93-2.610.23
Managed money at a 3y positioning extreme (long)Copper242009-12-0410.060.08-0.33, 0.520.290.54
Managed money at a 3y positioning extreme (long)Copper242009-12-0450.03-0.25-1.32, 1.460.040.46
Managed money at a 3y positioning extreme (long)Copper242009-12-04100.34-0.19-1.41, 2.160.370.42
Managed money at a 3y positioning extreme (long)Copper242009-12-04200.241.49-2.48, 3.010.170.54
Managed money at a 3y positioning extreme (long)EUR/USD232010-07-201-0.07-0.08-0.23, 0.08-0.840.43
Managed money at a 3y positioning extreme (long)EUR/USD232010-07-2050.080.01-0.28, 0.440.430.52
Managed money at a 3y positioning extreme (long)EUR/USD232010-07-20100.02-0.01-0.54, 0.660.060.48
Managed money at a 3y positioning extreme (long)EUR/USD232010-07-20200.30-0.15-0.39, 1.070.780.48
Managed money at a 3y positioning extreme (long)JPY162010-07-201-0.15-0.08-0.41, 0.10-1.110.44
Managed money at a 3y positioning extreme (long)JPY162010-07-205-0.22-0.02-0.98, 0.51-0.560.50
Managed money at a 3y positioning extreme (long)JPY162010-07-2010-1.06-0.83-2.00, -0.22-2.340.25
Managed money at a 3y positioning extreme (long)JPY162010-07-2020-0.83-0.66-1.86, 0.14-1.560.44
Managed money at a 3y positioning extreme (short)Crude (WTI)242010-09-241-0.050.05-0.82, 0.70-0.130.54
Managed money at a 3y positioning extreme (short)Crude (WTI)242010-09-2450.220.69-1.83, 2.180.210.54
Managed money at a 3y positioning extreme (short)Crude (WTI)242010-09-2410-0.090.30-2.46, 2.27-0.070.54
Managed money at a 3y positioning extreme (short)Crude (WTI)242010-09-24200.741.80-2.32, 3.500.500.58
Managed money at a 3y positioning extreme (short)Nat gas (HH)252010-10-1510.370.47-1.44, 2.180.390.56
Managed money at a 3y positioning extreme (short)Nat gas (HH)252010-10-1550.74-0.15-2.83, 3.600.440.48
Managed money at a 3y positioning extreme (short)Nat gas (HH)252010-10-1510-0.700.86-6.77, 4.79-0.240.52
Managed money at a 3y positioning extreme (short)Nat gas (HH)252010-10-1520-3.66-1.83-11.44, 2.84-0.960.44
Managed money at a 3y positioning extreme (short)Gold222011-12-2310.260.29-0.17, 0.681.180.59
Managed money at a 3y positioning extreme (short)Gold222011-12-2350.830.31-0.03, 1.731.830.64
Managed money at a 3y positioning extreme (short)Gold222011-12-23100.20-0.60-1.14, 1.620.280.46
Managed money at a 3y positioning extreme (short)Gold222011-12-2320-1.24-1.86-2.96, 0.56-1.330.27
Managed money at a 3y positioning extreme (short)Silver282009-12-0410.24-0.02-0.38, 0.880.740.50
Managed money at a 3y positioning extreme (short)Silver282009-12-0450.670.06-0.95, 2.470.770.50
Managed money at a 3y positioning extreme (short)Silver282009-12-04101.070.05-1.01, 3.210.970.50
Managed money at a 3y positioning extreme (short)Silver282009-12-04200.780.63-1.85, 3.330.580.54
Managed money at a 3y positioning extreme (short)Copper272009-12-041-0.30-0.18-0.68, 0.06-1.580.37
Managed money at a 3y positioning extreme (short)Copper272009-12-045-0.33-0.43-1.25, 0.62-0.690.44
Managed money at a 3y positioning extreme (short)Copper272009-12-0410-0.34-0.09-1.54, 0.79-0.560.48
Managed money at a 3y positioning extreme (short)Copper272009-12-0420-0.040.53-1.50, 1.35-0.050.52
Managed money at a 3y positioning extreme (short)EUR/USD192010-07-201-0.17-0.09-0.39, 0.05-1.460.37
Managed money at a 3y positioning extreme (short)EUR/USD192010-07-205-0.09-0.11-0.54, 0.39-0.390.47
Managed money at a 3y positioning extreme (short)EUR/USD192010-07-2010-0.280.09-1.18, 0.59-0.620.53
Managed money at a 3y positioning extreme (short)EUR/USD192010-07-2020-1.22-0.68-2.47, -0.12-2.000.32
Managed money at a 3y positioning extreme (short)JPY282010-07-2010.100.08-0.10, 0.320.970.57
Managed money at a 3y positioning extreme (short)JPY282010-07-2050.210.15-0.21, 0.670.970.50
Managed money at a 3y positioning extreme (short)JPY282010-07-2010-0.140.16-0.82, 0.55-0.410.54
Managed money at a 3y positioning extreme (short)JPY282010-07-20200.000.02-1.13, 1.290.000.50
2s10s crosses into inversionS&P 500441978-08-1810.030.03-0.18, 0.270.300.55
2s10s crosses into inversionS&P 500441978-08-185-0.13-0.25-0.68, 0.40-0.480.46
2s10s crosses into inversionS&P 500441978-08-18100.030.41-0.77, 0.780.070.59
2s10s crosses into inversionS&P 500441978-08-18200.371.04-0.72, 1.420.660.64
Implied vol below realised (the premium inverts)S&P 500532018-02-141-0.71-0.18-1.45, -0.17-2.270.36
Implied vol below realised (the premium inverts)S&P 500532018-02-145-0.680.53-1.93, 0.38-1.180.57
Implied vol below realised (the premium inverts)S&P 500532018-02-1410-0.230.81-1.75, 1.01-0.320.72
Implied vol below realised (the premium inverts)S&P 500532018-02-14200.101.95-1.54, 1.590.120.68
scalars
fieldvalue
n relationships64
n significant6

The reading pipeline Grade D · descriptiveas of 2026-10-19

articles ingested
5,263
discovered
5,838
the rest queue for later runs
Independent macro and finance writers are fetched twice daily, parsed to text and embedded so the commentary can cite what they actually argued rather than paraphrasing a headline. Where they disagree with each other, the weekly note names both sides. This week's →
scalars
fieldvalue
articles ingested5,263
discovered5,838

Through time — level, distribution, seasonality and range Grade C · counted distributionas of 2026-10-19 11:47 UTC

36 headline series across 10 desks, each read four ways: level against its own trailing mean, position in its full history, calendar-month seasonality, and an empirical 63-day range. The most stretched is Copper at the 100th percentile of 415 observations back to 1992-01-01. Only 3 of 36 show a calendar pattern larger than their own noise (Gasoline (Gulf), 2s10s slope, 5y breakeven) — the rest are shown with that stated, because a seasonal chart drawn on noise is the most convincing bad chart in finance. Behind the tabs: 18 distinct series decomposed with statsmodels 0.14.6, 18 with a two-state Markov filter and 18 with an analog episode table scored against a linked price.

level
5.10
pct · as of 2026-10-15
percentile
47
of 16,182 obs since 1962
percentile, 5y
99
of 1,248 obs
vs 13w mean
+0.19
level minus its own quarter
vs 52w mean
+0.67
level minus its own year
year on year
+1.08
same week last year
1.113.325.522021-10-292023-01-272024-04-262025-07-252026-10-16level 5.10MSTL t… 4.81
MSTL with periods 5 and 52 on 3381 weekly observations from 1962-01-05. The trend is drawn over the level and the remainder under it; nothing here is extrapolated. The trend explains 99% of the variance the remainder does not (Hyndman's trend strength); the seasonal component explains 14%.
-0.6560.0040.6652021-10-292023-01-272024-04-262025-07-252026-10-16remai… 0.101
What the trend and the seasonal do not account for, on the same dates. A remainder that trends is a decomposition that has missed something, which is why it is drawn rather than described.
0.402.755.102006-12-312011-12-312016-12-312021-12-312026-09-30quarte… 4.76UC tre… 4.76
Harvey–Jaeger local linear trend on the quarterly average level, 1986-12-31 to 2026-09-30 (160 quarters), smoothed: each quarter's estimate uses the quarters after it.
No cycle is drawn: the implied period is 1.5 years, pinned at the 1.5–12-year bound, so the data do not locate a cycle inside it; the cycle does not earn its parameters: BIC 168.1 with it against 164.8 for the trend alone; the two optimisers put the period at 1.5 and 4.9 years, so it is not identified (best period 1.5 y, damping 0.49). The trend above is the trend-only model, which the data prefer. The trend-only model assigns no variance to the irregular, so its trend coincides with the quarterly level: at this cadence the model finds nothing to separate from the path itself.
0.5215.84now
The whole history as a distribution, with today marked. Median 5.39 over 16,182 observations.
0%50%100%last 5 yearsnow · 48th0.5215.84
The same record read cumulatively: today sits at the 47 percentile of the full history (n=16,182) and the 99 of the last five years (n=1,248). A level extreme against forty years and ordinary against five is a different fact from one that is extreme against both.
+0.0Jan+0.0Feb+0.0Mar+0.1Apr-0.0May-0.0Jun+0.0Jul-0.0Aug-0.0Sep-0.0Oct-0.1Nov+0.0Decno significant pattern~65 yrs/bar
The spread of monthly means is no larger than the noise — this series has no seasonal worth trading. Kruskal-Wallis across calendar months; the corner figure is the average number of years behind each bar.
-0.2030.0290.2622021-10-292023-01-272024-04-262025-07-252026-10-16seaso… 0.231
The MSTL seasonal component itself, at periods 5 and 52. Drawn rather than summarised because a seasonal that changes shape year to year is not one a reader can plan against, and the chart shows that where a single average would hide it.
-0.1Jan-0.0Feb-0.0Mar+0.0Apr+0.1May+0.0Jun+0.0Jul+0.0Aug+0.0Sep-0.0Oct-0.1Nov-0.1Dec~282 yrs/bar
Seasonal diagnostic: The STL seasonal component's own mean at each calendar month, across 65 years, against the year-to-year standard deviation at that same month (ratio 0.44). The year-to-year noise at these calendar months is as large as the mean seasonal effect itself, so the shape should be read as unstable, not as a repeating pattern.
monthmarket holidaysCrude printsGas printsoption expiriesquad-witchings
Jan194543100
Feb104041100
Mar345451010
Apr74242100
May104343100
Jun445451010
Jul104443100
Aug04545100
Sep1042431010
Oct04444100
Nov104443100
Dec1043441010
Event days per calendar month, 2016–2025. Every column is derived from a published rule, so it was knowable years ahead: the whole table is stamped available_at 1900-01-01, never the build date. Dropped, because they are announced rather than derived and the schedule loaded here does not cover the window: FOMC decisions, CPI prints.
0.231.77current 63d range
The high-minus-low width of the trailing 88-observation window (the same 63-day horizon as the band above), against the last 1,248 such windows over five years. Today's window sits at the 71 percentile of its own five-year range history; the 10th-to-90th of that history is 0.45 to 1.37 (level). A description of how wide the market has recently traded, not a target.
5.844.301.555.10
Where this has historically gone over 63 trading days: 10th to 90th percentile of 16,094 realised moves, applied to today. A base rate for sizing, not a forecast.
downside (10th)
4.30
-0.80
median path
5.13
50th percentile
upside (90th)
5.84
+0.74
Markov-filtered mean
+0.001
per week, state-weighted
The band above is unconditional: it does not know what state we are in. The filtered mean beside it does — it is the two-state Markov model's mean weighted by today's filtered probability (15 of the high-volatility state). The two disagree when the current state is unusual, which is the point of printing both.
state
low volatility
since 2025-07-04
P(high vol) now
15
filtered, this week
persisted
68
weeks (476 days)
P(exit in 4w)
0.0%
0 of 3 spells this old
spells on record
49
24 completed in this state
-4%51%106%2021-10-292023-01-272024-04-262025-07-252026-10-16P(high … 15%
Two-state Markov-switching model with switching variance, fitted on 1300 weekly change in level. The line is the FILTERED probability of the high-volatility state — a statement about weeks that have happened, not a forecast. Exit counts are empirical spell counts, not the model's expected durations.
1.113.325.522021-10-292023-01-272024-04-262025-07-252026-10-16level 5.10
The same weeks on the level: shaded stretches are the ones the filter puts in the high-volatility state. Mean +0.002 per week at 0.086 standard deviation in the calm state against -0.001 at 0.147 in the volatile one.
Markov-switching AR(1) (MarkovAutoregression(k_regimes=2, order=1, switching_ar=False, switching_variance=True), 779 periods since 2011-11-18): low volatility now, filtered p(high) 0.29; AR(1) -0.092; sd 0.145 high against 0.084 low. The two Markov filters put the same state on 96% of 260 common periods; the MarkovRegression reads low volatility now. The filtered probability is about periods that have happened.
level
101.91
usd · as of 2026-10-14
percentile
95
of 9,523 obs since 1986
percentile, 5y
92
of 1,247 obs
vs 13w mean
+10.17
level minus its own quarter
vs 52w mean
+21.20
level minus its own year
year on year
+74.8%
same week last year
52.7588.66124.582021-10-292023-01-272024-04-262025-07-252026-10-16level 101.91MSTL … 95.94
MSTL with periods 5 and 52 on 2126 weekly observations from 1986-01-03. The trend is drawn over the level and the remainder under it; nothing here is extrapolated. The trend explains 96% of the variance the remainder does not (Hyndman's trend strength); the seasonal component explains 16%.
-17.4794.46726.4132021-10-292023-01-272024-04-262025-07-252026-10-16remai… 4.481
What the trend and the seasonal do not account for, on the same dates. A remainder that trends is a decomposition that has missed something, which is why it is drawn rather than described.
3.2424.0754.9082006-12-312011-12-312016-12-312021-12-312026-09-30quart… 4.467UC tr… 4.467
Harvey–Jaeger local linear trend on the quarterly average log level, 1986-12-31 to 2026-09-30 (160 quarters), smoothed: each quarter's estimate uses the quarters after it.
No cycle is drawn: the cycle does not earn its parameters: BIC -109.0 with it against -126.7 for the trend alone (best period 3.2 y, damping 0.81). The trend above is the trend-only model, which the data prefer. The trend-only model assigns no variance to the irregular, so its trend coincides with the quarterly level: at this cadence the model finds nothing to separate from the path itself.
-36.98145.31now
The whole history as a distribution, with today marked. Median 47.11 over 9,523 observations.
0%50%100%last 5 yearsnow · 94th-36.98145.31
The same record read cumulatively: today sits at the 95 percentile of the full history (n=9,523) and the 92 of the last five years (n=1,247). A level extreme against forty years and ordinary against five is a different fact from one that is extreme against both.
+0.8Jan-0.2Feb+1.4Mar+3.0Apr+1.1May+0.7Jun+1.1Jul+0.6Aug+1.1Sep-2.2Oct-3.6Nov+0.3Decno significant pattern~41 yrs/bar
The spread of monthly means is no larger than the noise — this series has no seasonal worth trading. Kruskal-Wallis across calendar months; the corner figure is the average number of years behind each bar.
-10.7211.28313.2872021-10-292023-01-272024-04-262025-07-252026-10-16seas… -0.781
The MSTL seasonal component itself, at periods 5 and 52. Drawn rather than summarised because a seasonal that changes shape year to year is not one a reader can plan against, and the chart shows that where a single average would hide it.
-1.8Jan-1.6Feb+0.1Mar+1.1Apr+1.5May+1.6Jun+1.6Jul+1.0Aug+0.7Sep+0.4Oct-1.5Nov-3.1Dec~177 yrs/bar
Seasonal diagnostic: The STL seasonal component's own mean at each calendar month, across 41 years, against the year-to-year standard deviation at that same month (ratio 0.71). The year-to-year noise at these calendar months is as large as the mean seasonal effect itself, so the shape should be read as unstable, not as a repeating pattern.
monthmarket holidaysCrude printsGas printsoption expiriesquad-witchings
Jan194543100
Feb104041100
Mar345451010
Apr74242100
May104343100
Jun445451010
Jul104443100
Aug04545100
Sep1042431010
Oct04444100
Nov104443100
Dec1043441010
Event days per calendar month, 2016–2025. Every column is derived from a published rule, so it was knowable years ahead: the whole table is stamped available_at 1900-01-01, never the build date. Dropped, because they are announced rather than derived and the schedule loaded here does not cover the window: FOMC decisions, CPI prints.
14.16106.67current 63d range
The high-minus-low width of the trailing 88-observation window (the same 63-day horizon as the band above), against the last 1,247 such windows over five years. Today's window sits at the 83 percentile of its own five-year range history; the 10th-to-90th of that history is 19.95 to 64.63 (% of level). A description of how wide the market has recently traded, not a target.
133.0580.6683.50101.91
Where this has historically gone over 63 trading days: 10th to 90th percentile of 9,435 realised moves, applied to today. A base rate for sizing, not a forecast.
downside (10th)
80.66
-20.9%
median path
104.75
50th percentile
upside (90th)
133.05
+30.6%
Markov-filtered mean
-0.419
per week, state-weighted
The band above is unconditional: it does not know what state we are in. The filtered mean beside it does — it is the two-state Markov model's mean weighted by today's filtered probability (38 of the high-volatility state). The two disagree when the current state is unusual, which is the point of printing both.
state
low volatility
since 2026-10-16
P(high vol) now
38
filtered, this week
persisted
1
weeks (7 days)
P(exit in 4w)
35.3%
6 of 17 spells this old
spells on record
34
17 completed in this state
-6%50%106%2021-10-292023-01-272024-04-262025-07-252026-10-16P(high … 38%
Two-state Markov-switching model with switching variance, fitted on 1300 weekly % log change. The line is the FILTERED probability of the high-volatility state — a statement about weeks that have happened, not a forecast. Exit counts are empirical spell counts, not the model's expected durations.
52.7588.66124.582021-10-292023-01-272024-04-262025-07-252026-10-16level 101.91
The same weeks on the level: shaded stretches are the ones the filter puts in the high-volatility state. Mean +0.274 per week at 4.304 standard deviation in the calm state against -1.569 at 15.303 in the volatile one.
Markov-switching AR(1) (MarkovAutoregression(k_regimes=2, order=1, switching_ar=False, switching_variance=True), 779 periods since 2011-11-18): low volatility now, filtered p(high) 0.43; AR(1) +0.004; sd 14.405 high against 4.119 low. The two Markov filters put the same state on 97% of 260 common periods; the MarkovRegression reads low volatility now. The filtered probability is about periods that have happened.
level
121.60
idx · as of 2026-10-09
percentile
91
of 5,208 obs since 2006
percentile, 5y
65
of 1,250 obs
vs 13w mean
+2.00
level minus its own quarter
vs 52w mean
+1.88
level minus its own year
year on year
+0.4%
same week last year
112.70121.77130.842021-10-222023-01-202024-04-192025-07-182026-10-09level 121.60MSTL… 119.63
MSTL with periods 5 and 52 on 1084 weekly observations from 2006-01-06. The trend is drawn over the level and the remainder under it; nothing here is extrapolated. The trend explains 98% of the variance the remainder does not (Hyndman's trend strength); the seasonal component explains 11%.
-4.0811.0496.1802021-10-222023-01-202024-04-192025-07-182026-10-09remai… 0.436
What the trend and the seasonal do not account for, on the same dates. A remainder that trends is a decomposition that has missed something, which is why it is drawn rather than described.
4.4414.6564.8722006-12-312011-12-312016-12-312021-12-312026-09-30quart… 4.784UC tr… 4.784
Harvey–Jaeger local linear trend on the quarterly average log level, 2006-03-31 to 2026-09-30 (83 quarters), smoothed: each quarter's estimate uses the quarters after it.
No cycle is drawn: the cycle does not earn its parameters: BIC -328.5 with it against -348.1 for the trend alone (best period 2.6 y, damping 0.82). The trend above is the trend-only model, which the data prefer. The trend-only model assigns no variance to the irregular, so its trend coincides with the quarterly level: at this cadence the model finds nothing to separate from the path itself.
85.47130.04now
The whole history as a distribution, with today marked. Median 110.25 over 5,208 observations.
0%50%100%last 5 yearsnow · 90th85.47130.04
The same record read cumulatively: today sits at the 91 percentile of the full history (n=5,208) and the 65 of the last five years (n=1,250). A level extreme against forty years and ordinary against five is a different fact from one that is extreme against both.
+0.0Jan+0.2Feb-0.1Mar-0.6Apr+0.4May+0.0Jun-0.4Jul+0.6Aug+0.4Sep+0.4Oct+0.3Nov-0.3Decno significant pattern~21 yrs/bar
The spread of monthly means is no larger than the noise — this series has no seasonal worth trading. Kruskal-Wallis across calendar months; the corner figure is the average number of years behind each bar.
-1.2580.3471.9522021-10-222023-01-202024-04-192025-07-182026-10-09seaso… 1.780
The MSTL seasonal component itself, at periods 5 and 52. Drawn rather than summarised because a seasonal that changes shape year to year is not one a reader can plan against, and the chart shows that where a single average would hide it.
+0.3Jan+0.2Feb+0.4Mar-0.3Apr-0.4May-0.3Jun-0.5Jul-0.5Aug-0.3Sep+0.3Oct+0.6Nov+0.5Dec~90 yrs/bar
Seasonal diagnostic: The STL seasonal component's own mean at each calendar month, across 21 years, against the year-to-year standard deviation at that same month (ratio 0.91). The year-to-year noise at these calendar months is as large as the mean seasonal effect itself, so the shape should be read as unstable, not as a repeating pattern.
monthmarket holidaysCrude printsGas printsoption expiriesquad-witchings
Jan194543100
Feb104041100
Mar345451010
Apr74242100
May104343100
Jun445451010
Jul104443100
Aug04545100
Sep1042431010
Oct04444100
Nov104443100
Dec1043441010
Event days per calendar month, 2016–2025. Every column is derived from a published rule, so it was knowable years ahead: the whole table is stamped available_at 1900-01-01, never the build date. Dropped, because they are announced rather than derived and the schedule loaded here does not cover the window: FOMC decisions, CPI prints.
2.028.80current 63d range
The high-minus-low width of the trailing 88-observation window (the same 63-day horizon as the band above), against the last 1,250 such windows over five years. Today's window sits at the 38 percentile of its own five-year range history; the 10th-to-90th of that history is 2.63 to 6.89 (% of level). A description of how wide the market has recently traded, not a target.
127.68116.72113.67121.60
Where this has historically gone over 63 trading days: 10th to 90th percentile of 5,120 realised moves, applied to today. A base rate for sizing, not a forecast.
downside (10th)
116.72
-4.0%
median path
121.75
50th percentile
upside (90th)
127.68
+5.0%
Markov-filtered mean
-0.001
per week, state-weighted
The band above is unconditional: it does not know what state we are in. The filtered mean beside it does — it is the two-state Markov model's mean weighted by today's filtered probability (1 of the high-volatility state). The two disagree when the current state is unusual, which is the point of printing both.
state
low volatility
since 2020-11-20
P(high vol) now
1
filtered, this week
persisted
308
weeks (2156 days)
P(exit in 4w)
not countable
0 of 0 spells this old
spells on record
40
20 completed in this state
-2%20%41%2021-10-222023-01-202024-04-192025-07-182026-10-09P(high v… 1%
Two-state Markov-switching model with switching variance, fitted on 1083 weekly % log change. The line is the FILTERED probability of the high-volatility state — a statement about weeks that have happened, not a forecast. Exit counts are empirical spell counts, not the model's expected durations.
112.70121.77130.842021-10-222023-01-202024-04-192025-07-182026-10-09level 121.60
The same weeks on the level: shaded stretches are the ones the filter puts in the high-volatility state. Mean -0.004 per week at 0.642 standard deviation in the calm state against +0.266 at 1.559 in the volatile one.
Markov-switching AR(1) (MarkovAutoregression(k_regimes=2, order=1, switching_ar=False, switching_variance=True), 779 periods since 2011-11-11): low volatility now, filtered p(high) 0.08; AR(1) +0.045; sd 1.024 high against 0.577 low. The two Markov filters put the same state on 90% of 260 common periods; the MarkovRegression reads low volatility now. The filtered probability is about periods that have happened.
level
16.46
pct · as of 2026-10-15
percentile
43
of 9,296 obs since 1990
percentile, 5y
38
of 1,287 obs
vs 13w mean
+1.08
level minus its own quarter
vs 52w mean
-1.43
level minus its own year
year on year
-4.32
same week last year
9.9328.6247.312021-10-292023-01-272024-04-262025-07-252026-10-16level 16.46MSTL … 16.49
MSTL with periods 5 and 52 on 1920 weekly observations from 1990-01-05. The trend is drawn over the level and the remainder under it; nothing here is extrapolated. The trend explains 67% of the variance the remainder does not (Hyndman's trend strength); the seasonal component explains 16%.
-9.6183.94217.5032021-10-292023-01-272024-04-262025-07-252026-10-16rema… -2.062
What the trend and the seasonal do not account for, on the same dates. A remainder that trends is a decomposition that has missed something, which is why it is drawn rather than described.
7.4134.4661.502006-12-312011-12-312016-12-312021-12-312026-09-30quart… 16.06UC tr… 16.50
Harvey–Jaeger local linear trend on the quarterly average level, 1990-03-31 to 2026-09-30 (147 quarters), smoothed: each quarter's estimate uses the quarters after it.
No cycle is drawn: the implied period is 1.5 years, pinned at the 1.5–12-year bound, so the data do not locate a cycle inside it (best period 1.5 y, damping 0.59). The trend above is the trend-only model, which the data prefer.
9.1482.69now
The whole history as a distribution, with today marked. Median 17.56 over 9,296 observations.
0%50%100%last 5 yearsnow · 43th9.1482.69
The same record read cumulatively: today sits at the 43 percentile of the full history (n=9,296) and the 38 of the last five years (n=1,287). A level extreme against forty years and ordinary against five is a different fact from one that is extreme against both.
+0.3Jan+0.8Feb-0.4Mar-1.2Apr-0.7May-0.2Jun+0.4Jul+1.4Aug+1.5Sep+0.3Oct-1.9Nov-0.4Decno significant pattern~37 yrs/bar
The spread of monthly means is no larger than the noise — this series has no seasonal worth trading. Kruskal-Wallis across calendar months; the corner figure is the average number of years behind each bar.
-5.3232.1279.5772021-10-292023-01-272024-04-262025-07-252026-10-16seaso… 1.906
The MSTL seasonal component itself, at periods 5 and 52. Drawn rather than summarised because a seasonal that changes shape year to year is not one a reader can plan against, and the chart shows that where a single average would hide it.
-0.3Jan+0.1Feb+1.0Mar-0.1Apr-1.0May-1.1Jun-1.7Jul-0.2Aug+0.8Sep+2.1Oct+0.8Nov-0.4Dec~160 yrs/bar
Seasonal diagnostic: The STL seasonal component's own mean at each calendar month, across 37 years, against the year-to-year standard deviation at that same month (ratio 0.62). The year-to-year noise at these calendar months is as large as the mean seasonal effect itself, so the shape should be read as unstable, not as a repeating pattern.
monthmarket holidaysCrude printsGas printsoption expiriesquad-witchings
Jan194543100
Feb104041100
Mar345451010
Apr74242100
May104343100
Jun445451010
Jul104443100
Aug04545100
Sep1042431010
Oct04444100
Nov104443100
Dec1043441010
Event days per calendar month, 2016–2025. Every column is derived from a published rule, so it was knowable years ahead: the whole table is stamped available_at 1900-01-01, never the build date. Dropped, because they are announced rather than derived and the schedule loaded here does not cover the window: FOMC decisions, CPI prints.
3.7839.56current 63d range
The high-minus-low width of the trailing 88-observation window (the same 63-day horizon as the band above), against the last 1,287 such windows over five years. Today's window sits at the 3 percentile of its own five-year range history; the 10th-to-90th of that history is 7.37 to 26.63 (level). A description of how wide the market has recently traded, not a target.
24.108.9916.2616.46
Where this has historically gone over 63 trading days: 10th to 90th percentile of 9,208 realised moves, applied to today. A base rate for sizing, not a forecast.
downside (10th)
8.99
-7.47
median path
15.86
50th percentile
upside (90th)
24.10
+7.64
Markov-filtered mean
-0.131
per week, state-weighted
The band above is unconditional: it does not know what state we are in. The filtered mean beside it does — it is the two-state Markov model's mean weighted by today's filtered probability (4 of the high-volatility state). The two disagree when the current state is unusual, which is the point of printing both.
state
low volatility
since 2026-06-19
P(high vol) now
4
filtered, this week
persisted
18
weeks (126 days)
P(exit in 4w)
11.1%
2 of 18 spells this old
spells on record
172
86 completed in this state
-3%51%106%2021-10-292023-01-272024-04-262025-07-252026-10-16P(high v… 4%
Two-state Markov-switching model with switching variance, fitted on 1300 weekly change in level. The line is the FILTERED probability of the high-volatility state — a statement about weeks that have happened, not a forecast. Exit counts are empirical spell counts, not the model's expected durations.
9.9328.6247.312021-10-292023-01-272024-04-262025-07-252026-10-16level 16.46
The same weeks on the level: shaded stretches are the ones the filter puts in the high-volatility state. Mean -0.155 per week at 1.676 standard deviation in the calm state against +0.402 at 5.715 in the volatile one.
Markov-switching AR(1) (MarkovAutoregression(k_regimes=2, order=1, switching_ar=False, switching_variance=True), 779 periods since 2011-11-18): low volatility now, filtered p(high) 0.06; AR(1) -0.119; sd 5.678 high against 1.626 low. The two Markov filters put the same state on 95% of 260 common periods; the MarkovRegression reads low volatility now. The filtered probability is about periods that have happened.

10y Treasury · last 5.10 as of 2026-10-15 · 16,182 observations from 1962-01-02

1.113.325.522021-10-292023-01-272024-04-262025-07-252026-10-1610y Tr… 5.10
Five years of 10y Treasury with the high-volatility weeks shaded, from the same two-state filter the Regime tab draws. One state, one shading, every tab.

The last 8 times this looked like today — and what S&P 500 did next

episodezlevelS&P 500 +5dS&P 500 +21d
2026-09-143.134.97+1.90%+2.43%
2026-08-242.154.70+0.43%+1.46%
2026-08-032.434.70+2.01%+0.41%
2026-07-132.094.62-0.96%+2.83%
2026-05-192.234.67+2.25%+0.90%
2023-10-122.304.70-1.65%+1.51%
2023-09-212.114.49-0.70%-2.44%
2022-11-082.164.14+4.27%+2.76%
z in [2.0, 99.0) · n=141 episodes · 21-session hit rate 10% · median +5d 0.00, +21d 0.00 · grade C
Episodes when this series last sat in the same trailing-365-observation z bucket, with the forward 5- and 21-session move of S&P 500. 141 episodes at least 21 days apart; the table shows the most recent 8. A conditional distribution with its count, not a signal.

WTI crude · last 101.91 as of 2026-10-14 · 9,523 observations from 1986-01-02

52.7588.66124.582021-10-292023-01-272024-04-262025-07-252026-10-16WTI … 101.91
Five years of WTI crude with the high-volatility weeks shaded, from the same two-state filter the Regime tab draws. One state, one shading, every tab.

The last 8 times this looked like today — and what WTI crude did next

episodezlevelWTI crude +5dWTI crude +21d
2026-09-091.6097.26+6.54%+1.03%
2026-08-191.0287.28-4.38%+18.25%
2026-07-211.0186.04-5.96%+1.44%
2026-05-261.9997.63-0.16%-26.85%
2026-04-171.7285.91+14.56%+30.66%
2026-03-031.5874.48+12.39%+36.82%
2024-07-011.1384.70-1.26%-10.07%
2024-04-231.0484.17-0.81%-5.96%
z in [1.0, 2.0) · n=224 episodes · 21-session hit rate 56% · median +5d -0.16, +21d 1.41 · grade C
Episodes when this series last sat in the same trailing-365-observation z bucket, with the forward 5- and 21-session move of WTI crude. 224 episodes at least 21 days apart; the table shows the most recent 8. A conditional distribution with its count, not a signal.

Broad dollar · last 121.60 as of 2026-10-09 · 5,208 observations from 2006-01-02

112.70121.77130.842021-10-222023-01-202024-04-192025-07-182026-10-09Broa… 121.60
Five years of Broad dollar with the high-volatility weeks shaded, from the same two-state filter the Regime tab draws. One state, one shading, every tab.

The last 8 times this looked like today — and what Broad dollar did next

episodezlevelBroad dollar +5dBroad dollar +21d
2025-03-311.16126.71+0.10%-3.25%
2025-03-101.07126.27-0.71%+0.47%
2025-02-141.53127.15-0.01%-1.40%
2025-01-241.89127.46+0.80%-0.21%
2024-10-311.95124.80-0.02%+1.43%
2024-10-101.11123.10+0.83%+2.02%
2024-09-031.01122.78+0.18%-0.98%
2024-08-051.55123.58-0.29%-0.65%
z in [1.0, 2.0) · n=100 episodes · 21-session hit rate 45% · median +5d -0.01, +21d -0.11 · grade C
Episodes when this series last sat in the same trailing-365-observation z bucket, with the forward 5- and 21-session move of Broad dollar. 100 episodes at least 21 days apart; the table shows the most recent 8. A conditional distribution with its count, not a signal.

VIX · last 16.46 as of 2026-10-15 · 9,296 observations from 1990-01-02

9.9328.6247.312021-10-292023-01-272024-04-262025-07-252026-10-16VIX 16.46
Five years of VIX with the high-volatility weeks shaded, from the same two-state filter the Regime tab draws. One state, one shading, every tab.

The last 8 times this looked like today — and what S&P 500 did next

episodezlevelS&P 500 +5dS&P 500 +21d
2026-09-10-0.1317.84+0.61%+2.90%
2026-07-290.3020.66+5.57%+5.67%
2026-07-08-0.4716.90+1.20%+3.04%
2026-06-110.0619.44+1.44%+2.45%
2026-05-20-0.3517.44+1.18%+0.91%
2026-04-29-0.0418.81+3.21%+5.99%
2026-04-080.4221.04+3.54%+8.17%
2026-02-25-0.1217.93-1.10%-6.75%
z in [-0.5, 0.5) · n=342 episodes · 21-session hit rate 21% · median +5d 0.00, +21d 0.00 · grade C
Episodes when this series last sat in the same trailing-365-observation z bucket, with the forward 5- and 21-session move of S&P 500. 342 episodes at least 21 days apart; the table shows the most recent 8. A conditional distribution with its count, not a signal.

What changed since last week

leafthennowchangecompared with
horizon days63.0063.00unchanged2026-10-11
n series36.0036.00unchanged2026-10-11
n panels18.0018.00unchanged2026-10-11
0 of 3 headline leaves moved. A repeated value can mean the upstream had not published, not that nothing happened.
ACF of the remainder · 4 rows
seriesnlags outside 95 bandfirst lag outsideconf95readingSTL remainder p: Ljung-Box(24) · Jarque-Bera · ARCH-LM(4)AutoReg (BIC lags, persistence) and its residual p, same three testsfit seconds
10y Treasury2602110.12Autocorrelation of the MSTL remainder over 24 lags, with the 95% band at ±0.122,0.000 · 0.000 · 0.000lags none, persistence +0.00; no AutoReg residual: BIC selected no lag0.5
WTI crude2601810.12Autocorrelation of the MSTL remainder over 24 lags, with the 95% band at ±0.122,0.000 · 0.000 · 0.000lags 1, 2, persistence -0.07; 0.057 · 0.000 · 0.0001.4
Broad dollar2602110.12Autocorrelation of the MSTL remainder over 24 lags, with the 95% band at ±0.122,0.000 · 0.000 · 0.000lags none, persistence +0.00; no AutoReg residual: BIC selected no lag0.4
VIX260410.12Autocorrelation of the MSTL remainder over 24 lags, with the 95% band at ±0.122,0.000 · 0.000 · 0.000lags 1, persistence -0.11; 0.005 · 0.000 · 0.0000.5
Harvey-Jaeger style structural check: the autocorrelation of the decomposition's remainder against a 95% band. Lags outside the band mean the trend and seasonal have not taken everything systematic out of the series. This is Method content. It is not a forecast and nothing is extrapolated from it.

cumulative abnormal return vs the sample's own mean drift, aligned by DATE to the nearest session; only the first day of each episode counts as an event; 95% CIs from 2,000 bootstrap resamples. Events are rebuilt from the underlying official series, so these are historical relationships rather than a record of calls we published. Window 10 sessions before, 20 after. As of 2026-10-18 11:56 UTC. Floor for a conditional claim: 20 episodes (grade_t_thresholds.json).

2s10s crosses into inversion — S&P 500 · n=44 · earliest 1978-08-18
horizonnmeanmedian95% CIthit rateCI
+1d44+0.03%+0.03%[-0.2, +0.3]0.355%straddles zero
+5d44-0.13%-0.25%[-0.7, +0.4]-0.4846%straddles zero
+10d44+0.03%+0.41%[-0.8, +0.8]0.0759%straddles zero
+20d44+0.37%+1.04%[-0.7, +1.4]0.6664%straddles zero
series · 4 rows
labelunitkindlastas offirst obsn obsma 13wvs 13w
10y Treasurypctlevel5.102026-10-151962-01-0216,1824.910.19
WTI crudeusdprice101.912026-10-141986-01-029,52391.7410.17
Broad dollaridxprice121.602026-10-092006-01-025,208119.602.00
VIXpctlevel16.462026-10-151990-01-029,29615.381.08
scalars
fieldvalue
horizon days63
n series36
statsmodels version0.14.6
statsmodels pinned0.14.6
statsmodels errornot reported
4 rows and 1 field withheld at this tier: absent from the page, not hidden in it.

What a 31-day filing lag is worth, measured Grade D · descriptiveas of 2026-09-11 18:01 UTC

A fundamental exists on the day a quarter ends and becomes public on the day the filing is submitted, a median of 31 days later in this universe. A backtest that stamps the number at the period end therefore trades on it for about a third of every quarter before anyone could have seen it, and is paid for the price move that happened while the market was still waiting. Four of the five quantamental repositories this work draws on do exactly that and none of them measures it. So we run the same earnings-yield quintile long-short twice over 147 names and 155 weekly rebalances, identical in every respect but one: which vintage of the fundamental each arm may see.

cross-section on unfiled data
32%
on a typical rebalance
signal displacement
0.18 sd
cross-sectional, on the names affected
Sharpe manufactured
+0.20
and +2.4 points of return a year
armannualised Sharpe95% bootstrap CIdeflated Sharpe
A: filing-stamped (what we publish)+0.18[-0.96, +1.26]0.57
B: period-end-stamped (the lookahead)+0.38[-0.75, +1.45]0.70
The exposure is what is measured without ambiguity: a third of the cross-section, a third of the time, priced against a filing nobody had. The Sharpe gap is the more quotable number and the weaker one, and it is reported with the test that refuses to bless it: Hansen's SPA on the difference returns p 0.15, so 155 weekly rebalances cannot separate a fifth of a Sharpe point from noise. Neither arm is traded and neither is a forecast; arm B is a deliberate error kept in the code so its size can be measured instead of assumed.

147 names, 155 weekly rebalances, 2023-09-15 to 2026-08-28. 32.1% of the cross-section on unfiled data on a typical rebalance.

-4.241.286.52025-07-112025-10-242026-02-062026-05-222026-08-28unfiled… 1.4
The percentage of the 147-name cross-section whose fundamental had not been filed yet at each of the 60 stored weekly rebalances — the lookahead this diagnostic measures, as it actually moved. It swings with the filing calendar rather than with the market, which is the point: the error is seasonal and largest right after a quarter ends. Shaded weeks are where the site's shared four-method regime vote was split rather than unanimous — 21.7% of the 60 weeks shown.
No analog table: point 2 does not apply as written and is not forced. There is no linked market price here: both arms are the SAME long-short portfolio and the only forward quantity is the difference between them, so a "5d/21d move" would have to mean 5 and 21 weekly REBALANCES of our own diagnostic rather than sessions of anything traded. With 60 stored rebalances a 21-step forward window leaves a handful of non-overlapping episodes, under the 20 this site pre-registered as the floor for a conditional rate — so the episodes would come with a withheld hit rate and a misleading column heading. The arm-level Sharpes, their bootstrap intervals and Hansen's SPA on the difference are on the Read tab, which is the honest version of this question

What changed since last week

leafthennowchangecompared with
filing lag p90 days54.0054.00unchanged2026-10-11
max filing lag days407.00407.00unchanged2026-10-11
mean abs signal gap in sd0.180.18unchanged2026-10-11
median filing lag days when arms differ35.0035.00unchanged2026-10-11
median spearman a vs b0.980.98unchanged2026-10-11
n rebalances155.00155.00unchanged2026-10-11
n skipped2.002.00unchanged2026-10-11
n universe147.00147.00unchanged2026-10-11
0 of 8 headline leaves moved. A repeated value can mean the upstream had not published, not that nothing happened.
Price analogs are the part of this contract that is missing here, and the reason is printed above rather than left blank.
window
keyvalue
from2023-09-15
to2026-08-28
spa
keyvalue
p_spa0.30
p_lower0.30
p_upper0.30
t_spa0.65
best_armB
nullmax_k E[d_k] <= 0: no strategy in the family beats the benchmark
n_strategies2
spa on the gap
keyvalue
p_spa0.15
t_spa1.02
nullthe lookahead arm does not out-earn the honest arm
skipped · 2 rows
tickerreason
METAno quarter with four consecutive net-income periods and a share count
SHOPno quarter with four consecutive net-income periods and a share count
per date · 60 rows
daten namesn vintage differsshare vintage differsspearman a bmean abs gap sdret aret b
2025-07-111471200.820.920.19-0.03-0.03
2025-07-181471140.780.920.190.020.02
2025-07-25147860.580.930.22-0.01-0.01
2025-08-01147570.390.950.280.030.02
2025-08-08147190.131.000.070.000.00
2025-08-15147160.111.000.060.020.02
2025-08-22147130.091.000.050.000.00
2025-08-2914760.041.000.12-0.00-0.000846
2025-09-0514760.041.000.090.00-0.00
2025-09-1214750.031.000.08-0.02-0.02
2025-09-1914740.031.000.10-0.00-0.00
2025-09-2614750.031.000.10-0.00042-0.00042
2025-10-031471200.820.920.23-0.03-0.03
2025-10-101471180.800.930.24-0.01-0.01
2025-10-171471160.790.930.22-0.02-0.02
2025-10-24147890.610.930.240.000.00
2025-10-31147530.360.980.160.030.03
2025-11-07147190.131.000.090.020.03
2025-11-14147160.111.000.080.010.01
2025-11-21147110.071.000.03-0.02-0.02
2025-11-28147100.071.000.060.010.01
2025-12-0514780.051.000.080.030.03
2025-12-1214760.041.000.08-0.01-0.01
2025-12-1914710.011.000.040.010.01
2025-12-2614710.011.000.050.010.01
2026-01-021471200.820.850.260.000.00
2026-01-091471200.820.850.27-0.020.00
2026-01-161471190.810.850.27-0.0001190.00
2026-01-231471160.790.870.250.020.03
2026-01-301471030.700.900.240.010.03
2026-02-06147940.640.900.25-0.01-0.01
2026-02-13147670.460.920.300.020.02
2026-02-20147440.300.970.22-0.01-0.01
2026-02-27147110.070.990.22-0.02-0.02
2026-03-06147100.070.990.15-0.01-0.01
2026-03-1314760.040.990.210.020.02
2026-03-2014730.021.000.070.010.01
2026-03-2714730.021.000.06-0.01-0.01
2026-04-031471170.800.920.220.000.0008
2026-04-101471180.800.930.22-0.02-0.03
2026-04-171471150.780.920.21-0.04-0.03
2026-04-24147910.620.930.23-0.01-0.01
2026-05-01147500.340.960.20-0.04-0.03
2026-05-08147170.120.990.14-0.02-0.02
2026-05-15147160.111.000.110.010.01
2026-05-22147110.071.000.10-0.02-0.02
2026-05-2914770.050.990.230.050.04
2026-06-0514760.040.990.24-0.01-0.01
2026-06-1214750.030.990.26-0.01-0.01
2026-06-1914740.030.990.340.020.01
2026-06-2614730.021.000.170.000.00
2026-07-031471030.700.870.360.010.01
2026-07-101471020.690.870.360.040.04
2026-07-17147990.670.870.360.020.03
2026-07-24147760.520.890.370.0006370.02
2026-07-31147560.380.910.42-0.03-0.04
2026-08-07147150.101.000.180.000.01
2026-08-14147130.091.000.140.020.03
2026-08-21147100.071.000.12-0.000.00
2026-08-2814720.011.000.15-0.00-0.00
scalars
fieldvalue
signaltrailing twelve month earnings yield (TTM net income per share / price)
n universe147
n rebalances155
sharpe gap annualised0.20
return gap pct per year2.43
share of cross section using unfiled data0.32
median spearman a vs b0.98
mean abs signal gap in sd0.18
median filing lag days when arms differ35
filing lag p90 days54
max filing lag days407
pbonot reported
price sourcecache
n skipped2

The null-result registry — everything we tested, including what failed Grade D · descriptiveas of 2026-10-15 16:11 UTC

N 13F ownership feature 'd_managers' predicts the quarterly return AFTER the filing becomes public
target: next tradeable quarterly return (t+1 to t+2 after period t) · sample: 26,375 name-quarters, 12 quarters, whole 13F universe
result: IC +0.0475 (t=1.68), positive 6/9 quarters
control: shuffled target x200/quarter (control IC -0.0004) · verdict: does not clear noise floor + |t|>=2
N 13F ownership feature 'ret_1q' predicts the quarterly return AFTER the filing becomes public
target: next tradeable quarterly return (t+1 to t+2 after period t) · sample: 26,375 name-quarters, 12 quarters, whole 13F universe
result: IC +0.0382 (t=1.18), positive 6/9 quarters
control: shuffled target x200/quarter (control IC +0.0002) · verdict: does not clear noise floor + |t|>=2
N 13F ownership feature 'd_managers_pct' predicts the quarterly return AFTER the filing becomes public
target: next tradeable quarterly return (t+1 to t+2 after period t) · sample: 26,375 name-quarters, 12 quarters, whole 13F universe
result: IC +0.0355 (t=1.34), positive 6/9 quarters
control: shuffled target x200/quarter (control IC -0.0003) · verdict: does not clear noise floor + |t|>=2
N 13F ownership feature 'log_value' predicts the quarterly return AFTER the filing becomes public
target: next tradeable quarterly return (t+1 to t+2 after period t) · sample: 26,375 name-quarters, 12 quarters, whole 13F universe
result: IC -0.0132 (t=-0.58), positive 4/10 quarters
control: shuffled target x200/quarter (control IC -0.0007) · verdict: does not clear noise floor + |t|>=2
N 13F ownership feature 'n_managers' predicts the quarterly return AFTER the filing becomes public
target: next tradeable quarterly return (t+1 to t+2 after period t) · sample: 26,375 name-quarters, 12 quarters, whole 13F universe
result: IC -0.0097 (t=-0.43), positive 3/10 quarters
control: shuffled target x200/quarter (control IC -0.0005) · verdict: does not clear noise floor + |t|>=2
N 13F ownership feature 'top5_share' predicts the quarterly return AFTER the filing becomes public
target: next tradeable quarterly return (t+1 to t+2 after period t) · sample: 26,375 name-quarters, 12 quarters, whole 13F universe
result: IC +0.0062 (t=0.39), positive 6/10 quarters
control: shuffled target x200/quarter (control IC -0.0001) · verdict: does not clear noise floor + |t|>=2
N 13F ownership feature 'hhi' predicts the quarterly return AFTER the filing becomes public
target: next tradeable quarterly return (t+1 to t+2 after period t) · sample: 26,375 name-quarters, 12 quarters, whole 13F universe
result: IC +0.0058 (t=0.41), positive 5/10 quarters
control: shuffled target x200/quarter (control IC +0.0002) · verdict: does not clear noise floor + |t|>=2
N a gradient-boosted combination of all ownership features predicts what no single feature does
target: cross-sectional rank of the tradeable quarterly return · sample: 4 expanding-window folds, adjacent quarter purged
result: IC +0.0320 (t=0.62) — BELOW the best single feature (+0.0475)
control: shuffled target (control -0.0016) · verdict: the signal did not need a bigger model; there is no signal
N cross-asset fundamentals lead prices at a 3-month horizon
target: 3-month forward return / yield change per asset · sample: 19 features across 5 asset classes, monthly
result: 3 raw hits at p<0.05 (1.0 expected by chance); 0 survive FDR
control: circular block bootstrap · verdict: consistent with chance once multiplicity is accounted for
N balance-sheet fundamentals add predictive content beyond price momentum for 3-month cross-sectional returns
target: cross-sectional rank of 3-month forward return · sample: 2,360 obs, 239 names, 9 purged expanding folds, 45-day filing lag
result: model IC +0.0674 (t=1.64) vs momentum alone +0.0563; top SHAP feature IS momentum
control: shuffled target x200/fold (+0.0005) · verdict: increment over momentum not significant; fundamentals add little the price does not already carry
N the full-sample regime label is recoverable in real time (i.e., regime clarity is not hindsight)
target: agreement between causal (expanding-window) and full-sample labels · sample: 1443 weeks from 1999-01-15, k=4 states
result: agreement 35.9% vs chance 29.5% (lift +6.4pp); causal median run 2 weeks
control: chance agreement from the two label distributions · verdict: most regime clarity is hindsight; the mixture is memoryless — descriptive use only
N bitcoin's weekly moves are explainable by same-week cross-asset flows (equities, vol, dollar, real yields, credit)
target: contemporaneous weekly BTC return (co-movement, not prediction) · sample: 610 weeks
result: CV R² -0.08 — effectively nil
control: 5-fold cross-validation · verdict: bitcoin is idiosyncratic; cross-asset flow attribution carries no content for this desk and the page says so
C headline macro/asset series carry tradeable calendar-month seasonality
target: difference in monthly-change distributions across calendar months · sample: 17 distinct series, decades each
result: 4 of 17 significant (Kruskal-Wallis p<0.05); the rest are noise drawn as bars
control: Kruskal-Wallis across months (non-parametric) · verdict: seasonality is real in a minority (gasoline, curve, credit, breakevens) and absent in most — every seasonal chart on the site carries its own verdict
N Basel Core (risk-balanced quadrant sleeves, nested ERC, monthly, unlevered) has a higher Sharpe than each registry benchmark and listed comparator.
target: annualized Sharpe over T-bills vs each benchmark on the common window · sample: 2004-06-30 to 2026-09-08 (22.19 years, 5583 days), 24 configurations stored
result: sixty_forty: Sharpe diff +0.00 [-0.30, +0.31] indistinguishable from zero; global_sixty_forty: Sharpe diff +0.08 [-0.19, +0.36] indistinguishable from zero; all_weather: Sharpe diff -0.09 [-0.24, +0.07] indistinguishable from zero; permanent: Sharpe diff -0.18 [-0.40, +0.04] indistinguishable from zero; golden_butterfly: Sharpe diff -0.15 [-0.36, +0.07] indistinguishable from zero; risk_parity_naive: Sharpe diff +0.11 [-0.02, +0.24] indistinguishable from zero; erc: Sharpe diff +0.11 [-0.03, +0.24] indistinguishable from zero; equity_100: Sharpe diff +0.05 [-0.30, +0.40] indistinguishable from zero; cash: Sharpe diff +1.09 [+0.50, +1.66] above zero; basel_core_static: Sharpe diff +0.01 [-0.04, +0.07] indistinguishable from zero; SPY: Sharpe diff +0.05 [-0.30, +0.39] indistinguishable from zero; QQQ: Sharpe diff -0.08 [-0.46, +0.31] indistinguishable from zero; ALLW: Sharpe diff -0.05 [-0.52, +0.48] indistinguishable from zero; AOR: Sharpe diff +0.03 [-0.34, +0.40] indistinguishable from zero; RPAR: Sharpe diff +0.06 [-0.20, +0.31] indistinguishable from zero; DBMF: Sharpe diff -0.22 [-1.23, +0.78] indistinguishable from zero
control: DSR=0.992 over 24 trials; PBO=0.276 over 24 configs · verdict: 1 of 16 comparisons above zero, 0 below, at L1. No paper track yet, so no L2 claim.
N Time-series momentum is positive across asset classes at one to twelve months; tilting sleeve weights by the sign of trailing excess returns raises risk-adjusted return and cuts drawdown. Gate failed.
target: annualized Sharpe over T-bills vs each benchmark on the common window · sample: 2004-06-30 to 2026-09-08 (22.19 years, 5583 days), 3 configurations stored
result: basel_core: Sharpe diff +0.02 [-0.08, +0.12] indistinguishable from zero; sixty_forty: Sharpe diff +0.03 [-0.32, +0.36] indistinguishable from zero; global_sixty_forty: Sharpe diff +0.10 [-0.21, +0.42] indistinguishable from zero; all_weather: Sharpe diff -0.07 [-0.23, +0.10] indistinguishable from zero; permanent: Sharpe diff -0.15 [-0.38, +0.08] indistinguishable from zero; golden_butterfly: Sharpe diff -0.12 [-0.36, +0.11] indistinguishable from zero; risk_parity_naive: Sharpe diff +0.13 [-0.03, +0.28] indistinguishable from zero; erc: Sharpe diff +0.13 [-0.03, +0.28] indistinguishable from zero; equity_100: Sharpe diff +0.07 [-0.31, +0.44] indistinguishable from zero; cash: Sharpe diff +1.11 [+0.53, +1.69] above zero; basel_core_static: Sharpe diff +0.04 [-0.08, +0.15] indistinguishable from zero; SPY: Sharpe diff +0.07 [-0.30, +0.44] indistinguishable from zero; QQQ: Sharpe diff -0.05 [-0.45, +0.35] indistinguishable from zero; ALLW: Sharpe diff +0.16 [-0.33, +0.70] indistinguishable from zero; AOR: Sharpe diff +0.03 [-0.36, +0.41] indistinguishable from zero; RPAR: Sharpe diff +0.11 [-0.19, +0.40] indistinguishable from zero; DBMF: Sharpe diff -0.17 [-1.10, +0.77] indistinguishable from zero
control: DSR=0.998 over 3 trials; PBO=0.538 over 3 configs · verdict: 1 of 17 comparisons above zero, 0 below, at L1. No paper track yet, so no L2 claim.
N The Treasury term premium (10y minus 3m) predicts duration returns; tilting the duration legs with the z-scored slope adds return in stable states. Bond-only: commodity and FX carry await futures term-structure data. Gate failed.
target: annualized Sharpe over T-bills vs each benchmark on the common window · sample: 2004-06-30 to 2026-09-08 (22.19 years, 5583 days), 4 configurations stored
result: basel_core: Sharpe diff -0.00 [-0.10, +0.09] indistinguishable from zero; sixty_forty: Sharpe diff +0.00 [-0.31, +0.31] indistinguishable from zero; global_sixty_forty: Sharpe diff +0.08 [-0.21, +0.37] indistinguishable from zero; all_weather: Sharpe diff -0.09 [-0.29, +0.10] indistinguishable from zero; permanent: Sharpe diff -0.18 [-0.42, +0.06] indistinguishable from zero; golden_butterfly: Sharpe diff -0.15 [-0.36, +0.06] indistinguishable from zero; risk_parity_naive: Sharpe diff +0.11 [-0.06, +0.27] indistinguishable from zero; erc: Sharpe diff +0.10 [-0.07, +0.27] indistinguishable from zero; equity_100: Sharpe diff +0.05 [-0.31, +0.40] indistinguishable from zero; cash: Sharpe diff +1.08 [+0.49, +1.67] above zero; basel_core_static: Sharpe diff +0.01 [-0.10, +0.12] indistinguishable from zero; SPY: Sharpe diff +0.05 [-0.31, +0.39] indistinguishable from zero; QQQ: Sharpe diff -0.08 [-0.47, +0.31] indistinguishable from zero; ALLW: Sharpe diff -0.26 [-0.80, +0.28] indistinguishable from zero; AOR: Sharpe diff -0.03 [-0.38, +0.34] indistinguishable from zero; RPAR: Sharpe diff -0.01 [-0.33, +0.30] indistinguishable from zero; DBMF: Sharpe diff -0.30 [-1.30, +0.70] indistinguishable from zero
control: DSR=0.997 over 4 trials; PBO=0.653 over 4 configs · verdict: 1 of 17 comparisons above zero, 0 below, at L1. No paper track yet, so no L2 claim.
N Scaling exposure down when the book's recent volatility exceeds a target reduces drawdown without giving up return (no leverage: cap 1.0). Gate failed.
target: annualized Sharpe over T-bills vs each benchmark on the common window · sample: 2004-06-30 to 2026-09-08 (22.19 years, 5583 days), 3 configurations stored
result: basel_core: Sharpe diff +0.01 [-0.09, +0.11] indistinguishable from zero; sixty_forty: Sharpe diff +0.01 [-0.30, +0.33] indistinguishable from zero; global_sixty_forty: Sharpe diff +0.09 [-0.20, +0.38] indistinguishable from zero; all_weather: Sharpe diff -0.08 [-0.26, +0.11] indistinguishable from zero; permanent: Sharpe diff -0.17 [-0.40, +0.07] indistinguishable from zero; golden_butterfly: Sharpe diff -0.14 [-0.37, +0.10] indistinguishable from zero; risk_parity_naive: Sharpe diff +0.12 [-0.04, +0.28] indistinguishable from zero; erc: Sharpe diff +0.12 [-0.05, +0.27] indistinguishable from zero; equity_100: Sharpe diff +0.06 [-0.29, +0.41] indistinguishable from zero; cash: Sharpe diff +1.10 [+0.51, +1.68] above zero; basel_core_static: Sharpe diff +0.02 [-0.08, +0.13] indistinguishable from zero; SPY: Sharpe diff +0.06 [-0.29, +0.40] indistinguishable from zero; QQQ: Sharpe diff -0.07 [-0.46, +0.33] indistinguishable from zero; ALLW: Sharpe diff -0.22 [-0.69, +0.31] indistinguishable from zero; AOR: Sharpe diff -0.00 [-0.36, +0.35] indistinguishable from zero; RPAR: Sharpe diff -0.03 [-0.36, +0.31] indistinguishable from zero; DBMF: Sharpe diff -0.29 [-1.23, +0.66] indistinguishable from zero
control: DSR=0.998 over 3 trials; PBO=0.208 over 3 configs · verdict: 1 of 17 comparisons above zero, 0 below, at L1. No paper track yet, so no L2 claim.
N Basel Ensemble (Core + passing overlays []) has a higher Sharpe than each registry benchmark and listed comparator.
target: annualized Sharpe over T-bills vs each benchmark on the common window · sample: 2004-06-30 to 2026-09-08 (22.19 years, 5583 days), 34 configurations stored
result: basel_core: Sharpe diff +0.00 [+0.00, +0.00] indistinguishable from zero; basel_trend: Sharpe diff -0.02 [-0.12, +0.08] indistinguishable from zero; basel_carry: Sharpe diff +0.00 [-0.09, +0.10] indistinguishable from zero; basel_voltarget: Sharpe diff -0.01 [-0.11, +0.09] indistinguishable from zero; sixty_forty: Sharpe diff +0.00 [-0.30, +0.31] indistinguishable from zero; global_sixty_forty: Sharpe diff +0.08 [-0.19, +0.36] indistinguishable from zero; all_weather: Sharpe diff -0.09 [-0.24, +0.07] indistinguishable from zero; permanent: Sharpe diff -0.18 [-0.40, +0.04] indistinguishable from zero; golden_butterfly: Sharpe diff -0.15 [-0.36, +0.07] indistinguishable from zero; risk_parity_naive: Sharpe diff +0.11 [-0.02, +0.24] indistinguishable from zero; erc: Sharpe diff +0.11 [-0.03, +0.24] indistinguishable from zero; equity_100: Sharpe diff +0.05 [-0.30, +0.40] indistinguishable from zero; cash: Sharpe diff +1.09 [+0.50, +1.66] above zero; basel_core_static: Sharpe diff +0.01 [-0.04, +0.07] indistinguishable from zero; SPY: Sharpe diff +0.05 [-0.30, +0.39] indistinguishable from zero; QQQ: Sharpe diff -0.08 [-0.46, +0.31] indistinguishable from zero; ALLW: Sharpe diff -0.05 [-0.52, +0.48] indistinguishable from zero; AOR: Sharpe diff +0.03 [-0.34, +0.40] indistinguishable from zero; RPAR: Sharpe diff +0.06 [-0.20, +0.31] indistinguishable from zero; DBMF: Sharpe diff -0.22 [-1.23, +0.78] indistinguishable from zero
control: DSR=0.987 over 34 trials; PBO=0.656 over 34 configs · verdict: 1 of 20 comparisons above zero, 0 below, at L1. No paper track yet, so no L2 claim.
18 registered tests on an append-only, hash-chained ledger shared with the Basel allocation research: 17 nulls, 1 conditional findings, 0 tested-positive. Every entry names its control, and no entry can be edited after the fact — a rewrite breaks the hash chain and the site refuses to build. This page is why a forecast here, if one ever clears grade T, will mean something: you can see everything tried, including what failed, and you can verify nothing was reworded.
Append-only JSONL, each entry hash-chained to the previous (SHA-256 over the canonicalised entry plus the prior hash), using the same library as Basel's registry so the two cannot disagree about what a valid chain is. There is no update or delete API on purpose. Basel's entries are ingested content-unchanged. Grades: N tested-null under the stated control; C a conditional finding with its sample; T tested-positive at a pre-registered floor. No entry is a recommendation; several are the reason a recommendation does NOT appear.
by grade
keyvalue
N17
C1
entries · 18 rows
controldategradehashhypothesisidmotivatedresultsampletarget
shuffled target x200/quarter (control IC -0.0004)2026-09-08N2d358f23506356bfdf86fc5e77ce7ef0ad5380a0e7438de178e4da6ea8edf9c213F ownership feature 'd_managers' predicts the quarterly return AFTER the filinown-d_managers/equities/IC +0.0475 (t=1.68), positive 6/9 quarters26,375 name-quarters, 12 quarters, whole 13F universenext tradeable quarterly return (t+1 to t+2 after period t)
shuffled target x200/quarter (control IC +0.0002)2026-09-08Nd8b64e31ff9ffaed1061a82e34fd1d2af4d5a3a1f7f1dda5476a026c5376846f13F ownership feature 'ret_1q' predicts the quarterly return AFTER the filing beown-ret_1q/equities/IC +0.0382 (t=1.18), positive 6/9 quarters26,375 name-quarters, 12 quarters, whole 13F universenext tradeable quarterly return (t+1 to t+2 after period t)
shuffled target x200/quarter (control IC -0.0003)2026-09-08Nd6ed57cb97978e4a37d3ec5203bb2cd091bfc305d5cc210144ac2f0628ee8e0213F ownership feature 'd_managers_pct' predicts the quarterly return AFTER the fown-d_managers_pct/equities/IC +0.0355 (t=1.34), positive 6/9 quarters26,375 name-quarters, 12 quarters, whole 13F universenext tradeable quarterly return (t+1 to t+2 after period t)
shuffled target x200/quarter (control IC -0.0007)2026-09-08N4b80fbafd161f7c07ab3a442fc437d5feebd7ac9d7c44606641102092975d0de13F ownership feature 'log_value' predicts the quarterly return AFTER the filingown-log_value/equities/IC -0.0132 (t=-0.58), positive 4/10 quarters26,375 name-quarters, 12 quarters, whole 13F universenext tradeable quarterly return (t+1 to t+2 after period t)
shuffled target x200/quarter (control IC -0.0005)2026-09-08Naf7cb891079e308381b42bab170f83befe443c0ceb510ef598da262eb2a868ff13F ownership feature 'n_managers' predicts the quarterly return AFTER the filinown-n_managers/equities/IC -0.0097 (t=-0.43), positive 3/10 quarters26,375 name-quarters, 12 quarters, whole 13F universenext tradeable quarterly return (t+1 to t+2 after period t)
shuffled target x200/quarter (control IC -0.0001)2026-09-08Nfe5b8a5dce694d28de92392f8b00248d456ae8da6abf8726713dbb6960b7e2b113F ownership feature 'top5_share' predicts the quarterly return AFTER the filinown-top5_share/equities/IC +0.0062 (t=0.39), positive 6/10 quarters26,375 name-quarters, 12 quarters, whole 13F universenext tradeable quarterly return (t+1 to t+2 after period t)
shuffled target x200/quarter (control IC +0.0002)2026-09-08N586c609a48941361c2e3b422400a4a98a0c87e7538770c821003314ec7ef645813F ownership feature 'hhi' predicts the quarterly return AFTER the filing becomown-hhi/equities/IC +0.0058 (t=0.41), positive 5/10 quarters26,375 name-quarters, 12 quarters, whole 13F universenext tradeable quarterly return (t+1 to t+2 after period t)
shuffled target (control -0.0016)2026-09-08N9adf138ca2878e341738d947365f2591fd832c66f80bfb5ec607b5d66f792a32a gradient-boosted combination of all ownership features predicts what no singleown-combined-xgb/equities/IC +0.0320 (t=0.62) — BELOW the best single feature (+0.0475)4 expanding-window folds, adjacent quarter purgedcross-sectional rank of the tradeable quarterly return
circular block bootstrap2026-09-08N58341b0cef12c1da914bb4da86848943fed02ffb9b1e864942d4ebfcf6a0f407cross-asset fundamentals lead prices at a 3-month horizonxasset-fundamentals/rates/ /fx/ /commodities/ /crypto/3 raw hits at p<0.05 (1.0 expected by chance); 0 survive FDR19 features across 5 asset classes, monthly3-month forward return / yield change per asset
shuffled target x200/fold (+0.0005)2026-09-08N49d6e89621b65dc7b31bf2844e64984cd08506ac7dd8c5e6b111734e4e441074balance-sheet fundamentals add predictive content beyond price momentum foreq-fundamental-factors/equities/model IC +0.0674 (t=1.64) vs momentum alone +0.0563; top SHAP feature IS momentu2,360 obs, 239 names, 9 purged expanding folds, 45-day filing lagcross-sectional rank of 3-month forward return
chance agreement from the two label distributions2026-09-09Nd6c6911a8db50bd38b264fa3218f38cc4cb60b99b9870c3bbdab0d3b4e5646eathe full-sample regime label is recoverable in real time (i.e., regime clarity iregime-causal-agreement/rates/ /fx/ /crypto/agreement 35.9% vs chance 29.5% (lift +6.4pp); causal median run 2 weeks1443 weeks from 1999-01-15, k=4 statesagreement between causal (expanding-window) and full-sample labels
5-fold cross-validation2026-09-10N2e96f95c624fcf2a4ec9f40ca04fba4b3c0b12c552010f060979edb409db9e0dbitcoin's weekly moves are explainable by same-week cross-asset flows (equities,crypto-flow-explainability/crypto/CV R² -0.08 — effectively nil610 weekscontemporaneous weekly BTC return (co-movement, not prediction)
Kruskal-Wallis across months (non-parametric)2026-09-09Cc96fd85756dde7c49853e424738f606136da29ce41cfc987a60125b7713046c7headline macro/asset series carry tradeable calendar-month seasonalityseasonality-sweepall desks4 of 17 significant (Kruskal-Wallis p<0.05); the rest are noise drawn as bars17 distinct series, decades eachdifference in monthly-change distributions across calendar months
DSR=0.992 over 24 trials; PBO=0.276 over 24 configs2026-09-10Naa36d64badcbbeeb2fbc34636d92fdeaab95309b669e6fe63eecf9921ba2fc2fBasel Core (risk-balanced quadrant sleeves, nested ERC, monthly, unlevered) has basel_core-2026-09-08-96c6591a68/systematic/ /arena/sixty_forty: Sharpe diff +0.00 [-0.30, +0.31] indistinguishable from zero; globa2004-06-30 to 2026-09-08 (22.19 years, 5583 days), 24 configurations storedannualized Sharpe over T-bills vs each benchmark on the common window
DSR=0.998 over 3 trials; PBO=0.538 over 3 configs2026-09-10N9282e180f2000d52bb7b7e044f4e1574205936301fdd13094e9893de23b5ef20Time-series momentum is positive across asset classes at one to twelve months; tbasel_trend-2026-09-08-ca37787305/systematic/ /arena/basel_core: Sharpe diff +0.02 [-0.08, +0.12] indistinguishable from zero; sixty_2004-06-30 to 2026-09-08 (22.19 years, 5583 days), 3 configurations storedannualized Sharpe over T-bills vs each benchmark on the common window
DSR=0.997 over 4 trials; PBO=0.653 over 4 configs2026-09-10Nd3ed5576f92beb99a60666518ca568a37aea59158896c3ad391ff1d7a7aa4045The Treasury term premium (10y minus 3m) predicts duration returns; tilting the basel_carry-2026-09-08-007bc49c9c/systematic/ /arena/basel_core: Sharpe diff -0.00 [-0.10, +0.09] indistinguishable from zero; sixty_2004-06-30 to 2026-09-08 (22.19 years, 5583 days), 4 configurations storedannualized Sharpe over T-bills vs each benchmark on the common window
DSR=0.998 over 3 trials; PBO=0.208 over 3 configs2026-09-10N9d0b5e7b0d13f3aa1ad97dc8b85936f72b9c1881df5cf11ac6c35cdd7d000820Scaling exposure down when the book's recent volatility exceeds a target reducesbasel_voltarget-2026-09-08-350522eeb9/systematic/ /arena/basel_core: Sharpe diff +0.01 [-0.09, +0.11] indistinguishable from zero; sixty_2004-06-30 to 2026-09-08 (22.19 years, 5583 days), 3 configurations storedannualized Sharpe over T-bills vs each benchmark on the common window
DSR=0.987 over 34 trials; PBO=0.656 over 34 configs2026-09-10Nd0874e3ae258e33b76ad2aee5ea48981a8cb96a326b877090a0cb51e0a197d2fBasel Ensemble (Core + passing overlays []) has a higher Sharpe than each registbasel_ensemble-2026-09-08-96c6591a68/systematic/ /arena/basel_core: Sharpe diff +0.00 [+0.00, +0.00] indistinguishable from zero; basel_2004-06-30 to 2026-09-08 (22.19 years, 5583 days), 34 configurations storedannualized Sharpe over T-bills vs each benchmark on the common window
scalars
fieldvalue
n entries18

Rules we hold ourselves to

Direction is the sign; extremity is the percentile. They are different questions and we never let one stand in for the other.

A z-score on a non-cointegrated spread is astrology. Spreads are gated on a cointegration test before we quote a z-score on them.

Concentrated prediction markets are five wallets, not a crowd. Depth and holder concentration are checked before an implied probability is treated as information.

Fees are part of the price. Any edge we quote is net of them; a gap that does not survive fees is commentary, not opportunity.

A failed feed says so. Panels serve their last good value marked stale rather than interpolating a number and presenting it as an observation.

The weekly note

One email a week: what the data actually did, which forecasts resolved and how they scored, and what the independent writers we read were arguing about. No card, no account, unsubscribe in one click.

How the figures on this page are constructed is proprietary. For methodology questions, write to e@finkfi.com.