preloader
post-thumb

Last Update: October 21, 2026 3 min read


BYauthor-thumberic

|Loading...

This post opens the second track of the ASX order book series: the business side of trading. The first track ended with measuring order book imbalance in code. Now we look at the numbers that decide whether any of that craft actually pays.

Every serious journal I read posted the same dashboard metrics: number of trades, win rate, average win, average loss, the ratio between them, commissions, net profit. And the most interesting thing in those dashboards wasn't any single number. It was the shape the numbers made together, and how differently the traders were shaped.

The only formula that matters

Expectancy is the average amount you make per trade:

text
expectancy = (win rate × average win) - (loss rate × average loss)

Two related numbers come up constantly:

text
payoff ratio  = average win / average loss
profit factor = gross profit / gross loss = (win rate × average win) / (loss rate × average loss)

A profit factor above 1 means you make money before costs. And the breakeven win rate for any payoff is:

text
breakeven win rate = 1 / (1 + payoff ratio)
Payoff ratio
Breakeven win rate
Feels like
0.5
67%
You must win two out of three just to stand still
1.0
50%
A coin flip
1.5
40%
You can be wrong more often than right
2.0
33%
Lose two, win one, still break even
3.0
25%
Lose three, win one, still break even

That table explains most of the confusion beginners have. A 70% win rate sounds fantastic. With a payoff of 0.4 it loses money. A 35% win rate sounds terrible. With a payoff of 3 it's an excellent business.

Every trader whose journal I read learned some version of that lesson, usually by staring at a dashboard with a lovely win rate and a disappointing bottom line.

The two shapes

Across the journals, profitable traders clustered into two very different shapes. Here they are with synthetic numbers.

The harvester
The sniper
Typical style
Fast scalps, auction trades, many per day
Catalyst trades, few per week, often held longer
Win rate
75%
42%
Average win
1.1 R
3.2 R
Average loss
1.0 R
1.0 R
Payoff ratio
1.1
3.2
Expectancy per trade
+0.58 R
+0.76 R
Profit factor
3.3
2.3
Trades per month
150
25
Monthly expectancy
+86 R
+19 R

Both are profitable. Per trade, the sniper makes more. Per month, the harvester makes far more, because volume multiplies a small edge. But that volume comes with a catch that we'll see in the next post: every one of those 150 trades pays brokerage and spread.

They feel completely different

The numbers above hide the experience of trading them.

The harvester is green most days. Losing streaks are short. The psychological challenge is boredom, precision and the occasional big loss that wipes out a week of small wins. Their biggest danger is one oversized, averaged-down loser.

The sniper is wrong more often than right. Losing streaks of six, eight, ten trades are normal. The psychological challenge is staying patient and sized correctly through long dry spells, and actually holding winners long enough to collect the big payoff. Their biggest danger is cutting winners early out of relief, which destroys the payoff that makes the whole thing work.

Here's a rough sense of how long losing streaks get, assuming independent trades.

Win rate
Chance of at least one run of 6 losses in 100 trades
Chance of at least one run of 10 losses in 100 trades
75%
about 2%
well under 1%
50%
about 55%
about 4%
42%
about 82%
about 16%

If you're built like a sniper and expect to feel like a harvester, you'll abandon a perfectly good strategy in the middle of a normal losing streak.

You can simulate it

The fastest way to build intuition is to simulate your own numbers.

python
import numpy as np

def simulate(win_rate, avg_win, avg_loss, trades=250, runs=10_000, seed=1):
    rng = np.random.default_rng(seed)
    wins = rng.random((runs, trades)) < win_rate
    pnl = np.where(wins, avg_win, -avg_loss)
    equity = pnl.cumsum(axis=1)
    drawdown = (np.maximum.accumulate(equity, axis=1) - equity).max(axis=1)
    return {
        "median_final_R": float(np.median(equity[:, -1])),
        "p5_final_R": float(np.percentile(equity[:, -1], 5)),
        "median_max_drawdown_R": float(np.median(drawdown)),
    }

print(simulate(0.75, 1.1, 1.0))
print(simulate(0.42, 3.2, 1.0))

Run that with your real win rate and payoff and you'll get a realistic picture of the drawdowns you should expect. Most people are surprised by how deep they are.

Improving payoff without wrecking win rate

A common arc for harvesters goes like this: a very high win rate for a long time, but a payoff stuck around 1, so the edge per trade is tiny and costs eat a big share of it. The usual diagnosis, once they look honestly at the data, is that they aren't taking enough risk on their best setups.

What changed their numbers wasn't a new setup. It was management:

  1. Keep fast time stops on failures. Losers stayed small and quick.
  2. Stop scaling out so eagerly on the best setups. Hold more of the position when the book still supports the trade.
  3. Size up the A-grade setups and size down or skip the marginal ones.

The win rate barely moved. The average win grew meaningfully. And because expectancy is win rate times average win, the whole business changed shape.

The sniper's equivalent problem runs the other way: improve win rate by being more selective, without cutting winners. Several journals found that a hard cap on the number of trades per day did exactly that. (That's a whole post later in the series.)

What to track

If you keep a journal, track these at a minimum, overall and per setup:

Metric
Why
Win rate (scratches separated)
Scratches are neither wins nor losses. Lumping them in distorts both numbers.
Average win and average loss
The two halves of payoff
Payoff ratio
Tells you your breakeven win rate
Profit factor
A single health number
Expectancy per trade, after costs
The real edge
Longest losing streak
Calibrates your psychology
Largest single loss as a multiple of average loss
Flags the blow-up risk

That last metric matters more than it looks. In nearly every journal, the months that went badly weren't months where the averages were bad. They were months with one loss many times larger than the average.

Comments (0)

Leave a Comment
Your email won't be published. We'll only use it to notify you of replies to your comment.
Loading comments...

Keywords

  • win rate
  • risk reward ratio
  • payoff ratio
  • expectancy
  • profit factor
  • losing streak
  • drawdown
  • trading statistics
  • day trading
  • scalping
  • trading journal
  • position sizing
Previous Article
post-thumb

Oct 22, 2026

Commission Drag: The Silent Partner in Every Scalp

For a scalper, brokerage is not a rounding error. It can take half of your gross profit. How commissions, spread and tick size interact on the ASX, why high-priced stocks are so expensive to scalp, and the single journal metric that shows whether your edge is real: commission as a share of gross.

Next Article
post-thumb

Oct 20, 2026

Measuring Order Book Imbalance in Code

Turning discretionary depth reading into numbers you can test. Python code for order book imbalance, microprice, a protection ratio, a resistance score and an auction mispricing feature, plus how to label and evaluate them honestly without fooling yourself.

agico

We transform visions into reality. We specializes in crafting digital experiences that captivate, engage, and innovate. With a fusion of creativity and expertise, we bring your ideas to life, one pixel at a time. Let's build the future together.

Copyright ©  2026  TYO Lab · v0.0.36