Section 06

The pipeline: 785 to 57

The first pass disqualifies and orders. It does not value.

Claim tested

That a first-pass screen should rank companies by the gap between price and estimated value.

Result

Rejected. On this dataset that ranking is arithmetically equivalent to sorting by earnings yield, while looking like analysis.

Output

57 names: 38 AIM, 19 FTSE SmallCap. 41 operating companies, 16 financials.

The model I built and threw away

The obvious design was to estimate a low, central and high value per company from the screener data and rank by the discount to price. I tried it. It does not work, and the reason is arithmetic rather than a matter of taste.

The source file has 89 columns and no absolute financial-statement figures other than market capitalisation and revenue. Every valuation field is a ratio with price already inside it. Absolutes can be recovered legitimately — earnings equal market cap divided by P/E — and that recovery is price-independent. But the value estimate is then recovered earnings multiplied by a multiple I choose:

gap = value / price − 1 = (chosen multiple ÷ market multiple) − 1

Within a sector, that is a monotone transform of 1/PE. The value estimate adds no information whatsoever over sorting by earnings yield, while presenting itself as considered analysis. It is the composite score the specification forbids and the false precision it forbids, arriving together and holding hands.

The empirical run confirmed it. Only 178 of 410 companies were scoreable at all. Eleven of the top twenty by apparent discount carried a distress or manipulation flag. The extreme tail was also where the data errors concentrated, including a Beneish M-score of +31.8 and an Altman Z of 192.8 — not so much outliers as evidence that something has gone wrong upstream. Sector anchors rested on medians of six or seven companies.

Ranking by extremity on this data ranks by probability of data error at least as much as by cheapness.


The universe, and the triage

The raw universe was the full AIM list (597 companies) and the FTSE SmallCap constituents (188), as at 13 August 2026. Everything after that is reproducible from the published files.

Tradability first. Before any analytical work, every name was checked against my own broker for a tradable contract, then for three months of daily bars to compute average volume. A hard gate deliberately placed at the front: a mispricing in a company I cannot buy is a curiosity, not an opportunity. 41 companies failed it.

BucketCountMeaning
Pass275Clean on every availability criterion
Hold196Excluded only by the SETSqx off-book volume gap described in section 05
Excluded314Fund or trust with no meaningful market cap (78), not tradable (41), market cap above £500m (35), dissolved or closed at Companies House (8), confirmed volume below the floor (the remainder)

The Hold bucket is the part I would point at. The lazy version of this pipeline has two buckets and silently loses 196 companies to a limitation in one data feed. Cross-referencing recovered 135 of them, giving a screening universe of 410.

Funnel diagram: 785 narrowed to 5

Five gates

Applied in order, all deterministic, all reproducible from screener_candidates_410.csv.

#GateRemovedLeftWhy
0Input410Tradable, matched to fundamentals data
1Drop resource sector117293Value in an explorer sits in reserves, licences and financing optionality, none of which is in this dataset. 91 of the 117 were loss-making, 59 had no revenue at all
2Positive trailing earnings138155Without positive earnings the earnings frame does not apply. A scope decision, not a verdict on the companies
3Piotroski F-score ≥ 66392A fundamental-momentum floor applied before any reading time is spent
4Solvency, frame-appropriate1577Altman Z ≥ 1.8 for operating companies, net gearing ≤ 150% for financials
5ADV ≥ 1,000 shares2057Removes names with no observable tradeable volume
Gate explorer

Gates apply in order — the flags are cumulative in the source data, so drag the slider to step through the funnel one gate at a time. Counts recompute live from the 410-company screening universe (pipeline_full_785.csv).

1 · Drop resource sector 2 · Positive trailing earnings 3 · Piotroski F-score ≥ 6 4 · Solvency, frame-appropriate 5 · ADV ≥ 1,000 shares
of 410 survive
AIM · FTSE SmallCap
Operating · Financial
Symbol ⇕ Company ⇕ List ⇕ Type ⇕ Value ⇕ Quality ⇕
Loading…

The correction I had to make

An earlier version of this gate produced 49 names. It was wrong. It applied the Altman Z-score to the 67 financial companies, where Z is undefined and generates artefacts. That value of 192.8 mentioned earlier belongs to a bank. Killing companies on a metric that does not apply to them is an accident, not a screen, and eight names failed for no reason at all.

A metric may only gate a company where the metric is defined for that company's frame.

Altman Z and EV/EBITDA are suppressed for financials throughout. Hence 57 rather than 49.

Known defects, stated rather than discovered later

Gate 1 depends on a third-party sector label

At least three resource explorers are misclassified in the source data and leaked through. Flagged in the workbook rather than silently deleted. The resource cut is approximately 117, not exactly.

Everything is trailing twelve months

Capitalising a single trailing figure is the classic small-cap error. Rebuilding multi-year history from primary filings is the entire purpose of the next stage.

The alignment dimension is a placeholder

Share count trend and director dealings are absent from the data and have to be added by hand.

Twenty names removed on volume

Include SETSqx companies that may well be tradable in practice. They sit on an excluded sheet rather than being deleted.

Eleven rows carry data-integrity flags

Most are probably legitimate features of financing or asset-light models, but none should be used before establishing which.

All 353 excluded names are retained

With their exclusion reasons, so a revised gate can be re-run against the full 410. Nothing is deleted from this process, only labelled.


Four dimensions, never added together

Within the 57, four percentile ranks are computed and displayed side by side: value, quality, solvency and alignment. Direction is applied so that 100 is always favourable. Each score is the median of its available components, so a company is not penalised for a missing metric, and component coverage is reported next to it — a dimension backed by one input is a much weaker statement than one backed by five. They are never combined into a single figure. That was the point of writing it down beforehand.

Licensing note
The raw export is withheld
Fundamentals fields originate from a commercial subscription. Published: derived counts, gate logic, my own dimension percentiles, identifiers. The gate explorer runs against a reduced file containing only the columns the gates use, with a line saying why. That reads as judgement rather than as a gap.