Five-minute guide

How to read a cell without fooling yourself.

Four numbers sit behind every square on this site. Learn what each one does — and which one people ignore right up until it costs them.

STEP 01

Click an hour. Any hour.

Below is EUR/USD, 23 years of real hourly bars, weekdays only, in UTC — the same data the dashboard reads. Each square is one hour of the day, coloured by how often it closed higher than it opened.

EUR/USD · up-rate by hour UTC · Mon–Fri · 2003–2026
↓ tap any hour to break it down
↓ down
up ↑ significant
STEP 02

The percentage is the headline. It is not the story.

The big number is the up-rate — the share of those hourly candles that closed above their open. 50% is a coin flip. 54% means that in 100 of those hours, 54 finished higher.

That's all it means. It does not say how far price travelled, whether the winners were bigger than the losers, or that the next one will go up.

STEP 03

Look at n before you believe the percentage.

n is how many real bars produced that number, and it decides how much of the percentage is signal and how much is luck. The noise floor falls with the square root of n:

Sample sizeDeviation needed to beat chanceSo a reading of…
n = 25±20 pp70% is meaningless
n = 300±5.7 pp57% is borderline
n = 1,000±3.1 pp55% is real
n = 5,000±1.4 pp53% is real
Every filter you stack — month and weekday and hour — divides n. Narrow far enough and you'll always find an 80% bucket. It will be noise, and it will not repeat.
STEP 04

The brass dot answers one question only.

A dot means |z| ≥ 3: for that sample size, the gap from 50% is big enough to be unlikely from chance. The z-score is just the two numbers above combined — z = (2·ups − n) / √n.

It tells you the pattern is probably real. It does not tell you the pattern is worth trading. Those are different questions, and the next step is the one that separates them.

STEP 05

Now the number nobody looks at: average move.

Direction is free to measure. Trading it is not — your broker takes the spread on the way in. So compare the bucket's average move against your typical spread, and most "edges" quietly disappear.

We ran this across the FX majors: of 400 liquid weekday×hour buckets, only 50 (12.5%) move more on average than a 1.0-pip spread. For the rest, the trade costs more than the edge is worth.

This is why the dashboard shows average move next to every up-rate, and why a strong-looking cell in the 21:00–22:00 UTC rollover — where spreads widen sharply — gets flagged rather than celebrated.

STEP 06

Zoom out before you zoom in.

A single weekday×hour cell is the noisiest thing on the dashboard. The wider views are far more trustworthy because the sample is much larger:

Start wide, confirm the story holds as you narrow, and stop the moment n gets thin.

STEP 07

Four ways to misuse this.

The FAQ's "what it can't do" section goes further — including why this data doesn't support 1-minute binaries or swing trading.

That's the whole method.

Up-rate, sample size, significance, average move. Open the dashboard and try it on your own pairs.

Open the dashboard →