2026-11-13 UTC
☰ Menu
◆ signal accuracy

What actually happened after each signal

A signal nobody has measured is just a decoration, so we measured ours. Across 391 coins and 225 days of price history, the same code that labels today produced 9,571 past labels.

Signal-days tested9,571
Coins391
History0.6 yr
Buy edge, 30d-5.5%

Median return after each label

2026-03-22 → 2026-11-02 · one reading every 7 days per coin

Signal on the dayWindows+7d+30d+90dHigher after 30dHigher after 90d
Strong buy710-0.8%-4.5%-19.0%42%29%
Buy1,053-1.8%-6.6%-25.1%40%22%
Neutral1,256-0.6%-1.5%-17.9%46%28%
Sell1,423-0.6%-0.6%-14.0%48%33%
Strong sell3,891-0.2%+0.0%-2.2%49%46%
Every window (baseline)8,333-0.5%-1.1%-10.0%47%37%

Ninety days out, the whole distribution

medians hide the tails, so both deciles are shown

SignalMedianMeanWorst decileBest decileWindows
Strong buy-19.0%-0.6%-54.5%+49.9%294
Buy-25.1%-11.4%-48.8%+39.2%524
Neutral-17.9%-5.7%-44.2%+44.9%785
Sell-14.0%+0.1%-39.5%+52.4%872
Strong sell-2.2%+20.4%-37.5%+59.5%2,489
Every window (baseline)-10.0%+8.1%-42.0%+54.3%4,964

Reading the table

Over 30 days the buy bucket returned -6.6% against a -1.1% baseline, so the label carried no measurable advantage. Only 40% of buy readings were in profit a month later, a shade below the 47% baseline. Even the strongest readings failed to separate: strong buy returned -4.5% over 30 days against a -1.1% baseline.

Honest verdict on ranking: buy sits below neutral over 30 days, and strong sell (+0.0%) finished ahead of both buy (-6.6%) and neutral (-1.5%). Sell labels added nothing on the downside: -0.6% over 30 days against a -1.1% baseline, so they flagged weakness that was already the norm. Horizon does not rescue it either: the buy bucket sits 15.1% below from the baseline at three months, against 5.5% below at one.

Because the median coin returned -10.0% over 90 days in this window, a bullish label needs to beat that, not merely finish positive. Medians and means disagree, and that is the real shape of this market: the median 90-day window lost +10.0% while the mean gained +8.1%, because a handful of enormous winners carry the average. Labels are not evenly spread: 24% of all scored days were bullish and 60% bearish.

Dispersion dwarfs the medians: the best tenth of strong-buy windows gained +49.9% over 90 days while the worst tenth returned -54.5%.

How this was measured, and what it cannot tell you

Method. The live scoring engine was replayed day by day. For each coin, a window of daily candles ending on day t was handed to the same function that labels coins today, so the label for day t uses only closes up to and including day t. Forward returns were then read from the closes at t+7, t+30 and t+90. Windows start after 220 candles, because the 200-day average needs that much history, and one reading is taken every 7 days per coin.

Survivorship bias. The universe is the coins this site tracks now. Tokens that collapsed, delisted or were abandoned before today are largely absent, which flatters every row in the table, the baseline most of all. Treat the absolute numbers as optimistic and the differences between rows as the part worth reading. Where candles carry no highs or lows — 18.6% of the sample — the score rests on six checks instead of ten.

Overlapping windows. Consecutive readings for the same coin share most of their forward period, and coins move together, so the window count is much larger than the number of genuinely independent observations. Confidence intervals would be wider than the sample size suggests.

Exchange and cost differences. Candles come from Binance USDT pairs where they exist and from CoinGecko daily series otherwise, so prices differ from what another venue printed on the same day. Nothing here subtracts trading fees, spreads, slippage or funding, and every entry and exit is assumed to happen exactly at a 00:00 UTC close.

What it is not. This is a measurement of a fixed set of technical checks on past data, not a strategy, a forecast or advice. Past distributions do not carry forward, the sample covers one broad market cycle at most, and a label that separated outcomes historically can stop doing so the moment conditions change. Read it as a sanity check on the labels you see elsewhere on this site, alongside the methodology and the trending archive.

Common questions

Is there look-ahead bias in these numbers?

No. The label for a given day is produced from a candle series that is cut off at that day, so the engine cannot see the prices it is being measured against. Forward returns are read only after the label exists.

Does a buy label mean the price will rise?

It does not. It means only that, in this sample, days scoring above 60 on ten fixed technical checks were followed by a median -6.6% over the next month, with a very wide spread around that median. A median is not a forecast for any single coin.

Why compare against a baseline instead of zero?

Because the sample has its own drift — the median 90-day window in it returned -10.0%. A label is only worth something if it beats a randomly chosen day in the same period, whether that baseline happens to be positive or negative, which is why the baseline row sits at the bottom of every table.

How often is this recalculated?

Once a week. Replaying the engine over 9,571 historical days is the most expensive job on the site, so the result is cached and refreshed on a weekly cycle rather than daily; the date of the run is shown above the table.

Why do some cells show a dash?

A cell is only printed when at least 40 windows fall into that bucket. Rare labels on short price histories do not produce enough observations to be worth a number, and a thin sample presented as a result would be worse than no result.

Does this include fees, or trending coins specifically?

Neither. Returns are raw close-to-close moves with no costs deducted. The sample is every coin with enough price history that the site tracks, not only the ones on a trending list, so it measures the technical signal rather than the trending signal.