Cross-Predictability Between Assets (Part I): All Signals Matter

As the King of the quantymacro Land, I have passed an executive order of "No Signal Left Behind" effective immediately.

⚓ Cross-Predictability in Trend Signals
🤸Dynamic Portfolio Selection in Mean-Variance Optimisation
💹 Regression Equivalence in Modelling Cross-Predictability

(sample code is provided at the end)

You're in a good mood. You just finished Rob Carver's Systematic Trading and Advanced Futures Trading Strategies. In fact, you breezed through them because you're a super smart boi. Now you can't wait to run your first Trend strategy using MACD rules.

*opens jupyter notebook

import pandas as pd
import numpy as np

fast, slow = 16, 64
df_forecast = df_price.rolling(fast).mean() - df_price.rolling(slow).mean()

Well that was quick. But you're not done yet; mama ain't raise no bitch. You know how to use a portfolio optimizer. You've bookmarked and read @macrocephalopod's thread on how optimizer is the right "quant" way to do stuffs.

So the next natural thing to do is to take your forecast, convert them into expected returns, grab your covariance estimate, and shove them into an optimiser to get portfolio weights. After double-checking your optimisation code, you're ready to run your backtest.

Yeah, yeah, @macrocephalopod did say that maybe for Trend, you don't actually need to use an optimizer since it can go wrong; but that tweet is definitely not directed to you. Those are directed to the chumps out there. You're different, you know what you're doing.

Shift+Enter. Excitement fills your head as you can already imagine the 45 degree to the right PnL line.

Ah this will take a while. I only do online mode for backtest - I'm just built different - you thought to yourself. Might as well go for a run actually.

The weather is far from perfect, but much better compared to what you got the last few days. You get yourself ready for a long run. And of course no run can be done without at least listening to something - your brain is too fried to go for 10 mins without any stimulus.

And you're not like those losers listening to Spotify Top Songs Global - those normies are defo ngmi - you thought to yourself. You're a big dawg. You whip out your AirPods Pro and play @choffstein's Flirting With Models podcast.

Ah a podcast episode on Trend, we definitely do not have enough of those. You continue running. The guest is making some interesting points here and there. You're taking some mental notes while making sure that you're on pace.

Then you hear this exchange:

Rob Croce: …Now I can start beating on what I think a good way to build trend portfolios is, if you want, like I think that there’s some, some room for improvement in this space, relative to what’s been done historically

Corey: And let’s not leave that cliffhanger. Give me the juice, where’s the room to be improved do you think?

Rob Croce: …So there’s, you know, 90 or 100 futures contracts in our opportunity set, but big blocks of them have correlations, north 0.7 to each other. So going back to our equity futures as an example, if I know that the Russell 2000 is 0.8/0.9 correlated with SPX. And I know that the Russell has been up recently, I also know something about SPX, even if I don’t look at its recent returns. And so, I’m ignoring information that could be valuable, if I’m just looking at the SPX’s recent returns to inform my current positioning in the SPX, it might make sense to use a bunch of related markets, that kind of denoise the series.

Pause. A realisation hits you. You realise that when you took the expected returns and then shove it into the portfolio optimiser, you were making an implicit assumption.

You were implicitly assuming that your Trend forecast for asset A, is only predictive of asset A, and none of the other assets.

That's quite a strong assumption - you thought to yourself. Your brain is working hard to digest what the guest is saying.

Okay what he said kinda makes sense. He's basically saying that there's cross-predictability between assets. A trend signal for SPX might be predictive of Russell as well. I need to model for that.

You speed up your run. You can't wait to go back home to make those changes. You've blown up your IBKR account 4 times before, but that was because you didn't know about this thing. So this time you're definitely gonna make money.

This article is part of a multi-part series on modelling cross-predictability between assets - and I've put a lot of thoughts and effort into making it rigorous, as clear as possible, as well as talking about practical considerations when approaching this topic. (Hopefully) it comes off that way as well to the readers. Let's start!

This post is for paying subscribers only

Already have an account? Sign in.

subscribe to quantymacro

sometimes I write cool stuffs