Hekir
A company’s peer set quietly load-bears across relative-value trades, pairs, ETF construction, and risk models — yet the market’s default answer is GICS, a committee-assigned taxonomy keyed to a firm’s primary source of revenue. I test an alternative that defines peers by what a firm actually says it does, and ask where the two part ways.
- Python
- sentence-transformers
- all-MiniLM-L6-v2
- Qdrant
- UMAP
- Docker
I embedded the business descriptions of 502 S&P 500 firms with all-MiniLM-L6-v2 (a 384-dimensional sentence-transformer that runs locally with no API), loaded the vectors into a Qdrant collection, and queried each firm’s ten nearest semantic neighbors. The neighbors land in the firm’s own GICS sector 65.2% of the time against a size-based random expectation of 10.9% — a 6× lift — so the embeddings recover sector structure strongly without ever being told what a sector is.
The remaining third of crossings is the interesting part, and it isn’t noise. Measured as lift over a firm-count baseline (so a sector’s raw size is divided out) and significance-tested against a 2,000-iteration label-permutation null, the off-diagonal structure concentrates at a handful of economically sensible boundaries — Energy→Utilities, Materials→Consumer Staples, Communication Services→Information Technology — and runs asymmetrically, in a donor-to-attractor pattern where small, heterogeneous sectors reach into large, coherent ones.
At the firm level the crossings isolate names GICS arguably misplaces: Broadridge (filed under Industrials, but its five nearest neighbors are all banks and exchanges), Berkshire Hathaway (a genuine multi-sector conglomerate with no clean single-label peer set at all), and Ecolab. The payoff is a data-driven peer basket that doesn’t depend on a committee’s call — and a diagnostic for where sector ETFs may be carrying firms that don’t behave like their labelmates.




