⬡ DEVELOPMENT LOG

Built by a trader,
for traders

MomoScan started as a personal tool — built out of frustration with missing moves, watching gappers and low float runners explode while existing scanners either caught them too late or cost a fortune to run. This journal tracks how it was built, what changed along the way, and why. It went public in April 2026.

FIX HOD STATE — SURVIVES SERVER RESTARTS

A long-standing issue: restarting the scanner mid-session wiped all tracked session highs. Every HOD accumulated since 09:00 was gone. The Price Alerts panel would start firing against the wrong baseline — treating the current price as the high when the real high was set hours earlier. For any ticker that had already run and pulled back, this produced a flood of false HOD alerts.

The fix is a periodic snapshot loop running inside the server. Every 60 seconds the full session state — day highs, open prices, bar volumes — is written to disk. On restart, the server reads this file immediately before doing anything else, restoring all tracked highs to within 60 seconds of their last known values. The price history seed that follows only upgrades values it finds higher than the restored ones, so no data is ever downgraded on restart.

  • 60-second checkpoint. Worst case on a restart is 60 seconds of missed high updates — in practice far less.
  • Date-aware restore. The snapshot includes a timestamp. If the file is from a previous session date, it is ignored and the scanner starts fresh. Yesterday's highs never bleed into today.
  • Clears on session reset. The 03:00 ET boundary watcher triggers a final save before wiping all state for the new premarket session.
  • Browser refresh unaffected. This was always handled by the server sending current state on reconnect — the snapshot loop ensures that state is correct even after a restart.
FIX BOUNCE ALERTS — THRESHOLD APPLIED CORRECTLY

The EMA9 bounce alert threshold slider was not working as labelled. Setting it to 3% did not mean a ticker had to be 3% above its EMA9 to trigger — the actual threshold being applied was a fraction of that, causing alerts to fire on tickers barely above their EMA9. The root cause was a dollar-conversion calculation that scaled the percentage to a fixed $0.90 price before converting back to a percentage against the actual EMA9 price. For any ticker priced above $1, this produced an effective threshold far below the slider value.

The fix removes the dollar conversion entirely. The slider value is now applied directly as a percentage above EMA9, which is what the label always said it was doing. A 3% threshold now means the price must be at least 3% above EMA9 before a bounce alert fires.

  • Slider now accurate. 2.5% means 2.5% above EMA9 for all tickers regardless of price.
  • Fewer false positives. Alerts that were triggering on marginal EMA9 touches are filtered out.
  • Continuation logic unchanged. Once triggered, the continuation alerts (new highs above the last alert price) work exactly as before.
IMPROVEMENT SCANNER PERFORMANCE & RELIABILITY

Under the hood improvements to the scanner. Code has been restructured for faster iteration and easier maintenance going forward. No change to functionality — same scanner, same data, same alerts. Foundation work ahead of new features planned for May.

FEATURE ALERT PERSISTENCE — PRICE & BOUNCE ALERTS SURVIVE PAGE LOAD

A long-standing frustration: open the scanner mid-session and the Momentum table populates quickly, but Price Alerts and Bounce Alerts are empty. You can see tickers are moving, but you have no context for what has already happened. Every HOD break and surge that fired before you connected is gone.

This is now solved with a server-side rolling alert buffer. When a HOD break, surge or bounce alert fires in any connected browser, the event is reported back to the server. The server keeps a 30-minute rolling buffer of these events. When a new client connects — whether it is you refreshing mid-session or a new visitor opening the scanner for the first time — the full buffer is replayed instantly. The last 30 minutes of alerts populate immediately, before the first live trade even arrives.

  • Works for everyone. Server-side means every client gets the same history — not just the tab that was open when the alerts fired.
  • 30-minute window. Old alerts fall out of the buffer automatically. Only what is relevant to the current session is replayed.
  • Clears on session reset. At 03:00 ET the buffer is cleared alongside all other session state, so yesterday's alerts never bleed into a new session.
  • Saved in last_session.json. The end-of-session snapshot includes the alert buffer, so even the previous day's alerts are available out of hours.
FEATURE MOBILE LAYOUT — FULL HORIZONTAL SCROLL ON ALL PANELS

The mobile layout has been rebuilt. Previously the scanner was usable on a phone but data was getting clipped — ticker symbols cut short, columns cramped, the HALTS panel showing in the wrong place entirely. On a scanner where every column matters, clipped data is as bad as no data.

  • All columns visible via horizontal scroll. Each panel scrolls independently side to side — Symbol, Price, Change%, PM Gap%, PM Vol, HOD, Momentum all accessible without the table collapsing or hiding columns.
  • HALTS tab added to mobile nav. The trade halt monitor is now accessible on mobile as its own tab, alongside Momentum, Alerts, Bounce, Vol Top10 and News.
  • Larger touch targets. Row height increased to 34px, font bumped slightly — easier to tap the right row during a fast market.
  • Tab bar scrolls horizontally. All six tabs are accessible without wrapping or shrinking to unreadable sizes on narrow screens.
FEATURE TRADE HALT MONITOR — REAL-TIME LULD & REGULATORY HALTS

Anyone who has been caught in a halt knows the feeling — you are watching a low float runner go parabolic, the tape is screaming buy-side, and then it just stops. No prints. No movement. Halted. If your scanner doesn't tell you that immediately, you are flying blind.

A dedicated Trade Halt Monitor panel was added, displaying active trading halts in real time. LULD volatility pauses, news halts, regulatory suspensions and circuit breakers are all captured. For any ticker already on the Momentum or Top Volume tables, a red HALT badge appears inline on the row — no cross-referencing a separate feed mid-scan.

  • Halt table columns: Time · Symbol · Code · Reason · Resumes · Status.
  • Resume codes clear the badge automatically. When trading resumes, the HALT badge disappears from the scanner row and the log entry flips from red HALTED to green RESUMED.
  • Clicking a halt row switches the active ticker in the pressure drawer, consistent with the rest of the scanner UI.
FEATURE TREND INDICATOR — T&S PRINT VELOCITY IN TOP VOLUME TABLE

The Top Volume table now shows a directional trend indicator driven by tape reading — counting buy-side and sell-side prints in a rolling 5-second window. This is the closest thing to watching the time and sales yourself, compressed into a single glyph. When you are scanning 20 tickers at once, you cannot watch 20 tapes. This does it for you.

Each print is classified against the bid/ask midpoint. The result is both direction and intensity — exactly what matters when a low float runner is either ripping or starting to dump.

  • ▲▲ (green) — 5+ prints in the last 5 seconds, majority hitting the ask. Aggressive buying — slapping the ask, strong hands adding.
  • ▲ (lime) — 2–4 buy-side prints. Moderate buying. Worth watching for a breakout or VWAP reclaim.
  • ▼▼ (red) — 5+ prints on the bid. Aggressive selling — hitting the bid, panic sell or distribution in progress.
  • ▼ (orange) — 2–4 sell-side prints. Moderate selling. Could be a pullback or the start of a fade.
  • → (yellow) — Mixed prints. Choppy, no clear bias. Chop fest — sit on hands.
  • — (gray) — No prints in the last 5 seconds. Gone quiet. A burst of ▲▲ that fades to — tells you the move is over — weak hands shaken out, strong hands holding or distribution complete.
FEATURE PRICE ALERT SOUND — 8 SELECTABLE TONES

A sound alert fires when a new HOD breakout or surge alert triggers. All audio is generated in the browser — no external files, no dependencies. Sound is off by default. A small 🔇 button in the Price Alerts header enables it and reveals a dropdown to choose from eight tones, each previewing immediately so you can find one that cuts through without being annoying during power hour.

  • Double Blip — two quick ascending tones. The default.
  • Triple Blip — three ascending tones, slightly more urgent.
  • Ping — single clean high-frequency tone.
  • Soft Chime — gentle two-note bell. Least intrusive for a quiet office.
  • Rising Sweep — frequency glides upward over 250ms.
  • Ding — desk-bell style with a long decay.
  • Alarm Pulse — three rapid square-wave pulses. Hard to miss during a morning spike.
  • Ka-Ching — high-low-high three-note pattern.

The alert deduplicates — only a genuinely new row appearing in the Price Alerts table fires the sound. Re-renders and updates to existing rows are silent.

FEATURE HALT MONITOR — PLAIN ENGLISH REDESIGN

The halt table has been rebuilt. The previous version had columns for Code, Ref$, Upper band and Lower band. The band data came from the Nasdaq RSS feed and was unreliable in practice — frequently empty, showing dashes where numbers should be. Displaying unreliable data is worse than displaying nothing.

The table is now six columns: Time · Symbol · Code · Reason · Resumes · Status. The Reason column expands every halt code into plain English. T1 reads as "Halt — News pending." LUDP reads as "Volatility pause — LULD bands breached." You no longer need to remember what any code means — the table tells you.

  • All major codes mapped — news halts, LULD volatility pauses, regulatory suspensions, market-wide circuit breakers, IPO halts, and all resume codes.
  • Cleaner layout. Six focused columns instead of ten — more readable at a glance during a fast market.
FEATURE NEWS ICONS — 📰 ON TICKER ROWS

The scanner now shows a news icon directly on ticker rows when a headline has arrived for that symbol in the last 3 minutes. This is the feature that closes the gap between seeing a ticker move and knowing why — instead of scrambling to open a news tab and search, the catalyst indicator is right there on the row.

Two variants. A green 📰 means a general news headline. A yellow 📰 8-K means a filing direct from the SEC EDGAR RSS feed — a confirmed regulatory catalyst such as earnings, an FDA decision, a merger, or a material event disclosure. The 8-K variant is yellow because it carries more weight — it is a legal filing, not a headline.

  • Hover for the headline. Hovering the icon shows the full headline text directly on the row — no click required.
  • Click opens the news feed for that ticker without triggering the pressure drawer.
  • 3-minute window. The icon appears when news arrives and clears after 3 minutes if no new headline follows — keeping the display current.
  • Flash on arrival. The icon pulses three times when it first appears so you catch it during a fast scan.
FEATURE SEC EDGAR 8-K FILINGS — SECOND NEWS SOURCE

News aggregators have an inherent lag between a filing hitting the SEC and a headline being published about it. For regulatory catalysts, the lag matters. An 8-K filing is the actual event; the aggregated headline is a summary of it that arrives later.

A second news loop now polls the SEC EDGAR RSS feed directly every 60 seconds. Any 8-K filing where the company ticker matches a ticker on the active watchlist is broadcast immediately — no third-party aggregator in the chain. The yellow 📰 8-K icon is driven by this feed.

  • Direct from the SEC. The filing appears here as soon as it hits the SEC — before it appears anywhere else.
  • Matched by ticker. Every 8-K filing is automatically matched against the active watchlist. Only filings relevant to stocks you're already watching surface in the feed.
  • Covers the catalysts that move low floats. Earnings, FDA decisions, material events, dilution filings — all 8-K. When a thin float runs 30% on news, the 8-K is usually the reason.
FEATURE NEWS FEED — FASTER, PRIORITISED BY % MOVE

The news fetch was previously running every 3 minutes across a fixed list of 30 tickers — regardless of which ones were actually moving. A ticker running 25% was checked on the same 3-minute cycle as one sitting at 7.5%. That made no sense.

The loop now sorts all active tickers by % change descending and fetches news on a tiered schedule: the top 10 movers are checked every 10 seconds, the next 20 are checked every 60 seconds. A parabolic runner gets news checked six times a minute. A quieter ticker that just scraped past the entry gate gets checked once a minute. Priority goes where the action is.

TWEAK HOT SIGNAL TIGHTENED — REAL BUYING PRESSURE ONLY

During quiet premarket sessions, a single large buy print on a thin float could tip the buy/sell ratio enough to show HOT — even if the ticker was flat or slightly red. That kind of false signal is a trap. You see HOT, you chase, you get stuffed. The signal needed to mean something.

HOT now requires three conditions simultaneously:

  • Price must be up on the day. A red or flat ticker will not show HOT regardless of the tape. No bull traps from a single iceberg order.
  • At least 8 trades in the last 30 seconds. Filters out the stop hunt — a single large print skewing the ratio on a thin tape.
  • At least 5,000 shares traded in the last 30 seconds. Tiny prints do not count. If the volume isn't there, the move isn't real.

The result is a HOT signal that reflects genuine order flow — price moving up, active tape, real volume. Not a statistical quirk of a quiet morning before the premarket runners start setting up.

FEATURE WATCHLIST EVICTION — FADERS AND DEAD VOLUME REMOVED AUTOMATICALLY

One of the most frustrating things about most scanners is the stale ticker problem. A low float gaps up 12% at open, does its thing on the frontside, then fades all the way back to flat by midday. On most scanners it sits there for the rest of the session consuming a row and your attention — a bagholder on your watchlist.

Two eviction rules now run every 60 seconds:

  • Change % eviction. If a ticker's calculated change vs the previous close drops below 7.5%, it is removed immediately. No grace period — if it is no longer a mover it has no business being on the scanner. Backside faders get cleaned out.
  • Volume eviction. If a ticker has traded fewer than 50,000 shares in the last 15 minutes it is considered inactive and removed. The midday fade is real — volume dries up, the float rotates out, and what was a morning runner becomes a chop fest. When that happens, it leaves the list.

When a ticker is evicted it is fully unsubscribed from the data stream. The watchlist stays focused on what is actually moving right now, not what ran three hours ago.

FEATURE 3-MINUTE VOLUME RECENCY GATE — NO RELATIVE VOLUME DECAY

Relative volume sounds good in theory — compare current volume against a historical average for this time of day, surface the outliers. The problem is that RVOL becomes increasingly unreliable as the session progresses. Early in the morning, a handful of trades on a thin float produces an impressive relative volume number. By mid-session the baseline has shifted, and the comparison loses its edge entirely.

Rather than RVOL, a simple recency gate is applied server-side: a ticker must have traded at least 50,000 shares in the last 3 minutes to remain eligible. Tracked via rolling volume snapshots every 30 seconds. No decay, no time-of-day dependency. It either has volume right now or it doesn't.

  • Consistent all session. The rule is identical at 09:15 as it is at 01:00 GMT. No baseline drift, no time-of-day weighting.
  • Server-side only. The filter runs before anything reaches your browser.
  • Grace period for new entries. Freshly added tickers get 3.5 minutes before the recency check applies — time to build history before being judged.

The result is a watchlist focused on what has volume right now — not what had a volume spike two hours ago and has been grinding sideways since.

FIX CHANGE % — CALCULATED FROM SESSION OPEN, NOT BROKER FIELD

The change % figure on most scanners comes from the broker's overnight change field — price vs yesterday's close. That tells you the gap, which is useful context. But once you are in the session and watching a premarket runner, you need to know where it is relative to where it opened today — not where it opened six months ago relative to yesterday.

Worse, broker change fields can misreport during premarket and early market hours. A ticker showing +8% on the broker field that has actually faded to +4% intraday is a trap — you see the number and think you are catching a runner, but you are actually chasing a backside move.

Change % is now calculated from the session open price on every trade tick. A gap and go that holds is still showing its real gain. A gapper that fades shows the fade. Red to green moves are real. Green to red moves are caught immediately.

  • Entry gate uses calculated change %. A ticker only qualifies if the scanner's own calculation shows 7.5% or above — the broker figure is not trusted for this decision.
  • Eviction uses calculated change %. Tickers are checked every 60 seconds — if the real intraday change has dropped below 7.5% they are removed.
  • Falls back gracefully. Until the session open price is confirmed, the broker figure is used so you never see a blank.
FEATURE PRESSURE DRAWER — TAPE READING AND LEVEL 2 EMBEDDED IN SCANNER

Good tape reading is the difference between catching a breakout at the right moment and chasing into an exhaustion move. Watching the bid and ask, seeing whether prints are hitting the ask aggressively or whether there is a hidden seller sitting on the offer — this is what separates a clean entry from a stuffed breakout.

The pressure drawer embeds this directly into the scanner. Click any ticker row and a panel slides up from the bottom showing the full pressure reading for that ticker — without leaving the page or losing your place in the scan.

  • HOT / WARM / NEUTRAL / COOL / COLD label with a colour-coded pressure bar — the overall buy/sell bias at a glance.
  • T&S tape. The last 20 prints newest first, colour-coded by side. Green prints hitting the ask, red prints on the bid. Slapping the ask shows green. Hitting the bid shows red. Iceberg orders, spoofing layers, and hidden sellers become visible in the pattern.
  • Level 2 depth. Top 4 bid and ask levels with price and size live from the order book. Bid support, ask walls, bid stacks — all visible without switching to a separate platform.
  • Rolling window slider. 1 to 60 seconds. Short windows show the immediacy of order flow — useful for scalp entries. Longer windows smooth out noise for a trend day read.
  • Collapse without losing ticker. Collapse the drawer to keep scanning; reopen it and your ticker is still there.

The pressure score combines two signals: tape (70% weight — completed transactions, real money) and Level 2 (30% weight — intent only, can be pulled or spoofed in milliseconds). Tape carries more weight because prints are facts. L2 is a clue.

FEATURE TOP VOLUME PANEL — REBUILT, SORTED BY SESSION DELTA

The old Top Volume panel was sorting by total accumulated volume — which meant large-cap stocks with heavy float dominated regardless of what they were doing today. A sector runner with a thin float building a bull flag would sit below a slow-moving heavy float stock that had been trading all session on nothing. That ordering was useless.

The panel now shows only tickers currently active in the Momentum panel, sorted by volume delta — shares traded since the ticker joined the watchlist today. This surfaces the stocks where volume is actually building during the current session. A sympathy play or sector runner that has just started moving climbs the list as participation builds.

  • Watchlist-only. Only tickers currently active and passing all momentum filters appear. Evicted tickers disappear immediately.
  • Sorted by session delta. Whoever has traded the most shares since joining the watchlist today sits at the top — not whoever has the biggest historical float turnover.
  • Live updates every second. Volume figures pull directly from live data on every render cycle.
FEATURE POSITION SIZER — RISK-BASED, FLOATING PANEL

Sizing by how much of your account you can afford to throw at a ticker is one of the most common mistakes in day trading. It ignores the stop. It produces positions that are too large relative to actual risk — and on a low float runner that can move 10% in 30 seconds, being oversized is how accounts blow up.

The position sizer calculates size from risk. You define what you are willing to lose on the trade, set your entry and stop, and the sizer tells you exactly how many shares to take. It sits as a floating panel — triggered by a ⬡ SIZE button fixed in the bottom-right corner of the screen — staying out of the way until you need it, always one click away.

  • Click any ticker row to populate. When the panel is open, clicking any row in the scanner instantly loads the ticker and its live price. No typing required during a fast move.
  • Live price from the stream. Price refreshes every second from the live data feed for any ticker on the watchlist.
  • Stop loss quick-set. Buttons for 2¢, 5¢, 7¢ and 10¢ below entry. On a $1.50 low float scalp, cent-based stops are more practical than percentage-based ones — a 5% stop on a $2 stock is $0.10, but on a $12 stock it's $0.60, often wider than the entire expected move.
  • Stop tracks live price. With a cent button active, every price tick updates both entry and stop in sync. The position stays coherent as price moves.
  • Risk % quick-select. 0.5%, 1%, 1.5% and 2% of account. Tap and recalculate instantly. For a starter position on a lotto play, 0.5% keeps the risk manageable. For a high-conviction gap and go, 2% gives you size.
  • Account size and risk % persist. Saved across sessions. Set once, forget it.
FEATURE HOD + SURGE ALERTS — SESSION COUNTER AND FLASH HIGHLIGHTING

A HOD breakout on a low float runner is the core signal. But one HOD alert is very different from eight HOD alerts on the same ticker. A stock that keeps making new highs throughout the session — stair stepping, holding each level, weak hands shaken out and strong hands adding — is telling you something. A stock that fired one alert at open and has been range-bound since is a different story entirely.

The alerts panel now shows a session counter per ticker, colour-coded by how many times it has triggered. A single alert shows grey. Two to four shows yellow. Five or more shows orange — this is a ticker that keeps going, a true float rotation candidate.

  • HOD alert — fires on every new session high. Updated every second from the live data stream.
  • SURGE alert — fires when price moves 2% or more within a 60-second window at or near the high of day. A 30-second cooldown prevents repeated alerts on the same continuous move.
  • Row flash green on cluster activity — 5 or more alerts in the last 3 minutes. This is the momentum acceleration signal. A gap and go that is still going.
  • Row flash red on explosive moves — 5%+ surge. Parabolic move in progress. Could be the continuation or the exhaustion — the tape and Level 2 will tell you which.
FEATURE EMA9 BOUNCE ALERTS — PULLBACK AND RECLAIM DETECTION

Not every setup is a gap and go. Some of the cleanest trades come from a pullback to a key level followed by a reclaim — the dip buy entry on a trend day runner. The EMA9 crossover alert was built for this. When price dips, consolidates, and then crosses back above the 9-period EMA with momentum, the alert fires.

The threshold and cooldown are both configurable directly from the scanner header — no digging into settings. Adjust the sensitivity live during the session as conditions change.

  • Phase 1 trigger. Price crosses above EMA9 by the configured threshold percentage. This is the initial reclaim — the bull flag break or demand zone bounce.
  • Phase 2 continuation. Every new high above the last alert price fires again. Catches the stair stepping continuation without requiring a full EMA reset between each step.
  • Reset on drop below EMA9. If price falls back below the EMA, the state resets cleanly. A new cross triggers fresh. No stale alerts from a move that failed.
  • Session counter. Same colour-coded badge system as the HOD alerts — see at a glance which tickers are repeatedly reclaiming their EMA9 throughout the session.
FEATURE MOMENTUM SCORING — BUY/SELL PRESSURE FROM THE TAPE

The core of the scanner is the momentum score — a real-time measurement of buying versus selling pressure derived from the live tape. Every print is classified against the bid/ask midpoint. Buy volume minus sell volume over a rolling window produces a score from −1 to +1. This drives the HOT / WARM / COOL / COLD signal on every ticker.

This is tape reading at scale. Instead of watching one ticker's time and sales and trying to feel whether buyers or sellers are in control, the scanner is doing it simultaneously for every ticker on the watchlist — flagging the ones where buying pressure is genuinely dominant right now.

  • HOT — score above 0.4, price up on the day, 8+ recent trades, 5,000+ recent volume. Strong hands adding, real participation, price moving.
  • WARM — score above −0.1. Mild buy bias. Could be building for a breakout or reclaim. Worth watching.
  • COOL — score above −0.4. Selling pressure beginning to dominate. The frontside may be over. Watch for a range break to the downside.
  • COLD — score below −0.4. Heavy sell-side pressure. Distribution, panic sell, or a dump in progress. Weak hands getting flushed.

The scan filters let you show ALL tickers, HOT+WARM only, or HOT only — depending on how selective you want to be. During a choppy session with no clear catalyst, HOT ONLY keeps the noise out. On a strong trend day with multiple runners, HOT+WARM catches the sympathy plays and sector runners building before they move.

FEATURE PREMARKET SCANNER — GAPPERS AND RUNNERS BEFORE THE OPEN

The session starts at 09:00 GMT — covering US premarket from 04:00 ET. This is where the best setups develop. A low float with a news catalyst gapping up 20% in premarket, building a bull flag, volume coming in steadily — by the time the market opens at 09:30 ET (14:30 GMT) you already know your levels, your plan, and your risk.

The scanner tracks premarket gap % alongside live price and volume. Tickers are ranked by momentum score so the strongest premarket runners — the ones with genuine buying pressure behind the gap, not just a thin float being pushed — sit at the top.

  • Premarket gap % column. Shows how far each ticker has moved from yesterday's close. A 15% gapper with volume building is a gap and go candidate. A 15% gapper with no volume is a potential fakeout.
  • After-hours coverage too. The scanner runs until 01:00 GMT — covering the full US after-hours session. After-hours runners and news plays are tracked just as closely as the morning session.
  • HOD tracking starts from first print. The session high baseline is set from the first trade of the day — not yesterday's close. HOD alerts only fire when price genuinely makes a new intraday high, not when it crosses an overnight reference level.
TWEAK SCAN CRITERIA REFINED — PRICE RANGE, VOLUME FLOOR, ACTIVITY GATE

The early version of the scanner was too broad. It would surface tickers that technically met basic criteria but had no business being on a momentum scanner — heavy float stocks grinding up slowly, sub-dollar names with no real liquidity, tickers that had one volume spike at open and then went completely quiet.

Through a month of live use, the criteria were tightened to what actually produces actionable setups:

  • Price range $0.90–$20. Below $0.90 the spreads are too wide and the prints too thin to trade reliably. Above $20 the percentage moves are smaller and require significantly more capital for the same risk/reward. The sweet spot for momentum day trading — low float runners, short squeeze candidates, news catalysts — lives in this range.
  • Minimum 50,000 shares volume. Deliberately kept low. Setting this too high — as many scanners do with 500K or 1M minimum filters — means you miss continuation moves on tickers that already did their big volume earlier in the session. If it's moving with 50K volume, it's worth watching.
  • Activity gate for HOT signal. 8+ trades and 5,000 shares in the rolling window. This keeps ghost signals out — tickers where one large print skews the buy/sell ratio but there is no real participation.
TWEAK DST HANDLING — SCANNER NOW TRIGGERS ON UK LOCAL TIME

A frustrating bug — the scanner was starting an hour early during British Summer Time. The UK and US don't change their clocks on the same date, so a hardcoded ET start time will be wrong for a three-week window in spring and again in autumn.

The fix was to trigger on UK local time rather than ET. 08:55 UK local is always correct — the system handles the timezone conversion automatically regardless of which DST window is active.

FEATURE FIRST BUILD — WHY THIS EXISTS

The honest reason MomoScan was built: frustration. Watching a low float runner go parabolic on news — FOMO kicking in, finally finding it on a scanner, seeing it's already up 40% and extended — and realising you missed the entire frontside move. Then looking at what a decent real-time scanner costs — $150, $200, $300 a month — and deciding there had to be a better way.

The first version was basic. A WebSocket feed, a handful of tickers, a momentum score built from the tape. No Level 2, no alerts, no position sizing, no halt monitor. Just the core question: which tickers have genuine buying pressure behind them right now?

What became clear immediately from using it live was how much the standard approach gets wrong:

  • Volume filters set too high miss continuation moves. By the time a ticker hits 1M relative volume, the gap and go is often already done. The move that mattered happened at 50K volume when nobody was looking.
  • Broker change % fields lie. During premarket especially, the reported change can be hours stale. You think you are watching a fresh runner. You are watching yesterday's data with a live price attached.
  • Sticky watchlists create noise. A ticker that ran at open and has been dead since midday has no business sitting in a momentum scanner. It is a bagholder on your screen.
  • No tape reading context. A price going up tells you nothing about whether it is real buying or a pump. The tape tells you. Most scanners don't show you the tape.

These were the problems. The next six months were spent solving them, one by one, in live sessions.

COMING SOON — PRO
EXPANDED UNIVERSE & SORTABLE COLUMNS Wider price range up to $150, top 30 visible by default (scrollable to 100), with clickable column headers to sort by Price, Change%, PM Gap%, PM Vol or HOD.
CUSTOM WATCHLIST Add your own tickers alongside the scanner's picks.
SSR INDICATOR Flag tickers on the Short Sale Restriction list in real time.
FLOAT DATA Estimated float size on every ticker. Thin float vs heavy float changes everything.
PRICE ALERTS Set a target price — get notified when it hits.
PRE-MARKET GAPPER LIST Dedicated view of top gappers before the open, sorted by gap %.
DARK POOL INDICATOR Flag unusual block prints suggesting institutional activity.
SESSION REPLAY Review what the scanner was showing at any point during the past session.
LULD BAND PROXIMITY INDICATOR Real-time SIP-sourced LULD upper and lower bands in the pressure drawer — showing how close a ticker is to triggering a halt before it happens.
DISCORD ALERTS Stream HOD, surge and halt alerts direct to your Discord server — stay connected to the scanner without watching a screen.
MOBILE PUSH ALERTS HOD and surge alerts direct to your phone.