The Ninety Minutes My Engine Sits Out
Suneet Malhotra
Jun 20, 2026
There is a rule in my stock engine that looks like laziness and is actually the opposite. No new entries after 2:30 PM Eastern. The signal scan keeps running, the monitor keeps watching open positions, but the order path for fresh trades shuts at 2:30 and does not reopen until the next session. For the last ninety minutes of the trading day, the busiest stretch on the tape, the engine is a spectator.
Most discretionary traders do the opposite. The closing hour is where the volume is, where the day's indecision resolves, where the move you waited for all morning finally commits. Sitting it out feels like leaving the table right as the cards turn over. So the rule deserves a defense, and the defense is arithmetic, not instinct.
What a 2:35 entry actually gets
My strategy reads 15-minute bars. The regular session closes at 4:00 PM ET. A position opened at 2:35 has, at most, six 15-minute bars of daylight before the close. Six bars is not enough for a trend-following entry to prove itself. The whole premise of the signal is that price keeps moving in the direction that SMA alignment, RSI, and a MACD histogram all just agreed on. That thesis needs room to play out over hours, sometimes a day or two. Six bars is barely room to confirm the entry was not noise.
Worse, those six bars are the worst six of the day for my kind of signal. The closing hour is dominated by flow that has nothing to do with trend: index rebalancing, market-on-close imbalances, options hedging into expiry, funds squaring up before the bell. That flow is large and it is mechanical. A trend-following model trying to read intent into the last hour is reading a crowd that is not expressing a view, it is just settling accounts. The signal-to-noise ratio I depend on collapses exactly when the volume looks most inviting.
The position you never watched trade
The deeper reason is about what you are holding overnight. Every position my engine opens is supposed to season during the day. I want to see it trade, see the bracket breathe, watch whether the move has follow-through before the session ends. A 3:50 PM entry skips all of that. It goes straight from fill to overnight hold without a single hour of observation.
Overnight is where the gap risk lives. My stop is a server-side bracket, three percent below entry, and it is genuinely protective during the session. It does nothing against a gap. If the position opens the next morning four percent lower on an earnings miss or a macro headline, the stop fills on the way down, not at the level I set. The earlier in the day I enter, the more chance I have to see the position behave before I am forced to carry that gap exposure into the dark. A late entry maximizes the time I hold something I have never watched trade. The 2:30 cutoff is the engine refusing to do that.
What it costs and why I pay it
The cost is real and I will not pretend otherwise. There are days the clean break happens at 3:15 and my engine watches it go without me. Over a year that is a non-trivial number of trades surrendered to the clock. This is the same shape as every other gate in the system: I give up some upside to remove a class of bad outcomes entirely, and the trade only makes sense if the outcomes I am removing are worse on average than the ones I am giving up.
Here they are. The closing-hour entry is the trade most likely to be noise dressed as signal, and the trade most likely to hand me an unseasoned overnight gap. Those are not the trades I want to be aggressive on. They are the ones I want a structural rule to refuse for me, on the days I would otherwise talk myself into one. A clock does not get greedy at 3:45. I do. So I let the clock decide, and I spend the last ninety minutes watching what I already own instead of reaching for what I do not.
Share this post
You Might Also Like
Five Up, Three Down, Even Money
My bracket risks 3% to make 5%, which reads like a favorable bet. On a price with no drift it is exactly break-even, and the reason is a theorem, not a coincidence.
Quantitative TradingWhat a Fifteen-Minute Bar Forgets
Every indicator my engine trusts is computed on fifteen-minute bars. A bar is a summary of those minutes, and the summary throws away the one thing that moved the price: the path.
Career & Best PracticesThe Numbers I Used to Ask You to Trust
My April posts reported measured numbers you had to take on faith. My recent ones derive every figure from public config. The change was not discipline. It was topology.
AI & AutomationThe Number My Model Is Not Allowed to Know
There is a rule I enforce across every agent I run, and it has nothing to do with how good the model is. The model writes the words. It never computes the numbers.
Latest Blog Posts
The Numbers I Used to Ask You to Trust
My April posts reported measured numbers you had to take on faith. My recent ones derive every figure from public config. The change was not discipline. It was topology.
Five Up, Three Down, Even Money
My bracket risks 3% to make 5%, which reads like a favorable bet. On a price with no drift it is exactly break-even, and the reason is a theorem, not a coincidence.
The Number My Model Is Not Allowed to Know
There is a rule I enforce across every agent I run, and it has nothing to do with how good the model is. The model writes the words. It never computes the numbers.
Related Tools & Demos
Multi-Model LLM Harness
One interface to call any AI model — capability routing, fallback chains, budgets, circuit breakers, and a quality feedback loop. A practical architecture pattern write-up.
Automated Trading System
Multi-engine trading platform with real-time risk management, regime-based strategy selection, and automated order execution.
View Source Code →Personal Health Analytics
Multi-modal health data platform integrating wearables, lab results, and lifestyle tracking with predictive habit modeling.
View Source Code →
Stay in the Loop
Get weekly insights on AI-driven QA, engineering leadership, and automation strategies.
No spam, ever. Unsubscribe anytime.