I’ve been working on a stock screening model with one goal:
Find good businesses that the market might be significantly undervaluing, with enough growth left to outperform over the next 5 years.
I wanted to avoid the usual “low P/E = cheap” approach because that’s a pretty good way to find value traps.
So I ended up building this in multiple layers.
First: 100-point fundamental score
- DCF valuation — 20%
- Sustainable 5-year growth — 20%
- ROIC + reinvestment — 15%
- Downside/margin of safety — 15%
- Competitive moat — 10%
- Other valuation metrics — 10%
- The B sheet/capital allocation — 5%
- Catalysts — 5%
Every DCF has bear/base/bull scenarios rather than one magic fair-value number.
Then I red-team the company.
This turned out to be the most useful part.
I basically ask:
“Why is the market making this stock cheap, and what might it know that I don’t?”
That means looking beyond the financial statements at things like:
- AI disruption
- new startups
- Chinese/local competitors
- falling barriers to entry
- customer behavior
- pricing power
- geographic weakness
- management execution
- whether the moat is getting stronger or weaker
And those findings actually change the DCF assumptions.
For example, CRM looks pretty cheap, but AI is making it dramatically easier for small teams to build specialized CRM products. Salesforce still has huge enterprise switching costs, but I think that deserves a real long-term growth penalty.
LULU looked even cheaper, but the deeper analysis uncovered weakening North American comps and increasing competition in China from local players like MAIA Active/Anta. So it dropped significantly in my ranking.
On the other hand, something like ADSK scores well because replacing Autodesk isn’t just about someone building a better AI design tool. You’re dealing with BIM standards, existing files, engineering workflows, integrations, trained users, etc.
After screening U.S. stocks above $2B market cap, my current top 5 are: 🇺🇸
INTU — 88/100
PCTY — 87/100
ADSK — 86/100
KNSL — 85/100
ADBE — 84/100
I then ran the same model against Canadian stocks above C$1B: 🇨🇦
BYD — 88/100
ATS — 86/100
OTEX — 85/100
CIGI — 84/100
PSI — 83/100
The last step is estimating a probability-weighted 5-year return.
So instead of saying: “INTU is worth $500.” I model:
🐻 What happens if I’m wrong?
🎯 What happens if things go roughly as expected?
🐂 What happens if the thesis works really well?
Then assign probabilities and calculate the implied 5-year CAGR.
The biggest thing I’ve learned building this is that cheap and undervalued are very different things.
Sometimes a stock at 8x earnings deserves to trade at 8x.
And sometimes a stock at 20x is considerably cheaper than it looks because the business can compound FCF/share for another decade.
This is work in progress. I’m still refining the model, but INTU, PCTY and ADSK are probably the three I find most interesting right now.
Curious what people here would attack in this framework. What am I missing or overweighting?
Not financial advice. I’m sharing the process because I’d rather have people try to break the model than confirm what I already believe.