Skip to content

The win-rate trap: 84% winners, and the biggest loss of the lot

Same 120,643 entries, six different profit targets. As the win rate climbs from 43% to 84%, the loss after costs more than doubles. Why chasing win rate is the fastest way to lose money intraday.

Target 0.1%
1,20,643 trades · 2016–2026−₹4.52 Cr
Verdict

Win rate 43% → 84% while the loss more than doubles, −₹1.98 Cr → −₹4.52 Cr.

“80% accuracy” is the most common pitch in Indian trading courses and Telegram groups. A high win rate is easy to build: take profits quickly. Whether it makes money is a separate question, and the two are easy to confuse.

To separate them we held everything fixed except the profit target. The entry is a plain opening range breakout: the first 5-minute close above (or below) the first 15 minutes’ range, one trade per stock per day, a 1% stop, ₹5 lakh per trade, every NIFTY 50 stock from January 2016 to August 2026. That gives the same 120,643 trades every time. Only the target changes: 0.1%, 0.25%, 0.5%, 1%, 2%, or none (hold to 15:15).

83.9%
win rate with a 0.1% target
the "accurate" version
−₹4.52 Cr
its net after costs
profit factor 0.51
42.9%
win rate with no target
the "inaccurate" version
−₹1.98 Cr
its net after costs
less than half the loss
Win rate by profit target
Target 0.1%83.9%
Target 0.25%74.0%
Target 0.5%60.5%
Target 1.0%48.1%
Target 2.0%43.6%
No target42.9%
Net P&L after costs by profit target
Target 0.1%−₹4.52 Cr
Target 0.25%−₹4.19 Cr
Target 0.5%−₹3.78 Cr
Target 1.0%−₹3.33 Cr
Target 2.0%−₹2.49 Cr
No target−₹1.98 Cr

Same entries, same stop. The more winners, the bigger the loss.

Why more winners lose more money

A 0.1% target on a ₹5 lakh trade is ₹500. The 1% stop is ₹5,000. Every winner is small and every loser is ten times bigger. To break even you need about 91% winners before costs, and with ~6.5 bps (about ₹325) of costs per trade, the ₹500 winner shrinks to roughly ₹175. Tiny targets also make the trade very short (the median trade lasts about 5 minutes), so you pay the full round-trip cost again and again for a move that is mostly noise.

As the target widens, fewer trades hit it, but each winner pays for more losers. Once the target is gone, trades are held to 15:15 and keep the full move when the breakout follows through. That version has the lowest win rate and the smallest loss. It still loses: this entry has very little edge to begin with (about 3 bps before costs at best), which the ORB guide test also found.

Cumulative P&L after costs: 0.1% target vs no targetTarget 0.1% (84% winners)No target (43% winners)
−₹5Cr−₹4Cr−₹3Cr−₹2Cr−₹1Cr₹0₹1Cr201620182020202220242026
VariantTradesGross / tradeWin %Net after costs+3 bps slippage2016-202021-232024-26
Target 0.1%1,20,643−1.0 bps83.9%−₹4.52 Cr−₹8.13 Cr−₹2.26 Cr−₹1.26 Cr−₹1.00 Cr
Target 0.25%1,20,643−0.5 bps74.0%−₹4.19 Cr−₹7.80 Cr−₹2.05 Cr−₹1.18 Cr−₹96.1 L
Target 0.5%1,20,6430.2 bps60.5%−₹3.78 Cr−₹7.40 Cr−₹1.79 Cr−₹1.09 Cr−₹90.2 L
Target 1.0%1,20,6431.0 bps48.1%−₹3.33 Cr−₹6.95 Cr−₹1.51 Cr−₹93.8 L−₹88.3 L
Target 2.0%1,20,6432.4 bps43.6%−₹2.49 Cr−₹6.10 Cr−₹93.9 L−₹78.0 L−₹76.6 L
No target (hold to 15:15)1,20,6403.2 bps42.9%−₹1.98 Cr−₹5.59 Cr−₹51.7 L−₹69.8 L−₹76.2 L

₹5 lakh per trade, 5-minute bars, v2026.08 snapshot (Jan 2016 – Aug 2026), NIFTY 50 point-in-time members, discount-broker (₹20/order) and statutory charges + 1 bp slippage per fill. Generated 2026-10-07.

What to take from this

  • Win rate alone tells you nothing about profit. Always ask for the average win, the average loss and the cost per trade. Profit factor (gross wins ÷ gross losses) is a better single number: below 1.0 is a loser, whatever the win rate.
  • Small targets make costs dominate. At ₹5 lakh a round trip costs about ₹325. A ₹500 target spends most of its profit on charges.
  • A seller quoting accuracy without these numbers is giving you the number that’s easiest to inflate.
The exact code we ranorb_fixed_target() in dpx_bt · 6 variants · snapshot v2026.08
def orb_fixed_target(target=None, stop=0.01, or_min=15):
    """First 5-minute close beyond the 15-minute opening range, stop 1%, fixed % target (None = hold to 15:15)."""
    def strategy(p):
        orh, orl = p.opening_range(or_min)
        long, short = p.close > orh, p.close < orl
        first = p.once_per_day(long | short)
        return bt.Signals(long=long & first, short=short & first, stop=stop, target=target)
    return strategy

Every variant in this post is this function with different arguments, run through dpx_bt over Jan 2016 – Aug 2026.

Try a variation of this test in Ask

Have a variation in mind?

Ask runs your own idea on the same data and rules, with the same report: net after costs, +3 bps stress test, three periods.

Try Ask

Backtest on historical data (Jan 2016 – Aug 2026), net of discount-broker (₹20 per order) and statutory charges and 1 bp slippage per fill. Education and research only, not investment advice. Past results do not predict future returns. Disclaimer.