Questions & honest answers

What the numbers mean — and what they don't.

Every figure on this site is a historical frequency measured from real price bars. This page explains how to read those figures, and is equally clear about the things the data cannot tell you.

The data

5 questions
Where does the data come from?

Dukascopy bank-feed price history, aggregated into hourly (H1) bars. 1,742,350 hourly bars across 19 symbols sit behind the dashboard.

Coverage isn't uniform, because the instruments themselves aren't:

GroupSymbolsHistory
FX majors42003 → 2026
FX minors62003 → 2026
Metals22003 → 2026
Indices52011 / 2013 / 2020 → 2026
Crypto22017 → 2026

Each symbol's real span is shown in the dashboard's "History depth" tile — never assume 23 years for an index or a coin.

What exactly is an "up-rate"?

The share of hourly candles in that bucket that closed above their open. Nothing more.

A 58% up-rate for "Wednesday 14:00" means: of every Wednesday 14:00 hourly candle in the history, 58% finished higher than they started. 50% is a coin flip.

It says nothing about how far price moved — that's the separate average-move figure, and the two often disagree.

Why is everything in UTC? What about my timezone and DST?

The bars are bucketed in UTC because it has no daylight-saving jumps — an hour bucket always means the same hour.

The dashboard's timezone selector shifts every view to your zone. It applies a fixed offset, not full DST rules, so during the weeks when your local clock has changed and the reference zone hasn't, a bucket can be an hour off from your wall clock.

Is this live data? How often does it update?

No — this is a history tool, not a quote feed. The dashboard's "as of now" panel simply looks up what this weekday-and-hour bucket has historically done; it isn't reading a live price.

The aggregates are rebuilt from the archive periodically. One more day of bars moves a 5,000-sample bucket by a rounding error, which is exactly the point of a large sample.

Can I see the underlying calculation?

Yes. Every bucket carries its sample size n and its z-score, and the aggregates are plain JSON served from this site — the browser does the summing, so nothing is hidden server-side.

The z-score is the standard proportion test against a fair coin: z = (2·ups − n) / √n.

Reading the numbers

4 questions
What is n, and how big is big enough?

n is how many real hourly bars went into that percentage. It is the single most important number on the screen, and the one most people skip.

The noise floor shrinks with the square root of n, so:

Sample sizeMove needed to beat chance
n = 25±20 pp
n = 300±5.7 pp
n = 1,000±3.1 pp
n = 5,000±1.4 pp

A 70% up-rate on n = 25 is noise. A 54% up-rate on n = 5,000 is real. Stacking filters (month and weekday and hour) shrinks n fast — the dashboard warns you when it drops too low.

What does the brass dot / "significant" flag mean?

It marks buckets where |z| ≥ 3 — the deviation from 50% is large enough, for that sample size, to be unlikely to come from chance alone.

That's a deliberately strict bar. It answers exactly one question: "is this pattern probably real?" It does not answer "is it big enough to trade?" — see below.

Why only 55–65%? I've seen tools claiming 80%+.

Because 80% was what our own early sample said too — before we tested it properly.

On a 20-month sample, EUR/USD Thursday 01:00 read 80.4% up on n = 56. Re-measured over a decade, the same bucket settled at 67.7% on n = 446. Every extreme reading shrank toward 50% the same way.

That's regression to the mean, and it is the normal fate of small-sample extremes. Anyone still advertising 80% is either using a tiny sample or not showing you one.

What's the rollover warning about?

The strongest raw signals in the whole dataset cluster around the daily rollover (roughly 21:00–22:00 UTC). They're genuine price behaviour — but they sit in the thinnest liquidity of the day, where spreads widen sharply and swap is charged.

A statistically perfect bucket in a window where the spread triples is a measurement, not an opportunity. The dashboard flags these rather than putting them at the top of a signals list.

What it can't do

4 questions
This is the section most tools leave out. We measured these limits in our own data, and would rather you know them before you pay than after.
Does a 58% up-rate mean I'll make money?

No — and this is the most important answer on the page.

The up-rate counts direction. Your broker charges you the spread. We checked every liquid weekday×hour bucket across the FX majors against a typical 1.0-pip spread:

Of 400 liquid buckets, only 50 (12.5%) have an average move larger than a 1.0-pip spread. For the other 87.5%, the cost of the trade exceeds the entire measured edge.

The up-rate also says nothing about the size of the winners versus the losers, which is what actually decides an outcome. A 58% bucket whose losers are twice the size of its winners loses money.

Can I use this for 1-minute binary options?

No. Three separate reasons, any one of which is fatal:

  • Wrong resolution. The data is hourly. A 58% up-rate for an hour says nothing about minute 3 of that hour.
  • The edge shrinks faster than the bar. Drift grows with time while noise grows with its square root, so the percentage edge falls roughly with √time. A 5 pp edge on H1 becomes about 0.65 pp at 1 minute — unmeasurable, let alone tradeable.
  • The payout math is brutal. Binary payouts require you to be right far more than half the time just to break even:
PayoutWin rate needed to break even
70%58.8%
80%55.6%
90%52.6%

We also tested our 5-minute data directly: across 288 slots per symbol, the average absolute drift is 0.08–0.11 pips — a fraction of the spread — and 0–1% of slots beat a 1.0-pip cost.

Is this useful for swing or long-term trading?

Not really, and we'd rather say so.

Everything here is built from hourly bars. The "seasonal by month" view therefore shows the up-rate of hourly bars within each calendar month — it does not tell you whether the month itself closed up.

Measured across the whole year, that spread is tiny: 2.6 percentage points for EUR/USD, 1.8 for gold. And 23 years gives only 23 samples of each calendar month, however large the hourly n looks.

A swing trader asking "does September usually close lower?" needs daily or monthly bars. That's a different dataset, and it isn't this one yet.

So what is it actually good for?

Intraday context on the H1 timeframe — as a filter, not an entry.

  • Deciding when to be at the screen, and when the session has historically been directionless.
  • Avoiding trades that fight a strong, well-sampled hourly bias.
  • Session-level structure (Tokyo / London / New York), which is far more robust than any single cell because the sample is much larger.
  • Sanity-checking a strategy's entry times against decades of base rates.

It is a decision-support layer for a strategy you already have. It is not a strategy.

Account & pricing

3 questions
Do I need an account?

Not to look around — the dashboard is currently open. An account saves your timezone, symbols and watchlist so they follow you between your phone and desktop.

What's the difference between Free and Pro?

Free covers the hour-of-day and weekday heatmaps on the FX majors, with the full history and the sample size and significance on every cell. Pro adds all 19 symbols, timezone-aware monthly and session views, the top-signals ranking with average move, alerts, CSV export and a saved watchlist. Current amounts are on the pricing section.

Pro checkout isn't switched on yet — while it's being set up, the full dashboard is open to everyone.

Is this financial advice? Do you sell signals?

No to both. Perfect Indicators reports historical frequencies from past price data. It does not know the future, does not issue entries or exits, and is not licensed to advise you.

We don't sell signals, and we don't publish a number without the sample size sitting next to it.

Still deciding?

The five-minute guide walks you through reading a real heatmap cell, start to finish.

Read the guide →