{"slug":"low-pe-stocks-near-52-week-lows","qid":"threshold_curve","label":"Qualifying large caps as the distance band and the P/E ceiling widen","post_title":"Low P/E Stocks Near 52-Week Lows","post_url":"/blog/low-pe-stocks-near-52-week-lows#q-threshold_curve","columns":["distance_band","names_pe_under_15","names_pe_under_25"],"rows":[{"distance_band":"within 5%","names_pe_under_15":1,"names_pe_under_25":12},{"distance_band":"within 10%","names_pe_under_15":9,"names_pe_under_25":37},{"distance_band":"within 15%","names_pe_under_15":21,"names_pe_under_25":64},{"distance_band":"within 20%","names_pe_under_15":31,"names_pe_under_25":91},{"distance_band":"within 25%","names_pe_under_15":41,"names_pe_under_25":116},{"distance_band":"within 30%","names_pe_under_15":45,"names_pe_under_25":143}],"shape":"ranking","sql":"WITH ratios AS\n(\n    SELECT\n        ticker,\n        argMax(price_to_earnings, date) AS pe,\n        argMax(market_cap, date)        AS mcap,\n        argMax(average_volume, date)    AS adv\n    FROM global_markets.stocks_ratios\n    WHERE date >= today() - 14\n      AND ticker NOT IN ('SPCX')\n    GROUP BY ticker\n),\nband AS\n(\n    SELECT\n        ticker,\n        min(low)            AS low_52w,\n        argMax(close, date) AS last_close\n    FROM global_markets.stocks_daily_aggs\n    WHERE date >= today() - 372\n      AND ticker NOT IN ('SPCX')\n    GROUP BY ticker\n),\nuniverse AS\n(\n    SELECT\n        b.ticker                                                   AS ticker,\n        toFloat64(b.last_close) / toFloat64(b.low_52w) * 100 - 100 AS pct_above_low,\n        r.pe                                                       AS pe\n    FROM band AS b\n    INNER JOIN ratios AS r ON r.ticker = b.ticker\n    WHERE r.mcap >= 10000000000\n      AND r.adv >= 1000000\n      AND r.pe > 0\n      AND b.low_52w > 0\n)\nSELECT\n    concat('within ', toString(cutoff), '%')      AS distance_band,\n    countIf(pct_above_low <= cutoff AND pe <= 15) AS names_pe_under_15,\n    countIf(pct_above_low <= cutoff AND pe <= 25) AS names_pe_under_25\nFROM\n(\n    SELECT\n        pct_above_low,\n        pe,\n        arrayJoin([5, 10, 15, 20, 25, 30]) AS cutoff\n    FROM universe\n)\nGROUP BY cutoff\nORDER BY cutoff","computed_at":"2026-08-22T04:16:01.601851+00:00","elapsed":1.118587755}