2026-02-20 · updated 2026-08-29 · 11 min read strategy

How to Build a Crypto Trading Strategy That Survives Costs

short answer

A profitable crypto strategy needs four things: a repeatable condition that precedes a directional move, a sizing rule that makes every loss the same size, an exit plan defined before entry, and validation on data the strategy was never tuned on — with fees and funding charged. Most strategies fail the fourth test.

There is no shortage of strategies that look profitable. The scarce thing is a strategy that is still profitable once you subtract what it costs to trade, and that keeps working on data it has never seen. This article is about the arithmetic that separates those two categories, because it is arithmetic and not opinion.

What is a trading edge, precisely?

An edge is a measurable condition after which the distribution of future returns is different from the unconditional distribution. That is the whole definition, and it is stricter than it sounds.

"Buy when RSI is oversold" is not an edge — it is a condition. It becomes an edge only when you can show that after that condition, over a large enough sample, forward returns were better than they were on average across all bars. Most published strategies never take this step, and a large fraction of them fail it.

Edges in crypto come from a small number of sources: structural (funding mechanics, liquidation cascades, forced flow), behavioural (crowded positioning, panic, patterns in when retail acts), informational (faster classification of news than the median participant), or execution (better fills, lower fees). If you cannot name which of those your strategy is exploiting, you may be trading noise that happened to look ordered in your sample.

Expectancy: the only number that matters

Win rate is the most cited and least informative statistic in retail trading. These two strategies have identical win rates and opposite fates:

StrategyWin rateAvg winAvg lossExpectancy
A40%+2.5R−1.0R+0.40R
B40%+1.0R−1.0R−0.20R

The formula:

expectancy_R = (win_rate × avg_win_R) − (loss_rate × avg_loss_R)

Working in R — multiples of the amount risked — rather than dollars is what makes trades comparable. A $50 loss on a $500 position and a $200 loss on a $2,000 position are both −1R, and treating them as the same event is the point.

Why R-multiples require fixed fractional sizing

R only means something if every trade risks the same fraction of equity. Under fixed notional sizing, a trade with a 0.4% stop and one with a 3% stop carry seven times different risk, so their R values are not on the same scale and averaging them is meaningless. Size must be derived from the stop:

position_size = (equity × risk_fraction) / |entry_price − stop_price|

Details in crypto risk management.

The cost calculation that kills most strategies

Fees are quoted as a fraction of notional, which makes them look constant. In R terms they are not:

cost_in_R = round_trip_fraction × entry_price / |entry_price − stop_price|

At 0.15% round trip (a typical taker-taker cost on major perps):

Stop distanceCost in RGross expectancy needed to break even
0.5%0.30R+0.30R
1.0%0.15R+0.15R
2.0%0.075R+0.075R
5.0%0.03R+0.03R

Read that table twice, because it reorders strategies. A scalping system with +0.25R gross expectancy is net negative. A swing system with +0.10R gross is comfortably positive. Compare strategies on gross R and you will systematically pick the worse one.

On perpetual futures add funding, which is charged periodically on notional and is independent of your stop. For positions held over days, funding frequently exceeds fees. A carry-negative strategy has to overcome both.

Defining rules that can actually be tested

Every rule must be executable by something that cannot use judgement. Five slots:

  1. Universe. Which instruments, and what liquidity floor. "All coins" is not a universe; the long tail has different microstructure and your fills will not resemble your backtest.
  2. Entry. The exact condition, on an exact timeframe, evaluated on closed bars. "Trend is up" must reduce to something a machine can compute identically twice.
  3. Sizing. Risk fraction and the derivation above.
  4. Exit. Stop, targets, and any time-based exit. Defined before entry, not discovered during the trade.
  5. Veto. The conditions under which you do not take an otherwise valid signal — no new entries into a high-impact news window, no entry when correlated exposure is already at cap, no entry during an account-level drawdown pause.

The veto slot is the one most often left empty, and it is often where the largest single improvement lives.

Validation: proving it to a hostile reader

Assume you are trying to disprove your own strategy. The tests that actually threaten it:

Out-of-sample split. Tune on one period, test untouched on another. Expect degradation — some is normal. If the edge vanishes entirely, you fitted noise.

Walk-forward. Repeatedly re-tune on a rolling window and test on the next window. This mimics how you would actually operate and exposes strategies that only work with hindsight-chosen parameters.

Parameter surface. Look at performance across the whole parameter grid, not just the peak. An edge sitting on a broad plateau is plausible; a single spiky maximum surrounded by losing configurations is almost always an artifact.

Episode concentration. Remove the three best trades. If the edge disappears, you do not have a strategy — you have two lucky weeks and a story. This is the single most revealing check and almost nobody runs it.

Regime split. Break results into trending and ranging periods separately. A strategy that is +0.4R in trends and −0.1R in ranges is a good strategy with a missing filter, not a mediocre strategy.

Cost sensitivity. Re-run at double your assumed fees. If the conclusion flips, your margin of safety is inside your estimation error.

Surviving the drawdown a real edge produces

A 40%-win-rate strategy with genuine positive expectancy will still produce runs of six, eight, ten consecutive losses. That is not malfunction — it is the arithmetic of a 60% loss rate. The failure is behavioural: the trader abandons a working strategy during a statistically ordinary losing streak, usually right before it recovers.

Two defences. First, know your expected worst streak before you start, so it does not arrive as a surprise. Second, install account-level circuit breakers that pause trading on a daily loss cap or a consecutive-loss count — not because the strategy is broken, but because the person watching it is about to override it. Anti-tilt covers why this is the highest-yield control most traders never install.

Iterating without destroying your own evidence

Every change resets your sample. A strategy you have modified eleven times has eleven partial samples, not one long one. Discipline that keeps evidence intact:

Putting it together

The workflow, in order: name your edge and which source it exploits → write the five rule slots → backtest with fees and funding charged → check episode concentration and the parameter surface → validate out-of-sample → run it small and live long enough to compare realised cost against modelled cost → scale only when live and modelled agree.

TradeFloor supports each of those steps — rule construction with up to five AND/OR conditions, backtests that charge fees and funding by default, walk-forward and parameter-sweep modes, and a journal that records exit reason on every close so expectancy is measured rather than estimated. The complete automation guide covers the execution half.

Frequently asked questions

What win rate do I need to be profitable in crypto trading?

There is no threshold, because win rate alone does not determine profitability. A 30% win rate at an average 4R win is strongly profitable; a 70% win rate at 0.3R against 1R losses is not. What matters is expectancy — win rate times average win minus loss rate times average loss — computed after fees and funding.

How many trades do I need before a backtest means anything?

Enough that a handful of outliers cannot carry the result. A few dozen trades is anecdote. The more useful test than any fixed count is removing the three best trades: if the edge disappears, the sample was concentrated in a couple of episodes regardless of how many rows it had.

Why does my strategy work in backtest but lose money live?

The common causes, in rough order of frequency: fees and funding were not charged in the test, the test used the closing price of the bar it entered on, ambiguous bars were resolved optimistically instead of worst-case, parameters were tuned and tested on the same data, or the live period is a different regime from the tested one.

Should I use a tight stop-loss or a wide one?

Tight stops are far more expensive than they appear because round-trip cost in R scales inversely with stop distance — at 0.15% round trip, a 0.5% stop costs 0.30R per trade against 0.075R for a 2% stop. Tight stops also get hit by noise more often. Set the stop where the trade idea is invalidated, then check the strategy still clears its cost at that distance.

What is a good expectancy for a crypto strategy?

Anything reliably positive after costs is worth trading; the size of the number matters less than its stability. Consistent +0.05R to +0.15R net across regimes and out-of-sample periods is a real business. Backtested figures far above that usually indicate over-fitting or a cost model that omits funding.

How do I know if my strategy has stopped working?

Compare recent expectancy against your validated baseline over a window long enough to be meaningful, and split by regime before concluding anything — a trend strategy in a ranging market looks broken and is not. A journal that records exit reason on every close lets you distinguish edge decay from regime rotation; without one you are guessing.

// questions or corrections · [email protected] · more essays · /blog