Lesson 1 of 7
How a stock screen works
A screen is arithmetic on stored figures against a condition you set. A company missing the figure is dropped, neither passing nor failing.
By Javier Sanz
Founder of ValueScreener. Built Ninety Nine, a securities services provider, and sold it to a tier-one global bank; ran operations and internationalization at Alpaca, the brokerage API.
Who writes thisEditorial processLinkedIn (opens in a new tab)X (opens in a new tab)
In one minute
- A screen checks one or more conditions against figures already stored for each company.
- A company missing a required figure is dropped untested, neither a pass nor a fail.
- Adding a condition joined with AND can only hold the shortlist steady or shrink it.
A stock screen takes every company in a universe, tests one or more conditions against the figures already stored for it, and returns the ones that pass. Reading a screen well starts with knowing there are three groups in play, not two: the companies that passed, the companies that failed, and the companies that were never tested at all.
What a screen keeps, and what it drops
- 1The universe1,000 companies
- 2Hold both figures700 companies report a P/E and a debt-to-equity
- 3Pass P/E of 15 or below210 companies
- 4Pass debt-to-equity of 1 or below120 companies
A condition is one field, one operator, one value
Underneath, a screen's condition is simple arithmetic: take one stored figure, compare it against one value with one operator, greater than or equal, less than or equal, and keep the row if it is true. That is the whole mechanism. Nothing about business quality, price history or narrative enters it. A company passes because a number sits on the right side of a line, and for no other reason.
Passing is not the same as being good
A company that clears a P/E ceiling of 15 and a debt-to-equity cap of 1 has done exactly that: cleared two numbers. It has not been judged a strong business, a cheap one relative to its worth, or a safe one to hold. The screen answers the question you asked it, in the words you asked it, and no other question.
Missing is not failing
A condition needs the figure it compares against. A company that has not filed the input a condition uses, or whose figure a data problem left blank, cannot be compared and is left out before the test runs. It sits outside both the passing list and the failing list, and a screen's results panel does not by itself tell you how many companies that happened to. Before reading a result, check how many companies hold each figure the screen uses. The screener shows that count beside each field.
AND can only narrow the list
Each condition joined with AND is another hurdle every remaining company must also clear. The passing list can hold its size, if the new condition happens to be true for everyone still in it, or shrink. It cannot grow by adding a condition this way, because nothing removed from the earlier steps comes back. Join a condition with OR instead and the list can grow, because a company then needs to pass only one branch.
Check yourself
A company does not report the figure one of a screen's conditions uses. What happens to it?
- It is counted as a fail
- It is dropped before the test runs, neither a pass nor a fail
- It passes by default
Show the answer
Answer: B.
A condition needs a stored figure to compare. Without one there is nothing to test, so the company is left out of both counts.A screen with one condition returns 210 companies. A second condition is added with AND. What can the new count be?
- Larger than 210
- 210 or smaller
- Always exactly half of 210
Show the answer
Answer: B.
Joined with AND, every extra condition is another hurdle the remaining companies must also clear, so the list can only hold steady or shrink.A screen returns 120 companies out of a universe of 1,000. What do you know about the other 880?
- All 880 failed the conditions
- Some failed a condition, and some were never tested because a figure was missing
- None of the 880 report any figures at all
Show the answer
Answer: B.
A result count mixes two different groups: companies that were tested and failed, and companies a missing figure kept out of the test entirely.Sources
- The screener's own account of what a condition is: one field, one operator, one value, compared against a stored row at request time (
frontend/src/components/screener/strategies.ts, doc comment).
What this leaves out
- A screen sees only what is stored. Price-based figures are as old as the last stored price, and a company with no filing on record cannot be tested.
- Passing a screen is a fact about stored arithmetic, not a verdict on the business or its price.
- The counts here are invented to show the mechanism, not any real screen's live result.
- Nothing here is advice about any security.