Back to articles

Maker Execution Needs an 88% Fill Rate to Beat Taker - and 14% If Fills Were Random

Serg
Serg
August 26, 2026
3 views

Maker Execution Needs an 88% Fill Rate to Beat Taker — and 14% If Fills Were Random

Verdict: needs_more_data (preregistered gate FAILED, route closed) · Asset/TF: 12 alt/BTC spreads, 1h · Sample: 49,186 bars per spread, 2020-11-28 → 2026-07-10, 4,952 portfolio trades

Cost eats 76–105% of the gross edge on this alt/BTC spread portfolio. For a month the standing plan
was maker-only execution: post passively, pay 1.5–3.0 bps instead of 8.808, and stop cost being what
kills the family. The one thing nobody had measured was the fill rate.

So we inverted the question. Instead of measuring the fill rate and asking whether maker pays, we
computed the fill rate at which maker stops paying. That is a break-even quantity, scale-invariant
the way a breakeven fee is, and it needs no live data.

what maker execution needs to beat taker break-even fill rate at 3.0 bps/side
if fills were a random draw from the signal set 0.136
with adverse selection, optimistic (touch-through) fill model 0.880
with adverse selection, pessimistic (close-through) fill model 0.979

Adverse selection is worth 74 percentage points of required fill rate. The fill rate was never
the hard part of this route. The composition of the fills is the whole problem.

The hypothesis, and the gate fixed before any run

A passive bid fills preferentially when the market is coming toward you — so you get the trades you
least wanted and miss the ones you most wanted. Everyone knows this. Almost nobody prices it.

Preregistered before a single number existed:

M1. The break-even fill rate f*, at which the maker arm's portfolio net annualised return
equals the taker control's, must be ≤ 0.80 at 3.0 bps/side. Above that, a real venue plausibly
cannot deliver it and the route is not worth live work.

M2. The adverse-selection drag — [random-dropout net %/yr at the same fill rate] minus
[fill-rule net %/yr] — must be < 50% of the return the route protects.

Either failing ⇒ REJECTED. Below 300 trades ⇒ inconclusive, not rejected.

Result: M1 = 0.880 and 0.979. FAIL on both fill models. M2 = 15.0% (optimistic, pass) and 233%
(pessimistic, fail). 4,952 trades, well above the validity floor — a decision, not a shrug.

The fill model is an assumption, and its bias direction was declared first

A fill model is not a measurement, so all of it was fixed in advance: a passive limit posted at the
signalling bar's close, no queue priority (fills only if the market trades strictly through the
level — a touch does not fill), cancel after one bar, entry-only passive with exit fill risk not
modelled at all
(which biases every maker arm optimistic — a stop-loss cannot be a passive order).

The honest problem is that the true intrabar range of a synthetic spread cannot be recovered from the
leg OHLC. On a frame whose high/low are max/min(open, close), "trades through the level"
silently degenerates into "closes through the level" — pessimistic on both the fill rate and the
selection. So both bounds were computed and the bias direction stated up front, rather than one
convention being chosen after seeing which way it pointed.

The same order, at the same price, over the same 180,537 directional signals:

fill model pooled fill rate per-pair range
pessimistic — bar must close through the level 0.5062 0.483–0.543
optimistic — bar must trade through the level 0.9590 0.937–0.990

Forty-five points of spread, entirely from a modelling convention. That gap is why the bracket is
reported instead of a point estimate.

The arm as a function of fill rate

Portfolio net %/yr at maker 3.0 bps/side, two-leg. The taker control is the flat line at +2.1292.

f pessimistic optimistic random dropout (no selection)
0.05 −9.42 −8.81 +1.89
0.20 −7.63 −6.36 +2.57
0.40 −5.44 −3.60 +3.35
0.60 −3.64 −1.27 +3.79
0.80 −1.88 +1.28 +3.77
0.90 −0.61 +2.34 +3.69
0.95 +0.37 +2.81 +3.47
1.00 +3.40 +3.40 +3.40
f* 0.979 0.880 0.136

The right-hand column is the control that makes this readable. It drops a random 1−f of passive
entries — same trade volume, same one-bar delay, no selection. It is flat above f ≈ 0.3, and at
f = 0.60 it is better than filling everything. Dropping a random 40% of passive entries costs this
arm nothing at all. Every point of the gap between the columns is adverse selection, with nothing
else left in it.

At 1.5 bps/side the picture barely moves: 0.973 / 0.846 / 0.064. Halving the maker fee buys 3.4
points of required fill rate; the queue model is worth 9.9; adverse selection is worth 74.4.
The fee is not the lever. The queue is.

The trades you miss are worth twice the ones you get

Taking the 4,952 realised trades and asking which a passive order would have been filled on:

n mean gross bps/trade win rate
all trades 4,952 +47.6 52.2%
pessimistic — filled 2,642 +26.4 51.3%
pessimistic — missed 2,310 +71.7 53.2%
optimistic — filled 4,760 +45.9 52.1%
optimistic — missed 192 +87.6 53.7%

Missing 3.9% of your entries costs you trades worth 1.8× the average one. The ordering is stable
across a fill-rate bracket spanning 0.51 to 0.96, so it is not an artefact of one threshold.

The measurement everyone reaches for is the wrong one

That table — drop the unfilled signals, compare the means — is the natural decomposition, and on this
rule it understates the cost by 3–4×. It says −21.14 and −1.62 bps/trade at the two anchors. The
portfolio measurement at the same anchors says −70.75 and −4.54.

The reason is mechanical, and it generalises to most systematic rules:

An entry condition is a state, not an event. An unfilled passive order is simply re-posted on
the next bar while the condition still holds — so a low fill rate almost never costs you a trade.
At a 0.506 fill rate this arm still made 4,855 trades against the taker's 4,952. What it costs you
is entry timing: you are filled only on bars where the market came to you, so you
systematically enter late and into the adverse instant.

Dropping unfilled signals measures a channel that barely exists. The real cost of passive execution
on a state-based rule is delayed entry, not a missed trade.

Where it leaves the route

Under the optimistic fill model the arm carries a breakeven of 15.879 bps/side against 3.0 bps
paid — a 5.29× cost margin, the widest ever measured on this panel
(the previous best was 2.07×),
and it still fails M1. Breakeven fee asks whether the arm covers its costs; M1 asks whether passive
beats crossing the spread. Passive costs less in fees and more in adverse selection, and below
f = 0.880 the second exceeds the first. Under the pessimistic model the breakeven is 0.000 bps
passive execution takes the entire gross edge before any fee is charged.

And the prize was never large. At zero commission and zero slippage with 100% fills the arm makes
+4.52%/yr, against a buy-and-hold bar of +26.58%/yr on the same window, and +1.82%/yr
ex-2021. The maker route's whole contribution is the +1.27 pp/yr between taker and 3.0 bps.
2024, 2025 and 2026 are negative in every arm, at every cost level, at every fill rate —
execution is not what is wrong with the last three years. This is the fourth cycle in a row on this
family in which free execution fails to manufacture gross edge.

The route is not impossible. At the optimistic fill rate of 0.959 the maker arm does beat taker,
+2.90 vs +2.13 %/yr. But it survives only if the true fill rate sits above 0.880 — in the top 12% of
the measured bracket — and the estimate that puts it there is the variant whose bias was declared
optimistic before it was run
. M1 was set at 0.80 in advance precisely so that call would not be
made after seeing the number.

Sample, and what is missing

12 alt/BTC 1h spreads (ETH, SOL, XRP, ADA, LTC, DOGE, LINK, DOT, BCH, ETC, AVAX, ATOM),
2020-11-28 → 2026-07-10, 49,186 bars each, 5.613 years, 2,051 daily / 69 monthly / 7 annual
portfolio observations, 180,537 directional signals, 4,952 trades. The corpus ends 2026-07-10 and
was 47 days stale when this ran
— nothing here speaks to the seven weeks after that date.

Commission per side, two-leg, plus slippage 0.0002 per fill in every arm including the maker ones;
next_open execution; dynamic_tp_sl off; position_size 0.15; TP 20% / SL 10% / max hold 336 bars.
Gross figures are commission 0 and slippage 0. Gross edge and costs are reported as separate
numbers throughout. Daily BTC correlation is +0.023 to +0.029 in every arm, so none of this is a
hidden directional bet.

Not done, plainly. No real fill rate was measured — every fill rate here is a model applied to
historical OHLC, no live system was touched and no exchange order was sent. Passive exits are not
modelled at all. Order life beyond one bar is not modelled. The queue-depth family conditions on the
size of the adverse excursion, which correlates with bar volatility, so part of the measured drag
is volatility selection rather than pure directional adverse selection; the random-dropout control
bounds how much of the gap is neither, but does not separate the two kinds from each other. No
walk-forward, Monte-Carlo or sensitivity on the gated arms — the verdict is a rejection on an
execution gate, not a claim of edge, so there is nothing to validate out of sample. One panel, one
timeframe, one spread definition, one fee schedule.

Prior work on this family, and how this differs

  • SOL 1M BTC-Triggered Spike Reversal: Optimizing Exits via Maker Limit Orders
    — our own earlier maker-execution result: a resting limit exit cutting cost 34% and lifting
    Sharpe from 0.72 to 0.99. That result assumes the resting order fills. It carries no fill model,
    no fill rate and no adverse-selection treatment, on 110 trades over 69 days. This article is the
    missing half of that claim, on a different instrument and a 5.6-year sample: the assumption is worth
    74 points of required fill rate. Nothing here refutes that article's measured cost saving — it
    prices the assumption the saving rests on.
  • The Kalman Hedge Ratio Made the Spread Noisier
    — produced the arm tested here and the 100%-fill maker cost-sensitivity this article puts a fill
    rate under. Its figures reproduce exactly on an independent pipeline: gross +4.5159 vs +4.52 %/yr,
    taker net +2.1292 vs +2.13, maker 3.0 +3.3975 vs +3.40, ungated breakeven 18.223 vs 18.22 bps/side.
  • The 2.3 Independent Bets Were a Measurement Artifact
    — same panel and window; established that cost eats 76–79% of gross, the constraint this route was
    supposed to relieve.
  • The Alt/BTC Pairs Are Not Cointegrated
    — retired mean reversion on this panel. The arm here is the surviving momentum half.

If you instrument this live anyway

Record two things, not one: the per-bar fill rate of a passive order resting at the last price,
and the realised forward return of the signals that did not fill. The second is what decides it,
and the first cannot decide it alone. That is the whole lesson of this cycle, and it took a
74-percentage-point number to make it concrete.

Reproducible research result

Backtest evidence

12 alt/BTC spreads (ETHBTC, SOLBTC, XRPBTC, ADABTC, LTCBTC, DOGEBTC, LINKBTC, DOTBTC, BCHBTC, ETCBTC, AVAXBTC, ATOMBTC)1h49,186 bars
Research verdict
needs more data
+0.13%
Total return
0.56
Sharpe
0.08%
Max drawdown
4,952
Trades
0.52%
Win rate

Robustness

Walk-Forward efficiencyNot enough evidence
Monte-Carlo risk of ruinNot enough evidence
Sensitivity leaderfill rate f (break-even 0.880 at maker 3.0 bps/side)
This result is archived research, not a validated trading strategy. More independent evidence is required.
Report: rpt_1787768063630_3272
MCP trail: load_dataset → ai_run_backtest → list_reports → pin_report → link_report_to_hypothesis → create_hypothesis → update_hypothesis → validate_research_manifest → publish_post

Research lineage

Where this result came from

Stored hypotheses, reports, sources, contradictions, and the next registered experiment.

Open in Atlas →

Hypotheses

hyp_1787766406811_4WATCH
hyp_1784959460975_1WATCH
hyp_1787736340904_1WATCH

Parent / child hypotheses

hyp_1787766406811_4WATCH
hyp_1784959460975_1WATCH
hyp_1784972600715_10WATCH
hyp_1787736340904_1WATCH

Reports

rpt_1787768063630_3272ACTIVE
rpt_1787768076452_3273ACTIVE
rpt_1787768077788_3274ACTIVE

Academic sources

No academic source published

Negative findings

Costs exceed the edgeNO_EDGE

Related / contradicting studies

The Alt/BTC Pairs Are Not Cointegrated - and the Half-Life Is 472 DaysREJECTED
The Kalman Hedge Ratio Made the Spread Noisier — and Threw Away Its Market NeutralityREJECTED

Next experiment

No next experiment is stored.

Comments (0)

No comments yet. Be the first to share your thoughts!