How the simulation works Simulated
The rules behind scanners, strategies, backtests and paper accounts, written out so every number on those pages can be checked.
One set of features
Every indicator, return, pattern and reported-results figure is computed once each evening from the session's close by one versioned feature set (currently 2026.09.1, 77 features), from each company's first stored session, on split- and bonus-adjusted prices. A reported figure counts only from the day it was filed. A test recomputes every feature with the history cut at each session and requires the same value, so no feature reads data from after its session. The formula of every feature is listed in the scanner builder.
Scanners and strategies
Rules are visible JSON - the same format for presets and for yours - and every saved version is fixed: changing a rule makes a new version with its own hash (a strategy also gets a version number that says how big the change was). Every scanner run is kept with the session, the feature set, the names scanned and the value behind each condition, and a hash of its ordered result that a replay reproduces.
Backtests
- Signals are read at a session's close; orders fill at the next session's open. A close is never both the signal and the fill.
- Each fill is moved 10 basis points against the order and rounded to the 0.05 tick (a buy up, a sell down), and takes at most the stated share of the session's volume (10% unless you change it). Orders that cannot fill - no volume, not enough cash - are rejected, not assumed.
- A stop or target that trades inside a session's range fills at that level; when the session opens beyond it, at the open. When one session's range holds both the stop and the target, the stop is assumed first.
- Prices are split- and bonus-adjusted; dividends are not added. A name that stops trading for ten sessions is closed at its last close and flagged.
- Each run is checked for look-ahead, survivorship (a universe from today's lists), repeated testing of one strategy, liquidity caps, impossible fills, stale fundamentals and data faults, and the page says what it found.
- A run's result hash - over every fill, trade and daily value - is reproduced by replaying it on the same stored data.
Paper accounts
- Virtual money only. Cash, holdings and cost are sums over an append-only ledger reconciled against the fills; nothing is edited, and a reset keeps the old account whole.
- An order fills against the bars that start after it was placed: five-minute candles where they were captured for the name, otherwise the next session's daily bar - never a bar already under way. Market orders take the bar's open; limits fill at the limit or better; stops trigger when the price trades through and fill at the first executable price. The same 10 bp slippage, tick rounding and volume cap apply, so large orders fill in parts.
- A strategy account decides each evening from that session's stored features, exactly as its backtest would, and keeps a stop and a target order on every position as a pair: when one fills, the other is cancelled.
- Splits and bonuses add shares through the ledger at the ex-date with cost unchanged; the name's open orders are cancelled because the share count changed.
Sweeps and walk-forward tests
- A sweep runs every combination of up to two of a strategy's numbers - a condition's threshold, a multiple, the stop, the target, the holding limit, the size, the position count - through the backtester above, over one load of the same data. Every combination is checked by the strategy's own validator before anything runs.
- How much of the best result is luck is measured three ways. The deflated Sharpe ratio (Bailey and López de Prado) is the chance the best combination's Sharpe is above zero once the number of combinations tried, the spread of their Sharpes, and the skew and fat tails of its returns are allowed for. The probability of backtest overfitting (combinatorially symmetric cross-validation) cuts the sessions into ten blocks and, for each of the 252 ways to call five of them in-sample, asks whether the in-sample winner lands in the bottom half on the other five. Peak shape compares the best combination with its neighbours on the grid.
- A walk-forward chooses the best combination on a training window - from each combination's run over the whole period, restricted to that window - and runs it fresh on the following test window, which it has not seen. Test windows do not overlap; each starts in cash with the equity the one before ended on, and positions open at a window's end are valued at its last close. The joined test windows are the out-of-sample record; its annual return over the chosen settings' training-window annual return is the walk-forward efficiency.
- Every combination a sweep runs counts towards the data-snooping check on the strategy's later backtests. The luck measures cover only the combinations tried in that test, not ideas tried and dropped elsewhere.
Charges
Model in_eq_delivery_2026.09 (NSE equity delivery): brokerage ₹0; STT 0.1% of value on both sides, rounded to the rupee; NSE transaction charge 0.00297%; SEBI fee ₹10 a crore; IPFT ₹10 a crore; stamp duty 0.015% on purchases; DP charge ₹13.50 per name on a day it is sold; GST 18% on brokerage, exchange, SEBI, IPFT and DP charges. An estimate for simulation, not a contract note; a change of rates is a new model version and old runs keep theirs.
Measures
Returns are after simulated charges. Annualised figures use 252 sessions. Sharpe is the mean daily return over its standard deviation times √252, with no risk-free rate taken off; Sortino uses downside deviation. Drawdown is measured from the running peak of equity. Win rate, profit factor and expectancy are over closed trades.
Screening and statistics only. Not investment advice, no recommendation, no forecast. Decisions and outcomes are entirely your own. Simulated results describe what the rules would have done under the assumptions above; they do not say what will happen next.