Research · method
How we test crypto trading signals
Almost every popular trading idea looks convincing on a chart drawn in hindsight. We test them the other way around: rules first, then data, a control for luck, a second period, costs included - and the result is published whatever it says. This page is the standard every test on the site follows.
The seven rules
- Pre-registration. Before any data is loaded we write down the claim, the exact entry and exit, the data, the controls, the pass mark and the known weaknesses. The code is committed before the run. The order is visible in the commit history of our version control. Any change to the rules happens only as a dated addendum written before the run, never after seeing the result.
- Primary-source data. Exchange APIs and public archives (prices, funding, open interest, order books), not a third-party summary. Every number on a page comes from a result file, a database or a live API response, never from memory.
- A control for luck. The signal must beat what chance produces on the same data: random entries on the same coins and dates, the opposite side, a related condition (for example funding alone, when we test funding plus open interest), or shuffled labels.
- A second period. The result has to hold on a period the idea was not designed on, and for some tests on forward data collected after the rules were fixed.
- Costs included. Fees and slippage are deducted from every trade (0.15% round trip in our funding, open interest and listings tests, 0.20% in the spot-based altcoin season and Bull Market Support Band tests; each page states its figure), and funding paid or received during the hold is added.
- A written verdict rule. See the next section.
- Published as is. "No edge" and "undecided" are results. We say what we could not check.
How a verdict is decided
| Verdict | What it takes |
|---|---|
| Edge | The average result per trade is above zero after costs, the t-statistic is above 2, and the result beats the control (p below 0.05) on the first period and on the second period separately. |
| Conditional | It passes on the first period or on the whole sample but not on the second. |
| Undecided | Too few trades or events to judge (each test states its minimum in advance - usually 30 trades per period, 8 episodes for a bitcoin cycle test, 200 events for the liquidation test), or a forward test is still running. |
| No edge | Anything else: enough data and the result is not distinguishable from chance, or it is negative. |
The p-value comes from resampling: we draw the same number of trades from the control group at least 10,000 times (100,000 in the Uptober test) and count how often a random draw does at least as well as the signal. The t-statistic and p-value are explained in the glossary. A high win rate alone never decides anything: several signals we tested win most of their trades and still average about zero, because a few trades lose far more than the typical win.
What we have tested
| Test | Data and sample | Control | Verdict |
|---|---|---|---|
| Liquidation clusters as magnets | BTC, ETH, 105 events in the first 30 days; forward test running | Mirror level on the other side | Undecided |
| Pumps always dump | 1,215 pumps on Binance futures, April-October 2026 | A level at the same distance on the other side; shuffled sides | No edge |
| Uptober | Bitcoin monthly returns 2013-2026, 13 Octobers | Shuffled months | No edge |
| Rainbow chart | Bitcoin 2016-2026, bands fitted only on data known at the time | Buy and hold; random strategies with the same number of trades | No edge |
| Altcoin season | 82 month-ends 2019-2026, 8 readings | Every month, against bitcoin | No edge |
| Extreme funding | 522 Binance coins, 1.8 million payments, 2024-2026 | Same position at every payment | No edge |
| Funding plus rising open interest | 522 coins; first run on 20 coins was undecided | Funding alone | No edge |
| New listings | 348 Binance futures listings 2024-2026 | Older coins on the same dates | No edge |
| Bull Market Support Band | 17 touches, bitcoin 2018-2026 | Random days in the same bull context | No edge |
All results side by side: crypto trading strategies, tested. What is active right now: signals today.
What our method cannot do
- Survivorship. Datasets of coins still trading miss delisted ones. Each test says which way this leans.
- Small samples. Bitcoin has had only a few market cycles; touches within one cycle are related. We report the sample size and call a test undecided when it is too small, rather than stretch it.
- One market, one period. Most tests use Binance data from 2024 to 2026. A different regime could behave differently.
- Execution. Real slippage on thin coins can exceed our cost assumption; we test the rule, not a live account.
- "No edge" is not "never". It means this version of the idea, on this data, did not beat chance after costs.
Data and freshness
Live pages use public data from Binance, Bybit, OKX, Gate, Hyperliquid and BingX. Liquidation heatmaps are a model: no exchange publishes where individual positions would be liquidated, so levels are estimated from open interest, price and leverage assumptions. Order book heatmaps, funding, open interest and liquidations are exchange data. Our data and charts are free to use with a link under CC BY 4.0.
Corrections log
If we find an error on a published page we fix it and add a line here with the date. No corrections so far. Spotted something wrong? Write to contact@edgeornot.com.
FAQ
What does "no edge" mean on Edge or Not?
That on the data we tested and after costs, the signal did not do better than chance by the pass mark we wrote down before the run. It does not prove the idea can never work.
What is pre-registration in a backtest?
Writing down the exact rules, the data, the controls and the pass criterion before looking at any result. It prevents choosing the version of an idea that happened to work on the past data.
Why do you use a control group?
Because most price moves partly reverse or trend by chance. A signal is only meaningful if it beats what random entries, the opposite side or a related condition produce on the same data.
Why a second period?
A result that holds only on the data used to look at the idea may be luck or overfitting. The signal must pass on a period it was not designed on, and for some tests also on forward data collected after the rules were fixed.
How do you handle mistakes?
Errors found after publication are fixed on the page and noted with the date in the corrections log. The rules of a test never change after the data is loaded except by a dated addendum written before the run.