When a company's biggest customers matter more, does the stock follow?
Our company pages track every 10% customer in SEC annual reports. A quant's first question is whether a change in that dependence predicts returns. We fixed the test on 2026-10-18, before running it, and publish the result either way.
The test, fixed before the first run
One primary question, one decision rule, and secondary rows that are reported but never used to pick a winner. The code is versioned as cc-v1.1; a change creates a new version.
- Events. Every 10-K and 20-F of a US-listed company that discloses at least one customer worth 10% of revenue. Concentration is the sum of those shares (named and anonymous customers; sales channels and group companies excluded).
- Change. Both years come from the same filing (current year and prior-year comparative), so nothing is used before it was public. Rising: +5 points or more. Falling: −5 points or more.
- Returns. Stock minus S&P 500 (SPY), buy-and-hold, from trading day +2 after the EDGAR filing date to day +61. Prices under $1 excluded; extremes winsorised at 1% and 99%.
- Chance. Labels are shuffled only among companies that filed in the same month (5,000 times), so a market move that hit everyone filing in March cannot create a result. 95% intervals resample whole months.
- Rule. A signal only if p < 0.01, the sign is the same before and from 2021, and the spread is at least 1 point, enough to survive about 1% round-trip costs.
Results
| Test | Window (trading days) | Events | Group A | Group B | Spread | 95% interval | p |
|---|---|---|---|---|---|---|---|
| Change in concentrationPrimary | +2 to +61 | Rising 960 · Falling 1,184 | −8.64% | −7.50% | −1.14 pts | −4.4 pts to +1.6 pts | 0.436 |
| Same, before 2021Stability | +2 to +61 | Rising 229 · Falling 295 | −1.34% | −2.26% | +0.92 pts | −2.7 pts to +4.5 pts | 0.771 |
| Same, from 2021Stability | +2 to +61 | Rising 731 · Falling 889 | −10.93% | −9.24% | −1.69 pts | −5.9 pts to +1.7 pts | 0.322 |
| Filing-day reactionSecondary | 0 to +1 | Rising 979 · Falling 1,198 | −0.91% | −0.83% | −0.08 pts | −1.0 pts to +0.8 pts | 0.853 |
| One monthSecondary | +2 to +21 | Rising 975 · Falling 1,195 | −3.70% | −3.44% | −0.26 pts | −1.8 pts to +1.2 pts | 0.750 |
| One yearSecondary | +2 to +250 | Rising 783 · Falling 976 | −26.70% | −25.76% | −0.94 pts | −6.8 pts to +5.2 pts | 0.808 |
| Against small caps (IWM)Secondary | +2 to +61 | Rising 960 · Falling 1,184 | −6.83% | −5.53% | −1.31 pts | −4.6 pts to +1.4 pts | 0.361 |
| Level: most vs least concentrated thirdSecondary | +2 to +250 | Top 1,458 · Bottom 1,458 | −27.25% | −18.88% | −8.37 pts | −15.4 pts to −2.1 pts | 0.003 |
Group A is rising concentration (or the most concentrated third in the level row), group B falling (or least concentrated). Returns are log returns relative to the benchmark. Rows with fewer than 20 events per group get no spread.
Year by year
Largest changes since 2024
| Company | Filed | Concentration | Change | Next 3 months vs S&P 500 |
|---|---|---|---|---|
| RZLV | 2026-03-30 | 100% → 0% | −100 pts | −17.7% |
| LPCN | 2024-03-07 | 100% → 10% | −90 pts | +64.0% |
| AMZE | 2026-04-01 | 80% → 0% | −80 pts | −17.1% |
| CAL | 2024-04-02 | 77% → 0% | −77 pts | −17.2% |
| EBON | 2024-04-26 | 76% → 0% | −76 pts | −26.1% |
| DRCT | 2024-10-15 | 73% → 0% | −73 pts | −61.7% |
| JRSH | 2024-06-28 | 28% → 100% | +72 pts | −3.7% |
| QSJC | 2025-03-26 | 32% → 100% | +68 pts | −126.1% |
| ELAB | 2024-03-29 | 99% → 34% | −65 pts | −21.0% |
| INLX | 2025-03-24 | 35% → 100% | +65 pts | +3.6% |
| STEM | 2025-03-05 | 60% → 0% | −60 pts | +4.8% |
| OFAL | 2026-07-14 | 37% → 95% | +58 pts | −119.2% |
Limitations
- Survivorship: prices come from current tickers, so companies that were delisted or acquired since are missing; this flatters average returns but affects both groups.
- Only companies that disclose at least one 10% customer are in the sample, so the level test compares concentrated companies with less concentrated ones, not with unconcentrated ones.
- Market-adjusted returns do not remove size, industry or momentum effects; the IWM row shows the result against small caps.
- Gross of trading costs; many filers are small and illiquid.
- Returns are log returns, which sit below simple returns for volatile stocks (a 70% annual volatility costs about 25 points a year). Both groups carry this, so the spread compares like with like, but the absolute averages look worse than an investor's experience.
Changelog
cc-v12026-10-18First run. Implementation error: groups of customers in the filings ("top ten customers", "two customers") were added to single-customer shares, which pushed 854 of 6,575 filings to 100%. Result: spread −0.19 points, p 0.88, no signal.
cc-v1.12026-10-18Same design and rule. Customer groups excluded, and a year that a filing reports only as groups counts as unknown instead of zero (an intermediate run without that second fix gave −1.13 points, p 0.42). This is the published result.
Sample: 6,575 annual filings, 6,401 with prices (1,290 of 1,321 tickers found), 338 excluded under $1; 2,795 steady and 1,401 without a prior-year column. Prices: Yahoo Finance adjusted closes. Filings: SEC EDGAR XBRL. Run 2026-10-18.
Follow-up: do the most dependent companies underperform? No effect
The change test above showed one striking secondary row: the most concentrated third of companies trailed the least concentrated third over the following year. That row used log returns, which run lower for volatile stocks, and concentrated companies are more volatile. We fixed a new test (cc-v2, registered 2026-10-18) before running it: simple returns, and each company compared only with companies of similar volatility that filed in the same year.
Supported only if p < 0.01 (labels shuffled within filing month and volatility quintile), the same sign before and from 2021, |spread| >= 3 points, and a calendar-time alpha of the same sign with |t| >= 2.
| Test | Returns | High · low | High | Low | Spread | 95% interval | p |
|---|---|---|---|---|---|---|---|
| Volatility-matchedPrimary | simple, vs SPY | 1,426 · 1,426 | −2.5% | −4.3% | +1.8 pts | −4.4 pts to +7.3 pts | 0.463 |
| Same, before 2021Stability | simple, vs SPY | 448 · 448 | +8.8% | +10.1% | −1.3 pts | −8.1 pts to +5.8 pts | 0.756 |
| Same, from 2021Stability | simple, vs SPY | 978 · 978 | −7.7% | −10.9% | +3.3 pts | −5.5 pts to +10.6 pts | 0.256 |
| No matchingSecondary | simple, vs SPY | 1,426 · 1,426 | −3.9% | −3.2% | −0.7 pts | −7.4 pts to +5.5 pts | 0.772 |
| No matchingSecondary · replicates the lead | log, vs SPY | 1,426 · 1,426 | −25.5% | −18.9% | −6.7 pts | −13.3 pts to −0.6 pts | 0.004 |
| Matched on dollar volumeSecondary · size proxy | simple, vs SPY | 1,426 · 1,426 | −5.2% | −4.6% | −0.6 pts | −7.5 pts to +5.5 pts | 0.808 |
| Volatility-matchedSecondary | simple, vs IWM | 1,426 · 1,426 | +1.4% | −0.0% | +1.5 pts | −4.6 pts to +6.9 pts | 0.529 |
Window: trading days +2 to +250 after the filing. Volatility check: the high group averaged 64% annualised volatility and the low group 69% after matching (73% vs 65% before). Concentration: 74% vs 13% of revenue from 10% customers.
Inside each volatility band
| Volatility band | Annualised volatility | Pairs | Spread | p |
|---|---|---|---|---|
| 1 (calmest) | 27% | 284 | +1.2 pts | 0.599 |
| 2 | 40% | 286 | +6.7 pts | 0.216 |
| 3 | 52% | 284 | +0.3 pts | 0.949 |
| 4 | 70% | 286 | −6.5 pts | 0.249 |
| 5 (most volatile) | 144% | 286 | +7.4 pts | 0.372 |
In calendar time
Monthly long-short mean +0.12% (Newey-West t 0.52); alpha after SPY and IWM-minus-SPY +0.29% per month (t 1.30), betas -0.12 and 0.13. On an average day 114 stocks long and 114 short, 2014-04 to 2026-07.
- Survivorship: companies delisted or acquired since are missing. If highly concentrated companies fail more often, the missing failures make the high group look better than it was.
- The short side is small, often illiquid stocks; borrow fees can be several percent a year and some names cannot be borrowed at all.
- Volatility and dollar volume are controlled; industry is not. Single-customer biotech and defence contractors cluster in the high group.
- Market cap is not in our data; dollar trading volume stands in for size.
Sample: 4,325 filings with a full year of prices after the filing and a year of history before it, 2,852 in the high or low third. Left out: 136 without prices, 282 under $1, 77 with less than 120 days of history, 954 without a price 250 days later (mostly filed in the last year). Run 2026-10-18.