How a trading idea fails our methodology.
Most backtest tools tell you how they find winners. This page tells you how we reject strategies.
Most trading ideas do not pass all seven gates. That's expected. The goal is not to prove a strategy works. The goal is to find out whether it still works after reality is applied.
A strategy that gets a positive verdict on Algoshastra has survived seven independent gates. This page is a tour through each gate, what it tests for, and what kinds of strategies don't make it through.
If you're suspicious of any backtest result that doesn't show you this kind of work — you should be.
Gate 1 — A strategy enters the system
You describe a trading idea in plain English. We translate it into runnable Python with four hard constraints:
- No look-ahead. The strategy can only see data that existed before the decision bar. A backtest that “knows” tomorrow's close while deciding today's trade is meaningless.
- No survivorship bias. Strikes that didn't exist on a given day cannot be traded. We don't quietly substitute the closest available strike to make the trade work.
- No future-leaked parameters. The window the strategy uses to pick parameters and the window it's scored on are disjoint (see Gate 5).
- Deterministic. Run the same backtest twice, get the same numbers. If a result moves on re-run, the code has a bug, not the strategy.
What gets rejected here: ideas that can't be coded without referencing future data. Common pattern — “buy when today closes higher than tomorrow's open” — sounds harmless until you realize the strategy must already know tomorrow's open. We reject these before they reach the data.
Gate 2 — We run it on real data
Multiple years of intraday market data for NIFTY and SENSEX, plus the reconstructed option chain — built from actual exchange ticks. Not Black-Scholes-synthesized prices. Not estimated mid-points.
We use what the market actually showed, including the bid-ask spreads, the gaps, the corporate actions, and the missing bars.
What gets rejected here: strategies that need ticks the market didn't have, or strikes that didn't trade. If your idea requires an instrument that wasn't liquid, the backtest can't run — and neither can your live trade.
Gate 3 — We try to break it (out-of-sample)
Quants call this “walk-forward analysis.” It's the standard defense against overfitting, and most retail backtests don't do it.
We tune the strategy's parameters on one window. Then we score it on a NEW window the strategy has never seen during tuning. Move forward. Tune on the next window. Score on a new one. Repeat.
The score you see comes only from out-of-sample windows.
What gets rejected here: any strategy that worked because we got lucky on one window. The most beautiful in-sample equity curve collapses when scored on data it didn't see. We don't show you the in-sample number. We show you what survived.
This is the gate that kills the highest fraction of strategies. A strategy that looks fantastic in-sample but produces near-zero out-of-sample return is the most common pattern in retail backtesting. We see it every day.
Gate 4 — We add real costs
Every Indian-options trade attracts multiple cost components. We model the full stack. If a strategy looks profitable BEFORE costs but loses after — you see the after-cost number. That's the number you'd actually keep.
The cost stack we model, per trade:
- Brokerage (broker-side flat fee per executed order, capped by a percentage of notional)
- STT (sell-side only, on options premium)
- Exchange transaction charges (NSE / BSE schedule, by venue)
- SEBI turnover fees
- Stamp duty (buy-side only)
- GST (on the applicable cost base)
Plus slippage: a pessimistic spread-based estimate, intentionally worse than what most liquid weekly options actually trade at. We err on the unfavorable side.
Importantly, rates are point-in-time. The cost charged on a 2024 trade reflects the 2024 STT and NSE rate. The cost charged on a 2026 trade reflects the post-Budget revision and the “true-to-label” exchange-fee changes. We don't backfill modern rates onto older trades — the cost charged is what was actually collected on that bar date.
What gets rejected here: the most common rejection in the system. A strategy with a small signal — a modest win-rate edge against similar-sized winners and losers — can look profitable on gross numbers and lose money once the full cost stack is charged. The strategy doesn't get the headline-friendly label; it gets the honest one.
You'll probably see this rejection often. It's a feature, not a bug. Cost-aware backtesting is rare in retail tools because the cost math is unflattering.
Gate 5 — We stress-test it
A single equity curve is just ONE realization of many possible orderings of the same trades. Lucky ordering — your winners arriving early, your losers arriving late — makes the drawdown look mild. Unlucky ordering makes it look brutal.
To remove the luck-of-ordering effect, we resample. We re-run the equity curve many times, each shuffling the order of the trades. The verdict number is the MEDIAN of those runs — not the lucky headline.
The maximum drawdown we show is the worst plausible drawdown across resamples — not the historical-best case. Worse outcomes CAN happen. We don't pretend they can't.
What gets rejected here: strategies whose published return was real, but whose drawdown depended on getting lucky with trade order. These get the verdict “Looks profitable but the losing streaks will test you.”
Worth knowing: a strategy can pass this gate with a positive return and still be untradeable because the drawdown is bigger than your account. We label that case clearly. The number you can stomach is yours, not ours.
Gate 6 — We look for statistical traps
Strategies can pass Gates 1–5 and still be artifacts of well-known statistical mistakes. Gate 6 looks for them, and rejects strategies that flunk any of these checks regardless of how strong the headline return looks.
Too few trades. If a strategy produced fewer than a handful of trades, the win rate and average winner are noise. The pattern might be real or it might be coincidence. We don't know. You shouldn't either. The strategy is rejected with the label “Too few trades to draw conclusions.”
The probability of backtest overfitting (PBO). This is the sophisticated check most retail tools skip. PBO measures how likely the result is an artifact of having tested too many variants — if you tried a hundred parameter combinations, one of them will look great by chance alone. We compute PBO across the variants tested for a strategy; if it exceeds the customary 5% bar, the strategy is rejected with the label “High risk of backtest overfitting.” The edge is likely fit to noise, not structure.
Negative return. If the strategy lost money on the test window, no amount of clever metric framing changes that. The strategy is labeled “Loses money on this period” regardless of how the other criteria scored. We don't dress this up.
Beyond these hard rejections, every strategy that survives Gate 6 is scored against six market-standard criteria. The criteria are locked production thresholds — they don't drift with code changes:
- Sharpe ratio ≥ 1.0 (risk-adjusted return)
- Sortino ratio ≥ 1.5 (downside-deviation adjusted)
- Max drawdown ≤ 25% (worst-case account hit)
- Profit factor ≥ 1.3 (gross gains / gross losses)
- Trade count ≥ 30 (sample size for inference)
- Regime robustness (positive return in ≥ 2 of 4 market regimes: trending up, trending down, sideways, high-vol)
How many of those six a strategy passes determines its verdict tier — which is Gate 7.
What gets rejected here: strategies with too few trades, strategies likely overfit to noise, and strategies that lost money. The PBO check is the one that catches over-optimized parameter sweeps — a class of failure most retail backtests cannot detect at all.
Gate 7 — A strategy earns its verdict
If a strategy survives the previous six gates, it earns a verdict. The verdict is not an opinion. It is the outcome of surviving scrutiny — out-of-sample testing, real-cost accounting, stress resampling, and statistical-trap checks.
The verdict label is plain English, and it's a direct function of how many of the six market-standard criteria (Gate 6) the strategy cleared:
“Looks like real edge.”
6 of 6 criteria pass. Sharpe, Sortino, drawdown, profit factor, sample size, and regime robustness all clear the bar. This is the rare one — the strategy survived every gate without a weakness. When you see this label, the strategy earned it without help.
“Looks like real edge.” (Beta)
5 of 6 criteria pass. The strategy has a real edge but one market-standard threshold is still short. We mark it as Beta in the disclosure — promising, but worth paper-trading longer before risking real capital.
“Mixed signals — needs more data.”
4 of 6 criteria pass. The numbers are noisy. The strategy might be real or might not — we cannot tell yet. Run a longer window or refine the parameters.
“Edge isn't clear yet.”
3 or fewer criteria pass. We can't confirm the strategy as ready for capital. Try a longer backtest window or a different idea entirely.
“Loses money on this period.”
Negative total return on the test window. Other criteria don't matter — a strategy that loses money on the data we tested it on does not earn any positive label. Refine the entry / exit rules or pick a different idea.
“Too few trades to draw conclusions.”
Fewer than a handful of trades over the test window. The signal is statistically meaningless either way. Extend the date range or pick a more active strategy.
“High risk of backtest overfitting.”
The probability of backtest overfitting exceeds the standard 5% bar. The “edge” is likely an artifact of how many parameter variants we tested rather than a real market pattern. We don't endorse the strategy — we name the suspicion.
That label is the most important output of the entire system. We don't soften it. We don't grade on a curve. A strategy that earns “Looks like real edge” earned it by surviving every gate. A strategy that earns any other label did not. Either way, the label is the honest answer to the question the trader asked.
What we don't model
Honest version of the limitations. None of these are excuses. They're a list of where the model ends and the world begins.
- Order-book queue position. We use a pessimistic mid-quote slippage model. The real liquidity profile of a strike varies through the day — we don't simulate queue depth or partial fills.
- Intraday margin spikes. We model worst-case margin at entry. If volatility spikes during the day and your broker calls more margin, we don't simulate that. Real positions can be liquidated for margin reasons that didn't exist at entry.
- Network and exchange latency. All fills assume the order reached the exchange at the bar close. Real fills land milliseconds later. In fast markets, this matters.
- Black-swan regime changes. Our backtest data does not contain the next 2008-style crash or COVID-style one-day shock. A strategy that looks great in our window may behave badly outside it.
- Exchange outages and circuit breakers. Real markets pause occasionally. We don't simulate the pauses or the gap-opens that often follow.
- Your personal tax position. STCG, LTCG, business-income treatment vary by trader. We model trade-level taxes (STT, GST). Your post-trade tax math is yours.
- Capital allocation cost. Money in margin is money not earning the risk-free rate. We don't subtract that opportunity cost.
- Our own subscription. The platform fee isn't netted against your strategy's returns. If a strategy makes the subscription back and nothing more — you net zero.
What you should believe
Treat any backtest result — ours included — as a RELATIVE ranking, not an absolute prediction.
A “Looks like real edge” verdict says: this idea survived our seven gates. It does NOT say you'll make money. It says it's worth exporting to trial on your own broker before committing real size.
A “Looks profitable BEFORE costs, loses money AFTER” verdict says: your intuition about the signal was probably right. The cost math just doesn't work. Adjust the frequency or the size or pick a different idea.
We are not a SEBI-registered investment advisor. The verdict is a description of what historical data shows. Nothing on Algoshastra is investment advice.
Verify on real historical data before risking capital. Then export it and trial it on your own broker. If a strategy passes the backtest AND holds up forward on your own broker — that's the bar for trust. Each gate matters separately.
You may still lose money. Markets change. Edges decay. Costs go up. A verdict is a snapshot, not a prediction.
For the specific ways even an honest verdict can mislead, read why a verdict can still be wrong.
Trade carefully.