> ## Content Index
> Fetch the complete content index at: https://aligrithm.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# 4.88 Lead-Lag Obeys a Power Law — Which Finally Gives You a Definition
- URL: https://aligrithm.com/lead-lag-obeys-a-power-law-which-finally-gives-you-a-definition/
- Published: 2026-11-06T05:30:00.000Z
- Updated: 2026-11-06T05:29:59.000Z
- Description: Stock lead-lag is a day count: today's close must sit in a band of yesterday's leader, and the pair counts only past a random-graph cutoff. The CSI 300 tail falls as d to the -20.24.
- Author: ali askar
- Tags: 4. Market Structure Notes

Li, Wang, Sun, and Liu count, for every pair inside the CSI 300 (the large-cap mainland China index) and inside the S&P 500, how many days from 2010 through 2019 one name's close-to-close return landed inside a band of the other's previous-day return. The counts pile up at low values and then fall off a cliff, and the CSI 300 cliff fits a probability proportional to the day count to the power -20.24\. They mark a lead-lag effect only where that count sits in the 0.001 tail of a rewired network that keeps each name's number of links for the day and swaps which pairs are joined. The old article ["Lead-Lag Relationships in Global Markets"](https://aligrithm.com/lead-lag-relationships-in-global-markets/) reads a lag off the cross-market chart. This cut is that lag scored as a day count against the rewired graph.

## Today's return has to land inside yesterday's band

The return is the close-to-close change on a price already adjusted for splits and dividends. They call that the restoring-the-right price. A suspension blanks that day's return and the next day's return, which keeps the reopen gap out of both.

$$ r\_{i,t} = \\frac{p\_{i,t} - p\_{i,t-1}}{p\_{i,t-1}} $$

p is the adjusted close of name i on day t. The fraction is today's close minus yesterday's close, divided by yesterday's close. A close of 50 after a close of 49 is (50 - 49) / 49 = 0.0204, a 2.04% up day.

A link from leader j to follower i on day t requires today's return to sit inside a multiplicative band of yesterday's leader return. The width is delta, a threshold you choose, with 0 ≤ delta < 1\. The printed cases split on the sign of today's follower return.

$$ \\begin{aligned} (1 - \\Delta)\\, r\_{j,t-1} \\le r\_{i,t} \\le (1 + \\Delta)\\, r\_{j,t-1} & \\quad \\text{when } r\_{i,t} \\ge 0, \\\\ (1 + \\Delta)\\, r\_{j,t-1} \\le r\_{i,t} \\le (1 - \\Delta)\\, r\_{j,t-1} & \\quad \\text{when } r\_{i,t} < 0\. \\end{aligned} $$

Scale yesterday's leader return up and down by delta, and ask whether today landed inside that interval. Opposite signs never land inside it: after an up day the positive branch lives entirely above zero, and after a down day the negative branch lives entirely below zero. A name may also match itself. If today's return sits inside a band of its own yesterday, that self-match is a link, and a long enough run of them is an effect of the stock on itself. That is short-horizon momentum counted as lead-lag.

Worked at delta = 0.20, the width they use for the tail plot. Yesterday's leader return is +2%, which is 0.02\. The lower edge is 0.80 times 0.02 = 0.016\. The upper edge is 1.20 times 0.02 = 0.024\. Today at +2.1% counts. Today at +3.0% does not. Yesterday at -2%, and today negative: the edges are 1.20 times -0.02 = -0.024 and 0.80 times -0.02 = -0.016\. Today at -2.1% counts. The book they trade later uses delta = 0.10\. At that width a leader return of -3% forces today into -3.3% to -2.7%.

The old article ["Lead-Lag Is Multidimensional: Trade Price and OBI Predict Others' Midpoints"](https://aligrithm.com/lead-lag-is-multidimensional-trade-price-and-obi-predict-others-midpoints/) forecasts another name's midpoint from the trade price and the order-book imbalance, on an intraday clock. This link asks whether one daily close landed inside a band of yesterday's close-to-close return. Keep the midpoint forecast if you already run it. Use the day count as the daily screen.

## A pair is an effect only when the day count clears a random-graph cut

Write g as 1 when the band holds and 0 when it does not. The day count d for follower i and leader j is the sum of those bits over the sample.

$$ d\_{ij} = \\sum\_{t=1}^{T} g\_{ij,t} $$

T is the number of days with a network, one less than the number of closes, because each return needs a previous close. Each term is that day's link. Ten links in a month give a count of 10, whether they arrived in a row or scattered. An occasional match is common. The effect, in their definition, is a count long enough to be rare under a null.

The null keeps each day's degree sequence and rewires the pairs. A name that moved with the tape still has the same number of leaders and the same number of followers. What changes is which names it was tied to. They point the rewiring at the directed configuration model, repeat it across every day, sum the links the same way as the real count, and do that whole pass 500 times. Pool every simulated pair-count. The cut is the upper 0.001 quantile of that pool. Table 1 describes the quantile and does not print an expression. The operational form is the quantile of the pooled null counts.

$$ \\hat{d} = Q\_{1-\\delta}\\big(\\{r\_{ij}\\}\\big) $$

The left-hand side is the cut. The curly set is every accumulated count from the rewirings. The source writes those simulated counts as r with a pair subscript, the same letter it used for returns. In this card the set is the counts. The significance level in the subscript is 0.001\. A real pair whose count is at least the cut is marked as an effect, leader to follower. The old article ["Stop Using Pairwise Granger: PCMCI for Financial Causality"](https://aligrithm.com/stop-using-pairwise-granger-pcmci-for-financial-causality/) drops pairwise Granger as the causality test. Li, Wang, Sun, and Liu skip Granger too. Their substitute is this quantile. It asks whether this pair repeated more often than the degree sequence allows.

![Histogram of accumulated lead-lag days under 500 degree-preserving rewirings of a 10-name example. The mass sits at 0 to 5 days. An orange arrow marks the 0.001 cut at 6 days, and the null tail from 6 upward sums to 0.00099](https://storage.ghost.io/c/27/cb/27cb0fc8-2c77-4434-af9e-d5d32a916994/content/images/2026/10/article_569-null_daycount_cutoff.png)

The orange arrow is the cut. In the example, 10 names and 11 closes produce 10 daily networks. At a significance level of 0.001 the cut equals 6, and the null probability of a count of 6 or more is 0.00099\. Three directed pairs clear it, 3 into 4, 4 into 5, and 6 into 7\. The tail mass 0.00099 sits under 0.001, which is what a discrete quantile at that level should do. That check holds.

The paper never prints the decade-long cut. You can rebuild it from the closes. The cut is a marginal quantile, so the number of pairs never enters it. On a 300-name day, 300 squared times 0.001 is 90 pairs expected to clear under the null. On a 500-name day the same product is 250\. Membership rolls, so treat 90 and 250 as the scale of the null leak. They never print how many pairs cleared in 2010-2019\. The marked set can be a thick layer of chance pairs plus a thinner layer of repeating ones, and the backtest does not separate them.

## The cliff is a steep power law, and only the cliff is fit

The red points are the fitted tail. The blue points are the rest of the histogram.

![Log-log plot of the probability of an accumulated day count, CSI 300 on the left and S&P 500 on the right, at a band width of 0.20. Blue points cover the body. Red points are the tail fit, labeled d to the -20.241 with p-value 0.460 on the CSI 300, and d to the -28.584 with p-value 0.993 on the S&P 500](https://storage.ghost.io/c/27/cb/27cb0fc8-2c77-4434-af9e-d5d32a916994/content/images/2026/10/article_569-daycount_tail_powerlaw.png)

$$ p(d) \\propto d^{-\\lambda} $$

Lambda is the tail exponent. On the CSI 300, at a band width of 0.20, the figure prints lambda = 20.241 and a p-value of 0.460\. On the S&P 500 it prints lambda = 28.584 and a p-value of 0.993\. Neither test rejects the tail fit at 0.05\. The blue points are the body, and they stay well above the drop. A scale-free story usually carries an exponent near 2 or 3, which leaves mass far out. An exponent of 20 is a wall.

Worked on the CSI fit. Raise the count from 100 days to 141 days. The ratio of the fitted probabilities is (141 / 100) to the power -20.241, which equals 0.000954\. A count of 141 days is about a thousand times rarer than a count of 100\. The exact thousandfold drop is a factor of 1.407 on the day count, 100 days against 140.7\. Doubling the count is harsher: 2 to the power -20.241 equals 8.07 times 10 to the -7\. They want the power law to leave a usable number of pairs out past the cut. With an exponent of 20 the fitted probability collapses as soon as the count rises, and the far tail is almost empty. The tail is longer than a Poisson. They reject a Poisson in every row they print, with p-values shown as 0.000\. A binomial survives one column, the Kuiper test at a band width of 0.15, with p-values 0.180 on the CSI 300 and 0.178 on the S&P 500\. Longer than a Poisson, and still a cliff.

Two further cracks in the fit. The table note writes the probability as k to the power of minus lambda-hat, and the column prints lambda-hat = -20.241\. Minus a negative number makes the probability rise with k. The figure prints a decaying power, d to the -20.241, and the points fall. Keep the figure. The source may have stored the log-log slope and then written the formula as if that slope were already the positive exponent. At the same CSI sample the Kuiper column prints -16.577 while the Kolmogorov-Smirnov column prints -20.241\. The three procedures do not agree on the exponent they then decline to reject.

The rule that marks a pair is the simulated cut from the previous section. The power law describes the empirical histogram. They are different objects. The tail plot uses a band width of 0.20 and the book uses 0.10\. Their Kolmogorov-Smirnov distance between those two CSI day-count distributions is 0.191, with a p-value of 0.070, so they treat the shift as insignificant at 0.05.

## The holding is the leader's return, weighted by how often the pair matched

On the pairs that cleared the cut, the strength of leader p on follower q is that pair's day count divided by the sum of day counts.

$$ s\_{pq} = \\frac{d\_{pq}}{\\sum\_{p \\in N,\\, q \\in M} d\_{pq}} $$

The printed sum uses p and q both as the pair you are scoring and as the indices running over leaders N and followers M. The reading that makes s a share of all match-days is a sum over every detected pair. That denominator is the same for every pair, so it cancels in the next normalization. The index collision does not move the holdings.

Each day, the influence on follower q is the sum of its leaders' returns that day, each weighted by s.

$$ w\_{q,t} = \\sum\_{p \\in N} r\_{p,t}\\, s\_{pq} $$

r is the leader's close-to-close return on day t, the same definition as the first card. This is the lag the count was built for. Historically the follower's today matched the leader's yesterday. At the close of day t, the leader's return that has printed is the forecast for the follower's next return.

Divide by the sum of influences across followers. That ratio is the holding.

$$ v\_{q,t} = \\frac{w\_{q,t}}{\\sum\_{q \\in M} w\_{q,t}} $$

The sum runs over every follower. The q on the left is the name you are sizing. If v is positive, set the market value of q to v times capital. If v is zero or negative, hold none of q. They do not short.

Worked with one leader and two followers, match counts 80 and 20\. The shares are 0.80 and 0.20\. The leader returned +2%. Influences are 0.02 times 0.80 = 0.016, and 0.02 times 0.20 = 0.004\. The weights are 0.016 / 0.020 = 0.80 and 0.20\. On 1,000,000 of capital you hold 800,000 and 200,000\. The leader returned -2%: both influences flip sign, both weights are negative, and you hold cash.

A mixed day breaks the printed denominator. The first follower's leader returned +2% and the second follower's leader returned -1%, with the same shares 0.80 and 0.20\. Influences are 0.016 and -0.002\. The signed sum is 0.014\. The positive weight is 0.016 / 0.014 = 1.143, so you would hold 1,142,857 of a 1,000,000 book, and the negative name is flattened to zero. The source printed the signed sum. It did not print a second pass after the negative influences are dropped. I am against that weight. Zero the negative influences first, then divide by the sum of what remains. In this example the whole book sits in the first follower, unlevered.

The blend adds a monthly rank on the follower set. Their worked factor, alpha-01, ranks the correlation of the open with volume. Sort the correlations from high to low, so the weakest correlation receives the largest rank number RK. N is the number of names in that rank.

$$ \\alpha^{01}\_{i} = \\frac{RK\_{i} - 1}{N - 1} - \\frac{1}{2} $$

The rank runs from 1 to N, and the formula maps it onto -0.5 to +0.5\. Worked at N = 300\. The weakest open-volume correlation has RK = 300, and alpha = 299 / 299 - 1/2 = 0.5\. The strongest has RK = 1, and alpha = -0.5\. A middle rank of 151 gives 150 / 299 - 1/2 = 0.0017.

The appendix then prints alpha-01 and alpha-04 as the same expression, a rank of minus the 20-day open-volume correlation, minus one half. Table 9 and Table 10 give those two factors different daily means. The formula list and the backtest disagree, and the source may have duplicated a line. The joint rule that turns this alpha and the lead-lag weight v into one position is unprinted. They say the factor selects names and the day count sizes them, and they say the two clocks match, while the factor is marked at month-end and v is an end-of-day quantity. The position you can code is v.

## The sign hit rate is what picks the band

Zeta is how many months of history you use to mark pairs. They then score the following month and roll forward. A move is recorded as +1, -1, or 0, and the size is thrown away. Several leaders vote by majority. A tie calls 0\. They describe the monthly accuracy as the average of those hits and do not print an expression.

$$ \\mathrm{acc} = \\frac{1}{|M|} \\sum\_{q \\in M} \\mathbf{1}\\{\\hat{s}\_{q} = s\_{q}\\} $$

M is the follower set that month. The indicator is 1 when the voted sign matches the follower's sign. Average across followers, then average those monthly scores. They report 120 monthly scores over the decade.

At a lookback of 4 months the CSI 300 mean is 0.525, the printed dispersion is 0.065, and the t-statistic against 0.50 is 4.202\. Treat the dispersion as the standard deviation of the 120 months: (0.525 - 0.50) / (0.065 / square root of 120) = 4.21\. That matches the printed t-statistic up to rounding, so the column labeled standard error is the sample standard deviation. The S&P 500 at the same lookback has mean 0.639, dispersion 0.054, and a printed t-statistic of 28.277\. The same arithmetic gives 28.20\. Moving the mean by less than a thousandth closes the gap, so the S&P figure is the same test with a rounded input.

The best cell on their grid, in both markets, is a band width of 0.10 and a lookback of 4 months. That cell sits on the edge of the grid. They never show a band tighter than 0.10\. Across lookbacks from 1 month to 6 months the means stay inside about two percentage points: 0.511 to 0.525 on the CSI 300, and 0.623 to 0.639 on the S&P 500\. The lookback is quiet. The level is the result. A 52.5% sign hit on the CSI 300, with magnitude discarded and a three-way label scored against 50%, is a thin edge. The source does not print the tie rate, or the rule that turns a continuous return into a zero. The 50% line is the benchmark they use for that three-way score. The S&P 500's 63.9% is the hit rate that could pay, if the fill exists. The monthly score itself walks forward. The choice of this cell is made on the same 2010-2019 sample the book is then judged on.

## On the S&P the blue bar clears the market line

Look at the blue bars against the orange line. Blue is the lead-lag blend, cyan is the factor on its own, orange is buy-and-hold of the index, and the red dashed line is the upper 5% of 5,000 random round-trips.

![Mean daily return by alpha factor, 1 through 20. The CSI 300 panel is scaled in ten-thousandths and the S&P 500 panel in thousandths. Cyan bars are the factor alone, blue bars are the lead-lag blend, the orange line is buy-and-hold, and the red dashed line is the upper 5 percent of random round-trips](https://storage.ghost.io/c/27/cb/27cb0fc8-2c77-4434-af9e-d5d32a916994/content/images/2026/10/article_569-alpha_enhancement_mean_returns.png)

On the S&P panel, factor 1 prints 15.30 basis points a day for the blend, 10.10 for the factor alone, and 7.40 for the market. Every CSI factor-only bar is negative and every CSI blend bar clears the orange line. Every S&P blend bar clears its own factor bar.

The pure lead-lag book sits in Table 9\. The figure draws the factor and the blend. Its S&P mean is 0.00116 and its printed standard deviation is 0.00887\. The printed Sharpe ratio is 0.87648.

$$ SR = \\frac{\\bar{r}}{s}\\sqrt{252} $$

Mean daily return over the printed standard deviation, on a 252-day year. For that S&P pure book, 0.00116 / 0.00887 times the square root of 252 equals 2.08\. The table prints 0.88\. The CSI factor-1 blend is the row that lands close: 0.00031 / 0.00692 times the square root of 252 equals 0.71, against a printed 0.70\. Across the four CSI rows the printed Sharpe runs from 0.90 times this rebuilt ratio to 1.54 times it. On the S&P the strategy rows print around 0.4 to 0.5 of the rebuilt ratio, and the market row prints 0.64\. No single risk-free rate and no single day count lines the column up. A sentence in the text gives the factor-1 blend means as 0.00036 and 0.01257\. Table 9 prints 0.00031 and 0.00153\. Keep the table, and keep the printed Sharpes as printed. The source may be using a volatility, a risk-free rate, or an aggregation it does not state. The means are what you can recompute. On those means the S&P pure book, at 11.60 basis points a day, clears the market's 7.40, and the CSI pure book, at 0.88 basis points, clears the market's 0.86 by two hundredths of a basis point.

## Trade the next open, and rebuild the Sharpe before you scale

The lag lines up with the day count. The fill assumes the follower's closing price is still available after the leader's close is known. The weight uses the leader's close-to-close return on day t, and they adjust the follower at the close of day t, at the follower's closing price. Inside the CSI 300, and inside the S&P 500, those closes are one auction. The leader's print and the follower's print arrive together. You cannot send the follower's closing order with the leader's closing print already in hand. The first price you can trade is the next open. Their daily return is close to close. The open-to-close return is a different series, and they do not print it.

They set the trading cost at 0.25%, which is 25 basis points, and they do not print turnover. The S&P blend's mean is 15.30 basis points a day. A 25 basis point charge on the whole book, every day, is larger than that mean. The backtest survives its own cost number only if those 25 basis points land on a small traded fraction. You cannot see the fraction.

The CSI factor-1 blend's printed Sharpe of 0.70 comes with a kurtosis of 132.60 and a worst day of -16.22%. A refined rule that drops pairs whose sign hit rate, in the window already used to mark them, was under 50% lifts that factor's CSI mean from 3.10 basis points to 4.30 and cuts the printed Sharpe from 0.70 to 0.58\. The discussion says the refinement improves the CSI Sharpe. On factor 1 the printed Sharpe falls from 0.70 to 0.58\. Dropping the weak pairs on the same sample that scored them is another pass over 2010-2019.

Count lag-1 band hits on adjusted closes, and blank a suspension on the halt day and the day after. Build the cut from degree-preserving rewires at a 0.001 tail, and treat a marginal cut on a few hundred names as still letting on the order of 90 to 250 pairs through by chance. Size with the match shares. Zero negative influences before you divide. Skip a name's match against itself unless you meant to trade its own one-day momentum. A trailing four months and a band of 0.10 is their cell, fit on this decade. Send the follower order at the next open. If the Sharpe you would scale with cannot be rebuilt from the mean and the standard deviation, scale with the mean and a volatility you computed yourself.

![](https://storage.ghost.io/c/27/cb/27cb0fc8-2c77-4434-af9e-d5d32a916994/content/images/2026/10/article_569-visual-0.png)

## KEY POINTS

- Count a day only when today's return sits inside the band. At a width of 0.20 and a leader return of +2%, the follower must land between +1.6% and +2.4%.
- Keep a pair only when its day count clears the 0.001 quantile of a degree-preserving rewiring. In the 10-name example that cut is 6 days, and the null tail from there is 0.00099.
- Fit the cliff. On the CSI 300 the tail is d to the -20.24, and a count of 141 days is 0.000954 times as likely as a count of 100.
- Zero negative leader influences before you divide. The printed signed denominator levers the worked mixed day to 1.14 times capital.
- On the S&P 500 the factor-1 blend earns 15.30 basis points a day. Send the follower at the next open, and scale only with a Sharpe you rebuilt from the mean and the standard deviation.

## References

- [Lead-Lag Relationships in Global Markets](https://aligrithm.com/lead-lag-relationships-in-global-markets/)
- [Lead-Lag Is Multidimensional: Trade Price and OBI Predict Others' Midpoints](https://aligrithm.com/lead-lag-is-multidimensional-trade-price-and-obi-predict-others-midpoints/)
- [Stop Using Pairwise Granger: PCMCI for Financial Causality](https://aligrithm.com/stop-using-pairwise-granger-pcmci-for-financial-causality/)
- [Detecting the lead–lag effect in stock markets: definition, patterns, and investment strategies (Yongli Li, Tianchen Wang, Baiqing Sun, and Chao Liu)](https://doi.org/10.1186/s40854-022-00356-3?ref=aligrithm.com)

---

**A note on AI.* The ideas, research, analysis, and conclusions in this article are my own. I use AI tools to help with editing and wordsmithing, because English is not my first language, and I am not shy about that. AI-generated ideas and AI-assisted writing are not the same thing: the first is empty slop from a generic prompt, the second is a tool for communicating years of real research more clearly. Judge the work by its substance, not by whether software helped polish the prose.*