Quant Memo
Advanced

Supply-Chain Graphs for Alpha

A company's stock often reacts to news about its suppliers and customers days before that news is reflected in its own price — modeling the supply chain as a graph and propagating shocks across it turns a slow, indirect information channel into a tradeable signal.

Prerequisites: Graph Attention Networks (GAT), Message Passing Neural Networks

When a major customer cuts orders, its suppliers eventually feel the hit — but not on the same day. The customer's own stock reacts to the bad news immediately, because analysts and headlines cover it directly. The supplier's stock, several links away in a supply chain nobody is watching as closely, often reacts only days or weeks later, once the effect finally shows up in the supplier's own earnings or guidance. This lag is well documented in academic finance and it exists because information doesn't propagate through a company's economic connections nearly as fast as it propagates through headlines about the company itself. A supply-chain graph turns "who supplies whom" into an explicit structure a model can use to anticipate that lagged reaction rather than wait for it.

The analogy: a row of dominoes with uneven spacing

Think of a supply chain as a row of dominoes, but not evenly spaced — some are close together and fall almost instantly one after another, others are set far apart and take much longer for the fall to reach. A shock at one end (a big customer's earnings miss) is the first domino tipping over. Which other dominoes eventually fall, and how long each one takes, depends entirely on the layout: how directly connected each company is to the one before it, how strong that connection is (is this 40% of revenue or 2%?), and how many hops away it sits. Someone watching only the first domino sees the shock immediately; someone watching the fifth domino down the line sees nothing happen for a while — but it's coming, predictably, if you know the layout.

The mechanism: propagating a shock along weighted edges

Model the supply chain as a graph where nodes are companies and a directed edge from supplier SS to customer CC carries a weight wSCw_{SC}, the fraction of SS's revenue that comes from CC (a concentration measure — a bigger fraction means SS is more exposed to CC's fortunes). A shock originating at node CC — say, a revenue surprise measured as a return rCr_C — propagates to its direct suppliers with an exposure-weighted effect:

r^S=βwSCrC\hat{r}_S = \beta \cdot w_{SC} \cdot r_C

Here rCr_C is the observed shock at the customer (its own stock's abnormal return around the news), wSCw_{SC} is how exposed supplier SS is to customer CC (its revenue-share weight), and β\beta is a learned sensitivity coefficient converting "exposure-weighted customer shock" into an expected supplier reaction — estimated from history, not assumed. In words: a supplier's expected reaction to a customer's shock is proportional to both the size of the shock and how economically dependent the supplier is on that customer. This is exactly a one-layer message-passing step, with the edge weight wSCw_{SC} playing the role of an attention-like coefficient, except here it's observable directly from disclosed revenue concentration rather than learned purely from data.

Stacking this across multiple hops — a supplier's supplier, two tiers removed from the original shock — is exactly what a multi-layer graph neural network does automatically: each additional message-passing layer reaches one more tier down the chain, with the effective magnitude shrinking at each hop because it's the product of exposure weights along the whole path.

customer shock now tier-1 supplier reacts in days tier-2 supplier reacts in weeks magnitude shrinks and lag lengthens with each additional hop from the source
The same graph-propagation logic used in message passing applies directly to a real supply chain: shrinking magnitude, growing lag, tier by tier.

Worked example 1: a one-hop propagation

A customer reports earnings that produce an abnormal return of rC=8.0%r_C = -8.0\% on the news day. A supplier derives 30%30\% of its revenue from this customer, so wSC=0.30w_{SC}=0.30. Historical calibration on similar events gives a sensitivity β=0.6\beta = 0.6. The expected supplier reaction is

r^S=0.6×0.30×(8.0%)=1.44%\hat{r}_S = 0.6 \times 0.30 \times (-8.0\%) = -1.44\%

If, three trading days after the customer's earnings, the supplier's stock has moved only 0.2%-0.2\%, the model's prediction says roughly 1.241.24 percentage points of expected reaction have not yet arrived in the price — the gap between the model's estimate and the observed move is the trading signal, not the raw prediction itself.

Worked example 2: a two-hop, shrinking effect

Now trace the same shock one tier further, to the tier-1 supplier's own supplier (call it S2S_2), where S2S_2 derives 50%50\% of its revenue from SS, so wS2S=0.50w_{S_2 S} = 0.50. Treating the tier-1 supplier's expected reaction as the shock feeding into tier 2, and reusing the same β=0.6\beta=0.6:

r^S2=βwS2Sr^S=0.6×0.50×(1.44%)=0.432%\hat{r}_{S_2} = \beta \cdot w_{S_2 S} \cdot \hat{r}_S = 0.6 \times 0.50 \times (-1.44\%) = -0.432\%

Notice the magnitude shrank from 8.0%-8.0\% at the source, to 1.44%-1.44\% one hop away, to 0.432%-0.432\% two hops away — each additional hop multiplies by another exposure-weighted sensitivity factor below 1, so the effect decays geometrically with distance, exactly the way a domino's push weakens the more indirect the chain of contact becomes. This is also why the strongest, most tradeable versions of this signal tend to concentrate on tier-1 relationships with large, well-documented revenue concentration — by tier 2 or 3, the expected effect is often too small to clear transaction costs.

A supply-chain shock's expected effect on a connected company shrinks multiplicatively with each additional hop and revenue-exposure weight along the path — and the trading signal isn't the predicted move itself, it's the gap between that predicted move and how much of it has already shown up in the price.

What this means in practice

This is a documented, persistent anomaly in academic finance: customer-driven news predicts supplier returns over the following days to weeks, because analyst coverage and index inclusion are denser for large, well-known customers than for their less-followed suppliers, so information genuinely takes longer to reach supplier prices. Building a supply-chain graph from disclosed customer-concentration data (10-K customer disclosures, supply-chain databases) and running message-passing or simple weighted propagation over it operationalizes this lag into a systematic signal, rather than requiring an analyst to track each linkage by hand.

The most common failure mode is using supply-chain data that isn't point-in-time — disclosed customer relationships change (a supplier drops a customer, a customer diversifies away from a supplier), and using today's known graph structure to explain or trade on yesterday's returns silently leaks future information into a backtest, inflating the apparent edge. The graph itself needs the same point-in-time discipline as any other input: as of the trade date, what did the disclosed supply relationships actually look like, not what do they look like now.

Practice

  1. A customer's shock is rC=+5%r_C = +5\%, a supplier's exposure weight is wSC=0.4w_{SC}=0.4, and calibrated β=0.5\beta=0.5. Compute the expected one-hop supplier reaction, then compute the expected two-hop reaction assuming the next-tier supplier has exposure weight 0.250.25 to the first supplier.
  2. Why does the trading signal come from the gap between predicted and observed reaction, rather than from the predicted reaction alone?
  3. Explain concretely how using a supply-chain graph reconstructed with today's data, rather than the graph as it existed on the historical trade date, could inflate a backtested Sharpe ratio.

Related concepts

Practice in interviews

Further reading

  • Cohen & Frazzini, Economic Links and Predictable Returns (2008)
  • Cohen & Lou, Complicated Firms (2012)
ShareTwitterLinkedIn