5 Years, 1,264 Trades, 92.6% Win Rate: The Backtest Behind the Algo
"Does the algo actually work, or are you just showing me five good days" is the question I get more than any other, and it's a fair one — five live sessions isn't a track record, it's a lucky streak wearing a track record's clothes. So here's the actual receipt: five years of NIFTY backtest data, June 2021 through July 2026, one lot, no cherry-picking a favorable window, no quietly starting the clock the month after the bad year ended.
I'm not going to walk through the entry logic, the exit rules, or how the strategy actually decides what to do on a given morning — that part stays mine, and honestly, it should stay mine, for the same reason a chef doesn't hand you the recipe just because the food was good. What I will show you is the plate.
The headline numbers
- 1,264 total trades across roughly five years of NIFTY sessions
- 92.6% win rate — 1,171 winning trades against 93 losing ones
- Gross P&L: ₹27,69,785 before charges
- Net P&L: ₹26,02,924 after brokerage, STT, transaction charges, SEBI fees, stamp duty, and GST — all included, nothing hidden in the "before charges" number to make the slide look prettier
- Average profit per trade: ₹2,059
- Max single-day drawdown: -₹8,556 (2025-05-12) against a max single-day profit of ₹11,873 (2024-07-23) — the worst day this system has ever had doesn't come close to erasing what one good day builds
None of this is a curve-fit-to-a-lucky-window number dressed up to look like conviction. It's five full years, roughly 1,200-plus trading sessions, the same rules, never once relaxed for a rough patch.
5-year NIFTY backtest summary, 1 lot — June 2021 to July 2026.
What the month-by-month breakdown actually shows
The number that matters more than the headline win rate is this: scan the monthly P&L table from June 2021 to July 2026, and essentially every single month closes net positive. Not most months — essentially all of them, back to back, through a five-year stretch that lived through the 2021–22 post-COVID melt-up, 2022's rate-hike volatility, the long 2023–24 grind, and whatever this current stretch wants to call itself. A system that's secretly fitted to one kind of market always gives itself away in a run like this — a few brutal red months where the regime turned and the rules didn't know how to turn with it. This one just doesn't have that chapter.
The cumulative net P&L curve backs it up visually: a steady climb from ₹0 to past ₹26 lakh, no extended flat stretch, nothing on the chart that reads like a crisis. Some months clearly do more work than others — a few land closer to ₹20,000–₹25,000 net, others push past ₹60,000–₹70,000 — but there isn't one month in five years where the strategy handed back a meaningful chunk of what it had already built. That's not a lucky curve. That's a curve with a job, doing it, repeatedly, whether or not I was paying attention that particular week.
The world did not cooperate, and the curve didn't care
Five years is long enough that the market didn't just drift sideways waiting for a clean backtest window — it lived through actual news. Russia invaded Ukraine in February 2022, the kind of headline that sends every desk scrambling to reprice risk overnight. February 2022 wasn't a soft month for this system — it was one of the strongest in the entire five-year run. Trump's tariff threats on India landed in August 2025, rattling metals, oil and gas, and the rupee in the same week — August 2025 closed net positive, unremarkable, exactly the way a good process should treat an unremarkable news cycle. And the Iran-Israel conflict that's rattled Indian markets more recently shows up right at the edge of this data too — June 2026 was one of the best months on the entire table, right in the middle of it.
None of this is a coincidence dressed up as a pattern. It's what "regime-agnostic" is actually supposed to mean — not a phrase on a pitch deck, but a system that doesn't check the news before deciding whether to show up.
93 losses, zero panic
Let's kill the fantasy right now — this is not a strategy that never loses. It lost 93 times in five years, and somewhere out there it's already got trade number 94 penciled in. What separates this from every heartbreak story you've heard at a trading meetup isn't that it avoids losses. It's that when a trade turns ugly, nothing throws a tantrum. No freezing. No "let me just give it a little more room." No doubling down to win it back like a man chasing his bus fare at a casino. The risk management isn't a separate module that panics slightly less than a human — it's baked into the same cold rules as the entry, and it fires the identical, unglamorous, boring way whether it's trade number 4 or trade number 1,260.
That's the part I actually respect more than the win rate on the scoreboard. It's the same thing I admire about MS Dhoni finishing a chase — never once looking like the equation had gotten to him, because the next ball was never the thing he was actually managing. The process was. A max single-day drawdown of -₹8,556 sitting next to a max single-day profit of ₹11,873 isn't the system getting lucky on its worst day. It's what happens when the exit was already decided, in a quiet room, weeks before the trade even existed — instead of being negotiated live, with a position bleeding, a heartbeat spiking, and thirty seconds to "figure it out."
Why a framework beats a feeling, every single time
Here's the part that actually matters more than the ₹26 lakh: none of this required me to be right on any given day. I've written before about the exact opposite feeling — the specific exhaustion of a trading day you can't explain, going home and building a story that conveniently fits both the move and the reversal, and calling that story "analysis" when it's really just narration written after the fact. That was me, for longer than I'd like to admit, chasing another indicator every time the last one stopped working.
What actually changed things wasn't a smarter read. It was accepting that price action, run through a real framework, beats a gut feeling precisely because it doesn't need the gut to show up in a good mood. A framework doesn't get tired at 2:47 PM. It doesn't remember the last three losing trades and flinch on the fourth. It doesn't quietly loosen the rules in March because February was rough. The five years above aren't impressive because the math is clever — they're impressive because the rules never once asked how I was feeling before executing.
That's the whole argument I made in Why Algo? Is Trading a Psychology Problem or a Systems Problem? — the psychology doesn't vanish when you automate, it just moves from the live tape to the design desk, and gets made once, calmly, instead of daily, under pressure. Ninety-three losing trades out of 1,264 is what it looks like when that move actually pays off. The process was never about being right more often than a person could manage on willpower alone. It was about building something that didn't need willpower in the first place.
Why I'm showing this instead of the logic
Plenty of people will show you a strategy's rules and ask you to trust the backtest. I'd rather do the opposite — show you the actual five-year result and keep the rules to myself. The proof was always going to be whether it survived a genuinely long, genuinely ugly stretch of the market, not whether the logic sounds smart explained over coffee. Anyone can sound smart over coffee. Not many systems can produce this chart.
The live daily scorecard is this same framework running forward in real time, month by month, in public, where I don't get to quietly edit the story afterward. Five years of backtest and a handful of live sessions so far are telling the same story — I'm just going to keep adding to the live side of it, one trading day at a time.
If any of this got you thinking, that's honestly the best sign there is — drop me a note. We can talk it over on a cup of coffee, while my algo quietly does its job in the background.
— Shak