Market dataleeway
Data rundaily after market close
Behind itone person, no team

One developer, not a company

I want to see why a stock fits.
Not just believe it does.

StockScorer rates stocks by disclosed, rule-based criteria instead of gut feeling. This page covers who runs the project, where the data comes from, how a score is built, and where the backtests honestly reach their limits.

Sunday night, 11:12 pm. Fourteen open tabs, two spreadsheets, three opinions from three forums, and in the end it still comes down to a feeling. Sounds familiar. That's exactly why this software exists.

SAP SE
SAP.DE · Large Cap
4
Medium Match4 / 7 pts · upper threshold 5 pts
Profile: Moat Quality
Return on capital
+1
Gross margin
+1
FCF margin
+1
Balance-sheet discipline
+1
Durable return on equity
0
No moat
0
Raw sum of points, 0-to-10 display derived from it · highest value in the universe: 7 · measured 2026-10-01 (example)

One person, my own money, my own frustration.

Yannick HennDeveloper of StockScorer

I first built StockScorer for myself, a private tool to pick my own stocks by rules I could still explain the next morning. That tool grew into a full scoring and backtesting platform. There's no team, no fund, and no sales behind it: just me, my portfolio, and quite a few evenings.

Once a day, after market close.

Metrics, prices, and index compositions come from leeway, a commercial market data provider. An automated pipeline updates them once a day after market close. Scores and metrics are based on closing prices, there are no real-time scores. Only in the portfolio does StockScorer fetch a current price from leeway on demand (briefly cached), so your portfolio value is right. For a rule set that looks at annual figures, a faster cadence would only be noise anyway.

Every stock page shows how fresh the data is: with the price date, not with "live".

1 ×updated daily
100+metrics in the rule editor
EODscores on closing prices

Your rule set. Or mine, if you'd rather not.

A scoring profile is a list of rules: each rule checks one metric against a value you set with a slider, and awards points. You can build your own profile from over 100 metrics, take the StockScorer profile as-is, or clone a profile from the library and tune it to your taste. Evaluation is purely rule-based, no black-box AI, no hidden weighting. The AI summary of the annual report on some stock pages does not feed into the evaluation.

Profiles / Moat Quality
Rule editor · Moat Quality9 rules · weighted
  • 01High return on capitalProfitabilityROC ≥ 20+2 pts
  • 03Pricing powerMarginGross margin > 40+1 pt
  • 06Balance-sheet disciplineBalance sheet & riskD/E < 0.5+1 pt
  • 08No moatDeductionROC < 8−2 pts
Threshold rule 01ROC ≥ 20%
Excerpt: 4 of 9 rules · ROC = return on capital, D/E = debt-to-equity
This is exactly what a rule set looks like: metric on the left, condition in the middle, threshold on a slider, points next to it. Groups with AND or OR, a checkbox for exclusion, one click for "NOT". No code, no formula language, unless you want one.
1
Find and add a metric

Return on capital, margins, leverage, growth, valuation. You decide what counts and what you ignore.

2
Set the threshold and points

Return on capital (ROC) at least 20, gross margin greater than 40, debt-to-equity less than 0.5. Every rule gets its own point value, negative points included. Rules can be grouped, negated, or set as a hard exclusion.

3
Add up the points

The score is the sum of the triggered rules on your profile's scale, and it can be negative. Four points mean four points. Public stock pages and comparisons across rule sets additionally show a derived 0-to-10 display. For it, the points are divided by the maximum attainable points, multiplied by 10 and rounded to one decimal place. A negative sum is shown as 0. Example: 5 of 11 points gives 4.5 of 10.

4
Classify by your own thresholds

You decide how many points make a stock a low, medium, or high match with your profile, split by large, mid, and small cap if you want (the example profile here uses one threshold for all). This classification is deliberately neutral and is not a buy or sell recommendation: it only describes how well a stock fits a rule set.

The "Moat Quality" profile looks for companies with durably high returns on capital, a defended gross margin, and strong cash flow. Nine rules, exactly as stored in the profile. All rules except the return-on-equity group and the last one apply to non-financial companies only: banks, insurers and real estate are not meaningful on these metrics and get the last rule instead. ROC stands for return on capital employed.

High return on capitalReturn on capital (ROC) at least 20%+2 pts
Solid return on capitalGROUP AND+1 pt
├ ROC at least 12%
└ ROC below 20%
Pricing powerGross margin above 40%+1 pt
Margin defendedGross margin at least prior-year value+1 pt
High FCF marginFCF margin above 10%+1 pt
Balance-sheet disciplineDebt-to-equity (D/E) below 0.5+1 pt
Durably strong return on equityGROUP AND+1 pt
├ Return on equity (ROE) above 15%
└ Prior-year ROE above 15%
No moat visibleGROUP OR−2 pts
├ ROC below 8%
└ ROC missing
Financial or real-estate companyneutral, metrics not applicable+2 pts

Every line is yours to touch: drag the threshold slider, change the points, negate a rule, compare against another metric instead of a constant (this year's gross margin against last year's), or mark a rule as a hard exclusion. Missing data is its own case and is never silently scored as "passed".

The 4 points from the top, line by line.

This is the full math behind the card at the top of the page, with SAP SE's real metrics. Nine rules, four of them triggered, five not. SAP sits one point below the upper threshold, and that is exactly what the breakdown shows: nothing gets smoothed over until it fits.

Rule
Condition and actual value
Pts
High return on capital
ROC 18.1 is below 20
0
Solid return on capital
ROC 18.1 is between 12 and 20
+1
Pricing power
Gross margin 72.9 > 40
+1
Margin defended
Gross margin 72.9 below prior year 73.0
0
High FCF margin
FCF margin 22.9 > 10
+1
Balance-sheet discipline
D/E 0.18 < 0.5
+1
Durable return on equity
ROE 16.0 > 15, but prior year 6.9
0
No moat
ROC 18.1 not below 8, value present
0
Financial or real-estate company
SAP is a technology stock, rule does not apply
0
Score
Sum of points, upper threshold 5
4

A high match is rare, and that's the point.

A profile that gives every second stock top marks helps no one. This is how the scores of the "Moat Quality" profile spread across 16,222 stocks, one bar per point value reached. On the left are the names with negative points, on the right the few with the highest value (7). Mathematically up to 10 points are possible, but rules that exclude each other cap the real maximum at 7.

1,405
3,034
2,211
1,655
3,953
1,630
1,000
680
456
198
−2
−1
0
1
2
3
4
5
6
7
At or above the upper threshold (5 points): 1,334 stocks
that's 8.2% of the universe

Measured 2026-10-01 (example) · profile "Moat Quality" · real distribution across all active stocks

Two silent errors that make every backtest look great.

Historical simulations almost always suffer from the same two problems. StockScorer addresses both explicitly, not because it's convenient, but because a backtest that looks too good is worse than none at all.

Survivorship bias
Only the survivors count

Looking only at companies that still exist today writes the failures out of history. StockScorer reconstructs index membership at every point in time: delisted companies stay in the history and exit at their last known price instead of simply disappearing. If no exit price exists, the backtest assumes proceeds of 70% of the last valuation price (an assumption, shown in the result). This applies to index universes with stored membership history. One gap remains: companies that left the market early and for which no quarterly data exists are missing from the backtest, which favours the result.

Look-ahead bias
Knowledge that didn't exist yet

A period's score and entry rely solely on data that was actually available at that time. Returns are only measured in the following period, never in the same window the selection came from.

Modeled
dividends with reinvestment
transaction costs and a simplified capital-gains tax (adjustable, switched off on the published strategy pages)
index membership at every point in time (for indices with stored history)
Not modeled
slippage on very illiquid names
individual tax situations
currency hedging

Every backtest also shows its data quality and its gaps. Once enough data points exist, a strategy page additionally shows a real live measurement (out-of-sample) since the start of the current profile version. That one runs forward, not backward. A rule change starts a new version.

So we don't misunderstand each other.

Not investment advice. StockScorer is an information and analysis tool. There are no buy, hold, or sell recommendations, only a neutral read of how strongly a stock matches chosen or predefined rules.
Not a data provider. Raw data is not published for download, it belongs to leeway.
No guarantee for tomorrow. Past performance, including from a backtest, is not a reliable indicator of future results.

What reaches me most often by email.

If you already have your rules in your head, write them down.

Create a profile, run it against 16,222 stocks, check it against the history. Start for free, no sales call, there's no one who could make one.