ChatGPT Prompt to Screen Undervalued Stocks (P/E, P/B, ROE, and the Value-Trap Test)
Ford's P/E reads None, its ROE is -18.2%, its P/B is 1.56. Here is the undervalued-stock screening prompt I ran on a free screener, checked at SEC EDGAR.
Ford's price-to-earnings ratio, pulled from a free data feed on August 13, 2026, is not a low number. The field comes back as the word None. Return on equity over the same trailing period is -18.2%, the dividend yield is 4.33%, and price-to-book sits at 1.56 with the last reported quarter ending June 30, 2026.
Read those four fields in order and notice which one would have stopped you. Not the P/E, which is absent rather than alarming, so a screen sorted by lowest P/E never shows the company at all. Not the P/B, which is unremarkable and would pass most loose value filters. Not the dividend, which pays like a healthy business. The warning is sitting alone in a column most screens treat as an afterthought.
That is the gap this piece is about. A screener sorts. It does not know why a number is low, and low is the only thing it can see.
Where do you get a stock screen you can actually copy for free?
Finviz's free screener will filter the whole US market for you and will not let you export the result.
CSV export sits behind the paid Elite tier, per multiple review sites, and the free saved-preset allowance is capped well below it. So the free path is not a download. It is a copy.
Three filters produced the run below: P/B under 1.0, ROE above 10%, Debt/Equity under 1.0. The screener reported 74 matches and showed the first 20 on page one, sorted by ticker. Twenty rows is roughly what fits in one clean copy from the visible table, which is also about as much as you want to hand a chat window before the numbers start blurring together.
- 01Set the filters, then read the match count
The count is the first result. 74 matches means the filter is loose, not that 74 are cheap.
- 02Switch the view to the valuation columns
Overview hides P/B and ROE. You want the tab that shows both plus Debt/Equity.
- 03Select the visible table and copy it
One page. Do not paginate and stitch, because sort order shifts between page loads.
- 04Paste it with the filters written out above it
The model has to know which cut produced the list, or it grades the wrong thing.
- 05Verify two or three rows at the source
Market cap divided by stockholders equity from the filing. One division, done by hand.
The prompt, and the two rules that make the run reproducible
The prompt does one thing: it forbids the model from filling gaps. Everything useful in the output came from that constraint rather than from clever phrasing.
The screener table went in first, as a plain markdown table with a note on what the blank cells meant. Then this:
Below is a stock screener output (source: Finviz free screener, pulled 2026-08-13 17:30 KST).
Filters applied: P/B under 1.0, ROE above 10%, Debt/Equity under 1.0.
The screener reported 74 total matches; this is page 1 (rows 1-20, sorted by ticker).
1) For each row, fill this table: Ticker / P/B / ROE / What this table cannot tell me.
2) In the last column, name the specific missing input, not a generic caveat.
Examples: 3-year revenue trend, one-time gains inflating ROE, CEO turnover,
negative book value from buybacks.
3) Then flag any row where the low multiple is more likely a value trap than a discount,
using these four signals: no reinvestment, repeated leadership changes,
falling revenue after a period of rising profits, historical multiples far above today's.
Rules:
- Do not invent numbers that are not in the table. Write "unknown".
- Do not give buy or sell recommendations. Judge screen criteria only.
- If a company has negative book value, say the P/B is unusable and explain why in one line.
- Do not use tools, search, or memory of these companies. Work only from the table above.
- If a cell in the table is internally implausible, say so instead of passing it through.
The last two rules are the ones I added after the first draft of this test, and they exist for opposite reasons. The tool ban keeps the run reproducible for you: my session could have gone and fetched the missing revenue history, and yours cannot, so an answer built on retrieved data would be a demonstration of my setup rather than of the prompt. The implausibility rule does the reverse, giving the model permission to stop and object instead of politely restating a broken number. That second line is where most of the value showed up.
If you want the model reading a filing rather than a screener table, the 10-K walkthrough covers the guardrails for that job, and this run assumes you already know them.
What the model did with 20 rows
It refused to grade six of them. Below is an excerpt from the run, kept verbatim, with the row-by-row table trimmed to four entries and the value-trap section kept whole.
Prompt: (screener table, then the instruction block above)
(excerpt: opening line, 4 of 20 rows, the signal-coverage table, Tier A, and the closing summary)
Working only from the table. Every judgment below is about whether a row meets the screen criteria, not about whether to own it.
| Ticker | P/B | ROE | What this table cannot tell me |
|---|---|---|---|
| ASC | 0.97 | 16.23% | Whether the 11.18% dividend is a fixed payout or a variable one tied to a freight-rate peak. Product tanker earnings are cyclical, and this table has no rate history and no year-over-year revenue line. Fwd P/E 10.01 vs trailing 6.46 says consensus expects earnings to fall by roughly a third; the table does not say why. |
| ATNM | 0.88 | 45.86% | The equity base the 45.86% is computed on. A 26.81M-market-cap company with a 32.23% profit margin and no P/FCF value is unusual for Healthcare/Biotechnology, where product revenue is often zero. If the "profit" is a non-cash item (warrant or milestone revaluation), ROE is arithmetic, not performance. |
| CTRM | 0.04 | 16.36% | The P/B itself is not plausible. A 20.19M market cap at P/B 0.04 implies about 505M of book equity, 25x the market cap. Either the equity figure is stale, the share count is wrong, or a reverse split has not been reflected. I would not treat 0.04 as a valuation. |
| EHLD | 1.00 | 43.05% | This row should not be in the screen. The filter was P/B under 1.0 and the displayed value is 1.00. It is a rounding artifact, and any reader re-checking the filter against the printed number will get a different answer than the screener did. |
Part 2: which rows are more likely a trap than a discount
The four signals you listed are: (1) no reinvestment, (2) repeated leadership changes, (3) falling revenue after a period of rising profits, (4) historical multiples far above today's.
| Signal | Can this table answer it? |
|---|---|
| No reinvestment | No. There is no capex, no R&D, no retained-earnings line. |
| Repeated leadership changes | No. Nothing in this table is about people. Unknown for all 20 rows. |
| Falling revenue after rising profits | Partly. No revenue history exists here, but Forward P/E against trailing P/E encodes what analysts expect earnings to do next. That is a forecast, not a trend. |
| Historical multiples far above today's | No. The table is a single snapshot. Unknown for all 20 rows. |
A screener cannot run a value-trap check. It can only tell you which rows to run one on.
Tier A, do not use the P/B at all (data integrity)
- ENLV (P/B 0.02, P/E 0.00, ROA 104.94% with blank P/S). Implies ~1.5B equity on a 30.97M market cap. Not a discount; an unusable cell.
- CTRM (P/B 0.04). Implies ~505M equity on a 20.19M market cap, 25x. Same problem.
- EHLD (P/B 1.00). Fails the stated filter as displayed. Screen artifact.
No row in this table has negative book value. That is a property of the filter, not of the market: a "P/B under 1.0" screen drops companies with negative equity, because their P/B is either negative or blank and never falls in the 0-to-1 band.
What this run establishes. Of 20 rows that passed a P/B < 1.0, ROE > 10%, Debt/Eq < 1.0 screen:
- 3 rows carry values that are internally implausible and cannot be used as valuations.
- 3 more passed the ROE gate on earnings that exceed or dwarf revenue.
- 2 of your 4 value-trap signals are unanswerable from any screener output, ever.
Screening produced a list of questions, one per row, not a list of candidates.
Three ways a cheap-looking row falls apart
The rows sort into groups by what fails first, and only one group is about valuation at all. The other two fail before valuation becomes a question.
ENLV: P/B 0.02, P/E 0.00, ROA 104.94% with no revenue line. Nothing usable.
BNC 392.89% and FBIO 180.16% profit margins. Net income above revenue.
CTRM implies 25x its market cap in equity. EHLD prints 1.00 inside an under-1.0 filter.
EDN, ASC, CHRD, BHF, EG. The question is why, and the table has no why column.
ENLV: P/B 0.02, P/E 0.00, ROA 104.94% with no revenue line. Nothing usable.
BNC 392.89% and FBIO 180.16% profit margins. Net income above revenue.
CTRM implies 25x its market cap in equity. EHLD prints 1.00 inside an under-1.0 filter.
EDN, ASC, CHRD, BHF, EG. The question is why, and the table has no why column.
The bottom-right group is the only one where the word undervalued is even in play, and it is also the group where the table runs out. EDN prints a forward P/E of 98.70 against a trailing 4.21, which is consensus expecting earnings to fall by more than 95%. ASC prints 10.01 forward against 6.46 trailing with an 11.18% dividend, the ordinary shape of a cyclical business at the top of its cycle, where the trailing multiple looks cheapest exactly when it is least reliable. CHRD sits at an ROE of 10.24% against a gate set at 10%, close enough that a small move in commodity prices drops it out of the screen entirely.
None of those is a verdict. Each is a reason to go read something, which is the same job a single-company teardown does one filing at a time.
Why two of the four value-trap signals have no answer
Two of them describe things that are not financial statement fields, so no screener carries the data in the first place.
Investopedia defines a value trap as a stock that appears to be a great deal due to its low price, but stays undervalued because of inherent business problems, and lists four warning signs: earnings that are not reinvested, repeated changes of management, revenue that stopped growing after a period of rising profits, and historical multiples far above current ones. Line those four up against the columns a screener actually produces and two of them have no corresponding field anywhere. Leadership history is not a financial statement item. Historical multiples require a time series, and a screen is one row per company at one instant. A third, reinvestment, needs capital expenditure or R&D, which the free valuation view does not carry, and dividend yield is a poor stand-in because cash leaving the business is not the same thing as cash not being put back into it.
That leaves one signal reachable, and only as a proxy. Forward P/E against trailing P/E tells you what analysts expect earnings to do, which is a forecast about the future rather than a record of what revenue did. Useful, and not the thing Investopedia is describing.
So the practical order is the reverse of how most screening guides present it. You do not screen for undervalued companies and then check for traps. You screen to produce a short list of questions, then answer them somewhere the answers exist, which for US companies means the filings themselves.
Checking the screener against SEC filings, and the 7.2% trap inside the API
Verification is one division: market capitalization divided by stockholders equity from the filing. The SEC's EDGAR APIs need no key and no registration, and the awkward part is not access. It is knowing which number the API is handing you.
Three rows checked on August 13, 2026, against statements dated June 30, 2026:
| Ticker | Equity per filing | Source | Market cap | Recomputed P/B | Screener P/B |
|---|---|---|---|---|---|
| ASC | $700,018,000 | 6-K filed July 29, 2026 | $681.00M | 0.973 | 0.97 |
| ASC | $654,786,000 | latest value returned by the XBRL API (March 31, 2026) | $681.00M | 1.040 | 0.97 |
| ATNM | $30,302,000 | 10-Q filed August 7, 2026 | $26.81M | 0.885 | 0.88 |
| BHF | $6,550,000,000 | 10-Q filed August 6, 2026 | $3.44B | 0.525 | 0.53 |
Read the two Ardmore rows together and the failure mode is plain. Query the XBRL companyconcept endpoint for stockholders equity and the newest value it returns is dated March 31, 2026. Recompute from that and you get 1.040 against the screener's 0.97, a gap of 7.2%, and the natural conclusion is that the free screener is wrong. It was not. Ardmore is a Bermuda company reporting as a foreign private issuer, so its June quarter arrived in a 6-K on July 29, 2026, carrying total stockholders equity of $700,018 thousand. Open the filing and the screener is accurate to two decimal places.
One byproduct of the check landed on the row the model had flagged first. Actinium's stockholders equity went from $2,304,000 at March 31, 2026 to $30,302,000 at June 30, 2026, a thirteenfold jump inside one quarter, both figures from the 10-Q filed August 7. An ROE of 45.86% computed across a denominator that small is not describing the same company as an ROE computed after the raise. The model could not see any of that from the table, and the thing it named as its first unknown, the equity base the number rests on, is precisely what the filing changed.
One company, two free vendors, two different P/B
Same company, same quarter, same filing underneath, and the ratio still splits by 9.4%. Running the three checked tickers through a second free source produced this:
| Ticker | Screener P/B | Second vendor P/B | Screener market cap | Second vendor market cap |
|---|---|---|---|---|
| ASC | 0.97 | 0.957 | $681.00M | $681,001,000 |
| ATNM | 0.88 | 0.797 | $26.81M | $24,883,500 |
| BHF | 0.53 | 0.528 | $3.44B | $3,381,680,000 |
Actinium moved 3.84% that day, and the two market caps differ by 7.2%, which is most of the P/B gap right there: two snapshots of the same price taken at different minutes. Return on equity matched to within a tenth of a point across all three tickers, because that number comes off a filed statement rather than a live quote.
The rest of the gap does not resolve. Back-solving the second vendor's own P/B from SEC equity gives 0.821 for Actinium against the 0.797 it reports, and 0.516 for Brighthouse against a reported 0.528. Two vendors are using different definitions of equity, and preferred stock, non-controlling interests and accumulated other comprehensive income are the usual suspects. Which definition is right is not something this check can settle, so I am recording it rather than resolving it. The practical consequence is small and worth internalizing: copying a screener's P/B to two decimal places implies a precision that the underlying data does not have. Anything inside about 10% between two free sources is noise.
If you would rather pull the numbers yourself than trust either vendor, the open-source finance tools roundup covers the libraries that read EDGAR and price data directly.
What the filter removed before you ever saw it
The screen deleted the companies its own warning label is about.
A P/B under 1.0 filter cannot return a company with negative book value, because negative equity produces a P/B that is negative or blank and never lands inside the zero-to-one band. Every guide that tells you to watch out for negative book value while screening on low P/B is describing a hazard the filter already excluded, and the absence of those companies from your results says nothing about how common they are. The same logic applies to the empty cell that opened this piece: a company with no trailing earnings has no P/E to sort, so a low-P/E screen quietly skips it rather than ranking it badly.
This is the part I would change about my own habits. I would not use P/B as the entry filter again. Three of twenty rows failed on arithmetic before valuation was a question, and three more cleared a profitability gate on net income larger than revenue, so the multiple did most of the sorting and almost none of the filtering. Starting at the quality of earnings and letting price be the last cut would have thrown out six rows the cheap-first order let through. That is a preference about sequence rather than a claim about returns, and I have not tested it over any period long enough to defend as a strategy.
The habit that does transfer is smaller. When a number looks decisive, find out which document it came from and how old that document is. It applies to a screener cell, to an API response that turned out to be a quarter stale, and to a headline calling something a record high. Korean-market readers can find the same routine run on KRX and DART data in the Korean version of this walkthrough, where the free-data path differs enough to need its own article.
FAQ
Can ChatGPT screen stocks for undervalued companies?
It can interrogate a screen you already ran, and it cannot run one. A chat window has no live price feed and no filing database, so the screening itself happens at a screener and the model works on the table you paste in. That division of labor is the useful part. On August 13, 2026 I pasted 20 rows from a free Finviz screen (P/B under 1.0, ROE above 10%, Debt/Equity under 1.0, 74 total matches) into Claude Opus 5 with one instruction: name what the table cannot tell you, and do not invent numbers. It flagged three rows whose printed values are arithmetically impossible for their market caps, three more that cleared the ROE gate on net income larger than revenue, and one row displaying exactly 1.00 in a screen filtered to under 1.0. What it produced was a list of questions, one per row, not a list of candidates. That is the correct output for this stage, and any answer that hands you buy candidates from a screener table is overreaching.
Does a P/B under 1 mean a stock is cheap?
No. It means the market is paying less than accounting book value, which is a fact about two numbers rather than a judgment about the business. Investopedia notes that any value under 1.0 is considered desirable for value investors, and lists three conditions that break the ratio: companies whose value sits in intangibles rather than tangible assets, book value driven negative by a long run of losses, and accounting standards that differ enough between countries to make the ratio non-comparable. There is a fourth issue specific to screening. A filter set to P/B under 1.0 silently drops every company with negative book value, because a negative or blank P/B never lands inside the 0-to-1 band. So the screen removes the exact companies the negative-book-value warning is about, and their absence from your results is not evidence they are rare.
What is a value trap, and can a screener find one?
A value trap is a stock that looks like a great deal because of its low price but stays undervalued because of problems inside the business, per Investopedia, which lists four warning signs: no reinvestment of earnings, repeated changes of management, revenue that stopped growing after a period of rising profits, and historical multiples far above the current ones. A screener cannot check any of those directly. Reinvestment needs a capital expenditure or R&D line, leadership history is not a financial field at all, and past multiples require a time series rather than the single snapshot a screen produces. In my August 13, 2026 run, two of the four signals were unanswerable for all 20 rows, one was unanswerable, and one existed only as a proxy: forward P/E against trailing P/E, which encodes what analysts expect earnings to do rather than what revenue has done. The screen tells you which rows to run a trap check on. It does not run one.
Why does my screener disagree with the SEC filing?
Usually because one of them is reading an older statement than the other, and it is not always the screener that is behind. Checking three rows on August 13, 2026, the SEC XBRL companyconcept API returned Ardmore Shipping stockholders equity of $654.786 million as its latest value, dated March 31, 2026. Recomputing P/B from that figure gives 1.040 against the screener 0.97, a gap of 7.2%, which looks like a screener error. It is not. Ardmore is a Bermuda company and files as a foreign private issuer, so its second-quarter statements arrived in a 6-K on July 29, 2026, showing total stockholders equity of $700.018 million. Recompute with the filing rather than the API and P/B comes to 0.973, matching the screener. The same status causes a second failure: filter an EDGAR query to 10-K, 10-Q and 20-F and the company returns zero results, as though it had never reported. Check the filing index before concluding a data source is wrong.
- 01
A screen filtered to P/B under 1.0 will show you companies with negative book value, since a negative number is less than 1.
- 02
The SEC XBRL API can return an older balance sheet than the company has already filed.
- 03
Two free data providers pulling from the same quarterly filing will produce the same P/B ratio.
Disclaimer
This article is educational and is not investment advice, a recommendation, or an offer to buy or sell any security. Every ticker named above appears as an illustration of screener and data behavior, and nothing here is a judgment about any company's prospects. All figures are snapshots: the screen was pulled August 13, 2026 at 17:30 KST, the AI run was the same day, financial statement values are as of June 30, 2026 as filed, and market prices change continuously. Screener ratios are vendor calculations that differ from each other and from the filings, as shown above. Verify any number at the primary filing before acting on it, and consider your own circumstances or a licensed adviser before making investment decisions.
For related workflows: reading a 10-K with AI is the next step after a screen produces a name worth checking, a full single-company teardown shows what that looks like end to end, open-source finance tools covers pulling the data yourself instead of copying a screen, and checking a record-high claim is the same verify-the-source habit applied to a headline. The Korean walkthrough of this method runs it on KRX and DART data instead.
Sources
- SEC, EDGAR Application Programming Interfaces (submissions, companyconcept, companyfacts and frames endpoints; no API key required; a declared User-Agent header is required), read August 13, 2026: https://www.sec.gov/search-filings/edgar-application-programming-interfaces
- SEC EDGAR, Ardmore Shipping Corporation (CIK 0001577437) Form 6-K filed July 29, 2026, total stockholders equity of $700,018 thousand at June 30, 2026: https://www.sec.gov/Archives/edgar/data/1577437/000110465926087834/asc-20260630x6k.htm
- SEC XBRL companyconcept,
us-gaap/StockholdersEquityfor CIK 0001577437, 0001388320 and 0001685040, called August 13, 2026 (latest Ardmore value dated March 31, 2026): https://data.sec.gov/api/xbrl/companyconcept/CIK0001577437/us-gaap/StockholdersEquity.json - Investopedia, "Price-to-Book (P/B) Ratio" (under 1.0 considered desirable by value investors; limits for intangible-heavy firms, negative book value, and cross-border accounting differences), read August 13, 2026: https://www.investopedia.com/terms/p/price-to-bookratio.asp
- Investopedia, "Value Trap" (definition and the four warning signs), read August 13, 2026: https://www.investopedia.com/terms/v/valuetrap.asp
- Finviz free screener, filters
fa_pb_u1,fa_roe_o10,fa_debteq_u1, 74 matches, page 1 copied August 13, 2026 at 17:30 KST: https://finviz.com/screener.ashx - Alpha Vantage OVERVIEW endpoint, called August 13, 2026 for F, ASC, ATNM and BHF (Ford: P/E None, PEG 8.48, P/B 1.563, ROE TTM -18.2%, dividend yield 4.33%, latest quarter June 30, 2026): https://www.alphavantage.co/documentation/
- Finviz Elite pricing and free-tier export limits, secondary reporting from review sites rather than a vendor pricing page: https://yieldova.com/finviz-review/