Low P/E Stocks Near 52-Week Lows
Qualifying large caps as the distance band and the P/E ceiling widenranking ·
2026-10-04 · 6×3
Large caps on a trailing P/E under 15, within 10% of a 52-week lowranking ·
2026-10-04 · 15×3
KO month-end close against its trailing 12-month lowseries ·
2026-10-04 · 15×4
Qualifying large caps as the distance band and the P/E ceiling widen
Qualifying large caps as the distance band and the P/E ceiling widen
| distance_band | names_pe_under_15 | names_pe_under_25 |
|---|---|---|
| within 5% | 28 | 69 |
| within 10% | 38 | 99 |
| within 15% | 50 | 129 |
| within 20% | 59 | 157 |
| within 25% | 71 | 179 |
| within 30% | 77 | 200 |
the exact SQL behind every number
WITH ratios AS
(
SELECT
ticker,
argMax(price_to_earnings, date) AS pe,
argMax(market_cap, date) AS mcap,
argMax(average_volume, date) AS adv
FROM global_markets.stocks_ratios
WHERE date >= today() - 14
AND ticker NOT IN ('SPCX')
GROUP BY ticker
),
band AS
(
SELECT
ticker,
min(low) AS low_52w,
argMax(close, date) AS last_close
FROM global_markets.stocks_daily_aggs
WHERE date >= today() - 372
AND ticker NOT IN ('SPCX')
GROUP BY ticker
),
universe AS
(
SELECT
b.ticker AS ticker,
toFloat64(b.last_close) / toFloat64(b.low_52w) * 100 - 100 AS pct_above_low,
r.pe AS pe
FROM band AS b
INNER JOIN ratios AS r ON r.ticker = b.ticker
WHERE r.mcap >= 10000000000
AND r.adv >= 1000000
AND r.pe > 0
AND b.low_52w > 0
)
SELECT
concat('within ', toString(cutoff), '%') AS distance_band,
countIf(pct_above_low <= cutoff AND pe <= 15) AS names_pe_under_15,
countIf(pct_above_low <= cutoff AND pe <= 25) AS names_pe_under_25
FROM
(
SELECT
pct_above_low,
pe,
arrayJoin([5, 10, 15, 20, 25, 30]) AS cutoff
FROM universe
)
GROUP BY cutoff
ORDER BY cutoff
More from this analysisLow P/E Stocks Near 52-Week Lows
Large caps on a trailing P/E under 15, within 10% of a 52-week low
ranking 15×3
→
KO month-end close against its trailing 12-month low
series 15×4
→
Squeeze-shaped mechanics: crowded shorts among liquid names, with a rising price
ranking 12×4
→
The same calls ranked by premium as a percent of strike
ranking 12×4
→
See all 3,256 queries →