High EPS Low P/E Stocks
The stocks below are profitable companies (positive EPS) trading at a P/E ratio of 15 or below — the classic Graham threshold for a stock that is cheap relative to its earnings. Sorted by StockPik's Value Score, which also factors in P/B, ROE, debt levels, and Piotroski F-Score.
A low P/E ratio alone is not sufficient — a company can have a low multiple because it is genuinely cheap, or because the market expects earnings to fall. The Value Score helps separate the two by incorporating financial health and quality metrics alongside the valuation ratios. Data is sourced from SEC EDGAR filings and updated weekly.
| Symbol | P/E | EPS | Score | Price |
|---|---|---|---|---|
| TASK | 11.3 | $0.95 | 100 | $10.68 |
| DXC | 9.2 | $1.27 | 100 | $11.67 |
| CHR | 0.4 | $2.54 | 100 | $0.90 |
| DDT | 0.0 | $31,367.49 | 100 | $25.92 |
| CHSN | 2.4 | $1.18 | 100 | $2.80 |
| DDS | 0.0 | $31,367.49 | 100 | $585.27 |
| CNA | 10.0 | $4.65 | 100 | $46.59 |
| CLMB | 4.8 | $4.30 | 100 | $20.82 |
| CLW | 1.7 | $8.87 | 100 | $14.86 |
| CMCSA | 5.0 | $5.80 | 100 | $28.73 |
| CI | 12.9 | $20.73 | 100 | $267.19 |
| AWX | 3.3 | $0.77 | 100 | $2.55 |
| CRCT | 10.4 | $0.38 | 100 | $3.97 |
| CRMD | 3.6 | $1.85 | 100 | $6.70 |
| CRNT | 8.2 | $0.27 | 100 | $2.22 |
| ASB | 9.5 | $2.56 | 100 | $24.48 |
| ALL | 5.2 | $39.51 | 100 | $206.17 |
| CTRM | 1.2 | $1.51 | 100 | $1.78 |
| AII | 3.8 | $5.09 | 100 | $19.33 |
| AIG | 12.6 | $6.07 | 100 | $76.74 |
| AHL | 4.7 | $8.05 | 100 | $37.50 |
| CYRX | 4.7 | $1.75 | 100 | $8.21 |
| AGCO | 13.0 | $9.13 | 100 | $118.57 |
| ACCS | 6.3 | $1.14 | 100 | $7.15 |
| ACCO | 10.4 | $0.32 | 100 | $3.38 |
| WW | 0.2 | $101.60 | 100 | $21.08 |
| VNCE | 2.2 | $1.07 | 100 | $2.37 |
| VLGEA | 3.0 | $13.78 | 100 | $41.36 |
| DOMH | 0.5 | $6.57 | 100 | $3.10 |
| DORM | 13.0 | $8.21 | 100 | $106.47 |
| DSWL | 4.4 | $0.70 | 100 | $3.07 |
| DTST | 1.8 | $2.16 | 100 | $3.92 |
| DUO | 2.9 | $0.47 | 100 | $1.35 |
| VIRC | 5.5 | $1.14 | 100 | $6.31 |
| EBMT | 12.7 | $1.61 | 100 | $20.50 |
| ECPG | 7.2 | $9.85 | 100 | $70.70 |
| EDUC | 2.7 | $0.48 | 100 | $1.30 |
| VFF | 12.0 | $0.25 | 100 | $3.05 |
| VC | 9.3 | $9.73 | 100 | $90.24 |
| UVSP | 10.6 | $3.08 | 100 | $32.76 |
| EMBC | 4.6 | $1.91 | 100 | $8.87 |
| ENLV | 0.2 | $5.20 | 100 | $1.09 |
| EVER | 10.8 | $1.47 | 100 | $15.90 |
| TRIP | 9.2 | $1.02 | 100 | $9.33 |
| TONX | 2.2 | $1.37 | 100 | $3.08 |
| TLF | 1.7 | $1.36 | 100 | $2.33 |
| TILE | 13.3 | $2.07 | 100 | $27.66 |
| JXG | 2.8 | $1.37 | 100 | $3.85 |
| KROS | 3.6 | $2.92 | 100 | $10.61 |
| KINS | 6.2 | $2.28 | 100 | $14.21 |
Why P/E under 15 with positive EPS matters
Benjamin Graham's standard for a defensive value investment included a P/E ratio no higher than 15 times the average earnings of the past three years. At a P/E of 15, you are paying $15 for every $1 the company earns — a price that leaves room for earnings to disappoint without destroying your position. Above 20, you are pricing in growth that may never arrive.
The EPS filter matters because a low P/E without positive earnings is a contradiction. A company with no earnings has no P/E ratio in any meaningful sense — the metric simply does not apply. Requiring positive EPS ensures every stock on this list is actually generating profit, not just trading at a low multiple of losses.
The Graham Number column shows the theoretical maximum price Graham would have paid, calculated from EPS and book value. When a stock's price sits below its Graham Number, it is trading with a margin of safety by Graham's own formula. For more on how this is calculated, see: Benjamin Graham's Intrinsic Value Formula.
The Piotroski F-Score column adds a financial momentum check. A low-P/E stock scoring 7 or above on the F-Score is not only cheap — its underlying business metrics are improving. That combination is what Graham called a net-net candidate and what modern quantitative value research consistently identifies as a source of excess returns.
Screen all 6,000+ stocks by P/E, EPS, and 21 other metrics
Combine low P/E with ROE, F-Score, debt limits, and Value Score in one filter.