The model
The Bull Rankings score is a deterministic quality-growth screen — the classic GARP idea, “growth at a reasonable price” — a single 0–100 number built from three pillars. Quality rewards durable returns on capital, healthy margins, low leverage, and clean, cash-backed earnings. Growth measures revenue and earnings expansion. Value grades valuation against sector peers — the PEG ratio, earnings and cash-flow multiples. A high score means a strong, growing business trading at a fair price.
Every weekday the cron pulls the full NASDAQ Trader US-listed symbol list (~5,000 names across NYSE, NASDAQ, and AMEX), runs each through a market-cap and liquidity screen (drops the smallest / illiquid names, ~3,000 survive), scores the survivors that have complete fundamentals (2,191 in the latest run) on the quality-growth model, and builds a 30-name book from the strongest. The same code runs against every name; nothing is hand-curated. Banks, insurers and REITs run on a different financial model, so they're graded on a sector-appropriate card rather than the quality-growth score.
That's the schedule, and it isn't a promise of a perfect record: the run depends on third-party data that sometimes throttles or times out, and a handful of weekdays since launch have no edition because of it. When a run doesn't complete, nothing is improvised — the previous edition simply stays up, dated with its own as-of date rather than today's, so a stale book is never presented as a fresh one. Every published edition is in the daily archive, gaps included.
The 30-name book is not simply the top 30 scores. A pure top-30 would routinely be half software and half small caps, so the book applies concentration limits: at most 3 names per sub-industry (software, semiconductors, biotech and specialty pharma each count as one), at most 8 per broad sector (10 in technology), at most 10 names under $10B, and at most 3 under $2B. When a limit is full, the next-ranked name that fits takes the slot. That is why a high-scoring name can be absent from the Top 30 while a lower-scoring one appears — the score ranks a stock, the limits build a diversified book. Every score is shown in full on the screener, uncapped and unfiltered.
When a metric shows “—”. Some inputs genuinely don't exist for a company: a business whose buybacks have shrunk its equity to almost nothing has no useful debt-to-equity, one with negative or erratic earnings has no meaningful P/E or PEG, and vendors occasionally fail to report a field. We show a dash rather than invent a number or quietly substitute a zero — a zero would read as “no debt” or “free,” a much stronger claim than “unknown.” A missing input is excluded from its pillar and the remaining signals carry the weight; it is never scored as a zero and never counted as a penalty. Debt is the one read with a backup: when debt-to-equity can't be read and the company earns an operating profit, the score judges the same slot on net debt against that profit instead, so a heavy borrower can't slip through on a blank. That is why a stock can still carry a full score with a dash in its grid. Where too many inputs are missing to grade a name honestly, it drops out of the ranking entirely rather than being scored on fragments.
About the grade card. Beneath the headline score, the three quality-growth pillars (Quality, Growth, Value) break down how the number was reached. Each name also carries a grade card of five underlying fundamentals — FCF, Rev, D/E, P/E·or·P/S and PEG (banks, insurers and REITs get metrics that fit them) — on the row cards across the rankings, the watchlist and each stock page. The letters are a readable summary; the pillars score the underlying numbers directly and read more than the card shows, including return on invested capital.
The principles
- Transparency over mystique. Every score is auditable. Click a score and the breakdown shows the three pillars behind it and the signals that moved them.
- Durability first. Return on invested capital leads the quality pillar, backed by free-cash-flow margin, balance-sheet strength and the worst year of returns over five years — we reward businesses that compound for years, not quarters.
- Pay fair price for real growth. The Value pillar leads with PEG, which prices a stock against its expected earnings growth rather than a flat multiple, and ranks it against sector peers.
- Concentration over breadth. A focused list of thirty reflects the view that the top of the ranking is materially better than the middle — we'd rather surface fewer high-conviction picks than dilute the signal.
What the site is not
This is not personalized advice. The rankings are general information published to a broad audience; nothing on the site is calibrated to any individual's circumstances, risk tolerance, or tax situation. Read the full disclosures at the footer of every page.
Methodology & limitations
The Bull Rankings model — its pillars, weightings, concentration limits and screen philosophy — was designed and is maintained by Bartholomew Chupka Jr., the site's founder. Every rule below is a deliberate choice, and the reasoning behind the ones that shape the book most is set out in why the rules are what they are.
We're explicit about the boundaries of what this model can and can't tell you. The screen is mechanical and transparent — and it has known structural limits worth naming.
- What the test can see, and what it can't. The ~5,000-name candidate pool we screen every weekday is sourced from the NASDAQ Trader daily symbol file at run time — which, despite the name, lists every US-listed common stock and ETF across NASDAQ, NYSE and AMEX, not just NASDAQ-traded names. It is built from companies listed today, so anything that left the market between 2014 and 2026 — a bankruptcy, a takeover, a buyout, a company that stopped filing — isn't in it, and the simulation never held one. We checked that directly rather than assuming it: every price history in the candidate list runs to the present, so the universe is made up entirely of companies that survived. What that absence would do to the result isn't something this data can settle, and we'd rather show you the gap than fill it with an assumption. What we can measure is the financial condition of what the book held: of its 1,530 quarterly holdings, 1,445 were healthy on cash burn and debt, 65 moderate and 20 distressed.
- Twelve years, 51 rebalances, every rule fixed in advance. The test runs from January 2014 to September 2026 on the book this site publishes: the thirty highest-scoring companies worth at least $1.5 billion, rebalanced quarterly under the same limits as the live list, with winners held rather than sold back to equal weight. Every fundamental comes from SEC filings as they were filed and dated when they were filed, so each quarter is scored on what was public that morning and nothing else. Two parts of the live score can't be rebuilt historically, because we hold no archive of analysts' estimates: the forward-earnings measure in growth, and the rule that marks a company down when analysts expect its earnings to be no higher in two years. The growth-adjusted P/E is the same in both: the trailing P/E divided by revenue growth. Companies that report in a currency other than dollars are left out, because the back-test has no exchange-rate history.
- The result. A compound annual return of 14.50% against the benchmark's 13.75% — $100,000 became $558,037, against $513,420 in the index. The book's worst drawdown was 32.6%, a little shallower than the market's 33.7%, and it finished ahead in 6 of 13 calendar years. Last re-run October 8, 2026.
- A correction. Until October 8 this page reported 16.75% a year. That figure was inflated by an error we found in our own model: the measure that compares a company's P/E with its own past priced earlier years with dividend-adjusted prices, which made every dividend payer look expensive against its history. Fixing it, along with two smaller changes made the same week (how a company losing money is valued, and counting each company once rather than once per share class), lowered the result to the figure above.
- The honest reading of that gap. The book moved about 7% more than the market (beta 1.07). Adjusted for that, the lead disappears: return per unit of risk was slightly below the index's, a Sharpe ratio of 0.77 against 0.84. The lead came mostly from 2017, 2025 and 2026, and the book fell harder than the index in the 2015–16 selloff, late 2018 and 2022. A back-test is easy to flatter — pick the window, pick the rules afterward, quietly drop the bad years. This one names the window, the rules, the data source and every limitation, including the error above, so you can judge the model rather than take our word for it.
- Fundamentals history is short by design. The live model reads four years of annual and two years of quarterly statements for each name, reconciled against SEC filings where they exist — less for recent IPOs. The back-test reconstructs history from SEC filings as they were filed and dated.
- Foreign listings + ADRs. When a foreign issuer reports financials in a non-USD currency, we convert at the current FX rate. The back-test leaves those companies out, because it has no exchange-rate history.
- Forward EPS estimates are sell-side consensus. The PEG signal and any forward-EPS-derived numbers reflect sell-side analysts, not the company's own guidance. Coverage thins out below ~$2B market cap; a name with no PEG gets a neutral grade on its card, and the value pillar falls back to its P/E against sector peers rather than penalizing it. The exception is a company whose analysts expect next year's earnings to be no higher than last year's: its PEG is left blank, and the value pillar counts it as the most expensive growth-adjusted price in its sector, because there is no growth to pay for.
- Forward track record is short. The model portfolio — the Top 30, rebalanced once a quarter — records every holding at its real price on the day it is bought, never back-dated, and is marked each weekday against an S&P 500 position bought on the same starting day, on the performance page. A return measured over a few days is noise, not signal; treat early numbers as directional only.
Where the data comes from
Every number on the site is traceable to a named source, and the grade card tags the figures whose source or period needs saying — a trailing-twelve-month cash flow, a fiscal-year growth rate, a derived PEG:
- SEC EDGAR — official, as-filed company financials (10-K / 10-Q XBRL data). For US filers we reconcile the income, cash-flow, and balance-sheet figures against EDGAR so the fundamentals rest on the primary regulatory filing, not a third-party rounding of it.
- Yahoo Finance — quarterly and annual statements, live and historical prices, and sell-side analyst estimates used for forward-looking signals and price targets.
- Finnhub, Polygon & Financial Modeling Prep — fallback quote and fundamentals sources when the primary feed is unavailable (so a name still resolves rather than erroring), and the company-news feeds behind the “Latest developments” headlines.
- Company news — recent headlines are pooled from the feeds above plus Google News, de-duplicated and filtered to the specific company (generic market round-ups and off-topic hits are dropped). Every headline on the site is attributed to its publisher and links back to the original — we never state an event without a named, linkable source.
- NASDAQ Trader — the daily US-listed symbol file that defines the universe we screen (every common stock on NYSE, NASDAQ, NYSE American, and NYSE Arca).
How we keep it accurate
Bad data is worse than no data on a finance site, so accuracy is enforced mechanically rather than trusted:
- A daily data-quality gate. Before any new edition ships, an automated validator checks it — list completeness, positive prices, day-over-day ticker-count stability, and per-field coverage regressions. If a data-source hiccup truncates or degrades the scan, the run is aborted and the last good edition stays live rather than shipping broken numbers.
- EDGAR reconciliation. US-filer fundamentals are cross-checked against the as-filed SEC data, and values that look implausible (trough-earnings P/Es, buyback-distorted ROE, FX-unit mismatches on ADRs) are flagged or suppressed rather than scored as if real.
- Every figure in the written analysis is checked. Before a deep dive or narrative publishes, an automated pass verifies that each dollar amount, percentage, and multiple it cites actually appears in the underlying data — and that the direction is right too: a claim that revenue “grew” when it fell, or a healthy-looking margin on a company that is losing money, is caught and rewritten. Figures are dated to the reporting quarter they rest on, so a number is never shown as more current than it is.
- Out-of-sample discipline. No new signal enters the score unless it improves results on data it wasn't tuned on — and we publish the negative results too. Corrections to how an existing figure is measured ship on the measured fix itself. Several intuitively-appealing signals were tested and rejected because they didn't hold up out-of-sample; we'd rather ship a smaller, honest edge than a flattering, over-fit one.
Why the rules are what they are
Before the rules themselves, it's worth saying what they're for. They do three things. They keep the book diversified, so no single idea — however good it looks — decides the outcome. They keep the decision with the numbers rather than my convictions, because the limits bind whether or not I like a company. And they force honest comparison: every business is judged against companies that actually resemble it, through several independent lenses rather than one flattering figure.
Every rule below costs something. That's what makes it a rule rather than a preference.
- Growth — is the business getting bigger? Revenue and earnings expansion. A company that isn't growing can still be a good investment, but that's a different thesis and a different discipline. This screen looks for compounding, so growth is a requirement rather than a bonus.
- Return on capital, against free cash flow — is the growth worth having? This is the quality question, and it's the one most often skipped. A company can expand revenue for years while destroying capital doing it. Return on capital tells you how much profit each dollar invested actually produces; checking it against free cash flow confirms the profit arrives as cash rather than as an accounting entry. Growth without this test is just activity.
- The PEG ratio — what are you paying for it? Price on its own tells you little. A multiple of forty is expensive for a business growing at ten percent and unremarkable for one growing at forty. PEG makes that relationship explicit, so “it's a great company” can't become a reason to pay any price for it. Quality is not a valuation.
- Supplemental checks, kept light. Behind those three sit accruals quality, which flags reported earnings running ahead of cash actually collected; EV/EBIT, which values the whole business including its debt, so leverage can't make a company look cheap; and revenue consistency, which separates a durable record from one good year. Each is a fair test, and each one applied strictly would exclude some genuinely excellent business — a company investing hard ahead of its growth will show poor accruals, and a high-quality compounder will rarely look cheap on EV/EBIT. As gates they'd remove the very companies this screen exists to find. They inform the score; they don't hold a veto.
- One score, everywhere. A company carries a single quality-growth score, and it's the same number wherever you meet it — the rankings, the screener, a sector page, its own profile. That sounds trivial. It isn't: a reader who sees one figure in a list and a different one on the detail page has no way to tell which is right, and reasonably decides neither is reliable. Consistency is what makes the data usable at all, so it's enforced once in the code rather than left to each page to get right on its own. The aim throughout is the most consistent, most defensible number I can produce, presented the same way every time.
- Three names per sub-industry. A pure top thirty by score would routinely come back half software. This limit forces the book across at least ten industries. I don't want to be overly exposed to one theme, even a theme the model happens to like.
- Ten technology names, not eight. Technology produces the most high-scoring businesses, and an eight-name ceiling was leaving good ones out. I widened it to ten. The three-per-sub-industry rule still applies underneath, so those ten have to spread across at least four different technology industries — it can't quietly become ten software companies.
- At most ten names under $10B, and three under $2B. Small caps score well and fall harder. Re-tested in September 2026 over 2023–26, the ten-name limit added return rather than costing it; the three-name limit cost about two points a year over that window and didn't reduce the worst drawdown. I keep it anyway: a back-test can only hold the small companies that are still listed, which is exactly the group the limit exists to bound. I'd rather forgo some upside than hold a book concentrated in small, illiquid names at the moment it matters most.
- Peers compared like for like. A payments company and a database company are both “software” to a standard classification, and grading one against the other tells you very little. I split the industry groups down to the level where the comparison is honest — which decides which names the limits treat as duplicates.
None of these are tuned to make a backtest look good. Where a choice cost performance, it's because I preferred the risk profile — and where a signal I liked failed out of sample, it was dropped. Those results are published above rather than quietly omitted.
Who's behind The Bull Rankings

I'm Bartholomew Chupka Jr., and I built The Bull Rankings.
I hold a Bachelor of Science in Business Administration and a Doctor of Physical Therapy, both from Misericordia University. I've spent about seven years managing my own investments, and this site started as the screen I built for myself — I wanted one transparent number I could actually defend, instead of a dozen conflicting ratings I couldn't check.
I'm not a licensed financial advisor, a broker, or a registered investment adviser, and nothing here is personalized advice. You shouldn't have to take my word for any of it — which is why the methodology is published in full: every metric, every weighting, and the signals I tested and rejected because they didn't hold up out of sample. Every score breaks down into the figures that produced it, and the track record is published whether it looks good or not.
The Bull Rankings is independent and self-funded. I have no business relationship with any company the model scores, and no one can pay to be featured, ranked higher, or removed.
What I've written myself
Most of the explainers on this site are AI-drafted and labeled that way at the top of every page. These are the ones I wrote — first-person, about my own money, and the only articles here that carry my name.
- Why FICO Stock Fell 46%: VantageScore, FHFA, and What the Numbers Miss — Regulators opened the mortgage market to FICO's cheaper rival twice in September, and the stock lost almost half its value. Its fundamentals still look excellent, and that is exactly the problem: the numbers that made FICO look strong are the ones now under threat, and they haven't changed yet.
- What Is a Growth Stock Worth With the 10-Year Treasury at 5.2%? — The Fed raised rates for the first time since 2023 and the 10-year Treasury touched 5.2%. The standard answer is that growth stocks are worth less. The math behind that answer is real, but it rests on an assumption almost nobody states, and my own model had the rate wrong for five months.
- I sold the dividend to buy the story — I sold my entire Johnson & Johnson position in late 2022 to fund speculative buys. JNJ has returned 63% since, dividends included. The speculative buys went to zero.
- Why heavy capex makes great businesses look expensive — Six mega caps spent $579 billion on property and equipment in twelve months. Capital spending lands straight on free cash flow, and free cash flow yield feeds the value pillar — so the screen marks them down for it, though less than you might expect. Whether that is a flaw depends on what you think a score is for.
- I don't rank banks. I tried hard to. — 492 companies on this site get no Bull Rankings score at all. It isn't an oversight, and it isn't a view about banks — it's what happened after I spent a long time trying to force them in, built a workaround specifically to include them, and watched the data tell me to stop.
- Why the DCF doesn't move my score — Most stock pages here carry a discounted cash flow estimate, and it has no say in the ranking at all. That isn't a lack of confidence in the math — it's what I think a DCF is actually good for, which is confirmation rather than valuation.
- My backtest returned 54%. I published 41%. — I ran the same strategy against two data sources and got two very different answers. I published the lower one, then spent a paragraph arguing my remaining edge was smaller than it looked. Here's why — and why a 53% hit rate isn't the weakness it sounds like.
- How the Bull Rankings score works — One 0–100 number on every stock, built from three pillars, with a letter-graded card beside it. Including the part most models won't tell you: the three pillars look equally weighted, and measurably aren't.
- The research behind the rankings: what I tested, kept, and threw out — The rejected ideas are the honest part of any model. Here are the signals I tested and threw out, the two that hurt to lose, and the times my own measuring tools turned out to be wrong.
- How the Bull Rankings model works — What goes into the score, and the rules I hold it to — a live forward record instead of a back-dated one, extra shelves kept off the scorecard, and a run that would rather publish nothing than publish something wrong.
- How much of one stock is too much — I don't have a position-size limit. One name reached about 25% of my portfolio and I never trimmed it — here's why that's less reckless than it sounds.
- The stock I got right — and the year my own screen would have thrown it away — I bought NVDA in 2022 on its growth record and have never sold a share. Run on the data it would have seen, my own model would have dropped it in 2023.
- Why I built my own stock screen — I didn't set out to build a ranking model — I set out to stop opening fourteen browser tabs every time I wanted an opinion about a company. Where the ideas came from, and how a manual process became an algorithm.
- The mistakes that cost me the most — A hype stock I lost over 75% on, a value trap I averaged down into, and years of buying dividends I didn't need — and what each one taught me.
- How I decide when to sell — and why I usually don't — Two things make me exit a position outright. A third, far more common, makes me trim one — and the difference between them is where most selling mistakes come from.
- How I actually use these rankings — Do I use my own site? Yes — as a filter, not an oracle. How the Top 30, search and compare, and the theme pages fit into my own buying process.
Found an error, or want to reach me? Contact me — corrections to the underlying data or the methodology are genuinely welcome, and I'd rather hear about a wrong number than leave it live. My editorial standards and corrections policy set out how I source and check figures, how errors get fixed, where automated writing is used, and how the site is funded.