Is my volatility regime just telling me the time?

Asked as: is my volatility indicator just measuring time of day

I removed the time-of-day pattern from one FX pair and a standard volatility classifier stopped finding compression at all. Six features, all six moved.

Intraday volatility has a shape you could set a watch by: quiet through the Asian session, busy at the London and New York overlaps, quiet again. It is one of the most reliably documented patterns in market data.

Anything you compute from a volatility path inherits that shape. A market-state label built on intraday data is partly a reading of the clock, and the share that is clock rather than market is measurable. I measured it on six of my own features and the answer was larger than I expected.

I call a label in that condition a Clock Regime.

The measurement

For each feature, the per-bar label is derived twice over 98,864 hourly bars of one FX pair: once from the series as it stands, and once after removing the hour-of-day pattern from the feature’s own input — dividing each observation by the statistic of the same hour over prior completed trading days only, so nothing reads its own future.

Then: what fraction of labels changed?

featurechurn
average true range42.8%
volatility forecast tercile14.9%
volatility regime11.7%
liquidity state9.7%
jump flag5.4%
return memory5.2%

All six moved. Not one of them was measuring only the market.

The result that stopped me

The volatility regime classifier labels each bar CALM, COMPRESSION, EXPANSION or UNSTABLE. Here is what removing the clock did to it:

labelbeforeafter
CALM86,88798,314
COMPRESSION8,6290
EXPANSION1,075140
UNSTABLE2,022159

COMPRESSION went to zero. Not smaller — gone. All 8,629 bars it had flagged became calm, along with most of the unstable and expansion bars.

On this pair, over this history, the classifier’s non-calm states were substantially the intraday cycle. It was, for the most part, telling me the time.

Why the obvious test would have missed this

The natural way to check a feature for time-of-day dependence is to correlate its output against the hour. I ran that first, and on three of these six features it returned one to two per cent — negligible, dismissable, move on.

Those same three features moved on ten to forty-three per cent of observations.

The two measurements answer different questions. Correlation asks could you guess this label from the clock? Churn asks would this label have been different in a world without one? A feature that smooths or aggregates can score near zero on the first while carrying the effect at full strength — averaging over fourteen hours flattens the hourly signature without removing what it did to the level.

If you have only ever run the correlation, you have not tested this.

And a daily feature is not immune

Three of the six emit a label that never changes within a day. Their correlation with hour-of-day is zero by construction — there is no intraday variation for the clock to explain. That looks like immunity.

Corrected at the input, one moved on 14.9% of days. Another kept the same number of flagged events while roughly a third of them became different days.

The mechanism is the aggregation itself. Squared returns are as free of the clock as returns; summing them over a day is what puts the hour back in. Any statistic that sums or averages within-day quantities inherits the intraday profile no matter how clock-free its inputs are.

What I did to keep the number honest

Every family carries a control that isolates the correction from the mechanics of applying it.

Removing the pattern needs a history to build the profile from, so the earliest observations have none and are dropped — and dropping observations can shift a rolling window or re-phase a block all by itself. So each family is compared against a placebo: the uncorrected input, re-derived over the corrected arm’s exact observation set. Whatever that moves is the mechanics, not the correction. On the volatility forecast it moved 0.05%. On the jump flag, zero.

For the two features that consume whole bars rather than returns, the correction requires rebuilding the bar series, so those are compared against a raw rebuild put through the identical reconstruction. And the rebuild is validated rather than assumed: the raw reconstruction reproduces the label distributions measured independently on the original bars, to three decimals — 0.8811 against 0.881, and 0.6143 against 0.614. A rebuild that had distorted the series would not land on those.

What to do with this

Ask what your volatility state is made of. If it is computed from an intraday path and nobody removed the daily shape, some of it is the clock, and the fraction is not small enough to wave away.

Do not accept a correlation against the hour as the test. It is the wrong measurement and it will clear a feature that moves by forty per cent.

Deseasonalise before you condition, not after. A state used to slice returns into “compression” and “calm” buckets carries the clock into every bucket it makes — and a comparison between those buckets is then partly a comparison between times of day.

Limits

One pair, one grain, one history. A single-instrument measurement establishes nothing about any other, and the size of the effect will depend on the pair’s own session structure.

Nothing here says these features are worthless — a corrected feature is still a feature, and the correction is a few lines of arithmetic over a profile you already have the data to build. It says that the uncorrected version is measuring something other than what its name claims, by an amount that is worth knowing before you condition anything on it.

The artifact

SHA256: 449e4536b104a41449218c7d94b92838444791774c7fa7a4624a4509695c3e63

Download dataset

Claims examined

Claim 01§ claim-1c44c6ee

My volatility regime indicator tells me what the market is doing.

My reading: Misleading

Intraday volatility follows a pronounced and highly predictable daily shape — quiet overnight, busy at the session overlaps. Any state derived from a volatility path inherits that shape unless someone has explicitly taken it out, and almost nobody does. I measured what happens when you do, on a frozen classifier over 98,864 hourly bars: its COMPRESSION state went from 8,629 occurrences to zero. Not fewer. None. Every compression bar the classifier had found became calm once the hour-of-day pattern was removed from the volatility path it reads.

Claim 02§ claim-db82d83e

If the time-of-day effect mattered, my indicator would correlate with the hour.

My reading: False

I measured both. Three of the six features carried between one and two per cent of their label entropy in the hour, which reads as negligible. Those same features moved on ten to forty-three per cent of observations once the hour was removed from their inputs. The two are not the same measurement: correlation asks whether you could guess the label from the clock, and churn asks whether the label would have been different in a world without one. A smoothed or aggregated feature can hide the first while carrying the second at full strength.

Claim 03§ claim-28f247f5

A feature that never varies within a day obviously has no time-of-day problem.

My reading: False

Three of the six features emit a label that never changes within a day, so their correlation with hour-of-day is zero by construction — there is no intraday variation for the clock to explain. That reads as immunity and is not. Corrected at the input, one of them moved on fifteen per cent of days and another turned over roughly a third of its flagged events while keeping the same number of them. Squared returns are as free of the clock as returns; summing them over a day is what puts the hour back.

Each claim above has a permanent address — the § link — whose canonical home is the refutation index, where it carries its variant phrasings and the true proposition stated on its own feet; this article is the evidence behind it. If a claim's text ever changes, it becomes a new claim at a new address, and the old one stops resolving rather than silently meaning something else.

Cite This Article

Hadal Research. (2026). Is my volatility regime just telling me the time?. Hadal Research. https://hadalinstruments.com/research/is-my-volatility-regime-just-telling-me-the-time/ (SHA-256: 449e4536b104a41449218c7d94b92838444791774c7fa7a4624a4509695c3e63) Version 426b66a, 2026-08-25.

Version 426b66a identifies the commit that last changed this page in Hadal's content repository. That repository is not public, so the identifier does not resolve externally — it is published so a citation pins one specific state rather than a moving page. To obtain the exact version cited, use the press and research route.

Explore further

Indicators whose taught claim it examines

Research

All Hadal researchThis article as plain markdown

---