The settings screen has always shown a stock price range of $0.50 to $200. The engine was using
$5 to $200. Unless you had opened settings and saved at least once, every stock under $5 was
silently excluded from scanning.
The screen was describing a universe you were not trading. That is fixed in 1.2.3, and there is
one thing you need to do about it.
1. What this actually cost you
On 2026-08-20, a normal session, **nine of the ten biggest gainers in the US market closed under
$5**. Narrowing to stocks that rose 10% or more on at least $5 million of turnover — names liquid
enough to trade —
16 of the 23 that otherwise qualify for the scan were under $5.
So this was not an edge case affecting a few illiquid names. For a scanner whose job is finding
intraday movers, the excluded band is where most of them live. If your scan results looked quieter
than the market felt that day, this is likely why.
2. Who was affected
If you never saved your settings, you were affected. The wrong value was the built-in default
that the engine fell back to.
If you opened Settings and pressed Save at any point, you were not. Saving wrote the range the
screen was showing, and from then on the engine used it.
That is an unpleasant kind of bug, because whether it hit you depended on something unrelated to
the setting itself, and nothing in the interface indicated which state you were in.
3. What changed
The default range is now
$0.50 to $100, everywhere — the settings screen, the engine, and the
daily scans we publish on the site. One number, one place, no divergence.
The upper bound moved from $200 to $100 deliberately. Above roughly $100 a normal position is a
small number of shares, and the arithmetic of position sizing and tick increments stops working
the way intraday methods assume.
4. What you should do
Update to 1.2.3 or later. The current release is 1.2.8.
Press "Reset to defaults" on the Settings screen. This matters: we deliberately did not touch
saved settings. If you had ever pressed Save, your old range is still in place and will stay there
until you reset it. Your configuration is yours, and silently rewriting it would be the same class
of mistake as the bug itself.
Re-run any backtest you were relying on. The candidate set changes, so the results change.
5. What else went out in the same window
Broker-accurate fees (1.2.4). Selecting your exchange in Settings now loads that broker's real
fee schedule rather than a single fixed number. This one changes backtest results materially, and
it has its own explanation coming.
InUniverseN(n) (1.2.5). A strategy function giving universe membership n seconds ago, so you
can write conditions like trading only within 60 seconds of a symbol entering the ranking.
A built-in Stage-1 filter (1.2.7). A worked example, now the default in the strategy editor for
stock exchanges, with its method and limits described in the factor help panel.
A warm-up fix for entry-timing strategies (1.2.8). Asking whether a symbol was in the ranking N
seconds ago used to push out the warm-up requirement the way a moving average does, which made
"N seconds after entry" strategies block themselves. On one measured day, 8 of 14 expected entries
were never evaluated. If you wrote anything using InUniverseN before today, re-run it.
If you want the reasoning behind the price range and the other filters, we wrote it up in
how to find stocks to day trade,
including which filters we apply and which movers we still miss.