Scorefio · case study · ETHUSDT · 236 round tripsbeta

When costs are not the problem

236 round trips on ETHUSDT, costed at $10,000 per trade against binance, over 29 Apr 2026 to 29 Aug 2026.

00

What this shows

Not every disappointing strategy is a cost problem, and a tool that only knows how to find cost problems will invent them.

MACD 12/26/9 on ETHUSDT hourly loses money before any cost is applied. Fees, funding and drift are all real and all beside the point: moving venue, switching to limit orders or trading a different size changes nothing here, because the signal has no edge in this period to protect.

The report leads with that rather than burying it under a cost table, and the levers section says plainly that none of them reach breakeven. It also distinguishes a loss the sample settles from one it merely suggests — with enough trades the range never touches zero, and that is a different finding from an unlucky run.

Publishing this one matters as much as publishing the other two. A cost tool that never says 'the costs are fine, your idea is the problem' is selling something other than the truth.

This is a real report, not an illustration

Everything below was produced by the same engine that costs an upload, from the same market data, and is rendered by the same template. Upload your own trade list to get one for your strategy.

New to these terms? Open this first
bps
A basis point: one hundredth of one percent. 100 bps = 1%. 10 bps = 0.1%. On a $10,000 trade, 1 bps is $1.
round trip
One complete trade — getting in and getting out. Most costs are charged on both sides, so a 5 bps fee is 10 bps per round trip.
gross / net
Gross is what the strategy made before any cost. Net is what is left after them. Your backtest almost certainly reported gross and called it net.
taker / maker
A taker order crosses the spread and fills immediately, at the higher fee. A maker order rests in the book and waits, at the lower fee. A limit order that crosses is still charged as a taker.
funding
On a perpetual future, a payment between longs and shorts at fixed intervals. Holding a position through one means paying or receiving it. Not every symbol settles every 8 hours — about half do not.
impact / spread at size
What it costs to actually fill your order size by eating through the order book — as opposed to the quoted spread, which only applies to a tiny order.
signal-to-fill drift
How far the price moved between your signal firing and your order actually filling. A backtest assumes these are the same moment. They are not.
breakeven
The cost level at which the strategy's edge disappears. Above it you lose; below it you keep something. This is the number the report is really for.
band
The range the true figure plausibly sits in, given how few trades there are. A band that crosses zero means the result could go either way and the sample cannot tell you which.
containment
Our check that each fill sits inside the price range its bar actually traded. A fill outside it means the wrong symbol, venue, or timezone — or invented data.
in-sample
A rule chosen by looking at the same data it is then scored on. It always looks good in hindsight and rarely survives contact with next month.
01

Verdict

No edge, before any cost

Costs didn't kill this: it loses 23.2 bps per trade before any cost is applied.

Total costs are 13.8 bps, so they are not the problem — your execution setup is fine. The signal has no edge in this period, so the thing to change is the signal, not the venue or the order type. With 236 trades the range on the net figure (-58 to -14) stays below zero throughout, so this is settled rather than unlucky.

gross, before any cost -23.2 bps
total cost, per round trip −13.8 bps
net per trade, as configured -36.9 bps
net per trade, maker-only -30.9 bps
90% band: -58.1 to -14.2 bps. The band lies entirely below zero, so the sign of this result is settled by the data.
Platform promised
−$5,467
over 236 trades at $10,000 each
As configured you'd have got
−$8,714
same trades, real costs
Difference
$3,246
what finding this out before going live is worth
02

Input validation

containment — fills inside their bar's traded range (ε 0.05%) 100.0% · proceed
bar-close execution fingerprint 100% · signal-to-fill drift applies
sample size 236 trades
  • bar-close execution detected; signal-to-fill drift applies
03

Cost stack

Basis points per round trip, where a negative number is a credit rather than a cost. Every line names the basis it came from; a line with no basis shows no number.

Component bps Band Basis Note
Fees 10.0 Published binance regular taker, round trip — schedule not yet verified against source
Funding 0.1 Published exact, 500 settlement records at 8h intervals
Signal-to-fill drift 3.3 -29.1 … +28.2 Measured a + b*body fit from 106 signals over 45d (sma_cross_1h); this list looks like macd_1h, so the fit is borrowed from a different signal family and the band matters more than the point. No comparison against live fills has been run yet. Adverse selection is a model.
Impact at your size 0.3 Measured your $10,000 order priced at the $25k rung — the nearest depth we sample at or above it, so this is the conservative side. Both sides, median of 8 L2 samples on binance.
Total 13.8 All components have a basis.
04

Funding, per trade

Funding is reported as a distribution because its mean is misleading. Positive means you paid.

p5
-1.4
p25
-0.4
median
+0.0
p75
+0.6
p95
+1.6
largest single
4.0
settlement interval for this symbol every 8h
windows crossed, average per trade 1.6
trades where funding exceeded fees 0.0%
On holds this short funding genuinely is negligible — the tail never reaches the fee line.
05

Breakeven and venues

gross edge per round trip-23.2 bps
fee budget this strategy survives at -26.9 bps rt · -13.5 per side
VenueTaker rtNet / trade Net totalSurvivesMaker netFee source
binance 10.0 -36.9 −$8,714 NO -30.9 Published · unverified
okx 10.0 -36.9 −$8,714 NO -30.9 Published · unverified
kraken 10.0 -36.9 −$8,714 NO -30.9 Published · verified
bybit 11.0 -37.9 −$8,950 NO -30.9 Published · unverified
06

What would change it

Gain is measured against the configuration you uploaded. "Clears" means this lever alone takes the strategy above zero.

LeverWhat it changesGain Net afterClearsBasis
Maker instead of taker fees 10 -> 4 bps rt +6.0 -30.9 no fee catalogue
Exit before window 4 caps funding on 27 trades held > 3 windows +0.0 -36.9 no 05 funding dist
Best venue at your size (binance) impact 2.1 -> 0.3 bps rt vs worst venue +0.0 -36.9 no sampler
Skip signals on bars > 80 bps body drops 59/236 trades; adverse slope 0.083/bp -0.7 -37.6 no 07 adverse fit
Maker + best venue (combined) the two independent execution levers together +6.0 -30.9 no combined
One of these is not a fix

Skip signals on bars > 80 bps body selects trades using the same data it is scored on. The gain shown is what the filter would have earned in hindsight, which is not what it would earn next month. Treat it as a hypothesis to forward-test, never as a change to make today.

WORTH TESTING · NOT SIZED

Try a slower timeframe

You traded 236 times in 122 days — about 13.5 round trips a week.

This signal loses before any cost, so no execution change rescues it — but a slower chart is a different signal, not a different fill. In our own case studies the same rules on 4-hour bars turned both losing strategies into winning ones.

Re-run the same strategy on a higher timeframe in your platform and upload that trade list too. We will cost it the same way, and you can compare the two directly.

This carries no number on purpose. We receive your trades, not your rules, so we cannot compute what those rules would have done on different bars. Rather than estimate it, we are telling you it is worth testing.

Read this before pulling a lever

This strategy loses before any cost is applied, so no execution lever rescues it — the levers above are shown for completeness. The one exception is a timeframe change, which alters the signal itself rather than how it is filled.

07

Survival and sensitivity

Winners, gross
63 / 236
Winners, after costs
59 / 236
at 10.0 bps round trip
Trades that stopped working
4

Net per trade against assumed round-trip cost

Assumed cost (bps rt)Net per trade (bps)
0 -23.2
5 -28.2
10 -33.2
15 -38.2
20 -43.2
30 -53.2
08

Provenance

What produced this report. If any input is later corrected, this is how we find the reports it affected and tell you.

model version0.1.7
generated03 Sep 2026
adaptergeneric_csv
price databinance-futures-1h
fee schedule versions4 referenced
calibration records adverse:ETHUSDT:sma_cross_1h
fee lines not yet verified against source binance:regular, bybit:regular, okx:regular

An unverified line means we hold the venue's published figure but have not yet confirmed it against the source this month. It is labelled everywhere it is used.

The other studies

Cost your own trade list. Free, no account.