Skip to main content

AI-First Trading Principles for Crypto Perpetuals

· 57 min read
Vadim Nicolai
Senior Software Engineer

An optimistic backtest can show Sharpe 5 where live reality is negative, and an AI graded by it will optimise into the gap with total conviction — because inside that simulator the strategy genuinely works.

The simulator is not a test. It is the model's reward function. That is the sharpest trap I know, and the rest of this post is what I found while walking into it.

Here is the shape of what I found. Give a router a third action — quote, cross, or abstain — and it takes the third. always_abstain scores exactly 0.0 and is the best arm in 11 of 11 panels, without consulting the signal at all. The fitted policies that do trade pick about 1.6% of rows and still end below zero. A model that has learned to almost-not-play is not broken. It is reporting the absence of an edge correctly, which is the only honest output available and the one every trade-count metric punishes.

Everything that decides whether an AI makes money on a crypto perp lives in the coupling between model and market: fees, funding, regime, and the evidence you are willing to accept. A round trip costs 4–14 bps before the model says a word.

I went looking for that edge at sub-minute horizons and did not find it. What the search produced instead was fifteen principles about how to run a model against a market — each ending with the condition that breaks it, each carrying the measured number behind it, and several carrying the number that killed an earlier version of the same claim. They are worth more than the strategy would have been.

Where these come from

Every first-person number below traces to a named experiment; the appendix at the end lists which. They come from a research programme aimed at sub-minute perpetual-futures trading, which the arithmetic closed — against a maximum gross of 1.4457 bps anywhere measured, break-even needs a taker fee of 0.8078 bps per side at best, against a 1.7 bps published floor and a 5 bps VIP0 charge. The principles are what survived that result, and none of them depends on it. The screen is a two-leg removal test: delete the AI and the principle must go vacuous, delete the market and it must go inapplicable. I ran the same test over my own codebase, where 0 of 108 modules survived both legs. Everything below is enforced in a running system or measured in one, and the numbers are mine unless a paper is named.

I. What the market does to the model

Edge is denominated in fees, and the model inherits the denomination

Before any model runs, the venue has already priced the game. On a Binance USDT-M perpetual at VIP0, maker is ≈2 bps a side and taker ≈5 bps (published fee schedule). The full round trip therefore lands between 4 and 14 bps depending on the leg mix: maker-in/maker-out ≈4–5 bps, maker-in/taker-out ≈8–9, taker both ways 12–14.

My minimum-viable-edge rule is that the expected move must clear 1.5× the worst-case round trip. That is how the design geometry became +15 bps take-profit against −6 bps stop. The realised numbers follow from the fee table: a maker-exit win nets 15 − 4 = +11 bps, a taker-exit loss nets −6 − 9 = −15 bps. Breakeven is therefore 15/(11+15) = 57.7%.

It is tempting to file this under costs and move on, but the market-design literature says it is closer to the rules of the game. Budish, Cramton and Shim (2015) argue that the continuous limit order book is not a neutral venue but a mechanism whose arms race is structural. Their proposed replacement is frequent batch auctions — uniform-price double auctions run roughly every tenth of a second. The fee schedule is the visible surface of that mechanism.

Nor should you expect it to improve on its own. Budish, Lee and Shim, modelling exchange competition and the rents from selling speed, find a wedge between private and social incentives to innovate. That wedge "supports the persistence of an inefficient market design in equilibrium." The venue's economics are not a transient you can wait out.

Even in slower asset classes the erosion is severe. Implicit market-impact costs "may substantially erode a strategy's expected excess returns," in Li, Chow, Pickard and Garg's accounting for factor strategies. A high-turnover strategy pays that toll on every one of far more round trips.

The AI-first consequence is that this arithmetic is not advice the model receives. It is the shape of the model's vocabulary. My proposer may move exactly three numbers. Their walls were computed from the fee table before any model was ever called: tp_bps in [10, 25], sl_bps in [4, 10], time_stop_s in [20, 120]. A proposal outside a wall is refused by name, never clipped. The AI cannot propose the trade the fee schedule already killed, because the fee schedule was compiled into its cage.

Breached when the model's proposal space contains geometries that lose to fees — or when a band is widened without redoing the fee arithmetic that set it.

A longer horizon buys beta, not edge

When cost dominates a signal, the reflex is to hold longer. Fees are charged per round trip and the move should grow with time, so somewhere out along the horizon axis the arithmetic ought to flip. It does flip. It flips for the wrong reason, and the way it flips is the most expensive near-miss in my record.

I swept the holding horizon and the table read like a solved problem. Gross per fill runs −0.7512 bps at 800 ms, −0.6876 at 10 s, −0.7126 at 60 s, then turns: +0.3965 at ten minutes, +2.7464 at one hour, +8.3162 at six hours. The six-hour cell clears the 3.4 bps round-trip toll — the first and only cell in the entire investigation to do so — at a t-ratio of 35.7.

It is beta. On 2024-03-28 the market moved +187.8 bps; on 2024-03-29 it moved −132.0. Decomposed against that drift, the six-hour cell is 99.0% market and 0.0831 bps of residual, and the residual does not resolve. At one hour it is 88.3% market; at ten minutes, 50.1%. The apparent edge was the market's direction arriving inside my holding period, sampled by a strategy that happened to be holding.

The selection underneath it is the part worth stealing. The rising day produced 89,750 fills against the falling day's 60,708 — 48% more — so the fill-weighted drift is positive even though the two days nearly cancel. A strategy does not sample days uniformly. It samples them in proportion to how often its own conditions fire, and those conditions fire more when the market is moving its way. Beta does not arrive as an obvious market-long position. It arrives as a sampling bias in which days you traded.

What survives the decomposition is the actual answer, and it is flat. The residual reads −0.7424 bps at 800 ms, −0.7076 at 10 s, −0.7719 at 60 s — resolved at 73.8×, 25.0× and 12.2× its own bar — and stays flat across a 75× horizon range. That is the signature of a fixed cost, not a decaying signal: adverse selection is about −0.72 bps paid at the fill, and everything above it was the market. The best residual anywhere is +0.3202 bps at one hour, which is 10.6× short of the toll and only 1.10× its own error bar, on two days.

So the horizon lever does not work, and it fails in a way that would have published. A sweep across horizons is a search, and the cell it returns is the one where beta is largest — reported with a t-statistic that grows as the contamination grows. A t of 35.7 on an unadjusted number is not strong evidence. It is a very precise measurement of the market.

The correction is procedural rather than statistical, and it is cheap: a directional claim names its horizon, its raw figure, the benchmark, and the benchmark's unconditional move over the same window. The literature has had the machinery for this for years — Liu, Liang and Cui identify market, size and momentum as common risk factors across 78 cryptocurrencies, and a return not adjusted against at least the market factor is not a result about a strategy. What is new here is only how fast an automated sweep finds the contaminated cell and hands it to you with a compelling t-statistic attached.

Breached when a horizon sweep reports its best cell without decomposing it against the benchmark's unconditional move over the same window — or when a rising-market sample is allowed to contribute more fills than a falling one without that asymmetry being measured.

The trade's sign is an experiment, not a parameter

My strategy template enters after a liquidity sweep — a burst of aggressive orders clearing one side of the book — and follows it, betting on continuation. The best live evidence on the venue says the money is in counter-trading it — reversal. That disagreement is genuine and current. It is also exactly the kind of question an AI operator will try to resolve by quietly flipping a parameter. So the sign is structurally not proposable. direction carries no clamp band, and the proposer's no-band branch refuses it by name the moment a proposal mentions it.

The reason a flip cannot be a tuning step is arithmetic, and it is easy to get wrong. Long gross is dmid − 2·half; short gross is −dmid − 2·half. Inverting the signal reflects the mid move and keeps the cost — the round-trip spread is paid in both directions. So a large negative result is not a large positive result waiting to be turned around. It is mostly the cost, and the cost does not have a sign.

I have the measurement that makes this concrete, and it is a trap I would otherwise have walked into. On XRPUSDT, CVD comes back resolved negative in 10 of 10 cells, at −1.4073 to −1.7343 bps — which reads irresistibly like an inverted edge of the same magnitude. It is not. XRPUSDT's round-trip spread is 1.6076 bps, so the mid move actually hiding behind that −1.4073 is 0.2003 bps.

Flip the signal and the best short gross is −1.4809 bps: still negative, because you kept the spread and gained two-tenths of a basis point. Across all four instruments the best short gross is +0.0423 on BTCUSDT, −0.0158 on ETHUSDT, −0.0427 on DOGEUSDT and −1.4809 on XRPUSDT. The short side is worse than the long side on three of four, and the single positive is 80× short of the 3.4 bps floor it would need to clear.

The underlying signal is real, which is what makes the trap live rather than academic. Cont, Kukanov and Stoikov (2013) established that order flow imbalance relates linearly to price change over short intervals. The slope is inversely proportional to market depth. The result holds across time scales, stocks and intraday seasonality. Volume imbalance predicts the sign of the next market order on Nasdaq data, and HFT trading direction predicts price changes over seconds while correlating with book imbalance.

Against that, the live Binance experiment cited earlier concludes the opposite for a maker: counter-trade the imbalance. Both can be true. Direction-of-price and profitability-of-a-resting-order are different questions, and the depth-scaled slope means the same imbalance implies a different move on a book of a different thickness. So the sign gets settled the only way a sign should: one pre-registered experiment, continuation and reversal as each other's control, spending one holdout read, on my venue at my latency. Until that run, both templates exist and neither is believed. The model may move numbers inside declared walls.

It may not change what the strategy is while nobody is looking — because a flipped sign is not a tuned strategy. It is a different strategy wearing the old one's track record.

Breached when the model can flip long/short semantics — or when a sign is adopted from a paper instead of from a pre-registered run on your own venue — or when a large negative result is read as an edge in waiting, without first subtracting the cost that is paid in both directions.

Crypto's native state is an input advantage, not an edge

The inputs that make crypto crypto have no equities analogue: the funding countdown, the mark-versus-index basis, liquidation flow — and a strange algorithmic clock. The Quarter-Hour Effect (arXiv:2607.09426) documents that clock as periodic bursts of volatility and volume at the 1-, 5- and 15-minute marks on Binance perpetuals, measured across six contracts. Opening order imbalance predicts returns over a 4–12 hour horizon, with "much weaker effects at finer clock-time frequencies." These are the only inputs that could put a trading model at the AI × crypto intersection, so they are the ones worth testing properly.

The mechanism itself is well understood, which is the first reason to be suspicious of easy edges in it. Fundamentals of Perpetual Futures derives explicit no-arbitrage prices for linear, inverse and quanto contracts, and identifies the funding specifications that guarantee spot-futures price coincidence and dynamic replication. Later work builds replicating portfolios directly and proposes path-dependent funding as a practical way to hold prices to target. Meanwhile the exploitable gaps have been closing for years: crypto arbitrage opportunities are well documented, but their magnitude fell sharply from April 2018 onward and existing price differences are now barely exploitable.

Then the trap, and it is the most instructive negative result I know in this space. Funding-Aware Optimal Market Making for Perpetual DEXs (arXiv:2605.06405) treats the funding rate as a stochastic state variable. The coupling it adds to classical market making is that inventory now creates both mark-to-market exposure and a state-dependent funding cash flow. A reduced inventory-funding control problem is formulated and solved with a monotone finite-difference Hamilton-Jacobi-Bellman scheme, with bid and ask quote offsets recovered from discrete inventory value differences. The control problem is solved with a monotone finite-difference HJB scheme. No learned model anywhere.

The holdout runs 100 seeds, calibrated on Hyperliquid ETH, BTC and SOL data. The result: "the funding-aware HJB improves mean ETH/BTC performance while lowering inventory RMS relative to classical Avellaneda-Stoikov" (arXiv:2605.06405). That is better performance and less inventory risk than the 2008 baseline — from adding one state variable to forty-year-old machinery. So the crypto-native mechanism my specs had carried as a design, and never tested, was finally built and measured. The task: forecast the next 8-hour Binance funding print for BTCUSDT and ETHUSDT. The data: 2,091 settlements each from the public funding-rate archives, on six funding lags plus settlement hour and day-of-week. Persistence, trailing mean, AR(1), ridge and gradient-boosted trees all ran on an identical expanding-window five-fold walk-forward.

Before the data was touched, the bar was fixed: beat persistence on both out-of-sample MAE and directional accuracy in ≥4 of 5 folds, pooled sign test p < 0.05. BTCUSDT returned 3/5 and 3/5 at p = 0.095 — fails. ETHUSDT returned 5/5 on MAE but 3/5 on direction — fails the conjunction. Ridge carried the better MAE in 4 of 5 BTCUSDT folds. The classical arm won the disjunction my own spec had left open.

The economics are the part that should have been checked first, and this is the discipline the whole result taught me. Mean funding is 0.4577 bps per 8 hours on BTCUSDT (std 0.586) and 0.448 on ETHUSDT. Against a hurdle of one side's fee, every policy nets ≤ 0 at 2, 5 and 10 bps per side — including the oracle.

With perfect foreknowledge, BTCUSDT makes zero position changes and ETHUSDT's oracle loses 5.02 bps net over roughly two years. The mechanism is economically inert at any realistic fee before forecast quality even enters the question. The forecasting bar was carefully specified, pre-registered and run — against a quantity that could not have paid for itself however well it was predicted.

There is a sharper caveat sitting under any funding model, and it deserves to be load-bearing rather than a footnote. Funding is a print, not a price — and prints have an attack surface. In commit-then-reveal encrypted mempools, the funding signal sets a transfer rate while receiver-side open interest is the transfer base, and a corrective transaction cannot enter an already-committed batch. Skill at predicting a manipulable print is not the same thing as skill at predicting a market, and only one of them survives contact with whoever is doing the manipulating.

The same question went somewhere else entirely, in case the failure was the instrument rather than the thesis. The data: 833,098 resolved pump.fun launches, launch-time features only, chronological split. AUPRC was pre-registered as the metric, because a 0.18–0.23% base rate makes AUC misleading.

Both models beat random by four to eight times, so the structure is genuinely there. But the classical logistic scored 0.01778 AUPRC against the boosted trees' 0.00878 — the learned arm 50.6% worse in relative terms, and failing its +10% bar by a wide margin.

The metric choice inverts the answer: on AUC the trees look better, 0.824 to 0.696. Rank the whole distribution and the learned model wins; ask which candidates to actually act on and it loses by half. That is the textbook imbalance lesson, and it is exactly the lesson a dashboard reporting AUC would have hidden.

What did finally occupy the intersection is worth stating precisely, because it is not an edge. The first genuine crypto-native × learned object in my corpus is a measurement instrument. It is a cost-attribution probe that needed a model reading a classified funding column in order to run at all. It ran to completion for the first time here.

The model powering it is the same one that had just failed its own skill bar. Both facts belong in the ledger together. A crypto-native input does not make an AI-native edge. The model leg has to be earned separately, on data, with the classical scheme as the baseline it must beat.

Breached when "we use funding/on-chain/liquidation data" is offered as evidence the strategy is AI-first without a classical control fitted on the same inputs — or when a forecasting bar is set on a quantity whose economics were never checked against the fee — or when a ranking metric is chosen that flatters the model on the part of the distribution nobody trades.

Leverage makes the tail endogenous — and mine is unmeasured

Every principle so far has carried a number I measured. This one does not, and saying so is the point of including it.

The mechanism is specific to this asset class. Crypto perpetuals carry leverage up to 100×, and BitMEX-era platforms were averaging over $3 billion in daily volume on exactly that product. Perpetuals now account for roughly 93% of crypto futures volume (Zhivkov, 2026). At that leverage, price moves force liquidations, and liquidations are themselves market orders.

The selling is caused by the price and then causes more of it. In 2021, nearly **80billionofpositionswereliquidatedoncentralisedexchanges,[over80 billion** of positions were liquidated on centralised exchanges, [over 200 million a day](https://doi.org/10.1016/j.ejor.2022.07.037). Tran, Nguyen, Le and Pham study Binance USDT-margined perpetual swaps. They find bitcoin open-interest changes are the strongest crash predictor, with an odds ratio of 1.48. It models the cascades directly against circuit-breaker counterfactuals (Studies in Economics and Finance, 2026).

One consequence deserves to frighten a risk model more than it usually does. Under auto-deleveraging, a solvent, correctly-stopped position can be closed by the venue because somebody else's losses have exhausted the margin pool. Formalised as an optimisation, ADL socialises losses among surviving participants, and a minimax-leverage policy — minimising the maximum participant leverage — is optimal under monotone risk measures in isolated margin. Read that as a trader and it says: your exit is not entirely yours.

A stop-loss models the price reaching your level. It does not model the exchange reaching into your position because the queue of insolvencies got long enough. That tail does not appear anywhere in a price series, so no model trained on price series can anticipate it.

Now the honest part. My archive holds bookTicker and aggTrades. There is no funding, mark-price or premium-index data on disk at all. So I cannot measure liquidation intensity, cascade timing or ADL exposure from my own data. Every number in the two paragraphs above is somebody else's.

A system that quietly let this pass would be making this post's error in reverse. Not believing an unsupported claim, but treating an unmeasured risk as an absent one. Those look identical on a dashboard and are opposites in a drawdown.

So it is carried as a named gap rather than a silent one. The risk layer's response to a regime it cannot price is a refusal, not a forecast. Position limits and a hard kill, sized on the assumption that the cascade is unmodelled rather than mild. The research question it generates is a purchase decision, not a modelling one. This data would have to be acquired before any claim about cascade behaviour on my venue could be graded.

Breached when a leveraged strategy's tail risk is estimated from a price series that contains no liquidation or funding state — or when "we found no cascade effect" is reported from an archive that could not have recorded one.

II. The AI as trader: regime gates, no-trade and sizing

The best trade the AI makes is no trade

The regime filter is the highest-leverage decision in the whole stack, and it is a decision not to act. In LOW volatility the expected move is smaller than the round-trip cost, so every signal is noise you pay fees to hold. In EXTREME volatility, slippage and stop-gap risk dominate the geometry. Both block. Fees are fixed, opportunity scales with volatility, and the tradable band is the middle.

The strongest evidence I have for this principle arrived by accident, when I gave a router a third action. Alongside "quote" and "cross", it could now abstain — and the baseline changed underneath the question. Abstaining is free, every arm loses money, so always_abstain scores exactly 0.0 and beats everything the investigation had produced, without consulting the signal at all.

At 2 bps maker and 2 bps taker it is the best arm in 11 of 11 panels; at zero maker and 5 bps taker, 10 of 11. Across 22 cells, the number of routers that beat abstaining by a resolved margin after correction is zero.

The way the routers failed is more informative than the fact that they did. An earlier iteration predicted they would degenerate onto always_maker — collapse to the cheapest action and stop discriminating. Given a third choice they degenerated the other way, onto always_abstain. The fitted policies trade about 1.6% of rows, at median abstention rates of 0.9897 and 0.9841. They still end below zero, at −0.0051 and −0.0149 net.

Even the sliver they select is unprofitable. The model learned to almost-not-play, and the residue of playing was still a loss.

That result needs its boundary stated with it, because it is easy to over-quote. It is not a claim that no strategy works. It is a statement about this cost structure at this horizon: the measured policies lose money, and not playing beats playing. An AI that reports "no trade" against that background is not failing to find the edge. It is reporting the edge's absence correctly, which is the only honest output available and the one a metric like fill count or trade count will punish.

The mechanics of getting the filter wrong are worth as much as the filter itself, because they fail silently in both directions. An unwarmed volatility estimate substituted as 0.0 ranks LOW. My entry gate treats LOW as merely one blocked regime.

The volatility percentile gate reads that same zero as calm, and lets trades through elsewhere. The identical fabricated number blocks one path and unblocks another. So every feature refuses when it does not know: None, never zero.

I paid for that lesson twice, measured. A p99 threshold computed over ten samples is pinned to its top order statistics: 0.99 × 9 = 8.91 interpolates between the 9th and 10th values. So my sweep detector's bar — the threshold above which a burst of aggressive flow counts as an event — was effectively "the largest bucket seen so far," and ordinary flow cleared it.

42 sweeps before the warmup floor, 30 after — every vanished one inside the warmup window. Meanwhile a volatility EWMA fed into its own percentile distribution during warmup labelled 93% of quotes EXTREME, silently refusing every sweep the detector had found. A detector and a filter, each plausible alone, cancelling to zero trades.

The regime literature is mostly an argument about how to detect the states. It has moved well past two-state Gaussian switching. There are continuous HMMs where the regime chain governs autocorrelation, per-regime emissions carry the heavy tails, and a regime-conditional VaR falls out (arXiv, 2026). There are bidirectional-LSTM hybrids for joint break identification and volatility modelling (2026), and network-community methods for early warning (PLOS ONE, 2025). A crypto-specific literature classifies latent BTC states through these structural breaks (2026).

Useful — but note what the abstain result says about the whole genre. A better regime classifier improves which rows you decline. It cannot manufacture a profitable subset out of a population whose best member is refusal.

Breached when an unwarmed statistic reaches the entry decision as a number — or when "don't trade" is treated as a failure mode instead of the most profitable output the AI has — or when a router's abstention rate is read as underfitting rather than as the answer.

The AI trades at tick speed and learns at week speed

An execution loop runs at ≤100 ms. A model is a seconds-long network call. Those two facts alone dictate the architecture: no model call sits on any path that reaches submit_order. It is enforced as an import graph, so the AI plane and the engine literally cannot share a process, and the composition root is two processes exchanging JSON. The model emits an expiring, signed policy; deterministic code interprets it at tick speed.

Between those extremes sits supervision — 1 s breakers, 60 s incident sweeps, a 5-minute review — safe at any frequency because every action available to that loop reduces exposure. Above it sits research, which is weekly, and here is the arithmetic that makes weekly a trading principle rather than a preference. My proposer emits up to 5 hypotheses per call and a dataset retires from gating after 20 reads. At a five-minute cadence the twentieth hypothesis lands on iteration four — twenty minutes — after which that dataset can never gate anything again.

A week of five-minute iterations is 2,016 calls against a cap of 5, moving the Bonferroni-corrected two-sided evidence bar from 2.58σ to 4.22σ. With one deployment allowed per week, 2,015 of those 2,016 iterations could not have shipped what they found. A fast research loop does not learn faster. It spends its holdout in twenty minutes and then runs forever, unable to conclude.

What the slow clock buys is a specific kind of artefact, and it is worth describing concretely because "we pre-register" is otherwise just a claim. My last research campaign froze its pre-registration to a file with a SHA-256 of 1ffa9f0f…, before any data was downloaded or any query run. It finished having consumed zero holdout reads: offline evidence only, no promotion. The verdict scale was fixed in the same document: DEMONSTRATED > SUPPORTED > UNDETERMINED > DISFAVORED. REFUTED was declared unreachable by design. Absence cannot be proven, and a scale that offers the word invites someone to use it.

Pre-registration survives contact with reality by declaring deviations rather than absorbing them. Three were recorded against that campaign. The measurement window was 2024-03-29 rather than a 2026 date, because Binance discontinued daily bookTicker archives after 2024-03-30 — so the result speaks to 2024 microstructure and says so.

The largest panel was capped at 72,000 rows because scoring 2.09 million rows in a Python loop was compute-infeasible. And 27,098 of 860,213 launches were dropped as unresolved. None of those choices is neutral, and each one is a place where an unrecorded decision would have quietly become a result.

The retraction that campaign produced is the sharpest argument for the slow clock. A learned fill-hazard model was measured against an IRLS logistic baseline as the panel grew. The Brier-skill margin ran +0.028 at 8,000 rows, +0.024 at 24,000, and +0.006 at 72,000. At the largest size the logistic took AUC outright, 0.7655 against 0.7619. That reads as a clean law — the learned advantage decays as data arrives — and it was written into the code as a comment.

It did not survive. Across two days the margin decays on one and rises on the other: the least informative split available. What stands is only that the margin is small and positive, +0.0063 to +0.0489.

The directional claim was withdrawn. A weekly loop caught that before it became doctrine. A five-minute loop would have shipped the law, then generated a hundred further hypotheses conditioned on it.

From the modelling side, the generalization literature keeps arriving at the same place. Zhang, Vinyals, Munos and Bengio found that standard deep RL agents "could overfit in various ways", and the accompanying survey places particular focus on generalization as the barrier to practical use. Recent trading-RL work now treats environment design as a leakage-control problem, with "strict anti-lookahead semantics". The cadence rule is the operational form of that concern. You cannot fix a leakage or overfitting problem at a speed faster than you can measure whether you have one.

Breached when a model-bound call appears in the tick path — or when the learning loop's cadence outruns the statistics that make its conclusions mean anything — or when a deviation from the pre-registered design is absorbed into the result instead of being recorded next to it.

The AI proposes; the market disposes

The AI's job is to propose trades as falsifiable hypotheses. Each proposal is pre-registered before the data is touched: at most five per call, at most one deployment a week, dataset retired at 20 holdout reads. The model may not choose its own yardstick.

The branch it is judged under and the holdout range it is judged on are overwritten with the caller's values, whatever the model returned. The backtest process deliberately omits the p-value, so no artifact in the loop can certify itself. Its memory is a ledger it cannot edit. No weight updates in production, and no memory across sessions. The prompt is a pure function of its context, byte-identical on a second session. It is pinned by its own SHA-256, so a changed prompt is a changed model requiring a new evaluation. What accumulates instead is on disk.

A graded-claim ledger recomputes every predicate the previous policy asserted and records it as held-or-not. A demotion record with a similarity check stops a killed hypothesis coming back next week with only its numbers moved.

The obvious question is whether the proposer contributes anything a random sampler would not, and I measured it rather than assuming. Against two samplers over the same bounded parameter space, the AI showed no parametric-coverage dominance — it does not explore the box better. What it did produce, and they structurally could not, was falsifiable vocabulary: 5 of 5 proposals carried an explicit mechanism statement plus a decision criterion, against 0 for both samplers. That is a narrower claim than "the AI is smarter" and a more useful one. A sampler returns coordinates. A proposer returns a coordinate and a reason it should work and a statement of what would show it did not. That last part is what makes a result interpretable when it fails.

The honest limit belongs in the same paragraph, because it is the kind that quietly inflates. This is one recorded sample at N = 5. Proposal quality — whether those hypotheses, run through the engine, beat sampled ones — was not measured at all.

What is supported is the vocabulary claim. What is unmeasured is whether the vocabulary is worth anything. Stating the second half is the difference between a finding and an advertisement.

The benchmark literature has converged on the same complaint from the outside. InvestLogicBench (arXiv:2608.06108) evaluates 201,247 documented decisions from 151 real-world investors. Its motivation is that terminal profit and loss "cannot reveal whether a profitable action was grounded, profile-consistent, or merely lucky." AI-Trader (arXiv:2512.10971) attacks the same gap from the data side.

It offers what it describes as the first fully-automated, live and data-uncontaminated benchmark for autonomous agents in real markets. Scaffold papers like FinMem push in the opposite direction, treating layered memory as the route to executable decisions. The disagreement is not really about architecture. It is about what an agent is for — and a P&L number cannot settle it, because a lucky agent and a grounded one produce the same number.

There is a conclusion here I did not expect when I started, and it is the strongest form of this principle. If the AI's measured contribution is falsifiable vocabulary rather than better search, then the AI-native object in this system is the research loop, not a runtime model. That is structurally guaranteed: no model call may touch the tick path by design. The intersection this investigation went looking for in the strategy turns out to be in the method. That is a smaller claim than the one I set out to make and the only one the evidence supports.

Breached when any output of the model changes how the model is evaluated — or when agent state persists anywhere outside ledgers the model cannot write — or when an agent's contribution is asserted from its outputs' plausibility rather than measured against a sampler that shares its search space.

Regime is a gate, not a feature

There are two ways to put market state into a system. As a gate, regime answers one question — trade or do not trade — and never touches sizing, direction or geometry. As a feature, it enters the model as a number, and the model learns how the edge varies with it. The two look like design preferences. They are not: they make claims of different strength, and only one of them replicates.

A gate needs a level claim: in this state, the expected move does not clear the round trip. A feature needs a shape claim: the edge behaves like this as a function of the state. My corpus has now measured both kinds repeatedly, and the split is stark.

Level claims are consistent. Shape claims are not consistent along any axis measured — regime, horizon, or instrument. That is the single most useful methodological result I have, and it was not what I expected to find.

The retraction that established it is worth reading as a cautionary tale, because the claim was plausible, mechanistic and popular. An early iteration reported that the learned model degrades most in EXTREME volatility. That is exactly the story anyone would predict — the kind of thing that gets written into a design document as a known limitation. It did not reproduce across four windows of the same day, and one window detectably inverted it: +0.0693 against −0.1610. Not weakened, not noisy — reversed, inside a single trading day. Withdrawn.

Note the shape of the mistake, because the gate/feature distinction is what would have prevented it. "The model does worse in EXTREME volatility" is a claim about the derivative of performance with respect to regime. It needs the regime axis to be stable enough to differentiate along.

A gate never asks for that. It asks only whether a state is admissible, which survives a noisy regime label. A mislabelled row costs you a trade you did not need to take, rather than a coefficient you will now trade on.

Two further limits in my own record push the same way, and they are the sort that a dashboard hides. Both disjoint reproduction days precede the April 2024 halving, while the original sample follows it. The volatility regime is therefore uncontrolled, and the larger out-of-sample edge may itself be a regime property rather than a stable one. And every fill-hazard panel is a six-hour slice from the start of the day — nothing in the corpus tests whether the skill holds in a different part of the session. Any regime feature fitted on that data would be learning a shape from a single slice of one regime and reporting it as a function.

There is even a trap in the correlation that makes regime features look strong. The volatility-edge relationship is partly mechanical: both quantities are basis points of price movement, so they co-move by construction rather than by insight. What is not mechanical is that the ratio stays stable, and that the placebo arm shares the same volatility while clearing its detection bar in zero cells. A feature-based system reads the raw correlation and finds a strong signal. A gate reads the ratio and finds a threshold.

The detection literature is genuinely good, and mostly orthogonal to this point. Two empirically distinct regimes cluster out of BTC/ETH/XMR high-frequency data without assuming Markovian transitions. And bi-power variation separates the jump component of volatility from the diffusive one, non-parametrically. Better detection makes a better gate. It does not make a shape claim reproduce, because the instability is in the relationship being estimated rather than in the label being estimated from.

Breached when regime enters the model as a feature it can trade off against other evidence — or when a claim about how performance varies with regime is adopted without reproducing it on a disjoint window of the same day.

Size is a decision the direction model must not make

Direction and size answer different questions and fail in different ways. Get direction wrong and you lose one trade's geometry. Get size wrong and you lose the ability to keep playing, which is a different category of mistake — the first is subtractive, the second is terminal. Any system that lets one model emit both will use size to express confidence, and confidence is the least calibrated output a model has.

The betting literature reached this conclusion the hard way. Kelly maximises the expected growth rate and median terminal wealth under known probabilities, and the framework transfers cleanly enough to portfolios with no-leverage and no-short constraints. The catch is the phrase "known probabilities."

Baker and McHale (2013) work through what happens when true win probabilities are replaced with sample estimates: out-of-sample performance degrades, and the correct response is to shrink the bet. Shrunken Kelly beats raw Kelly in both simulation and real betting data. The estimate's error does not average out, because the growth-rate objective is asymmetric — overbetting compounds losses faster than underbetting forgoes gains.

My own system says the same thing in a blunter way, and it is written in the model's own docstring rather than discovered later. The fill-hazard model's label is queue-agnostic: top-of-book only, with a fill rate around 0.73 against a real queue's far lower. So what it learns is which book states attract opposing flow — explicitly not fill probability for sizing.

A model can be genuinely skillful at its target and still be disqualified from a question one step away. The disqualification is a property of the label, and no amount of downstream accuracy repairs it. Then there is the constraint that outranks the model entirely: the book. Median notional at the touch is 22,465onBTCUSDT,22,465 on BTCUSDT, 24,406 on XRPUSDT, 8,853onETHUSDTand8,853 on ETHUSDT and 1,438 on DOGEUSDT. That last number is the whole quoted depth at the best price on a major perpetual. Size is not a dial the strategy turns; it is a quantity the venue supplies, and it varies seventeen-fold across four instruments a model might otherwise treat interchangeably.

Two measured facts make even those numbers optimistic. Displayed touch depth is an upper bound on available size, not a promise. A maker joining the touch stands behind all of it, and modelling that queue cut the exit fill rate by 3.1×. And the aggressive route's arithmetic assumes the touch absorbs the whole order at the best price, with no walking of the book.

That holds only for orders small relative to top-of-book size. When it does not hold, it errs in the optimistic direction. Both biases point the same way, which is the way that hurts.

So size is computed, never proposed. It comes from the risk layer as a function of book depth, current exposure and the regime gate's verdict — inputs the model does not supply and cannot overwrite. The proposer moves three numbers, and none of them is size. That is not a limitation imposed on an otherwise-capable model. It is the recognition that the model was trained on a label that answers a different question.

Breached when a model emits direction and size from one head — or when position size is set from a fill model whose label was never fill probability — or when the book's displayed depth is treated as available size rather than as an upper bound on it.

III. What counts as evidence: simulators, deflation and decay

The backtest is the model's reward function — keep it pessimistic

The opening of this post promised the sharpest trap; this is where it pays off. A fill-at-touch simulator fills every resting order the moment price touches it. That hands the strategy exactly the adverse-selected subset the market would never give it — which is how a backtest reports the phantom Sharpe 5 against a negative live reality.

The model optimises into the trap with conviction, because inside the simulator's world the strategy genuinely works. Whatever grades the proposals is the objective being maximised. There is no separate loss function the AI secretly respects.

So my gate-grade fill model uses both pessimistic levers at once: no at-touch fills, and passive orders wait behind a queue the backtest could not observe. A run under the optimistic profile is INADMISSIBLE, which is a different verdict from FAIL. The distinction carries weight. A failed gate is evidence about a strategy; an inadmissible report is evidence about nothing, and the gate refuses to open it.

What took me longer to learn is that the fill assumption is only the first of three axes, and it is the one people already argue about. The second is which data the simulator was allowed to read. My archive holds 24 hours per instrument-day. Every experiment I had run used six.

75% of the data on disk had never been read, and reading it cost zero bytes. Meanwhile three separate queued items were asking a human to authorise buying more archive, at roughly 155 MB per instrument-day. A backtest that silently samples the same six hours is not a cheaper backtest. It is a different, easier reward function, and the strategy that wins under it has been selected for those hours.

The third axis is what the harness counts as an independent sample, and it moves conclusions further than either of the others. Reading all four windows gave 44 panels instead of 11. At the panel level, 7 of 10 pairwise arm comparisons clear 0.05, and order-book imbalance beats every other arm including both learned ones. But four windows of one instrument-day share that day's regime, news and funding cycle, so 44 panels are not 44 independent samples.

Clustered by day, exactly 1 of 10 survives. The honest report leads with the conservative number and brackets the other: windows within a day are correlated but not identical, and no claim should depend on that correlation being zero. Concretely, imbalance over the gradient-boosted arm is P = 0.00126 unclustered and P = 0.07031 clustered — so "the classical arm beats the learned one" is suggested, not established.

Note what an optimiser does with those three dials if you leave them exposed. Nothing in a fill-at-touch assumption, a six-hour window or an unclustered panel count is a lie. Each is a defensible modelling choice, and each independently inflates the reported result.

An agent asked to maximise a metric will find the joint setting that maximises it, and will be able to justify every component. This is why the levers are pinned in the harness rather than passed as parameters. Not because the model would cheat, but because it would optimise — which under a misspecified objective is the same thing.

The simulation literature is mostly a record of people discovering that markets react and simulators do not. The Queue-Reactive model of Huang, Lehalle and Rosenbaum became the standard tool for a reason: it made the book's evolution depend on its own queue state. Current work extends it by relaxing queue independence and learning order-size distributions, while keeping the point-process foundation interpretable (MDQR, arXiv:2501.08822). Behind it sits a long agent-based lineage — Kim–Markowitz, Cont–Bouchaud, Lux–Marchesi — catalogued by Samanidou, Zschischang, Stauffer and Lux. Economists and physicists built those models to generate their own stylised facts rather than replay them.

One reassurance from the wider read is worth recording, because it cuts the other way. Requiring the queue ahead to clear was the correction that turned XRPUSDT's +0.2877 bps per row into −0.0403 on the original 11 panels. On all 44 it holds: 0 of 44 panels positive per row, and 43 of 44 resolving negative — BTCUSDT 16/16, ETHUSDT 12/12, DOGEUSDT 8/8, XRPUSDT 7/8. A pessimistic assumption that survives quadrupling the data is no longer just a conservative choice. It is a finding.

Breached when any promotion evidence comes from a fill assumption the venue would not honour — or when "backtest passed" is accepted without asking which fill model graded it, which hours it read, and what it counted as an independent sample.

A result must be deflated by the search that found it and the overlap that measured it

Two different corrections stand between a backtest number and a claim, and a system that applies one while forgetting the other will publish false positives at a steady rate.

The first is the multiple-testing correction, and quantitative finance has already had this argument. Harvey, Liu and Zhu (2015) worked through the cross-section of expected returns. Their conclusion: given how many factors have been tried, a new one needs a t-statistic above 3.0.

Most claimed findings in the literature are likely false. Bailey and López de Prado's deflated Sharpe ratio makes the same adjustment operational for a single strategy. It corrects for selection bias, the number of trials and non-normality, with the probability of backtest overfitting as its companion diagnostic.

The framing that stuck with me is that backtest optimisers search millions of parameter combinations and then report the best one as though it had been the only one. The machine-learning era has complicated this rather than settled it. Zhang, Li, Peng and Chen's one-switch leakage benchmark finds performance inflation is "highly selective". It attaches to specific evaluation conventions — centred temporal features, same-day-open execution — rather than applying as one global discount.

The second correction is the one I keep watching kill results, and it has nothing to do with how many strategies were tried. It is about whether the rows that measured a strategy were independent. Sample a forward window of length H on a panel whose rows arrive every T/n, and overlapping windows share their outcome. The bound is arithmetic: n_ind ≤ min(n, T/H), so the effective-n inflation is √(n/n_ind) ≥ √(nH/T), clamped at 1. It bites exactly when the forward window exceeds the mean row spacing, and it grows as √H.

On my panels, whose mean row spacing is 288 ms, the inflation reaches 2× at a one-second horizon. It is 1.18× at 50 ms, 1.95× at the 800 ms horizon two of my experiments actually use, 4.29× at five seconds, 10.26× at thirty, and 32.07× at five minutes. Because the bound is an upper bound on n_ind, it is a lower bound on the inflation — a figure re-quoted against it understates its own damage.

Here is what that does to a real result. One cell in my abstain-router sweep came back positive: DOGEUSDT on 2024-03-28 at a zero maker fee, logistic router, delta +0.005311 against a raw minimum detectable difference of 0.003309. It cleared. It also traded 35 rows out of 21,600, and its effective-n inflation was 24.84×, which lifts the MDD to 0.082209 — roughly fifteen times the effect. Not resolved. That was the third would-be positive in this corpus killed by an effective-n correction rather than by a worse result, and the first two died the same way.

The property that makes this usable by an AI system is that the correction is arithmetic, not an empirical curve. Any recorded figure that reports its n, its horizon and its window span can be re-quoted without re-running the experiment that produced it. So the whole back catalogue is auditable: of 946 cells marked resolved, 944 sit in scripts that apply the correction, and the audit found zero unprotected thirty-second resolutions. That matters most precisely when an agent is generating claims faster than a human can re-derive them.

The audit's limit belongs in the same breath, because it is the sort of thing that quietly reintroduces the problem. It reads results files only. A figure quoted in prose and never written into a results JSON is invisible to it — and research prose quotes numbers constantly. An auditable corpus is one where every number a conclusion rests on was written down as data, not as a sentence.

Breached when a reported edge is not deflated by the number of variants that were searched — or when a forward-looking window is measured on overlapping rows and its sample count is reported as though they were independent.

A simulator that does not react to your order is asserting your size is zero

Replay a recorded book and you are trading in a world that cannot notice you. Every fill you take was, in reality, taken by somebody else. Every order you post changes nobody's behaviour, moves no price, and displaces no queue. That is not a small idealisation with a small error. It is a specific quantitative claim — that your market impact is exactly zero — made silently, in every cell of the results table.

The execution literature has spent twenty years insisting the opposite. Obizhaeva and Wang's foundational model argues that supply and demand for a security are intertemporal rather than static. Optimal execution then depends critically on those dynamics, especially when trading times are endogenous — as an event-driven strategy's are. The microstructure result is sharper still: because the order-flow-imbalance slope is inversely proportional to depth, the empirically observed square-root relation between impact and order size falls out of the same linear model. Impact is a function of size. A simulator with no impact model has not omitted a refinement; it has substituted zero into that function.

The most useful corrective to "I am too small to matter" is empirical. Braun, Fiegen, Wagner, Krause and Guhr study ultrafast extreme events — mini flash crashes — and find that in at least 60% of cases the largest fraction of the price change comes from a single market order. Not from high-frequency feedback loops (PLOS ONE, 2018). One participant, one order, most of the move. Whether you are that participant is a question about your size relative to the book, and I have already measured the book: median touch notional is $1,438 on DOGEUSDT. Size that would be rounding error on an equity venue walks that book.

Here is where I have to be careful, because my own archive imposes the limitation rather than my modelling choices. bookTicker timestamps are millisecond-resolution, so "the book at the fill instant" is only ±1 ms — and the fill's own effect on the book sits inside that window. I cannot observe my order's impact at any stride, on this data, at all. Non-reactivity is not a simplification I selected. It is a bound on what the archive can answer, and the honest response is to say so and to size the residual, not to report zero and move on.

What that residual looks like when one dimension of it is measurable is instructive. Queue position is the one place I could replace an ignore-the-trader assumption with a model of the world. Doing it moved the fill rate from 0.496 to 0.034, and flipped the sign of the result. That is the magnitude of a single "you don't matter" assumption on a single axis. Impact, displacement and reaction are three further axes, all still set to zero, all pointing the same way.

Two more of my own assumptions encode the same thing explicitly. The aggressive route assumes the touch absorbs the whole order at the best price, with no walking of the book. And displayed depth is treated as available size when it is only an upper bound. A maker joining the touch stands behind all of it, which cut the exit fill rate 3.1× when modelled.

The AI-first consequence is the one that makes this urgent rather than academic. A non-reactive simulator's errors are not noise, and they do not average out. An optimiser searching that world preferentially finds the strategies that lean hardest on the absent reaction: larger size, more aggressive placement, tighter queues. Those are exactly the regions where the simulator is most wrong, and therefore most generous. The error is not merely present in the search space. It is what the search is climbing.

Breached when a backtest's results are reported without stating what the simulator assumes about the trader's own effect — or when "our size is too small to have impact" is asserted rather than computed against measured book depth.

Literature inspires a hypothesis; only a local run promotes one

No paper can show that an edge survives your venue, your fee tier and your latency. That transfer is exactly what a pre-registered local run exists to test. In this corpus the old rule has acquired a sharper edge, because the literature itself is adversarial — and adversarial precisely on the vocabulary of costs and fees. Of 21,305 records in my research corpus, roughly 91 to 121 are exchange referral-code SEO documents wearing the costume of papers. They are not distributed evenly across topics, and the concentration is the whole problem.

Measured across 11 queries in both retrieval lanes to depth 60, spam flagged per query ranges from 0 to 25 — 25 on funding-carry-net-costs, 16 on maker-rebate, zero on conceptual queries. The pollution bites exactly where a practitioner asks their real questions and vanishes where they browse.

The obvious filter is the one to avoid, and getting this wrong would have been expensive. The spam is concentrated in Zenodo DOIs, so filtering on the DOI prefix looks efficient. My corpus holds 781 Zenodo DOIs against those ~91–121 spam records — so the prefix rule would discard several hundred legitimate preprints to catch a hundred fakes.

So my filter runs on vocabulary over title and snippet — referral, invitation, promo code, bonus, cashback, percent off, deposit reward, coupon — and never on the venue a document was published through. Measured against a seeded random sample of filter-passed rows, hand-classified, the false-negative rate is 0 of 30 (rule-of-three 95% upper bound around 10%). The limitation is inherited and worth stating: one classifier, one pass, no inter-rater reliability.

The discipline this produces is narrower than "read critically." No number from any paper entered any experimental criterion in my last campaign — the literature entries are recorded explicitly as abstract- and title-level reads. A paper sets a prior and proposes a hypothesis.

It never sets a threshold. That rule is what stops a retrieved passage from becoming a gate. It matters more as retrieval becomes automated: a corpus is untrusted text that an agent reads as though it were evidence. Notably, the agent literature is itself silent on prompt injection and security for trading agents. That is a gap in the coverage rather than a solved problem — at exactly the moment agents are being pointed at retrieval.

One example shows the right use of a paper, and it is the strongest single citation in this post. The Market Maker's Dilemma does not tune my parameters or gate a promotion. What it does is falsify a sign: the continuation direction my own strategy template was built around is the direction its live Binance experiment finds unprofitable.

That does not tell me to flip: the arithmetic above shows an inverted signal keeps the cost. It tells me the sign is a live question requiring a pre-registered local run, which is the most a paper should ever be allowed to do.

The closing evidence is the one that justifies this whole list. When Agents Trade (arXiv:2510.11695) builds Agent Market Arena, a lifelong real-time benchmark that runs four agent architectures across five model backbones on live cryptocurrency and stock markets. It spans GPT-4o, GPT-4.1, Claude-3.5-haiku, Claude-sonnet-4 and Gemini-2.0-flash, against four agent designs from a single-agent baseline to a memory-based reasoner. Its finding: "agent frameworks display markedly distinct behavioral patterns, spanning from aggressive risk-taking to conservative decision-making, whereas model backbones contribute less to outcome variation." Swap the model and little changes.

Swap the scaffold and everything changes. The fee walls that bound the proposer, the regime gate and the abstain baseline, the pessimistic simulator, the deflation arithmetic, and the pre-registration caps of 5 hypotheses and 1 weekly deployment. The fifteen principles above are not overhead around the interesting part. On the current evidence, they are the interesting part.

Breached when a paper's number reaches a promotion gate — or when effort flows to the model backbone while the scaffold stays unexamined — or when a corpus is filtered by where a document was published rather than by what it says.

An edge decays because it worked, and so does the evidence for it

Every principle here concerns finding an edge. This one concerns the fact that finding it starts a clock.

The cleanest measurement of that clock comes from equities. McLean and Pontiff tracked 56 characteristics identified in the literature as return predictors, and measured what happened after each was published. Average post-publication decay is about 50%, statistically distinguishable from both 0% and 100%. The decomposition is the interesting half. Out-of-sample decay attributable to statistical bias alone is about 15% — that portion was never there, and would have vanished on any fresh sample.

The remainder is price pressure from investors who read the paper. And the effect is not a time trend: the authors find it is not explained by trends in anomaly returns or by measures of academic attention. Publication draws informed traders, and informed traders consume the thing they were drawn to.

You do not get to opt out by not publishing. At any meaningful frequency, profitability is the announcement. Your fills are somebody else's order-flow data, your resting orders are a pattern in their book, and the participants best equipped to notice are the ones already colocated. The half of the equity decay that came from price pressure has no publication step in it. It only needs someone to notice, and this venue is instrumented by people whose entire business is noticing.

I should be plain about what I have not measured. This system has never traded live, so I have no decay curve of my own, and the principle above is inherited rather than demonstrated here. What I have watched decay, measurably, is the evidence itself.

Binance discontinued daily bookTicker archives after 2024-03-30 — verified against the S3 listing on 2026-08-21 — so every microstructure number in this post describes 2024 and that lane cannot be refreshed at all. Refreshing it now requires either a live capture path or designs that use only aggregate trades. Separately, both disjoint reproduction days fall before the April 2024 halving while the original sample falls after it, so a regime shift sits uncontrolled inside my own comparison. That is the version of decay that actually bit, and it generalises past this project. The strategy's shelf life is bounded by the shelf life of the data used to justify it, and those two clocks are not synchronised. An archive can be withdrawn, a venue can change its fee tier or its tick grid, a contract can be delisted — and none of those events appears as a drawdown. They appear as a backtest that silently describes a market that no longer exists.

The operational answer is that beliefs carry expiry dates, and the machinery for that already exists in this system for a different reason. The graded-claim ledger recomputes every predicate the previous policy asserted and records it as held-or-not, and the demotion record's similarity check stops a killed hypothesis returning next week with only its numbers moved. That apparatus was built to stop an agent grading itself. It happens to be exactly the apparatus decay detection needs. Both problems have the same shape: a claim that was true when it was made, and a system that will keep acting on it until something forces a recheck.

Breached when an edge is treated as a property of the market rather than as a claim with an expiry date — or when a backtest's data provenance is not checked for whether the venue, fee tier, tick grid or archive it describes still exists.

So what

Put together, these fifteen are a trader's discipline restated for a machine operator. Know your costs before your signals, and compile them into what the model is allowed to propose. Let experiments settle signs rather than flipping them. Treat a crypto-native input as an input, not an edge, and check its economics before its forecast quality.

Treasure the no-trade. Gate on regime rather than learning a shape from it. Size from the book, not from the model's confidence. Keep learning slower than trading. Deflate every result by the search that found it and the overlap that measured it. Never let the thing being graded own the grader — and remember that the edge and the evidence for it decay on different clocks.

None of this requires believing AI adds alpha. That question is still open on my desk, and the sub-minute answer came back no: break-even needs a taker fee of 0.8078 bps per side at best, against a 1.7 bps published floor — and the round-trip toll is 4.0 bps against a maximum gross of 1.4457 bps anywhere measured. The rest of the honest scoreboard reads: one learned fill model, refused for scoring below the constant base rate; one funding forecaster that failed its pre-registered bar on both instruments; one pre-registered sign experiment, not yet run. What the principles guarantee is narrower and worth more: when the AI does find something, the number will be real. Priced against true fees. Filled by a pessimistic simulator. Judged on a holdout it could not peek at, at a latency it actually has.

The adjective is cheap. The count was zero. The discipline is the part you get to keep.

Appendix: where the numbers come from

Every first-person measurement above is produced by a named experiment in my own tree, and a claim in this post is only as good as the run behind it. This table is the provenance. It exists because the discipline the post argues for applies to the post itself. A number reaching a conclusion must have been written down as data, not asserted in prose.

ExperimentWhat it measured
e65_abstain_routerAdding a third action to the router: always_abstain scores 0.0 and is the best arm in 11 of 11 panels
e69_depth_at_touchTouch notional and half-spread per instrument; the spread is one tick on 87.1–99.8% of quotes
e72_overlap_lawThe closed-form overlap correction n_ind ≤ min(n, T/H) and its inflation curve
e76_queue_ahead_in_tradesQueue depth in trades rather than base units; fill rate 0.496 → 0.034
e91_cvd_window_sweepThe inverted-edge trap; short gross after reflecting the signal
e108_four_windowsThe 75% of archived hours never read, and window-level versus day-clustered significance
e111_queue_aware_four_windowsThe queue-aware fill rule on all 44 panels: 0 positive, 43 resolving negative
E1 fill hazardThe learned model's Brier-skill margin over an IRLS logistic as the panel grows
E2 funding forecasterNext-8h funding forecasts against persistence; economics inert at any realistic fee
E3 launch survival833,098 pump.fun launches; AUPRC 0.01778 logistic against 0.00878 boosted trees
E4 proposer vocabularyFalsifiable mechanism statements, 5 of 5 against 0 for two samplers

Three caveats travel with the whole table. The microstructure runs use four instruments, where the Spearman critical value at n = 4 is 1.000 and no effect size is detectable from a cross-instrument ranking alone. The bookTicker archive lane ends 2024-03-30, so these describe 2024 microstructure. And no result here comes from live trading — this is an offline research corpus, and the distance between the two is the subject of half the principles above.