Omission of Intercept Term in Computing Hedge Ratio

Course Name: Mean Reversion Strategies In Python, Section No: 9, Unit No: 11, Unit type: Notebook

In lines 3 and 4, why does the regression omit the intercept term in computing hedge ratios for spreads (e.g., sm.add_constant())?

Hi Rufus, lets try to understand this as per following two logic:

1. Trading Logic Assumes Proportionality

If Stock A and Stock B are truly cointegrated for trading purposes, we assume they move in proportion to each other—not that one stays fixed when the other hits zero.

But with an intercept:

Price(A) = alpha + beta*⋅Price(B)​

Even if Price(B)=0, this implies Price(A)=alpha, i.e., non-zero value which contradicts the idea of long-term equilibrium.

In contrast, without an intercept:

Price(A) = beta*⋅Price(B)

If one goes to zero, so does the other, this makes more sense for a trading relationship where you’re hedging one asset with the other.

2. Clean, Mean-Reverting Spread

In pairs trading, you’re tracking the spread:

Spread = price(A) - beta*price(B)

This spread is expected to revert to zero over time.

But if you include an intercept, the spread becomes:

Spread = price(A) - (alpha + beta*price(B))

Now the spread reverts to alpha, not zero, making the strategy more complex, and potentially leading to misleading signals (like thinking the spread is wide when it’s actually within its normal band around alpha)

Hope this helps.

Your explanation makes sense. Thank you.