No model, nothing learned, nothing fitted after the fact. A fixed sequence of checks with a gate at the end — which is the only reason it can always tell you why it said what it said.
15-minute bars for the index, pulled under your own Zerodha session. Two things happen to them before any indicator sees them.
The pre-open auction bar is dropped. It is priced on almost no volume, and because it is the first bar of the day it stays the newest completed bar for the whole of 09:15 to 09:30 — which is exactly when the worst signals were firing. An EMA or an ATR fed that bar is measuring an auction rather than a market.
Bars with no usable timestamp are left alone. Dropping data because the index arrived as an unexpected type would be a worse failure than the one being fixed.
Direction comes from two exponential moving averages that have to be stacked the same way — price above both, and the fast one above the slow one for a long, the mirror for a short. One of the two agreeing is not a trend.
| Setting | Value | What it is for |
|---|---|---|
| Fast EMA | 20 |
the near-term average price |
| Slow EMA | 50 |
the one the fast average has to be on the right side of |
| ADX length | 14 |
how many bars the strength reading covers |
| ADX floor | 20 |
below this the signal is blocked outright, not merely marked low-confidence |
The ADX floor is a gate, not a weight. A direction with no strength behind it is how a range chops you, so a weak reading stops the signal instead of quietly lowering a number that still lets it through.
Three readings vote, and all three are shown individually — including the ones that disagreed with the answer. A single blended score would hide exactly the situation you most want to see, which is two inputs agreeing strongly and one shouting the other way.
| Input | Settings | The question it answers |
|---|---|---|
| MACD | 12/26/9 |
is force still being added, or is the move merely still present? |
| RSI | 14, bull above
50, bear below
50 |
where in its band price sits — with
75 and
25 as the extremes where a bounce is
due |
| VWAP | session, weighted by the index future’s volume | who has actually had the day, buyers or sellers. An index prints no volume of its own, so the weights come from the near-month future on Zerodha — until September 2026 this row was quietly comparing each candle with itself |
Everything above is a view on the index. The chain is what turns it into an instrument: put-call ratio for the balance of positioning, and where open interest actually sits for the strike worth looking at. Without this step the output would be a direction with nothing to trade.
When live chain data is available the tool also tracks the real premium (LTP) of that strike and gives it its own three premium-based targets, so the number you watch is the one you would actually pay.
Nothing here is a round number of points. Targets and the stop are multiples of ATR, so they widen on Bank Nifty and tighten on a quiet Nifty without anything being re-tuned per index.
| Level | Derived from | |
|---|---|---|
| T1 / T2 / T3 | [0.4, 0.7, 1.0] of the room to run |
the room is how far the market can plausibly travel today — the option market’s expected move, the open-interest walls and how much of a normal day’s range is left, whichever is tightest. A ticket closes at T2 or the stop; the other tiers tick as the move develops |
| Stop | clamped to 0.5–2.0 × ATR |
a floor so it is not inside the noise, a ceiling so one trade cannot be arbitrarily expensive |
| The gate | reach ÷ risk must clear 0.6 |
below it the setup is marked not worth it and never becomes a ticket |
| The ticket gate | room to run ÷ stop distance must reach 1.0 |
if the market cannot even travel as far as the stop, the trade is not worth its risk — it would have to win well over half the time just to stand still |
ATR length is 14. Reach is estimated
before anything is issued, which is the point — a gate applied afterwards
would be a report, not a brake.
The screen can show a direction at full confidence and still issue nothing, and it names the rule that is holding it rather than asserting a generic reason. These are the things that sit in the gap.
| Badge | What is actually happening |
|---|---|
| CONFIRMING | the direction has to hold for
120 seconds
(4 ticks) before anything is
issued |
| COOLDOWN | the gap since the last ticket has not elapsed —
currently 0
minutes |
| POSITION OPEN | a ticket is already running on this index and is left alone |
| ALREADY TAKEN | this index was ticketed in this direction today and re-entry is off |
| DAY LIMIT | the daily brake — at most
4 trades, at most
5 lots |
| LOW REWARD | the room to run is shorter than the distance to the stop — not enough room for the trade to pay for its risk |
| WIDE SPREAD | the contract’s bid-ask spread is more than
3.0% of its price — buying at
the offer and selling at the bid would give that up before the market
moved. Index options are typically 0.2–0.4%; near-dated BTC options
are often 8–18%, so on crypto the tool takes the nearest expiry whose
spread is under the limit instead of simply the nearest one |
| WATCH ONLY | the index is shown and explained but not ticketed. BANKNIFTY is watch-only: since its weekly expiry ended in November 2024 the same rules lost money on it over the held-out year, after costs, while Nifty and Sensex made money |
| LOSS LIMIT | once you enter your capital, today’s closed
trades may lose at most 3 times
the risk per trade you chose (1.0%
by default); after that, no new tickets until tomorrow |
Sizing. Enter your trading capital on the signal card and every signal and open ticket shows the money between entry and stop, what share of the account that is, and how many lots fit inside the risk per trade you picked. The lots are still yours to choose — nothing here places an order — but the number is in front of you before you do. BTC sizes in tenths of a contract, Deribit’s minimum, so a small account is not forced into a whole coin.
Review. The Review page reads your own finished tickets back — win rate, average per lot, profit factor, by index, by entry time, by expiry day — beside the backtest’s figure for each, with the sample size and a range, so a fortnight of results is read as what it is.
This distinction is worth the space. The screen used to print "a ticket is issued when the direction changes" whichever rule was holding, and that sentence is true for exactly one of those rows — the least common one. A 100%-confidence signal waiting out a cooldown read as though the tool disagreed with a screen full of agreement.
The levels are frozen at entry. Targets and the stop are computed once, from the ATR at that moment, and never recomputed while the trade is open. A stop that drifts with a moving average is a stop you cannot plan around and cannot honestly measure afterwards.
Auto re-arm has its own floor of
60 seconds. It is not a churn
brake and is not meant to be tuned — it exists because a ticket whose stop
is already breached would otherwise close and re-arm on the next evaluation,
several times a second, until the chain refreshed.
All times IST, read from the same config the server runs on.
| From | Until | What happens |
|---|---|---|
09:15 | 09:45 | analysing while the opening range forms — no entries |
09:45 | 15:15 | tickets, but only once price breaks the opening range in the trade’s direction — above its high for a CE, below its low for a PE |
15:15 | 15:40 |
still analysing, but no new entry |
15:40 | next morning | nothing issued; the screen holds the closing numbers |
That middle row is NSE's closing auction, in force since 3 August
2026. From 15:15 every F&O-eligible stock leaves
continuous trading, so all of an index's constituents are in the auction
at once, nothing prints, and the index stops moving until the
closing prices publish around 15:35. Options carry on trading until
15:40.
Every reading on this page — the EMAs, MACD, RSI, VWAP, ADX, the trend box, the market map — is computed from the index. While the index is a held value they are held with it, so anything issued in that window would be built on a stopped input and priced on a live one. Nothing new is issued there. A ticket already open is still tracked on its own premium, which is genuinely live, and can still be closed.
Every rule above is defensible on its own terms, and the whole of it was still measured negative after costs across three years. Coherent and profitable are different properties. The measurement →