◆ New — Strategy Validator, Code Fixer & Prop Compliance Checker are live. Try one free →
Home / Learn / Expectancy & Trading Edge
Trading Education

Expectancy & Trading Edge

Expectancy is a simple way to describe what a trading approach has done on average per trade over a sample of past results. This guide explains the formula, the difference between win rate and edge, why position sizing and costs change the picture, and how traders study expectancy in a strategy tester. It is educational only and makes no claims about future results. Nothing here is predictive, and trading carries risk of loss.

What expectancy actually measures

Expectancy is the average result of a trading approach per trade, measured over a set of past trades. One common form of the formula is:

Expectancy = (Win rate x Average win) - (Loss rate x Average loss)

Suppose a sample of 100 trades won 40% of the time. The average winner was 250 and the average loser was 100 (in whatever unit the results are measured in, such as currency or points). Then:

(0.40 x 250) - (0.60 x 100) = 100 - 60 = 40 per trade, on average, across that sample.

That 40 is descriptive. It tells you what those 100 trades did on average. It does not tell you what the next trade will do, and it does not become more predictive by being positive. Expectancy is an average over outcomes that have already happened; the order of wins and losses, the drawdowns along the way, and the next result are all separate questions. Nothing here is a forecast, and a positive historical expectancy does not remove the risk of loss.

Win rate is not the same as edge

A high win rate feels reassuring, but on its own it says nothing about whether an approach made or lost money over a sample. What matters is win rate combined with the size of wins relative to losses.

Two contrasting examples make the point:

  • Wins 30% of trades, but average win is 300 and average loss is 100: (0.30 x 300) - (0.70 x 100) = 90 - 70 = +20 per trade.
  • Wins 80% of trades, but average win is 50 and average loss is 300: (0.80 x 50) - (0.20 x 300) = 40 - 60 = -20 per trade.

The low-win-rate example is positive over this sample; the high-win-rate example is negative. This is why traders often describe edge as the interaction of how often you are right and how much you make when right versus lose when wrong. A win rate quoted without the average win-to-loss size is incomplete information, not evidence of an edge. None of this predicts the next trade.

Thinking in R-multiples

Comparing trades that risked different amounts is hard in raw currency. Many traders normalise results into R-multiples, where R is the amount risked on a trade (typically the distance from entry to the planned stop, times position size).

A trade that makes twice what it risked is +2R. A trade stopped out for its full planned risk is -1R. A trade closed early for a small loss might be -0.4R. Once every trade is expressed in R, expectancy can be read on a single scale regardless of position size:

Expectancy (in R) = average R across all trades.

An expectancy of +0.2R means the sample returned, on average, one-fifth of the risked amount per trade. R-multiples make different setups comparable and keep the focus on the risk taken rather than the raw money figure. They remain a description of past trades. They are not a target the market is obliged to deliver, and the realised loss on a single trade can exceed the planned 1R if price gaps through a stop.

Costs, slippage, and sample size

Expectancy calculated on clean theoretical fills tends to look better than expectancy you could have realised. Three things eat into it:

  • Spread: the gap between bid and ask is paid on entry and exit.
  • Commission: broker fees per trade reduce every result.
  • Slippage: fills can occur at worse prices than intended, especially around news or in thin liquidity.

A thin positive expectancy can turn negative once these are subtracted, so traders generally study expectancy with realistic costs included rather than on frictionless numbers.

Sample size is the other trap. A handful of trades cannot distinguish a real pattern from luck; a few large winners can flatter an average that would not hold up over more trades. Larger samples reduce noise but never remove uncertainty, and an approach that looked good in one market regime can behave differently in another. Treat any expectancy figure as a measurement with error bars, not a settled fact about the future.

Studying expectancy in a strategy tester

Charting platforms let you compute expectancy from a strategy's closed trades. The short Pine v6 example below tracks closed-trade profit and counts wins and losses, then prints the average win, average loss, win rate, and expectancy per closed trade. It is a measurement tool for reviewing past behaviour on historical data, not a recommendation to trade and not a signal generator.

//@version=6 strategy("Expectancy Stats", overlay = true)

// Example entry logic for illustration only (not advice) fast = ta.sma(close, 10) slow = ta.sma(close, 30) if ta.crossover(fast, slow) strategy.entry("L", strategy.long) if ta.crossunder(fast, slow) strategy.close("L")

// Read realised stats from closed trades wins = 0 losses = 0 winSum = 0.0 lossSum = 0.0 for i = 0 to strategy.closedtrades - 1 p = strategy.closedtrades.profit(i) if p > 0 wins += 1 winSum += p else if p < 0 losses += 1 lossSum += p

total = wins + losses winRate = total > 0 ? wins / total : 0.0 avgWin = wins > 0 ? winSum / wins : 0.0 avgLoss = losses > 0 ? lossSum / losses : 0.0 // negative number expect = winRate avgWin + (1 - winRate) avgLoss

if barstate.islastconfirmedhistory label.new(bar_index, high, "Trades: " + str.tostring(total) + "\nWin rate: " + str.tostring(winRate * 100, "#.0") + "%\nAvg win: " + str.tostring(avgWin, "#.##") + "\nAvg loss: " + str.tostring(avgLoss, "#.##") + "\nExpectancy/trade: " + str.tostring(expect, "#.##"))

A few notes on reading the output. The expectancy figure describes only the trades in the test window, on the data and settings used; change the symbol, timeframe, or dates and it can change. Backtest results assume fills that may not match live execution, so add realistic commission and slippage in the strategy settings before drawing conclusions. As always, this is educational and not a recommendation. Past performance does not indicate future results, and trading carries risk of loss.

Key takeaways

Educational only — not financial advice. Trading involves substantial risk of loss.

Catch the bug that compiles.Run auditGet Pro