Noon Barbari
Registrarse
Todos los artículos
conceptoPublicado ·7 min de lectura

R-multiples: the only way to compare trades that actually scales

Was that +$80 trade good? You cannot tell from dollars alone. Expressed as R-multiples — units of initial risk — every trade gets the same currency, and your strategy's quality becomes measurable.

En esta página

Imagine you're reviewing a trade log: "+$80, +$45, -$120, +$200, -$60." Was the strategy any good? You can't tell. The positions might have been different sizes, the entry prices different, the stop distances different. The dollar PnL alone is uninterpretable without context. That context is what R-multiples give you.

What R is

R is the initial risk on a trade, in dollars. If you enter long at $100 with a stop at $95, your R is $5 per share. If you're sized so that hitting the stop loses $200, your R is $200. Whatever currency unit makes the maths easiest, your R is the amount you'd lose if the stop is hit.

An R-multiple is the trade's actual PnL divided by its R. A trade that risked $200 and made $600 is +3R. A trade that risked $200 and lost $200 is -1R. A trade that risked $200 and made $50 is +0.25R.

Converting a trade log to R-multiples
# Trade log with entry, stop, exit, contracts:
trade   entry   stop    exit    contracts   pnl_$    R_$       R_multiple
1       100     95      108       100        +800     500       +1.6R
2       50      48      54        500        +2000    1000      +2.0R
3       200     190     195       50         -250     500       -0.5R
4       30      29      35        2000       +12000   2000      +6.0R
5       80      77      77        200        -600     600       -1.0R

# Now you can compare them — all in the same unit.

Dollar PnL alone wouldn't tell you trade 4 was the big winner (it was +6R). And it wouldn't tell you trades 3 and 5 were small losses (they were -0.5R and -1R — well within the strategy's expected loss distribution).

Why R scales where dollars don't

R-multiples normalise across position size, asset price, leverage and account size. A 2R win in BTC and a 2R win in TSLA mean the same thing — "made twice the planned risk." That makes your trade log directly comparable across markets and across time periods of your own account growth.

It also forces honest record-keeping. You cannot compute R unless you actually had a stop-loss when you entered the trade. Strategies that exit "when it feels wrong" have no R, and therefore no measurable expectancy. The discipline of pre-committing to an R per trade is by itself a useful constraint.

Expectancy in R

Once trades are in R, you can compute expectancy: the average R-multiple per trade. This is the single most important number in systematic trading.

Expectancy formula in R-multiples
# Expectancy = (win_rate × average_win_R) − (loss_rate × average_loss_R)

# Example: 40% win rate, average win = +2.5R, average loss = -1.0R
expectancy = (0.40 × 2.5) − (0.60 × 1.0)
           = 1.0 − 0.6
           = +0.4R per trade

# Over 100 trades, expected gain = 100 × 0.4R = 40R
# If R = $200, expected profit = $8,000 over 100 trades
# (and a standard deviation around it that you also need to know)

An expectancy of +0.4R per trade is a real edge. -0.2R is a slow death by a thousand cuts. The threshold for "profitable enough to bother with" depends on the strategy's frequency — at 200 trades/year you can live on +0.2R; at 10 trades/year you need +1.0R or better.

Looking at the whole R distribution

Expectancy is the mean of your R distribution, but the shape matters as much as the mean. Two strategies can have the same +0.4R expectancy:

  • Strategy A: 50% win rate, average win = +1.8R, average loss = -1.0R. Roughly symmetric P&L curve, lower variance.
  • Strategy B: 30% win rate, average win = +4.0R, average loss = -1.0R. Long droughts punctuated by a few big winners. High variance, harder psychologically.

Both have the same expectancy but completely different equity curves. Looking only at the mean misses the shape. Histogram your R-distribution, look at the 5th-percentile drawdown, and size positions accordingly.

Using R in the backtester

Backtest output expressed in R
# After a backtest run, the trade log is exported with an R_multiple column
# Then you can:
import pandas as pd
trades = pd.read_csv("trade_log.csv")
expectancy = trades.R_multiple.mean()                # mean expectancy
win_rate   = (trades.R_multiple > 0).mean()
avg_win    = trades[trades.R_multiple > 0].R_multiple.mean()
avg_loss   = trades[trades.R_multiple <= 0].R_multiple.mean()
print(f"E = {expectancy:+.2f}R  win% = {win_rate:.0%}  "
      f"avg_win = {avg_win:.2f}R  avg_loss = {avg_loss:.2f}R")

Next steps

R-multiples link tightly to the win-rate vs risk-reward post, which covers why a 90% win rate can still lose. And for the position-sizing side of the equation, crypto position sizing explains how to convert R into actual contracts or units.

Pruébalo con tus datos

Cada concepto de arriba está implementado en la plataforma. Backtest, walk-forward, paper trading, luego live — el mismo conjunto de reglas en cada etapa.

Lecturas relacionadas