Trading expectancy: why win rate alone tells you almost nothing
Expectancy, the average result per trade after costs, decides whether a process makes or loses money on average. A 70% win rate can lose money; a 40% one can make it.
Start in plain English
Trading expectancy is the average result per trade you would expect from a process if you could repeat it many times under the same conditions. It is the number that decides whether a process makes or loses money on average. Win rate, the share of trades that win, is only one of its inputs. For a scalper, whose wins are small and whose costs are large relative to them, judging a process by win rate alone is one of the most common and most expensive mistakes.
The formula, after costs:
Expectancy = (win rate × average win) − (loss rate × average loss) + (scratch rate × average scratch)
All three averages are measured after commissions, fees and slippage. If your averages are before costs, subtract the average cost per trade at the end. A scratch is a trade closed near entry; its average is usually slightly negative because it still pays costs.
The result can be stated in dollars or, more usefully, in R: multiples of the risk you planned per trade. An expectancy of +0.10R means that, on average, each trade added a tenth of the planned risk.
A first calculation
All numbers in this example are Illustrative.
A trader reviews 20 simulated scalps. Each risked $50.
| Count | Share | Average result | |
|---|---|---|---|
| Wins | 12 | 60% | +$40.00 |
| Losses | 8 | 40% | −$55.00 |
| Costs per trade (commissions and fees) | 20 | — | $3.00 |
Expectancy before costs: 0.60 × $40.00 − 0.40 × $55.00 = $24.00 − $22.00 = +$2.00 per trade.
Expectancy after costs: $2.00 − $3.00 = −$1.00 per trade, or −$1.00 ÷ $50 = −0.02R.
A 60% win rate (Illustrative), a positive result before costs, and a process that lost money on average. Two details made the difference: the average loss ($55) was larger than the planned $50 risk, because stops slipped, and the average win was smaller than the average loss. Neither shows up in the win rate.
Twenty trades is also a small sample. The −0.02R is an estimate with wide error bars; the section on sample size below and How many trades before your numbers mean anything cover how wide.
Expectancy in R
Dollars depend on size; R does not. If you double your size, a +$2.00 expectancy becomes +$4.00, but +0.04R stays +0.04R. Measuring in R lets you:
- compare trades taken at different sizes;
- compare your process with someone else's;
- see when realized losses drift away from −1R, which is often the first sign that stops or fills are a problem.
To convert: divide each trade's net dollar result by its planned risk in dollars (entry minus stop, times shares). A trade that risked $50 and lost $65 after costs is −1.30R.
Costs inside the formula
Costs belong inside expectancy, not next to it. Three common ways they go missing:
- Averages taken from a chart. Price moves are before costs. A 10-cent move on 1,000 shares is $100 gross and perhaps $95 net.
- Slippage left out of losses. The stop price is a trigger, not a fill. If stops fill a cent or two past their price, the average loss exceeds 1R.
- Scratches ignored. A trade exited at breakeven price still paid the spread and fees.
For a scalper, costs per trade in R are large because tight stops mean many shares per R. ECN fees builds a cost-per-round-trip worksheet; Slippage shows how to measure fills.
Observe vs. infer
Back to the 20-trade log from "A first calculation" (Illustrative):
| What the log shows (observed) | What a trader might infer | Why it is not established |
|---|---|---|
| 12 of 20 trades won (60%) | "The setup is a winner" | Win rate leaves out the size of wins, losses and costs |
| Average loss $55 against a planned $50 | "Bad luck on a few stops" | Could be slippage that recurs; needs more trades and a fill review |
| Expectancy −0.02R after costs | "The setup is broken" | 20 trades give a wide range around −0.02R that includes clearly positive values |
| Costs of $3.00 per trade | Costs are $3.00 per trade | Observed: costs are fixed by the plan and the broker |
The last row is the only one that is fully established by 20 trades.
Two processes, two runs each
All distributions and runs here are Illustrative. Probabilities are computed from the assumed distributions (exact binomial).
Process H, high win rate (Illustrative). Wins 70% of the time at +0.45R after costs; loses 30% of the time at −1.25R after costs and slippage. Expectancy: 0.70 × 0.45 − 0.30 × 1.25 = −0.06R per trade.
Path AProcess H, a good 20-trade run
17 wins, 3 losses.
Path BProcess H, a bad 20-trade run
11 wins, 9 losses.
Process L, low win rate (Illustrative). Wins 40% of the time at +1.90R after costs; loses 60% of the time at −1.10R. Expectancy: 0.40 × 1.90 − 0.60 × 1.10 = +0.10R per trade.
Path AProcess L, a good 20-trade run
11 wins, 9 losses.
Path BProcess L, a bad 20-trade run
5 wins, 15 losses.
Review note: within each process, Path A and Path B came from the same plan and the same expectancy. Across processes, the losing process (H) shows a positive 20-trade result in about 42% of runs, and the winning process (L) shows a negative one in about 42% of runs (computed from the assumed distributions, Illustrative). Over 20 trades, the sign of the result says little about the sign of the expectancy. A win rate of 70% versus 40% (Illustrative) says even less.
Odds box
Process H, which loses money on average, still finishes about 42% of its 20-trade blocks in profit. Process L, which makes money on average, finishes about 42% of them at a loss (computed, Illustrative). The gap between the two shows up only over many blocks. Expectancy, not the frequency of good blocks, is what accumulates over hundreds of trades.
What shifts the odds
For expectancy, the "odds" are the inputs to the formula. Each can move without the win rate changing. These are mechanical effects, not FennEdge findings:
- Exit rules. Taking profits earlier raises win rate and lowers average win; expectancy can fall.
- Stop fills. Each cent of stop slippage adds to the average loss in proportion to shares per R.
- Costs per share. A cheaper fee plan raises every result by the same amount in dollars.
- Scratch share. A plan with many time stops pays costs on many trades that neither win nor lose.
- Selection. Skipping the trades that "look weak" can change all three averages; whether for better is a question for your own log.
Cost of being wrong
Two errors cost money here:
- Trusting a high win rate. Process H wins 70% of the time and loses 0.06R per trade (Illustrative). At $50 per R and 30 trades a day, that is about $90 per day on average, while most days look like wins.
- Dropping a low-win-rate process after a bad run. Process L loses 60% of its trades; a run like Path B (−7.00R, −$350 at $50 per R) happens in about 13% of 20-trade blocks (computed, Illustrative). Abandoning it there gives up +0.10R per trade of estimated edge.
How many trades before this means anything
Expectancy from your own log is an estimate. Using the per-trade spread of each process (Illustrative, normal approximation), a rough 95% range for the average after 20 trades runs from about −0.40R to +0.28R for Process H and from about −0.54R to +0.74R for Process L. After 100 trades the ranges are still about −0.21R to +0.09R and −0.19R to +0.39R. Both still include zero. How many trades before your numbers mean anything explains the method and the extra caution needed when trades are correlated.
What this lesson does not claim
- It does not claim high-win-rate processes lose or low-win-rate ones make money. Processes H and L are Illustrative, chosen to show the arithmetic.
- Expectancy describes an average over many trades. It does not say what the next trade, day or month does.
- An expectancy estimate from your own log is only as good as the log: every trade that met the definition, costs included, nothing removed after the fact.
Go deeper
- FennEdge first.
- If you trade live, the Trading Journal syncs real fills from supported brokers, Free accounts included; viewing your trades and performance statistics, with net P&L after the fees on your fills, needs Plus or above, and the full fee breakdown is on Pro and Max (as of 2026-10-05). It holds broker-synced trades only, not simulated or practice entries; practice trades belong in the course practice log.
- Level Up (Plus and above, as of 2026-10-05) is a private challenge scored on your Journal net P&L, with an optional daily max loss per level. It does not track tags or entry timing, so keep process goals such as "log every trade with planned R" in your own log.
- R-multiples. Expressing every trade as a multiple of planned risk makes expectancy comparable across sizes. The Advanced course measures R-multiple distributions in more detail.
- Expectancy per hour. A process with +0.05R per trade at six trades an hour and one with +0.30R at one trade an hour both earn about 0.30R per hour. Attention, costs and fatigue differ.
- Profit factor. Gross wins divided by gross losses. It carries the same information as expectancy in a different form, and also needs costs included.
- Previous: Thinking in probabilities. Next: Risk/reward and breakeven win rate. Related: Scalping vs day trading, Reviewing scalps.
Exercises
Seven exercises follow this lesson: three concept checks (what decides profitability, why scratches belong in the formula, what a short positive run establishes), three calculations (expectancy with scratches, expectancy after costs in R, expectancy per hour) and one scenario comparing two trade logs. Exercises, answers and progress are available after signing in.
Primary sources
- FINRA. Frequent Intraday Trading: Understanding the Basics.
- Tversky, A. and Kahneman, D. (1974). Judgment under Uncertainty: Heuristics and Biases. Science 185(4157).
Sources checked 2026-10-05. All trade logs, processes, runs and costs in this lesson are fictional and Illustrative; probabilities and ranges are computed from the assumed distributions. This lesson is education, not a recommendation to buy or sell any security. Past patterns do not indicate future results.