Article

Measuring signal decay in an alternative dataset as funds crowd in

Split the history into periods, measure the rank correlation in each, fit the fall, then test for a break before calling it crowding. The statistics come from NIST publications, with an illustrative example worked through.

11 min read

This post sets out a method for measuring signal decay in an alternative dataset as more funds come to use it, and for telling alpha decay through crowding from a break in the data itself. After it you can split a history into periods, measure the relation between a signal and a later outcome in each, fit the fall, and test whether a change of coverage, method or labels explains it. The statistics come from the NIST/SEMATECH e-Handbook of Statistical Methods and NIST's Dataplot documentation. Nothing here is investment advice, and the post makes no claim that any signal predicts a return.

Measuring signal decay in an alternative dataset: is crowding by funds eroding the alpha?

You measure signal decay in an alternative dataset by splitting its history into periods, computing in each the rank correlation between the signal and the later outcome, and fitting a trend to those values. A fall is decay. Attributing it to crowding by funds takes a second step: ruling out a break in the data and chance.

The signal is a number you compute for each company on a date from alternative data, using only what was observable by that date. The outcome is whatever you chose to set it against, measured over the period that follows. Decay is a fall in the relation between the two from the early periods to the late ones. In this post, alpha decay means the same fall when the outcome you chose is a return.

Crowding is one account of such a fall. It holds that as more funds act on the same information, less of the relation is left for each of them. The Bank of England's Financial Policy Committee described a neighbouring risk in April 2025, when it wrote that more advanced AI-based trading strategies, if they come into use, could leave firms holding increasingly correlated positions. A test on the dataset cannot observe who else holds it. It can show a fall, and then remove the other explanations one at a time.

What methodology does a quant use to test alpha decay from crowding in alternative data?

A quant tests alpha decay in alternative data with a five-step methodology: fix the signal, the outcome and the period before looking at results; compute a rank correlation across companies in each period; put an interval on the mean; fit a trend to the per-period values; and test for a break wherever the data itself changed.

1. Fix the test before you look

Write down the signal, the outcome, the lag between them and the length of a period, and keep them fixed. Choosing them after seeing which combination falls fastest turns the result into a search. Build each period's signal only from records observable by the period's start, on the list of companies as it stood then, with the companies that later left the market kept in. That is point-in-time data: it keeps look-ahead bias and survivorship bias out of the early periods.

2. Measure a rank correlation in each period

Within each period, rank the companies by the signal and, separately, by the outcome, give tied values their average rank, and take the ordinary correlation of the two sets of ranks. That is the Spearman coefficient as NIST's Dataplot documentation defines it: plus 1 for perfect positive correlation, minus 1 for perfect negative correlation and 0 for no relation.

For more than 30 observations the same page approximates the upper quantile of the coefficient under independence by the normal quantile divided by the square root of the sample size less one. With 5,000 companies the 0.975 quantile is 1.960 divided by the square root of 4,999, about 0.028. A single period's value inside plus or minus 0.028 is within what unrelated data would give 19 times in 20.

3. Put an interval on the mean

Collect the per-period correlations into one series and take its mean and standard deviation s. The handbook's confidence limits for the mean are the mean plus or minus the t critical value times s over the square root of N, where N is the count of periods and the t value has N less one degrees of freedom.

The formula treats the periods as a random sample. Check that with the series' lag 1 autocorrelation, which the handbook uses to detect non-randomness, and keep one period's outcome window from overlapping the next.

4. Fit the fall

Regress the per-period correlation on the period number by linear least squares, which estimates the parameters by minimising the sum of squared deviations between the data and the model. The slope is the change in the correlation per period, and the fit gives an interval for it. A slope whose interval includes zero has not shown decay. The handbook warns that one or two outliers can seriously skew a least squares fit, so plot the series before you trust the line.

Where the fall levels off, the handbook's section on nonlinear least squares gives an exponential form, b0 + b1 * exp(-b2 * x). Fitted to the series, b0 is the level the relation settles at, and by the algebra of that form the gap above it halves every ln 2 / b2 periods, about 0.693 / b2. That fit is iterative and needs starting values. Report the half-life with its interval, never as a point alone.

5. Test for a break

List every date on which the data itself changed: its coverage, its collection or calculation method, or a label version. At each known date, compare the per-period values before and after with the handbook's two-sample t-test for equal means, in the form for unequal variances, and reject equality when the absolute statistic exceeds the t critical value.

For a break nobody documented, use a CUSUM chart, which the handbook describes as more efficient than Shewhart charts at detecting small shifts in the mean of a process. Accumulate each period's deviation from the mean of the early periods. By plain arithmetic, a sum that wanders around zero and then drifts down in a straight line marks a step at the turn. A sum that bends away more steeply each period marks a gradual fall.

Decay through crowding or a break in the data: what each explanation predicts

Each explanation of a fall leaves a different trace, and all but one can be checked on the dataset.

ExplanationWhat the per-period series showsWhere else it showsThe check
CrowdingA fall tied to no date in the data's own recordNowhere in the signal: coverage and spread hold steadyWhat remains when the checks below are clear
Change of coverageA step or a drift as companies enter or leaveThe count and mix of companies in each periodRecompute on a fixed cohort present in every period
Change of methodA step on the date collection or calculation changedThe level or spread of the signal jumps on that dateTwo-sample test before and after the date
Change of labelsA step on the date a definition changedThe share of companies under each label value jumpsRecompute within one label version
History rebuilt afterwardsA relation that can look stronger in rebuilt periods than in live onesTwo loads of the same closed period differCompare two loads, and test the live periods alone
ChanceNo shape that repeatsNowhereThe interval on the slope includes zero

One rule separates the rows. A break in the data shows in the signal alone, before any outcome is attached. Crowding would show only in the relation.

How many periods the test needs

The count of periods is a property of the test you choose, and you can compute it before you start. The handbook's section on sample sizes required gives it for a two-sided test of a mean.

N = (z(1 - alpha/2) + z(1 - beta))^2 * (sigma / delta)^2

Here alpha is the risk of rejecting a true hypothesis, beta the risk of accepting a false one, sigma the standard deviation of the per-period values and delta the shift in their mean that you want to detect. At alpha 0.05 and beta 0.10 the two normal quantiles are 1.960 and 1.282, the square of their sum is 10.51, and the handbook's table gives these counts.

Shift to detect, in standard deviationsPeriods needed
0.543
1.011
1.55

A before-and-after comparison needs about twice each count on either side, because the two-sample statistic carries the noise of both sides. That doubling is this post's own algebra on the handbook's formula and not a figure the handbook gives: for two sides of equal size and equal variance it yields 85, 22 and 10 periods a side. A wider cross-section lowers the count as far as sigma is sampling noise, which falls with the square root of the number of companies. The formula needs the standard deviation, and the handbook suggests the best estimate from an earlier experiment, so take sigma from a first pass and state it.

An illustrative example: a fall that turns out to be a break

This example is illustrative. Every figure in it is invented to show the arithmetic, and none is a finding about any dataset.

Assumptions:

  • A researcher's own panel ranks 5,000 companies in each period, and the test covers 12 periods of equal length. Acme Robotics, an invented company, is one of the 5,000.
  • The signal is the share of each company's open postings that fall in one job function. The outcome is a company measure of the researcher's choosing over the following period.
  • The source redefined its job-function labels between periods 6 and 7 and put no version name on the rows.
  • The twelve rank correlations are those in the table. The third column is the running sum of each value's deviation from 0.07, the mean of periods 1 to 6.
PeriodRank correlationRunning sum
10.070.00
20.06-0.01
30.090.01
40.070.01
50.05-0.01
60.080.00
70.03-0.04
80.04-0.07
90.02-0.12
100.03-0.16
110.02-0.21
120.04-0.24

The fitted line. The twelve values sum to 0.60, so their mean is 0.05. With the periods numbered 1 to 12, the squared deviations of the period number from its mean of 6.5 sum to 143, and the cross-products with the correlations sum to -0.72. The slope is -0.72 / 143, or -0.0050 a period, and the line runs from 0.078 in period 1 to 0.022 in period 12. Read alone, that is steady decay.

The break test. Periods 1 to 6 have a mean of 0.07 and a variance of 0.0002. Periods 7 to 12 have a mean of 0.03 and a variance of 0.00008. The two-sample statistic is 0.04 divided by the square root of 0.0002 / 6 + 0.00008 / 6, which is 0.04 / 0.00683, or 5.86, on about 8 degrees of freedom. The handbook's table of t critical values gives 2.306 for a two-sided test at the 0.05 level, so the two halves differ.

The shape. Inside each half the fitted slope is zero, because the cross-products sum to 0.000 in both. The running sum stays within 0.01 of zero through period 6 and then falls by 0.03 to 0.05 in every period, a straight drift from one turn. The series is two flat levels with a step between them, which a single line across all twelve periods reports as decay.

The reading. The step sits on a date the data changed, so the label change is the first suspect and crowding is not shown. The next check is to label both halves under one definition and recompute. Acme Robotics shows the mechanism: with the same postings open, its share of roles in the function, and so its rank among the 5,000, moves when the definition of the function moves.

The count of periods. Six periods a side caught this step because it was large: 0.04 against a standard deviation of about 0.014 in the first half, close to three standard deviations. At the risks above, a fall of one standard deviation would need about 22 a side, twice the handbook's count for one mean.

What the dataset must supply for the test to be honest

Three properties of a dataset decide whether the method measures the market or the vendor.

PropertyWhat it does for the testThe check on sample data
Dated observationsEach period's signal uses only records observable by its startConfirm each record carries an observation time beside the event date
History written onceThe early periods are what a fund could have held at the timeKeep two loads of one closed period, some weeks apart, and compare the rows
Frozen label versionsA change of definition is named on the row, so a step can be tied to itGroup the rows by label version and period

Fokals data is built on all three. Each record carries the time it was observed. Daily and weekly datasets are written once, after the period closes, and are never revised, and a period written late carries a flag. A first observation sets a baseline and is never counted as a change, so a company added to the index brings no burst of activity into a signal. Labels and scores carry a named version on every row, and a breaking change ships as a new version with at least 90 days' notice. The weekly Market Series are built on same-store cohorts, and a listing that leaves its market is marked as delisted and kept. The methodology states the time conventions, and why we write each table once shows how to verify them.

Before any outcome enters, screen the data for breaks. The query below reads Intent Scores and returns, for each week, the scoring version, the count of companies scored and the rows written late. A step in any column is a date for step 5.

select week_start,
       intent_version,
       count(distinct company_id) as companies,
       sum(case when reconstructed then 1 else 0 end) as late_rows
from company_intent_weekly
group by week_start, intent_version
order by week_start;

The data dictionary defines each field.

What does research say about alternative data signal decay as fund adoption grows?

We found no official figure for how fast a signal from an alternative dataset weakens as fund adoption grows. We looked in the publications of central banks and securities regulators for a published rate and found none. What official sources do supply is the statistics to measure decay on your own data.

A decay rate measured on one dataset, one outcome and one set of periods describes that test and carries over to another dataset only by assumption. When one is quoted to you, ask for the per-period values, the counts of periods and companies, the interval and the dates on which the data changed. Then run the five steps on sample data, joined to the outcomes you hold as mapping alternative data to a security master describes.

Frequently asked questions

What is signal decay in alternative data?

Signal decay is a fall over time in the relation between a signal built from a dataset and the later outcome it is set against. It is measured by computing that relation period by period and fitting a trend to the results. A fall can be put down to wider use of the data, to a change in the data itself or to chance, and the measurement has to separate the three.

How is alpha decay different from a break in the data?

Alpha decay is a weakening of the relation between a signal and a return while the data stays the same. A break is a change in the data: its coverage, its collection method or its labels. A break shows in the signal alone, as a step in the count of companies or the spread of values on a known date. Decay shows only in the relation with the outcome.

Which statistic measures the relation between a signal and an outcome in each period?

A rank correlation across companies suits the purpose. Rank the companies by the signal and by the outcome, and correlate the ranks. NIST's Dataplot documentation defines the Spearman coefficient this way, with average ranks for ties and values from minus 1 to plus 1. Because it works on ranks, one extreme company cannot dominate a period.

How many periods do I need to detect signal decay?

The count depends on the test, and you can compute it in advance. For a two-sided test of one mean with a 0.05 risk of rejecting a true hypothesis and a 0.10 risk of accepting a false one, the NIST handbook's table gives 11 periods to detect a shift of one standard deviation of the per-period values, 43 for half a standard deviation and 5 for one and a half. A before-and-after comparison needs about twice as many on each side: 22, 85 and 10 by this post's own algebra on the handbook's formula, for two sides of equal size and equal variance.

Can a back-test prove that crowding caused the decay?

No. A back-test can show a fall and rule out other explanations: a change of coverage, of method or of labels, history rebuilt afterwards, and chance. Crowding is the account left standing when those are cleared, and it stays an inference. Evidence on who else uses a dataset comes from outside the data.

What must a data vendor supply for a decay test to be trustworthy?

Three things: an observation time on every record, history that is written once and never revised, and labels produced under named versions that are carried on the rows. Fokals data has all three. Each record carries the time it was observed, daily and weekly datasets are written once after the period closes, and labels and scores carry a named version on every row.

The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.

What this page says about the products it names was checked against their public documentation on 7 October 2026. Product and company names are trademarks of their owners. Fokals is not affiliated with them or endorsed by them.