Research is a work in progress. Estimated release: 1 December 2026. Our goal is to make it a search engine for trading setups in recorded crypto markets.
Liquidation rails forward test
Before the first test day we wrote down how the liquidation rails will be judged, froze the model and fixed the date we look. This page is that record. The result is added here once, whatever it is.
What a rail claims
A rail is a fixed price where modelled positions would be forced out. Each rail carries two numbers: the dollars of liquidations if price reaches it, and the liquidations expected within 24 hours (those dollars times the chance price gets there). The rails come from a model calibrated on Bybit's liquidation record, not from known positions. A rail is not a forecast that price will reach it.
What is tested
- Each test day at 00:00 UTC, every rail shown within 10% of the price, on every Bybit perpetual in the frozen market list (the development markets less a held-out set), is followed for the next 24 hours.
- Outcomes are the liquidations Bybit reported, from our live capture of its liquidation feed. A day whose 24 hours, or the 7 days before it, overlap a capture gap of 5 minutes or more is left out and counted.
- The frozen model is re-run on the test days and its rails are scored. The rails customers see live are made by our publisher from live data; how closely they match the tested rails is reported beside the result, without changing it.
- The look waits if fewer than 21 eligible days remain because of a separate study's exclusion, at the latest until 14 Dec 2026. The days never change and there is no extension after the look.
How it passes
All four rules must hold. Each was fixed before the first test day.
| Rule | What it asks | Passes if |
|---|---|---|
| 1. The dollars inform | Do each rail's dollars predict the liquidations when price reaches it, beyond distance and volatility alone, and beyond spreading a side's dollars evenly over its rails? | The model with the rails' dollars beats both baselines, with the lower edge of the day-block interval above zero |
| 2. The dollars are calibrated | When price reaches the largest rails, is the liquidation about what the rail said? | Realized over shown between 0.5 and 2 in each of the top three deciles |
| 3. The rails keep the dollars | Do the rails hold the model's fuel, rather than dropping it to look clean? | Rail zones hold at least 80% of each side's fuel within 10% of the price |
| 4. The 24 h figure is calibrated | Do the expected liquidations within 24 hours match what then liquidated? | Realized over expected between 0.67 and 1.5 overall, and between 0.5 and 2 in each of the top three deciles |
Reported with the result but not judged: every decile, hit rates and Brier scores, the share of liquidations that landed in rail zones, results by side and by coin class (small coins called out), and every exclusion with its count.
What the result does
- Pass: the rails keep their dollar and 24 h figures, now with this record behind them.
- Fail on a rule: that figure is withdrawn from customers until a new registered check passes. It may stay visible to our own staff, labelled as unproven.
- Until the look, customers see both figures labelled as a forward test. The 1 hour and 4 hour figures are not shown to customers: they are checked separately, and in development they were driven by a few crash days.
The development record
These numbers come from development, before the test: Bybit data from 6 Jul 2025 to 30 Jan 2026, fitted on some dates and scored on others (293 coins; 367,720 rails scored on 51 dates). They are why the test was run, not its result. The frozen numbers were then refitted on all of it.
| Check | Result | Count |
|---|---|---|
| Rails' dollars vs no-fuel baseline | 8.24% less deviance [5.77, 10.48] | 106,964 rails reached |
| Rails' dollars vs even split | +1.61 points less deviance [+0.71, +2.44] | 106,964 rails reached |
| Chance of reaching the zone, 24 h | 27.5% predicted, 28.6% happened | 364,321 rails |
| Brier score of that chance | 0.165, against 0.181 for the base rate | 364,321 rails |
| Fuel kept in rail zones | 90.6% (median 96.7%) | all scored sides |
| Liquidations inside a rail zone | 68.6% within 10% of the price | next 24 h |
| Decile | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| Dollars if reached: realized / shown | 0.68 | 0.54 | 0.55 | 0.72 | 0.88 | 0.93 | 0.91 | 0.98 | 1.03 | 1.09 |
| Expected 24 h: realized / expected | 0.68 | 0.57 | 0.66 | 0.63 | 0.59 | 0.68 | 0.84 | 1.12 | 1.05 | 1.27 |
The weak spots found in development, stated before the test:
- Small rails over-state: in the lower deciles about half to three quarters of the shown dollars liquidated.
- On small coins, the split between a side's rails was no better than an even split (the interval spans zero).
- For the 24 h figure, the chance of being reached does most of the ranking; the split between rails adds little.
- The scored months had more liquidations at the top and fewer at the bottom than the fit months. Only fresh data settles that.
What the test cannot tell you
- It covers Bybit only. Rails on Binance use the same frozen model on Binance data and are not checked: Binance throttles its liquidation feed. Hyperliquid is not tested either.
- 31 days is a short window. One quiet month or one crash can move the result, which is why every decile and every exclusion is published with it.
- The rails estimate positions from a model; they do not see actual positions.
How to check us
- The fingerprints below were taken when the model was frozen. At the look we publish these files with the result, so anyone can confirm they match and that nothing changed after this page went up.
- We also publish the scored rows (every rail, its numbers and what happened) and the capture's gap record, so the four rules can be recomputed. Bybit's price and open interest history is public and can be fetched independently.
- The result is published on this page whether the rails pass or fail.
Frozen files and their SHA-256 fingerprints
| File | Role | SHA-256 |
|---|---|---|
| PREREG_RAILS_FORWARD.md | The registration: window, units, gates, look rule | 3cabfb678bef2cc8b885c5d26243a500d2715a2fc1cd9e81c5bc8820ca3dabfa |
| ADDENDUM_FORWARD_INPUTS.md | How the registered inputs are read (no gate, date or model changed) | f949f49f1ba8933e66e4ecb378fa2c7638843f29c3c644009fada7dfc79c6fdb |
| freeze_rails.json | Every frozen number: dollar curves, decile edges, model coefficients | 16b29230a805ac5318e451d6bb440495f3f1826dda0c6c8e17e823f2a5b1cb4d |
| liqmap2-hl | The map and rails program the test re-runs | 02f734add37585c41527e3dff731044e41d45121406f42210f22f20b4e04ad9f |
| dist_bybit.json | Frozen leverage-distance profile | 1d15e2b007a7040e3d42f065198e468686d2086b3a63049713c112403c076171 |
| classes_bybit.csv | Frozen coin classes, which also fix the market list | 3c0c1cc73ea45628e9bf360a6adbf67bde1cbbf98b4b8cc41c842da8621ad983 |
| touch_lr_model.json | Frozen chance of price reaching a rail | ccca762fe36d36925a30ee1be2b4ceaf32a2f2c34bd4ad403ac586c0e5c2f0ea |
| score_rails_forward.py | The scorer, which refuses to run before the look or on changed files | 7d8f77e0331d638c67e3ba82731e81948edb590fb00e9668870b833fee022890 |
| extract_rails.py | How outcomes are measured | 17c5c8d83c3cd6fab95043ce3c77d436b2a8113a78f00328fc5a77717553d6ac |
| forward_look.py | Runs the frozen steps on the test days | 8eb5186af73813a28a8c41fc73a9273d9de24e8f06d8a6fa15dbc1f407357458 |
Related records
- Liquidation maps: every day, the map's dollars where price went beside the liquidations each venue reported. A daily description, not this test.
- Touch odds scoreboard: how often the 20-minute touch odds came true.
- In the terminal the rails are free on BTC on Binance, Bybit and Hyperliquid, and part of Pro on other markets.