GTT alerts: when your journal and your broker disagree

A trading journal records what you intended. Your broker holds what will actually happen. Most of the time those are the same thing, which is exactly why the gap between them is so easy to miss.

You typed a stop of ₹244 into your journal three weeks ago. The number is still there. Your open risk is calculated from it, your portfolio heat includes it, and every screen you look at is quietly reassuring. But the GTT you placed at the broker was cancelled after a partial exit, or revised to ₹238, or never placed at all.

Nothing is broken. No error appears. Every number on the screen is internally consistent — and describing an order that does not exist.

The trade that made this obvious

A deliberately small test: buy 538 shares of a stock, sell all 538 the same day, intraday. Clean round trip, position closed, trade marked CLOSED in the journal.

The GTT placed against that position was still sitting at Zerodha, active, waiting. The journal had no reason to mention it — as far as the journal was concerned, that trade was finished and correctly recorded. It was.

The order it left behind was not the journal's business, and that is precisely the problem.

It cannot short you — equity GTTs are delivery-only, and the exchange rejects a sell order when there are no holdings behind it. The exposure is re-entry. GTTs stay alive for a year. Buy that stock again next month and a trigger you set for a completely different trade, at a price that meant something in a completely different setup, is still armed against your new position.

GTT alerts read the trigger orders sitting at your broker and compare them, position by position, against what you actually hold. They answer one question the journal cannot answer on its own: is this money really protected?

The seven checks

Three of them are marked critical, meaning money is unprotected right now. The rest are warnings — something is wrong, but nothing is naked.

AlertWhat it means
No GTTYou hold the position and there is no trigger order behind it. Whatever stop the journal shows is a note to yourself, not an instruction to anyone.
Under-coveredYou hold 100 shares, the GTT is for 50. Half the position has nothing behind it — and this reads as "protected" on every screen that only checks whether a stop exists.
Over-coveredYou sold 50 of 100 and left the GTT at 100. The exchange rejects the whole order on trigger — nothing sells, and the position is completely unprotected.
Orphan GTTThe position is closed; the trigger is still live. It cannot short you, but it stays armed for a year — and fires against your next position in the same stock.
Stop ≠ brokerThe journal says ₹250, the broker says ₹244. Your risk figures are computed from a price that will never execute.
Duplicate GTTsTwo stop orders on one symbol, usually a leftover from a revision. If both fire you sell twice.
Target, not a stopYou have GTTs on the symbol, but every trigger sits on the profit side of the price. Those are targets. The downside is open.

Why quantity is the one worth caring about

Missing stops are easy to notice — you look at the position and something feels wrong. Quantity drift is not, and it fails in a way that catches most people out.

You bought 100 shares and placed a GTT for 100. Weeks later you scaled out of 50 into strength, which is good trade management. The remaining 50 is a runner you're happy to hold. The GTT is still for 100.

The intuition is that this is nearly fine — worst case it sells the 50 you have and the rest quietly fails. That is not what happens. A sell GTT is rejected outright when your holding is short of the order quantity. Nothing sells. The stop sitting on your broker's screen, at the right price, on the right stock, does nothing whatsoever when it fires.

Go the other way and you get the quieter version. A GTT for 50 against a holding of 100 does work: it sells 50 and leaves 50 running with no protection behind it. Every screen still shows a stop price, because a stop genuinely exists. It just doesn't cover everything.

Checking whether a stop exists is a much weaker question than checking whether the stop covers the position. Almost nothing checks the second one.

The quiet one: price drift

This alert doesn't protect you from a loss. It protects you from believing a number.

Open risk, R-multiples and portfolio heat are all derived from the stop price in the journal. If the broker's trigger sits somewhere else, those calculations are arithmetically perfect and factually wrong. You will make sizing decisions on them — decisions about whether you have room for another position — using a stop that will never execute.

A journal that shows you a confidently wrong risk figure is worse than one that shows nothing, because you act on the first and investigate the second.

Should you turn this on?

It ships switched off, and that is deliberate. Here is the honest version of both sides.

Turn it on if you place GTTs

If your stops live at the broker, the checks cost you nothing and catch a category of mistake that is invisible by construction. Scaling out of positions, trailing stops, revising orders during a busy session — every one of those is a chance for the journal and the broker to drift apart, and none of them announces itself.

The alerts are most valuable exactly when you are least likely to notice: a busy week, several positions, partial exits.

Leave it off if your stops are mental

Plenty of good traders keep stops in their head or on a chart alert and execute manually. If that is you, the "No GTT" alert would fire on every position you hold, every day, and be right every time — which is the fastest way to train yourself to ignore a warning.

That is why there are two switches rather than one. The master switch turns the whole feature on. A second switch controls the "No GTT" alert on its own. Turn the feature on and that one off, and you get the orphan, drift, quantity and duplicate checks on the GTTs you did place, with no nagging about the ones you deliberately didn't.

It does nothing for US portfolios

GTT is a Zerodha feature. Portfolios in other currencies have no broker connected and the checks stay silent on them rather than inventing findings.

How it works

Every time you open the positions screen, the app asks your broker for the trigger orders currently parked in your account, then walks each open position against them.

There is a design decision here worth being explicit about, because it has a visible cost.

The alerts could have been built from stored data. Trader Blueprint already records the price of any GTT it has seen during a sync. Reading from that would be instant and would work whether or not you had logged in to your broker today.

It would also be capable of lying. A cached stop price is a snapshot of a moment that has passed. Cancel the GTT in your broker's app and the stored copy sits there unchanged, telling you the position is covered. On any other screen a stale value is an inconvenience. On a risk screen it is the single worst failure available — the app would be actively reassuring you about protection you no longer have.

So the check is live, and it does not pretend otherwise.

When your broker session has expired, the page says "Your stops were not checked — this is not an all-clear." It does not show green. "We looked and everything is fine" and "we could not look" are different states and must never render the same way.

What it never does

The feature is read-only. It reads your trigger orders and compares them to your positions. It does not place orders, modify orders, cancel orders, or trade.

When an alert tells you a GTT is orphaned and should be cancelled, cancelling it is your job, done in your broker's own app. An alerting system that can also act is a much larger surface for something to go wrong on, and the value here is entirely in the noticing.

Two guards against false alarms

A warning system is only as useful as your willingness to read it, so two cases are handled specifically to avoid crying wolf.

Trigger orders are account-wide, portfolios are not. If you run several portfolios against one broker account, a GTT on a stock held in a different portfolio is correctly placed — it just isn't for this one. Flagging it as an orphan would be wrong, so orphan detection looks across every portfolio on that account before deciding a trigger has nothing to protect.

Holding a stop and a target is normal. Two trigger orders on one symbol usually means one stop and one profit target, which is good practice and not a duplicate. Only genuinely protective orders are counted, and only they are compared against your quantity — so a well-managed position with a target attached doesn't read as an error.

Where to find it

Settings → Broker stop checks. Two switches: the feature itself, and the "no GTT" alert separately. Alerts appear at the top of Open Positions with a per-position badge on each affected row, so the summary tells you how bad it is and the row tells you which trade to fix.

The checks are read-only and touch nothing. The worst case of turning them on is that you learn nothing you didn't already know.

← All posts