Skip to content

What your scanner is actually ranking on

The Augury Grid scanner table on an ETHUSDT four hour chart, seven rows deep, with the top row eleven days old and still ranked first, annotated with the arithmetic that puts one point of quality score ahead of 11.6 days of age.
The row ranked first is eleven days old. The rank is quality times a thousand minus age in milliseconds over a million, so one point of score outweighs 11.6 days. The Age column is right there and the sort is almost blind to it.

A scanner is a leaderboard. Something decides the order, and it is usually not the column you are looking at.

This is our own multi-timeframe scanner. It shows seven rows out of twenty-one scanned cells, each with a bias, a star rating, an age, an entry, a stop, a target and a running P&L. Here is what actually sorts it.

First, what it does that most scanners do not

It tells you why it is silent. When a row has no signal it names the missing condition rather than going blank. There are twelve of them: waiting on the MACD cross, on trend alignment, on the 200 EMA, on ADX, on volume, on the histogram, on momentum, on score, or flagged as RSI extreme, price extended, stop hit, stale.

A scanner that says “waiting on volume” is teaching you the setup. One that shows an empty list is a black box.

And the gate is genuinely strict. For a signal to fire, ten conditions must be true at the same time:

MACD crosstrend alignment
price the right side of the 200 EMAADX above its floor
RSI not at an extremeprice not overextended
volume spikehistogram amplitude
momentum agreementquality score of 70 or better

Plenty of scanners fire on one. That is why the rest of this is worth doing: a tool this explicit about its conditions has earned the same care applied to its ranking.

One. Age is displayed and barely ranked on

The ranking line is this:

rank = score × 1000 - (timenow - ts) / 1000000   // ts in milliseconds

Put numbers through it:

termvalue
one day of age costs86.4 rank units
one score point is worth1000 rank units
so one score point equals11.6 days

A signal has to sit there for a week and a half before its age costs one point of score. The Age column sits right there in the table and the sort is almost blind to it.

That is why a stale row can hold the top slot on a board people read as “what is happening now”.

And the unit hides it further

Age prints in days for every row, whatever the timeframe.

rowage shownbars old
4H signal11d66
15m signal2d192

The bigger looking number is the fresher setup. On the live board, the fastest timeframe was carrying the oldest trades by roughly three times.

Two. The confluence bonus is added after the cap

Start with the part that is done well. The confluence count is direction aware. A symbol showing two bullish signals and one bearish is counted as two, not three. That sounds obvious and it is precisely what implementations get wrong, because the lazy version counts how many timeframes have a signal rather than how many agree.

So the counting is careful. It is the weighting that is not.

Quality is scored out of 100 and clamped there. Then a bonus is added on top: 15 more if the same signal appears on two timeframes, 30 if on three. Stars are awarded at 95 and 85.

setupfinal scorestars
barely clears the 70 minimum, on 3 timeframes100★★★
near perfect standalone94★★

The cap applies to quality and is then bypassed by agreement.

And we have measured what that agreement is worth. Agreement across timeframes came out at 0.60 times chance in our own data. Below luck. It is the single largest term in the ranking, attached to the weakest evidence we have.

Three. The board deletes its losers

When price passes a signal’s stop, the signal stops being a signal and leaves the table.

So every row still showing is, by construction, one that has not stopped out. Reading the P&L column as a track record means selecting on survival and then measuring the survivors.

This is correct behaviour for a scanner. A dead setup should not occupy a slot. It is only misleading if you read the column as history, which is what the eye does with a column called P&L.

Four. The P&L column is clipped at both ends

If the running result is past the stop it prints the stop distance. If it is past the first target it prints the target distance.

So a row reading +1% with a tick beside it is not the result. It is the distance to target one, reached or exceeded. Winners are truncated and losers are floored.

Also defensible, because it stops a stale row printing -60%. And it means the column cannot be summed, averaged or compared between rows.

The point is not that the tool is wrong

Every one of those is a reasonable design decision. None is a bug.

Together they mean the board shows survivors, ordered almost without regard to age, with results clipped at both ends, and a star rating dominated by a bonus for a property we measured below chance.

The job is not to distrust it. It is to know which column answers which question. Bias and stars decide the order. Age informs and barely sorts. P&L describes the survivors and only the survivors.

How to do this to your own scanner

Find the line that computes the rank. Not the one that draws the table, the one that sorts it. Then put real numbers through it.

Ours looked balanced until we asked what one day of age was worth against one point of score, and the answer was 11.6 days to the point.

If you cannot find that line, you do not know what your leaderboard is ordering on, and the column you are reading is probably not it.

The honest scope

Not a backtest, and not a claim about whether these signals make money. Nothing here measures outcome. It is a reading of how a display is built, from its own source, and it reproduces on any scanner whose code you can see.


Past measurement of our own tooling, described after the fact. Nothing here is a recommendation or an indication of future results.