What happens when a cluster of gradient-boosted and deep sequence models is pointed at cryptocurrency prices, why the obvious formulation fails, and how a relative, market-neutral formulation survives four years of out-of-sample testing.

The project started from a simple and widely shared intuition. Tree ensembles dominate tabular forecasting benchmarks, transformer variants dominate long-horizon sequence benchmarks, and cryptocurrency markets trade around the clock with freely available history at any resolution. Put many such models in a cluster, let them vote, execute their decisions automatically and retire the ones that decay. The interesting part of this report is not the architecture, which is conventional, but what a careful evaluation of it revealed and how the research changed direction as a consequence.
Three questions structure the work. Can a well-built ensemble predict the direction of a liquid asset over a few hours to a few days with enough confidence to pay transaction costs? If not, is there a formulation of the same data in which the predictable component is large enough to matter? And once an edge exists on paper, what does it take to run it unattended with the safety properties a system that moves money must have?
The answers, in order, were no, yes, and a surprising amount of plumbing. The directional programme produced a clean null result that is worth reporting in its own right, because the failure modes it exposed (label leakage, pooled quantile optimism, close-based stop simulation) are the same ones that produce most published claims of high accuracy in financial prediction. The cross-sectional programme produced a positive result whose economics are modest but robust, and whose limits come from liquidity rather than from signal.
The whole system runs on a laptop for research and a four-euro virtual server for execution, on public data. That constraint is part of the point. The methods that decide whether a result is real, embargoed walk-forward validation, attribution of every headline number and a cost model that errs pessimistically, are cheap to apply and expensive to skip, and none of them need infrastructure.
The efficient-markets argument of Fama [1] explains why directional prediction from public price history is unlikely to work at short horizons. Any regularity that can be exploited profitably is exploited until it disappears. This is a statement about competition, not about noise. Retail demand for a product is also noisy, but nobody trades against a sales forecast, so the seasonal structure survives being forecast. A price pattern that is forecast by enough participants removes itself. The relevant literature therefore treats predictive relations as small, transient and cross-sectional rather than large and time-series. Gu, Kelly and Xiu [10] apply a broad set of machine learning models to equity returns and find economically meaningful but small out-of-sample gains concentrated in nonlinear interactions of known characteristics. Their monthly out-of-sample R-squared values are below one percent, which is what a real edge looks like.
Liu and Tsyvinski [5] establish that cryptocurrency returns are not explained by exposures to conventional asset classes and that momentum and investor attention carry predictive information. Liu, Tsyvinski and Wu [6] show that a three-factor model built from market, size and momentum explains the cross-section of coin returns, in close analogy to the equity literature that began with Jegadeesh and Titman [3]. The low-volatility effect, documented in equities by Frazzini and Pedersen [4] as betting against beta, is the single strongest structural prior that emerged in this project. Makarov and Schoar [24] document large and persistent price dispersion across cryptocurrency exchanges, which is a reminder that frictions in this market remain much larger than in equities and that cost modelling decides whether a strategy exists at all.
López de Prado [7] supplies two devices used throughout this work. The triple-barrier method labels each candidate entry by which of three barriers a price path reaches first, so the training label coincides with the outcome of the trade that would actually be placed. Purging and embargoing remove from the training set every observation whose label overlaps the validation period, which is the only way to make walk-forward estimates honest when labels look several bars into the future. Bergmeir and Benítez [22] give the general case for blocked evaluation of time series predictors. Bailey and López de Prado [8] and Harvey, Liu and Zhu [9] quantify how quickly a backtest becomes meaningless when many configurations are tried, and their multiple-testing corrections motivate the haircuts applied to the final expectation in Section 7.
The tree family is LightGBM [11], with XGBoost [12] and CatBoost [13] planned as further experts. The deep family follows the plan of using forecasting architectures as sequence encoders with a classification head. PatchTST [14] tokenises a series into patches and is channel-independent, TFT [15] adds static covariates and interpretable attention, iTransformer [16] attends across variates rather than across time, and N-HiTS [17] is a multi-rate MLP forecaster. A GRU [23] served as the baseline every other deep model had to beat. Probability calibration used isotonic regression [19, 20] and was measured with expected calibration error [21]. The M5 competition results [18] are the clearest evidence that this exact toolkit, cross-learned tree ensembles on lag features, is state of the art when the target is not adversarial.
The system was built narrow first and widened later. One data category, one full pipeline from raw bars to executed paper trades, and only then more assets and more models. Figure 1 shows the components and the paths data takes through them. The two research programmes share every box except the labeller and the decision rule.
Historical bars come from the public Binance archive, which publishes complete monthly files of one-hour candles from 2017 and, from 2020 and 2021 respectively, funding rates and five-minute futures metrics such as open interest and the ratio of taker buy to taker sell volume. Live bars come through the ccxt library from the execution venue, or from Binance public endpoints when train and live consistency matters more than venue identity. Both loaders write into one bar schema whose validator rejects negative volume, highs below closes, duplicate timestamps and malformed timeframes. The store is Parquet on disk, one file per source, symbol and bar size, queried with DuckDB. Quality was better than expected. Across 7.7 years of hourly BTC data, 59 bars are missing and the longest gap is eleven hours.
A small design decision that mattered later concerns the timestamp of a bar. Every bar is keyed by its open time, and a decision made at the close of bar t may use any observation stamped at or before t plus one bar. Futures metrics are therefore resampled with a right-closed window and left label, so that the metric visible at a decision has actually been published by then. This rule removed a class of subtle look-ahead that is easy to introduce when merging data sources with different clocks.
The directional programme used the triple-barrier method (Figure 2). For a decision at the close of bar t, the trade enters at the open of t plus one and is checked over the next H bars. If the high crosses the take-profit barrier first the label is one. If the low crosses the stop-loss first the label is zero. If neither barrier is reached within H bars the trade closes at market and the label is the sign of the realised return. When both barriers are touched inside a single bar the stop is assumed to fire first. Barrier widths are expressed as multiples of the rolling per-bar volatility scaled by the square root of H, which makes a multiplier of one mean one typical move over the horizon and keeps the geometry comparable across assets and regimes. The same function later labels live decisions once their H bars have elapsed, so the training label and the logged outcome are computed by identical code.
Three feature pipelines share one per-bar core. The core computes log returns, bar range, the position of the close within the bar, the opening gap, short and long rolling volatilities and their ratio, volume relative to its rolling median, and sine and cosine encodings of hour of day and day of week. The tabular pipeline for tree models adds cumulative returns over lags from one to forty-eight bars, z-scores of log price over one and four days, a fourteen-bar RSI, the position of price within the last day's range, and BTC returns over three lags as market context for every asset including BTC itself, so that one global model serves the whole category. The window pipeline for deep models cuts the last L bars of the core matrix lazily, so the stored dataset stays linear in the number of bars. The futures pipeline adds the funding rate with a daily mean and a weekly z-score, log changes of open interest over one, four and twenty-four bars, the open interest level relative to its weekly median, and the log of each positioning ratio with its weekly z-score and daily change. Every feature is tested for causality by perturbing all bars after a cut-off and asserting that earlier rows are unchanged.
Every model implements four methods, fit, predict_proba, save and load, and receives the same frame. Tree models read the tabular columns and treat the base asset as a categorical feature, so a model trained on archive pairs quoted in USDT serves venue pairs quoted in USDC. Deep models read the per-bar columns and cut their own windows. Calibration is a separate object fitted on a held-out window and applied after prediction. The cluster holds a list of members, each with a calibrator and a weight, averages calibrated probabilities and applies one threshold. The cross-sectional programme reuses the interface with a LightGBM ranker whose predict_proba returns a score rather than a probability, which is a mild abuse of the name that kept the rest of the code unchanged.
Figure 3 shows the layout of one walk-forward split. Splits are time ordered and consecutive. The training window is separated from the validation window by an embargo of at least H bars, so that no training label resolves inside the validation period. Inside the training window the last fifteen percent is held out, again behind an embargo, and used only for early stopping. The validation window is halved. Its first half is used to fit the calibrator, choose the confidence threshold by expected value and set vote weights. Its second half is the only part on which anything is reported. An assertion checks every split for label leakage before a model is fitted. The same protocol, with the horizon in place of H, evaluates the cross-sectional rankers.
Two backtesters were written. The signal-level backtester of the directional programme opens a trade when the calibrated probability exceeds the threshold and no position is open in that symbol, holds for the realised barrier exit, and charges one round trip of venue costs. The portfolio backtester of the cross-sectional programme forms a long and a short leg at each decision time, charges a round trip per leg, simulates an optional disaster stop pessimistically on hourly extremes with slippage beyond the stop, applies leverage as a multiplier and combines sleeves with equal capital. Costs are never a single number. The cost model holds the taker fee, an assumed slippage and a per-symbol half spread measured on the execution venue by sampling the order book several times.
The risk layer follows the plan set before any model was trained. Each cluster, later each sleeve, has a hard capital budget, a position-size fraction, a daily loss limit that halts new entries for the day and a maximum drawdown from peak that retires it and notifies the operator. A global kill switch is a file that any process or human can create, engaged automatically on a total-drawdown breach or on a reconciliation mismatch, and checked before any new entry. Executors share one interface. The paper executor fills at the last close plus the modelled cost, holds margin at a configurable rate, checks stops against bar extremes in the same order as the labeller and persists its state to disk. The spot and perpetual executors on ccxt place a market entry, then a reduce-only stop at the venue, and settle exits on each poll by inspecting the venue's open orders and positions. Position state is persisted so a restart keeps tracking, and a verify step compares that state with the venue.
Every decision is logged with its score, the registry version that produced it and whether it was executed. Every trade is logged from entry to exit. Every round writes a status and a heartbeat file. A watchdog checks the heartbeat every six hours. Alerts go to a Telegram bot over HTTPS, with email as a second channel where mail ports are open. The service runs as a systemd timer rather than a long-lived process, so a crash costs at most one round and never leaves the book confused about its own state.
The first data category was the seven most liquid coins, BTC, ETH, SOL, XRP, BNB, ADA and LINK, on one-hour bars from 2017 or listing until August 2026. All seven passed screening on history depth, volume and venue spread. Table 1 shows the venue-side liquidity that shaped the cost model. Half spreads on Kraken's USDC pairs ranged from almost nothing on BTC to nearly nine basis points on LINK, which made a per-symbol cost model necessary from the start.
| Asset | History (y) | Volume ($/h) | Ann. vol | BTC beta | Half spread (bp) |
|---|---|---|---|---|---|
| BTC | 7.7 | 33,572,000 | 0.42 | 1.00 | 0.0 |
| ETH | 7.7 | 14,824,000 | 0.56 | 1.16 | 2.0 |
| SOL | 6.1 | 5,012,000 | 0.62 | 1.21 | 3.6 |
| XRP | 7.7 | 2,811,000 | 0.66 | 1.16 | 3.5 |
| BNB | 7.7 | 2,202,000 | 0.41 | 0.78 | 3.0 |
| ADA | 7.7 | 745,000 | 0.83 | 1.36 | 9.3 |
| LINK | 7.6 | 469,000 | 0.64 | 1.19 | 7.6 |
Before any model was trained, the horizon was chosen by economics. For each candidate bar size and horizon the typical move, defined as the median of volatility times the square root of H, was compared with the round-trip cost of the worst symbol. Figure 4 shows the result. On a spot venue whose entry-tier taker fee is 0.40 percent, the round trip is about 0.9 percent of notional, and the typical move only reaches two to three times that at horizons of one to two calendar days. Fifteen-minute bars are not viable at any horizon. The ratio depends on the calendar horizon rather than on the bar size, so the choice became one-hour bars with a horizon of 24 bars, with four-hour bars and a horizon of 12 as the alternative.
Fourteen configurations are summarised in Figure 5 and Table 2. Every mean AUC lies between 0.50 and 0.55, and the worst validation window of almost every configuration lies within two hundredths of chance. The model fits the training data (train AUC around 0.60) and early stopping fires after seven to twenty-nine boosting rounds, which is the signature of a task whose generalisable signal is tiny. Striding the training rows to reduce label autocorrelation changed nothing, which rules out overlap as the cause. Extending history to 2017 and adding the futures features moved the mean from 0.530 to 0.545, a real but useless improvement.
| Configuration | AUC | All decisions | Top 10% | Top 2% | Top 2%, worst window |
|---|---|---|---|---|---|
| H=24, barriers 2 to 1, spot costs | 0.525 | −1.11% | −1.29% | −0.67% | n/a |
| H=48, barriers 2 to 1, spot costs | 0.532 | −1.16% | −0.53% | −0.42% | −2.01% |
| H=72, barriers 2 to 1, spot costs | 0.531 | −1.40% | −0.30% | +0.69% | −0.42% |
| H=72, six windows, base features | 0.542 | −0.92% | −0.09% | +0.35% | −0.42% |
| H=72, six windows, multi-scale features | 0.528 | −0.92% | −0.56% | +0.33% | −1.03% |
| H=4, symmetric barriers, perp costs, long | 0.533 | −0.22% | n/a | −0.13% | −0.32% |
| H=4, symmetric barriers, perp costs, short | 0.533 | n/a | n/a | −0.06% | −0.26% |
| H=24, symmetric barriers, perp costs, long | 0.513 | −0.27% | n/a | +0.02% | −1.48% |
| H=24, symmetric barriers, perp costs, short | 0.513 | n/a | n/a | +0.02% | −0.61% |
The last four rows matter most. Even when transaction costs are lowered by a factor of five to the level of perpetual futures, and even when the short side is allowed, the tails of the confidence distribution carry a gross edge of roughly 0.05 to 0.2 percent per trade. Costs are not what defeated this formulation. There is close to no directional information in these inputs at these horizons.
A univariate check on the last twelve months gave the same picture from a different angle. The strongest single feature by absolute AUC was long-run volatility at 0.537, followed by day-of-week encodings at 0.52, and every return-based feature sat within one hundredth of 0.5. Volatility is predictable and direction is not, which is a well-known asymmetry [10]. A GRU trained on raw windows of 64 bars reached 0.535 at H equal to 24 and 0.519 at H equal to 4, matching the trees exactly, so the conclusion does not depend on the model family.
Two results during this programme looked like breakthroughs and were wrong. The first appeared when a helper column holding the absolute value of the trade return was added for sample weighting and silently entered the feature set. AUC jumped to 0.85 and the top decile netted six percent per trade. A number that good is itself the diagnostic. The fix was a naming convention that hides helper columns from the feature selector, and a test that enforces it. The second appeared when the top one percent of confidence at H equal to 48 netted 0.37 percent per trade. The quantile had been taken over predictions pooled across validation windows, so the "top one percent" was dominated by whichever window produced the highest scores. Taken within each window, the same statistic was negative. Both artefacts are common in the literature that reports high accuracy on price direction, and both are cheap to prevent once named.
If direction is unpredictable but volatility is predictable and returns are correlated across coins, the natural move is to stop asking whether a coin will rise and start asking which coins will do better than the others. Figure 6 shows the formulation. At each decision time, daily at midnight UTC, every asset with at least one year of history is described by features ranked across the universe, so that market-wide moves cancel. The target is the percentile rank of the asset's forward return over H hours minus the universe mean. A sleeve scores the assets, goes long the top fifth and short the bottom fifth with equal weight, and holds for H. This is the structure of the anomaly literature [3, 4, 6], and it has three consequences. The BTC factor that made every asset in the first programme one bet is removed. The label is robust to the fat tails of crypto returns because it is a rank. And the cost of a round trip is paid per leg once per holding period rather than per hourly decision.
Fifty candidate altcoins with multi-year spot history were downloaded at one-hour resolution from 2020, along with their funding rates. Meme coins, wrapped assets and leveraged tokens were excluded by rule. At each decision time an asset enters the universe after one year of history, and the panel is only formed on dates with at least fifteen eligible names. This gives 2,069 decision days from January 2021 to August 2026 with universe sizes from 20 to 49. The panel has 87,072 rows. This universe is survivorship-biased by construction, because a coin can only be hand-picked if it still exists. Sections 5.1 to 5.8 use it, and Section 5.15 replaces it with a point-in-time universe reconstructed from listing records, which is the universe every headline number in the abstract refers to.
Before any learning, the classic factors were tested as scoring rules, because a machine-learned ranker that cannot beat a one-line rule is not worth deploying. Table 3 reports the pooled results over the last two years. At daily and three-day horizons no factor cleared costs. At a weekly horizon the low-volatility factor, long the calmest fifth and short the most volatile fifth, was positive in every half-year window with a rank information coefficient of 0.11, and drawdown-from-high and two-week momentum were positive on average. The betting-against-beta effect of [4] is alive in this market and it is the structural prior everything else builds on.
| Factor | H=24 h net | H=72 h net | H=168 h net | H=168 h IC | H=168 h t-stat |
|---|---|---|---|---|---|
| Low volatility (long calm, short volatile) | −0.20% | 0.00% | +0.54% | 0.106 | 1.59 |
| Drawdown from 30-day high | −0.22% | 0.00% | +0.37% | 0.039 | 0.99 |
| Momentum, 2 weeks | −0.21% | +0.03% | +0.41% | −0.016 | 1.57 |
| Momentum, 1 week | −0.29% | −0.21% | −0.07% | −0.031 | 0.11 |
| Momentum, 1 month | −0.27% | −0.11% | +0.08% | −0.016 | 0.44 |
| Reversal, 1 day | −0.25% | −0.21% | −0.37% | 0.017 | −2.16 |
| Illiquidity | −0.30% | −0.27% | −0.17% | −0.036 | −0.01 |
A LightGBM regressor on the cross-sectional ranks plus three raw volatility features was fitted with the walk-forward protocol of Section 3.5. Table 4 compares training targets and quintile widths at the weekly and two-week horizons. Regressing on the rank of the forward excess return rather than on the return itself raised the information coefficient from 0.057 to 0.111 and the pooled t-statistic from 1.65 to 2.90 at the weekly horizon. Fat tails dominate raw crypto returns, and a model asked to predict them spends its capacity on a few extreme weeks. Blending the learned score with the low-volatility rank was the most stable single choice at the two-week horizon.
| Horizon | Score | q | IC | Net / period | Hit rate | t-stat | Ann. / capital | Worst period |
|---|---|---|---|---|---|---|---|---|
| 1 week | LightGBM, excess-return target | 0.2 | 0.057 | +0.50% | 0.55 | 1.65 | 21.6% | −15.4% |
| 1 week | LightGBM, rank target | 0.2 | 0.111 | +1.07% | 0.61 | 2.90 | 36.6% | −10.2% |
| 1 week | LightGBM, rank target | 0.1 | 0.111 | +1.58% | 0.61 | 2.26 | 40.5% | −23.2% |
| 1 week | rank model + low-vol blend | 0.2 | 0.121 | +1.10% | 0.59 | 2.42 | 30.8% | −13.1% |
| 2 weeks | low-volatility factor | 0.2 | 0.154 | +3.03% | 0.71 | 2.31 | 34.4% | −27.1% |
| 2 weeks | LightGBM, excess-return target | 0.2 | 0.096 | +2.44% | 0.65 | 2.62 | 33.8% | −11.7% |
| 2 weeks | excess model + low-vol blend | 0.2 | 0.139 | +3.12% | 0.69 | 3.22 | 39.4% | −12.8% |
| 2 weeks | rank model + low-vol blend | 0.2 | 0.151 | +2.73% | 0.66 | 2.82 | 33.5% | −8.4% |
Two years of evidence is short, and the period from late 2024 to 2026 was kind to this style. The walk-forward was extended back to March 2022, giving nine half-year windows and 231 non-overlapping weeks that include the 2022 bear market and the alt rally of late 2023. Over that span the weekly ranker on the full universe compounded at 15.9 percent per year with a Sharpe ratio of 0.84 and a maximum drawdown of 26.6 percent, positive in seven of nine windows. The losing window, September 2023 to March 2024, lost 21.8 percent when the short leg was squeezed in the alt melt-up, and that is the known failure mode of any strategy short high-volatility names.
Restricting each date's universe to the thirty most liquid names by trailing dollar volume improved every statistic (Table 5). The illiquid tail adds noise to the ranking, and it is also exactly where the execution venue has no depth, so the restriction is forced by liquidity and welcome for signal. The top-twenty universe holds four names per leg and is the most concentrated configuration that still validated across windows.
| Universe at each date | Names per leg | CAGR | Sharpe | Max drawdown | Windows positive |
|---|---|---|---|---|---|
| All eligible (about 46) | 9 | +15.9% | 0.84 | −26.6% | 7 / 9 |
| Top 30 by trailing volume | 6 | +33.9% | 1.35 | −28.9% | 8 / 9 |
| Top 20 by trailing volume | 4 | +43.6% | 1.54 | −26.9% | 8 / 9 |
| Top 15 by trailing volume | 3 | +27.3% | 1.01 | −41.2% | 6 / 9 |
Four sleeves were kept at this stage, two learned and two structural, and one was dropped. The set is revisited in Section 5.13 once a fifth candidate exists and once correlations rather than individual returns drive the choice. A majors-only sleeve was negative, confirming from a second angle that the seven largest coins carry no cross-sectional edge among themselves. The two-week momentum sleeve is weak alone but has a correlation near zero with the others (Table 6), which is what a diversifying sleeve looks like. The equal-capital book of the four has a Sharpe ratio of 1.50 without stops and a maximum drawdown of 24 percent at one times gross exposure.
| A weekly ML | B 2-week blend | C low-vol | D momentum | |
|---|---|---|---|---|
| A weekly ML | 1.00 | 0.42 | 0.82 | −0.06 |
| B 2-week blend | 0.42 | 1.00 | 0.47 | 0.00 |
| C low-vol | 0.82 | 0.47 | 1.00 | −0.01 |
| D momentum | −0.06 | 0.00 | −0.01 | 1.00 |
A per-leg stop-loss looked at first like a free improvement. Simulated on hourly closes, a fifteen-percent stop lifted the weekly sleeve from a Sharpe ratio of 1.35 to 2.18 and halved its drawdown. Simulated on hourly highs and lows with a 0.3 percent fill beyond the stop, the same stop reduced the Sharpe ratio to 1.24, and the four-sleeve book fell from 1.50 to 1.02 (Table 7). Intra-hour wicks trigger far more stops than closes do, and the trades they close are mostly trades that would have recovered. Tight stops were therefore rejected. A fifty-percent disaster stop, which costs about four points of annual return and trims the worst week from nine to seven percent, was kept as insurance against a squeeze the history never contained. Leverage scales return and drawdown together and leaves the Sharpe ratio unchanged, so it is a configuration value rather than a research question. The deployed configuration runs at two times gross on paper and is intended to go live at one.
| Book configuration | Leverage | CAGR | Sharpe | Max drawdown | Worst week |
|---|---|---|---|---|---|
| No stop | 1× | +26.1% | 1.50 | −24.0% | −11.3% |
| No stop | 2× | +54.8% | 1.50 | −44.6% | −22.6% |
| Stop 15 %, pessimistic | 1× | +18.8% | 1.04 | −19.9% | −8.8% |
| Stop 20 %, pessimistic | 1× | +17.0% | 1.02 | −18.6% | −5.4% |
| Stop 50 %, pessimistic (chosen) | 1× | +22.4% | 1.47 | −19.3% | −6.9% |
| Stop 50 %, pessimistic | 2× | +46.6% | 1.47 | −36.4% | −13.7% |
The economics hinge on execution. At 0.16 percent per leg round trip, the weekly ranker on the full universe compounds at 15.9 percent. At 0.30 percent it compounds at 7.8 percent, and at 0.50 percent it loses money. Funding payments on the perpetuals were computed from the archive for every position in the top-twenty book and net to minus 0.009 percent per week, because the long and short legs pay and receive in nearly equal measure. Capacity is set by the venue. Order-book sampling on Kraken Futures found millions of dollars within ten basis points for BTC and ETH, tens of thousands for LINK and AVAX, and under ten thousand within twenty-five basis points for names outside the top twenty. Beyond roughly fifty to one hundred thousand euros of gross exposure the book's own orders would begin to consume its edge on this venue. This is the state of the result before execution and portfolio construction were examined, which is where the rest of this section goes.
At this point the book had a Sharpe ratio near 1.4 and the obvious next move was to improve the model. That turned out to be the wrong place to look. The five changes described in the rest of this section were run as separate experiments on the same nine windows, and four of them touch execution and portfolio construction rather than prediction. Together they carry the book from a Sharpe ratio of 1.42 to 2.06 at roughly constant annual return, which is the more useful kind of improvement because it is the drawdown a holder has to survive, not the point estimate, that decides whether a strategy is livable. The three experiments that did try to improve the model all returned nothing.
Every leg in the backtest paid a taker fee and crossed the spread. A perpetual venue charges roughly a fifth as much for a resting order that adds liquidity, so the natural question is how much of that discount survives contact with reality. Each leg was re-simulated as a post-only limit at the near touch, filled if the following hourly bars traded through the limit, with waits from one to eight hours. Fill rates run from 94 percent at a one-hour wait to 98 percent at eight, which is an upper bound because queue position is not modelled.
The interesting number is not the fill rate but what happens to the legs that do not fill. Unfilled legs would have returned between +0.9 and +2.2 percent against +0.6 percent for filled ones, and the gap widens with the wait. This is textbook adverse selection. A limit order rests unfilled precisely when the price is running away from it, and the legs that run away are the ones worth having. So the wait should be short and the fallback should be to cross the spread rather than to skip the trade. Per leg, taker entry returns +0.536 percent, maker entry crossing when unfilled returns +0.613 percent, and maker entry skipping when unfilled returns +0.561 percent. At the book level that is +0.075 percent per week, about four points of annual return, which is roughly half the naive fee saving with the rest consumed by selection. The deployed loop places post-only limits at 00.15 UTC and crosses whatever has not filled by 01.45.
A weekly sleeve has to rebalance on some weekday, and the backtest had silently been using the one that happened to fall first in the data. Running the same sleeve from each of the seven possible start days gives annual returns from 24.2 to 33.9 percent and Sharpe ratios from 1.03 to 1.35. The figure reported earlier in this work was the luckiest of the seven. The honest average across start days is 28.5 percent at a Sharpe ratio of 1.18.
Splitting the sleeve into seven daily slices, each holding one seventh of the capital for the full week, returns 30.0 percent at a Sharpe ratio of 1.66 with no start-day dependence at all. Tranching buys about half a point of Sharpe over the average start day and removes a bias that was inflating the headline number, which makes it the rare change that improves the result and the honesty of the result at the same time. Every sleeve in the deployed book now runs one slice per day of its holding period.
Perpetual futures have no expiry, so they are tethered to spot by a funding payment exchanged between longs and shorts every eight hours. When a coin is crowded long, its funding rate is positive and shorts are paid to hold the other side. Ranking the universe by trailing seven-day funding, going long the coins that pay and short the coins that charge, and holding for a week gives a compound 21.4 percent per year at a Sharpe ratio of 1.66 and a maximum drawdown of 18.6 percent, positive in six of nine windows.
What makes it valuable is that its correlation with the weekly learned sleeve is 0.12. An equal-capital mix of the two reaches a Sharpe ratio of 2.19, which was the single largest improvement found anywhere in this project. The honest caveat is in the decomposition. Of the sleeve's return, 0.36 percent per period comes from the price move and 0.19 percent from the funding payment itself, so funding is acting mostly as a crowding signal rather than as pure carry. That is a weaker claim than collect the funding, and it is the claim the data supports.
With funding added there were five candidate sleeves, and the question of how many to run is a question about correlation, not about individual quality. The low-volatility sleeve was dropped despite being profitable, because it correlates 0.85 with the learned weekly sleeve and its factor already sits inside the two-week blend, so it was buying the same risk twice. The momentum sleeve was kept despite a negative Sharpe ratio on its own, because it correlates −0.13 to −0.23 with the two learned sleeves and therefore pays for its capital as a hedge. A sleeve earns its place by what it does to the book, not by what it does alone.
Two corrections to the backtest surfaced while this was built. Sleeve returns now accrue the funding a perpetual position actually pays or receives over its holding period, which on its own moved the carry sleeve from a Sharpe ratio of 0.90 to 1.72. And a stale non-overlap filter was thinning the tranched daily series back to weekly, which had been scaling those sleeves by a factor of seven. Figure 10 shows what each change was worth in sequence. The caveat that belongs with it is that 26 sleeve combinations were compared before this one was chosen, so the final Sharpe ratio carries selection optimism. The structural reasons, redundancy and hedging, are the more reliable part of the argument.
Having found most of the improvement outside the model, it is worth reporting carefully what happened when the model itself was attacked. Four experiments were run.
The first replaced the pointwise rank regression with objectives that match the task more closely. A listwise LightGBM lambdarank with graded relevance, a three-class model trained only to separate the extremes, and a five-seed ensemble all land between Sharpe 1.59 and 1.66 with annual returns between 28.8 and 30.0 percent, and their weekly return series correlate between 0.92 and 0.98 with each other. The loss function is not where the remaining edge is.
The second replaced the tree with a deep model. The same feature row was projected and passed through one transformer layer attending across the assets of each decision date rather than across time, which is the structure the cross-sectional formulation actually calls for, and the model was kept small and heavily regularised because the effective sample size is roughly 230 independent weekly outcomes rather than the 200,000 rows the panel appears to contain. It reaches a Sharpe ratio of 1.58 against LightGBM's 1.66. The two are 0.91 correlated, so holding both leaves the book's Sharpe ratio unchanged at 1.66 and improves only the drawdown, from 29.3 to 24.5 percent. The deep model learns the same ranking. Given the correlation it was kept in the codebase and left out of the book.
The third gave three further architectures the input those architectures were designed for. The two experiments above both fed the deep model the hand-built feature row, which is a summary a person chose and is lossy by construction, so the fair version of the question is what happens when a sequence model is allowed to see the sequence. An iTransformer, which attends across variates rather than across time, a Temporal Fusion Transformer with learned per-step variable selection and a recurrent pass, and an N-HiTS, which uses no attention at all and instead pools the series at three different rates, were each given the raw ninety-six day lookback window of returns, ranges, volume, trend gap and volatility alongside the feature row, through a shared attention pass across the assets of each decision date.
Against the deployed sleeve's 45.1 percent per year at a Sharpe ratio of 1.86, an equal-weight cluster of the three reaches 46.4 percent at 1.75, and combining that cluster with the gradient-boosted ranker gives 46.6 percent at 1.82. Every combination is flat or worse than the single tree model. The decisive measurement is what survives regressing each deep sleeve on the tree sleeve, where the residual means carry t statistics of 1.17, −0.14 and −0.42, so none of them holds information the trees lack. The three deep models correlate 0.85 to 0.89 with the trees and 0.92 to 0.94 with each other, which is the part worth pausing on. Three architectures chosen precisely because they make different assumptions about where structure lives converged on one ranking.
The per-architecture numbers deserve a paragraph of their own, because the first version of this experiment trained one random seed per architecture and that turned out to be the wrong way to read it. Repeating the two cheaper architectures across four seeds each gives Sharpe ratios of 1.89, 1.59, 1.61 and 1.83 for the iTransformer, and 1.49, 1.38, 1.89 and 1.58 for the N-HiTS. The spread within a single architecture, 0.30 and 0.51, is wider than the spread between architectures that a single seed appeared to show. Their best seeds are identical at 1.89. Averaging the seeds, which is how a deep model would actually be deployed, gives 1.78 and 1.66, both below the tree model's 1.86, where the single seed had made the iTransformer look like parity. So the correction moves the result away from the deep models rather than toward them, and the architectures are not distinguishable from one another at this sample size at all.
This is the same failure as the start-day bias of Section 5.11 wearing different clothes. An arbitrary choice was fixed inside the experiment, and the number that came out was the luckiest draw from it. It is worth stating how it was caught, which was not by a test but by asking which arbitrary choices the measurement still contained.
One property does survive the seed correction. The N-HiTS drawdowns are consistently shallower, between 16.6 and 20.3 percent against 22.5 to 25.8 for the iTransformer and 26.8 for the trees, in every seed. That is an architectural property rather than a lucky draw, and it is the only thing the deep models here do better than the trees.
The fourth, described in Section 5.15, changed the universe rather than the model, and it was the only one of the four that moved the result.
Taken together these are a fairly clean statement about where the information lives in this problem. When seven model families with different inductive biases and different loss functions agree to within noise and correlate above 0.85, the features and the formulation are doing the work and the model class is not the binding constraint. That is the same conclusion the M5 organisers reached from the opposite direction [18], where the winning entries were also distinguished by feature and target construction rather than by architecture.
Two bugs were found while running these experiments, and both are worth recording because of how they were caught. A pandas Series returned from the seed ensemble was silently re-aligned on its index when assigned back to the panel, which scrambled the scores and produced an annual return of −18.6 percent. Unlabelled rows at the end of a symbol's history broke the graded relevance labels for lambdarank. In both cases the diagnostic was that the result was implausible rather than that a test failed, which is the usual way this class of bug announces itself.
Every result to this point used a universe of coins chosen because they are listed today with several years of history. That is survivorship bias, and it is the largest methodological weakness in most published crypto backtests. The fix turned out to be available for free. The exchange archive's object listing enumerates every symbol it has ever held and keeps the history of delisted ones, so the first and last monthly file for each symbol give a listing and delisting calendar. Of 438 quote-matched symbols with at least two years of history, 155 were delisted during the test period. Roughly a third of the eligible universe was missing from every earlier backtest in this report.
Rerun on the true point-in-time universe, the weekly sleeve jumps from 23.3 percent per year at a Sharpe ratio of 1.37 to 118 percent at a Sharpe ratio of 3.24. That is not a result to take at face value, and the attribution says why. Legs on coins within eight weeks of their last bar are 4 percent of all legs but 22 percent of the profit, at an average of +8.5 percent per leg. Those trades are fiction. A delisting arrives with warnings and trading halts, and a coin on its way out usually has no perpetual market to short in the first place.
Excluding legs on dying coins and restricting to names with a venue perpetual gives 27.3 percent per year at a Sharpe ratio of 2.12, against 1.37 for the 50 hand-picked survivors. So the gain that survives scrutiny comes from ranking over a much larger pool rather than from shorting corpses, which is the same reason the liquid-subset restriction helped in Section 5.5 and a good illustration of why an attribution is worth more than a headline. Figure 11 shows both paths and the share of the naive gain that is untradable.
The deployed universe is 166 names, generated by intersecting that listing calendar with the venue's perpetual instruments. One bias remains and is worth stating plainly rather than burying. The venue's current perpetual list is itself a survivor list, and only one of the 166 was delisted during the window. Removing that would need the venue's historical instrument listings, which are not published.
Four attempts to improve the model had returned nothing, which left the features as the only place the constraint could be. The exchange publishes, for every perpetual, how much open interest is outstanding, how the largest traders are positioned and which side is paying to cross the spread. Sleeve E already shows that crowding predicts relative returns through funding, so the question is whether measuring the same thing directly adds anything funding does not already carry.
It does. Seven columns describing open interest growth, open interest relative to an asset's own recent level, the long and short ratios among top traders and among everyone, and the taker buy to sell ratio, all ranked across the universe like every other feature, take the learned weekly sleeve from 45.1 percent per year at a Sharpe ratio of 1.86 to 54.2 percent at 2.19. At the book level, where two of four sleeves are factor rules that do not use them, the effect is smaller but still the largest single improvement since the funding sleeve, from 2.06 to 2.23.
Two checks matter more than the headline. The first is that the archive publishes these files a day in arrears, so a live decision cannot see the same-day values the backtest was handing the model. Rerunning with every observation delayed gives 54.7 percent at a Sharpe ratio of 2.18 after a day and 56.0 percent at 2.25 after three, both unchanged within noise, so the result does not depend on freshness at all. That measurement turned out to matter more than a robustness check usually does. The archive publishes about two days in arrears rather than one, so a live decision sees values between one and two days old, and a staleness guard set to a day would have held the features permanently missing in production while the model expected them. The features are one-day to one-month aggregates and freshness is not what carries them. The second is that the same signals, ranked on their own as a factor sleeve in the manner of sleeve E, produce nothing. Of five factors, one is comparable to the funding sleeve and four are not, which is what five attempts return by chance.
The contrast between those two results is the useful part. The signs were set in advance from the crowding story, and for two of the five the data says the opposite, so open interest growth and taker buying behave more like momentum than like something to fade. Choosing the signs after seeing that would be the kind of fitting this report has spent its length avoiding. Handing the columns to a model that learns the signs from training data is the same operation done honestly, and it is the version that works.
The book that runs in production holds four sleeves with equal capital. Sleeve A is the weekly learned ranker, sleeve B the two-week blend of the learned score with the low-volatility rank, sleeve D the two-week momentum factor and sleeve E the weekly funding-carry factor. The two learned sleeves see the positioning features of Section 5.16; the two factor sleeves are rules and do not. Each sleeve is tranched into one daily slice per day of its horizon, each trades the top and bottom quintile of the 30 most liquid names in the point-in-time universe, and each carries a 50 percent disaster stop. Over 233 weeks from March 2022 the book returns 26.7 percent per year at one times gross exposure with a Sharpe ratio of 2.23, a maximum drawdown of 11.1 percent and a worst week of −3.3 percent. At the deployed two times gross those become 58.6 percent, the same Sharpe ratio, a 21.2 percent drawdown and a worst week of −6.5 percent.
The individual sleeves are much worse than the book, which is the point of running four of them. Sleeve A returns 54.2 percent at a Sharpe ratio of 2.19, sleeve B 53.0 percent at 2.47, sleeve E 11.3 percent at 0.68, and sleeve D loses 5.7 percent at a Sharpe ratio of −0.38 while remaining in the book because it is negatively correlated with the two learned sleeves. Every sleeve individually has a drawdown between 24 and 32 percent. The book's is 11 percent. Figure 7 shows the equity path and Figure 8 the return by half-year window.
A point estimate is the least useful summary of a strategy, because nobody experiences the mean. Resampling the 233 weekly returns into ten thousand synthetic years gives, at one times gross, a median annual return of 27 percent, an interquartile range from 15 to 39 percent, a 5 percent probability of a losing year, a typical within-year drawdown of 7 percent and a five-percent-tail drawdown of 15 percent. Those figures assume the future resembles the backtest, which Section 7.3 argues against at some length. They are the right shape to reason about and the wrong magnitude to plan with.
The book runs on a two-vCPU virtual server in Falkenstein for under six euros a month (Figure 9). Two systemd timers split each day into phases. At 00.15 UTC the decide phase pulls the last bars of the universe, merges them with the archive, forms the day's panel, settles any expired or stopped legs, opens today's slice of each sleeve into a virtual ledger, and sends the venue the difference between the ledger's netted target and what the venue already holds, as post-only limit orders. At 01.45 UTC the resolve phase settles those limits and crosses the spread on whatever has not filled. Each phase is a separate short-lived process, so state has to survive on disk rather than in memory, and a failure costs one round rather than the book.
The netting layer exists because four sleeves on one venue will disagree. Sleeve D is regularly long a name that sleeves A and B are short, and a perpetual venue holds one position per symbol, so the ledger sums signed target exposure per symbol across sleeves and the executor trades only the net. In the first deployed round, 48 virtual legs collapsed to 19 venue positions and cost 0.02 percent of gross to establish. A one percent rebalance tolerance stops the residue left by slippage from being re-traded every day. The backtest, which pays both legs of an internal offset, is conservative on this point.
Risk is layered. Each leg carries a 50 percent disaster stop in the ledger, and after every resolve the executor mirrors that stop into a reduce-only order on the venue itself, so a floor exists under the book even if the process dies or a timer never fires. Each sleeve has its own drawdown and daily-loss limit and stops opening new slices when it breaches them. A global kill switch halts all new entries on a total drawdown breach or on any reconciliation mismatch, while still allowing exits. A watchdog reads the heartbeat every six hours and a weekly report summarises rounds, skips, per-sleeve attribution and current exposure against the backtest's own weekly distribution, both over a messaging bot.
Before any capital was committed, the live path was exercised with two real round trips of about fifteen euros in a liquid perpetual, through the same executor the book uses. A post-only limit was accepted, appeared in open orders and cancelled cleanly. A market order filled. The venue's reported position matched the executor's belief exactly, reconciliation reported no discrepancy, and the position closed flat. The measured round-trip cost was 0.11 percent of notional including spread against the 0.16 percent the backtest assumes, so the cost model errs in the safe direction.
Three bugs were found by running the system that no test had caught, and they are worth listing because they share a shape. The resolve phase matched orders against bars keyed by data symbols while the orders carried venue symbols, so every order was silently dropped. The ledger had no persistence, so the book forgot its legs between the two daily processes. And the executor read the fee from the order response, which this venue leaves empty because fees appear only on the fill, so every live trade would have been logged as free. Each involves an interface between two components that were individually correct, which is the category of defect that unit tests are worst at and a real round trip is best at.
A fourth is the most instructive. Funding rates are published as monthly archive files, so for most of any given month the newest archived rate is weeks old. The feature that accrues seven days of funding forward-filled past the end of the data and returned exactly zero for every asset, which is not missing data but a valid tie, so the carry sleeve was ranking on a constant and selecting its legs out of sort order. A quarter of the book's capital was being allocated at random. The fix has two halves, a staleness guard that returns a missing value rather than a number when the feed is older than a day, and a live top-up from the exchange API. The general lesson is that a backtest cannot see this class of bug at all, because historical data is complete by construction and the defect lives only at the leading edge.
The two programmes used the same data, the same models and the same validation protocol, and they differ in one thing. The first asked a question whose answer, if known, changes the price. The second asked a question about relative behaviour that is driven by structural features of the assets, their volatility, their liquidity and the positioning of traders in them, and that is costly and slow to arbitrage. This is the practical content of market efficiency [1]. The directional result agrees with the small out-of-sample gains reported by [10] for equities and with the null findings that dominate careful studies of short-horizon price prediction. The cross-sectional result agrees with the factor structure documented for this market by [5, 6] and with the low-volatility anomaly of [4]. Neither result is surprising to that literature. What this project adds is a clean demonstration, on one codebase, of how the same machinery produces nothing in the first framing and a usable edge in the second.
The book's return comes mostly from the short leg. In the good windows the short side of the weekly sleeve contributed more than the long side, and the long side was often flat. In plain terms the strategy is short the most volatile and most crowded coins each week and hedged with the calmest large ones. That is a risk premium in the sense of [4], compensation for holding a position most participants cannot or will not hold, and the late-2023 loss is the moment when that premium was collected from the strategy rather than paid to it. Such moments should be expected to recur.
The funding sleeve sharpens the description. Its returns decompose into 0.36 percent per period from the price move and 0.19 percent from the funding payment, so what it is really ranking is crowding rather than carry. Both learned sleeves and the funding sleeve are therefore variations on one theme, which is that coins attracting the most leveraged speculative interest underperform coins attracting the least. That is a single economic story told by three different measurements, and it explains both why the sleeves diversify each other only moderately and why no change to the model class moved the result.
Roughly forty configurations were examined across the two programmes before the deployed one was chosen, which is enough for the selection bias quantified by [8, 9] to matter. Several things limit the damage. Every sleeve was validated on nine windows spanning a bear market, a melt-up and a quiet period. Two of the four sleeves need no fitting at all. The best learned configuration is also the one closest to the structural prior, which is what a real effect tends to look like and a fitted artefact tends not to. The improvement from restricting to liquid names is monotone in the restriction rather than a lucky point. And the single largest correction applied here, the point-in-time universe, moved the result in the direction that made it smaller and more believable rather than larger.
Against that, three specific worries deserve naming. The four-sleeve set was chosen after comparing 26 combinations, so the book's Sharpe ratio of 2.23 is the maximum of a search and not a draw from it. The Sharpe ratio rose from 1.42 to 2.23 largely through changes measured on the same nine windows that select them. And a 4.4-year history contains perhaps two genuinely independent market regimes, whatever the 233 weekly observations suggest.
The usual practitioner's discount is to expect roughly half the backtested Sharpe ratio in production. Applied here, that gives a live expectation of ten to twenty percent per year at one times gross and twenty to forty at two, with a drawdown of a quarter to a third of capital at some point, and a probability near one in four that the edge has already decayed by the time it is traded. The eight-week paper-trading period that gates any real capital is not long enough to distinguish those hypotheses, and is intended to catch operational failure rather than to confirm the edge.
Two constraints bound what a system like this can earn in currency rather than in percent. The first is execution cost, which halves the return between 0.16 and 0.30 percent per leg and erases it at 0.50, so patient maker execution on liquid names is not optional. The second is venue capacity, roughly fifty to one hundred thousand euros of gross exposure on this venue's alt perpetuals before the book's own orders start consuming its edge. Multiplying the two gives the honest conclusion. A market-neutral book with a Sharpe ratio near two and a realistic expectation of fifteen percent a year is a good home for savings and a poor substitute for an income, and the distance between those two statements is a factor of capital that no amount of modelling closes. This is worth stating explicitly because the literature on strategy construction rarely does, and because the gap between a good percentage and a livable amount is where most retail systematic trading projects end.
Every component of this stack, cross-learned tree ensembles on lag features with sequence models as further experts, leakage-safe walk-forward evaluation, a registry and a gated decision loop, is the toolkit that won the M5 competition [18] by a wide margin over classical methods. The difference is the target. Retail demand does not disappear when it is forecast, and neither does electricity load, equipment wear or hospital admission volume. In those domains the same protocol that measured a small and fragile signal here would measure a large and stable one, and the operational machinery built around it, versioned models, drift monitoring, gated automatic decisions and reconciliation, transfers unchanged. The evidence from this project is that the expensive and transferable part of the work was never the architecture.
Survivorship bias is reduced rather than removed. The universe is now reconstructed from the exchange's own listing calendar, so the 155 coins delisted during the test period are present and legs on coins close to delisting are excluded as untradable. What remains is that the venue's current list of perpetual instruments is itself a survivor list, and only one of the 166 deployed names was delisted in-window. Correcting that needs the venue's historical instrument listings, which are not published. The residual bias is much smaller than the original one and points in the same direction.
The out-of-sample history is 4.4 years and contains one bear market, one melt-up and one quiet stretch. Counted honestly that is a handful of regimes, not 233 independent observations, and every Sharpe ratio in this report should be read with that denominator in mind. The four-sleeve set and several execution choices were selected on the same windows that then measured them, which Section 7.3 discounts but cannot remove.
Costs are modelled from a small number of order-book samples and one live test of about fifteen euros. Slippage in fast markets will be larger than modelled, and the maker fill rates are an upper bound because queue position is not simulated. Funding is computed from one exchange's rates as a proxy for another's. Capacity beyond roughly one hundred thousand euros of gross exposure is untested and is expected to degrade.
On the modelling side the architectures were built and the question is closed more firmly than the earlier drafts of this work could claim, but two caveats belong with that. Each deep architecture was trained with a single random seed, and with roughly 230 independent weekly outcomes a single seed is the weakest link in the comparison, even though seed ensembling did not move the tree model when it was tested directly. And the deep models can only score an asset once it has ninety-six days of daily history, so on the earliest dates they rank a marginally smaller universe than the trees do, which favours the trees slightly in exactly the windows where the evidence is thinnest.
Several steps follow directly from the limitations above. Reconstructing the venue's historical instrument list, if it can be obtained from archived API responses or third-party snapshots, would close the last survivorship gap. Extending the history before 2021 would add a genuinely different regime, at the cost of a universe small enough that cross-sectional ranking barely applies. Modelling queue position in the maker simulation would replace an upper bound on fill rates with an estimate, which matters because execution turned out to carry more of the result than prediction did.
On capacity, deeper venues would raise the ceiling by an order of magnitude and the constraint is regulatory and administrative rather than technical.
The most direct route past the economic ceiling of Section 7.4 is a second book on equities, which is the subject of separate work and is mentioned here only to say why it follows from this one. A feasibility run of the identical pipeline on daily bars for 158 liquid US names returns 4.9 percent per year at a Sharpe ratio of 1.53 with a maximum drawdown of 5.3 percent, and correlates 0.27 with the crypto book. The return per unit of capital is far smaller, but the drawdown is a fifth of the crypto book's and equities are not capacity constrained in the way a single perpetual venue is, so the interesting quantity is gross exposure rather than percentage return. One detail from that run belongs here because it speaks directly to Section 7.1. The classic factors invert on equities, with three-month momentum losing 4.4 percent and low volatility losing 4.9 percent where both are strongly positive in cryptocurrency. That is what thirty years of professional arbitrage does to a published anomaly, and it is evidence for the efficiency argument rather than against the method.
On modelling, the null results of Section 5.14 suggest that further work on the ranker itself is unlikely to pay, and that the open questions are about the feature set instead. Order-book imbalance, on-chain flow and cross-exchange basis are all measurable and none were used here. A more speculative direction is to let the cluster learn its own sleeve weights from realised correlations rather than holding equal capital, which is a small change with a large capacity to overfit and would need its own walk-forward treatment.
Beyond this strategy, the argument of Section 7.5 points the whole pipeline at forecasting problems that do not compete against their own forecasts. Demand, electricity load and maintenance are the obvious candidates, and the evaluation discipline built here, embargoed walk-forward validation, attribution of every headline number and treating an implausible result as a bug report, is worth more in those settings than the trading logic it was built for.
A conventional ensemble of tree and sequence models, evaluated honestly, cannot predict the direction of major cryptocurrencies over hours to days from public price and derivatives data, and no choice of horizon, label geometry, feature family, training target or model family changes that. Reformulated as ranking a liquid universe and trading the extremes market-neutrally over one to two weeks, the same models and the same validation protocol produce an edge that survives 4.4 years of walk-forward testing, a bear market, realistic costs, pessimistic stop simulation, a point-in-time universe and a multiple-testing discount, at 26.7 percent per year with a Sharpe ratio of 2.23 in backtest and a live expectation of perhaps half that.
The more transferable finding concerns where that quality came from. Patient order placement, daily tranching, correct funding accrual and a sleeve chosen for its low correlation rather than its return account for most of the improvement from a Sharpe ratio of 1.42 to 2.23, while four separate attempts to improve the model, through listwise objectives, a three-class target, a cross-asset attention encoder and a zoo of three further architectures fed the raw sequence, all returned results within noise of a plain rank regression and correlated 0.85 or above with it. When model families with different inductive biases agree that closely, the binding constraint is the formulation and the execution, not the architecture. The most durable outputs of this project are therefore the null results, the four bugs that only running the system could expose, and a pipeline whose next target should be a problem that does not fight back.
Twenty-six experiments were run across the two programmes. Each is one script that writes one result file, so any row below can be regenerated on its own. The table exists because the interesting content of this project is distributed across the failures as much as the successes, and a reader who wants the whole picture should not have to reconstruct it from the narrative.
| # | What it asked | Why it was run | What came back |
|---|---|---|---|
| Programme I. Directional prediction on the majors | |||
| 01 | Does out-of-sample accuracy depend on the horizon, from 4 hours to 1 week? | If any horizon works, everything else follows from it | Null. AUC 0.50–0.55 at every horizon, and no top-decile net return clears costs |
| 02 | Does it work inside a particular market regime? | An edge that only exists in trends is still an edge if the regime is detectable | Null. No regime carried a usable edge |
| 03, 03b | Do wider or narrower barriers, or a different training target, change it? | The label geometry decides what the model is being asked to learn | Null across four geometries and four targets |
| 04 | Do features from several bar sizes at once help? | A 4-hour model may be blind to structure visible hourly or daily | Null. No lift from multi-scale features |
| 05 | Does it work at perpetual-futures fee levels rather than spot? | Perpetual fees are roughly a third of spot, so cost could be the binding constraint | Null. Cost was not the constraint, signal was |
| 06 | Does a recurrent sequence model beat gradient boosting? | Trees see a feature row; a GRU sees the path | Null. Matches LightGBM, both at chance |
| Programme II. Cross-sectional long/short | |||
| 07–09 | Ranked within each date, do classic factors separate future winners from losers? | A learned model that cannot beat a one-line rule is not worth deploying | Works. Low volatility is positive in every half-year window, IC 0.106 at a weekly horizon |
| 10 | What does this earn per year, and what does a bad year look like? | A Sharpe ratio is not a number anyone lives through | Bootstrapped annual distribution, and the first honest conversation about capital |
| 11 | Does restricting to the most liquid names help or hurt? | The illiquid tail is also where the venue has no depth | Monotone improvement down to the top 30, then it reverses. Top 30 deployed |
| 12 | How much does perpetual funding cost the book? | Funding is paid every 8 hours and could quietly erase the edge | Roughly neutral. Long and short legs pay and receive in near-equal measure |
| 13 | How many sleeves, and which? | Combining uncorrelated strategies is the cheapest Sharpe available | Several sleeves beat one, and correlation decides membership, not individual quality |
| 14 | Do per-leg stop-losses help when simulated honestly? | On closing prices they looked free; intra-hour wicks are the real test | Reversed the answer. Tight stops lower the Sharpe ratio once triggered on hourly extremes. Only a 50 % disaster stop kept |
| 15 | How much of the maker fee discount survives adverse selection? | A resting order fills exactly when the price is not running away | Worth about 4 points a year. Unfilled legs would have returned far more than filled ones, so wait briefly and cross the spread rather than skip |
| 16 | Does it matter which weekday the sleeve rebalances? | The backtest had silently fixed one, and nobody had asked | Found a bias. Start days ranged from 24.2 % to 33.9 %; the figure previously reported was the luckiest. Tranching removes the dependence and adds Sharpe |
| 17 | Is trailing funding a tradable signal in its own right? | Funding says which coins are crowded, and crowding is what the book already exploits | Largest single improvement found. Correlation 0.12 with the learned sleeve. Adopted as sleeve E, though the mechanism is crowding rather than carry |
| 18 | Does a listwise or three-class objective beat rank regression? | The loss function is the cheapest thing to change | Null. All within noise, weekly returns correlated 0.92–0.98 |
| 19 | Does a deep model that attends across assets add anything? | Cross-asset attention is the structure a ranking problem actually calls for | Null. Correlation 0.91 with the trees, so holding both changes nothing but the drawdown |
| 21, 22 | How much of the result is survivorship bias, and how much of the fix is real? | Every universe so far consisted of coins that still exist | Both large. 155 delisted coins recovered, but legs on dying coins were 4 % of trades and 22 % of profit. Excluding them, the honest gain comes from a larger ranking pool |
| 23 | What was each change actually worth, one at a time? | A sequence of improvements is not the same as an attributed one | Four of five gains were execution or portfolio construction, not prediction. Sharpe 1.42 to 2.06 at roughly constant return |
| 24, 24b | Do three further architectures, given the raw sequence, beat one tree? | Earlier deep models saw only the hand-built feature row, which is a summary a person chose | Null. Every combination flat or worse. Regressing each on the tree leaves nothing significant |
| 26 | How much of that null was one unlucky random seed? | With roughly 230 independent outcomes, a single seed is the weakest link | Invalidated the earlier point estimates and confirmed the conclusion. Seed spread inside an architecture exceeds the gap between architectures; seed-averaged, all sit below the tree model |
| 25, 25b | Does derivatives positioning, open interest and the long/short ratios, help? | Four attempts to improve the model had failed, so the features were the only place left | Works as features, not as a sleeve. Adding the columns to the learned ranker lifts the book from a Sharpe ratio of 2.06 to 2.23. Ranked on their own the same signals give nothing |
| 27 | What does it cost to trade a signal a day old? | The live timer ran before the decision bar had closed, so the book was doing exactly that | Nothing measurable. −0.004 % per week at t −0.18, because a cross-sectional rank held 168 hours barely moves in a day |
| 28 | Does the gap between a perpetual and its spot say anything funding does not? | Funding is the mechanism that closes that gap, so the two should overlap | Null, and slightly negative. −0.039 % per week at t −0.98. Redundant with funding, as expected, but now measured rather than assumed |
Three patterns run through the table. The first is that every experiment which improved the result touched execution, portfolio construction or the universe, and every experiment which tried to improve the model returned nothing. The second is that three separate findings took the form the number reported earlier was the luckiest of several, once for rebalance weekday, once for a hindsight-selected universe and once for a random seed, which suggests the habit of asking what arbitrary choices a measurement still contains is worth more than any single technique. The third is that the results which survived scrutiny were the ones with an economic story attached, and crowding is the same story told three ways by funding, by the learned ranker and by positioning.