Tag: momentum

Intra-Stock Correlation and Momentum Returns

Vojtko, Radovan and Pauchlyová, Margaréta, How to Improve Commodity Momentum Using Intra-Market Correlation (SSRN) discusses using short-term and long-term correlations between constituents to bet on momentum and reversal.

Since we are always on the lookout for strategies for reducing momentum drawdowns, we did a quick check to find out if a similar strategy can be used for long-only momentum.

The rule is fairly basic. Using the momentum portfolio already formed, if 20-day average correlation between them is greater than 200-day average correlation, then go long, else, go to cash.

Ignoring transaction costs, it looked like it avoided the brutal 2018-2019 drawdown. So, we dived a bit deeper to see if it was materially better than our 50-day SMA idea.

Here, COR_RET represents using only correlations to go long/cash, SMA_RET represents using only SMA, EITHER_RET is correlation or SMA and COMBINED_RET is correlations and SMA.

Going long if either correlations or SMA (EITHER_RET) seemed to be a winning strategy. However, high transaction costs in India can turn any decent strategy into a loser in a heartbeat.

25bps in transaction costs negates most of the advantages of considering the correlation signal. However, the post-COVID data does point towards EITHER_RET outperforming SMA_RET.

The biggest disappointment for us was that there was no improvement in drawdown metrics but 5% of outperformance might be worth the additional complexity.

Code and charts are on github.

SVM for Momentum

Previously, we explored if Meta’s Prophet library could be used to drive a momentum portfolio (Prophet for Momentum, Prophet for Momentum, Part II). We found that a simple (naïve) momentum strategy outperformed whatever we did with Prophet.

More generally, using a Neural Network or an SVM to drive portfolios have been a disappointment in live scenarios (Machine Learning Themes). Their after cost performance trail benchmarks.

Moreover, a big problem with these models is that there are a million different ways to specify them and a few of them will go on to outperform in a forward-test simply because they load on a factor that is working for that moment in time. So, you never know if you found the “right” set of specs (because there is none) and if you are not careful, you will forever be tuning the model based on what worked in the recent past.

Even simple SVMs come with so many different ways to specify them: classification vs. regression, polynomial degree, cost (static vs. auto-tune), feature selection, feature tuning, etc. And, since we don’t know which ones work beforehand, we try most of them and settle on those specs that output the results we wanted.

For example, an SVM can be trained with a time-series of previous month’s returns to predict the next month’s returns. A momentum portfolio can be created by ranking these predictions. Rebalance every month and you have something that works.

The problem is that to arrive at this model, we went through a fair amount of parameter and feature tweaking/tuning which may or may not work in the future.

Here, we published the charts of an SVM that uses a 5th degree polynomial kernel because it worked (higher Sharpe!) and not because there is a strong theoretical reason why 5 is better than 1.

For every model that is published, be rest assured that there are thousands hidden away in a drawer.

This is why we remain skeptical of “A.I.” investment strategies.

Code and charts on github.

Intraday Momentum, an Update

Back in 2016, we ran a sniff test on Intraday Momentum: The First Half-Hour Return Predicts the Last Half-Hour Return (pdf). We promised an update so here it is (eight years later).

We ran the strategy with both the first 15min and 30min formations with and without considering gaps. It continues to not work with the three indices we used: NIFTY, BANK NIFTY and MID SELECT. Here’s the one for the NIFTY. The rest are on github.

Some strategies may benefit from becoming well known. However, a vast majority of them don’t. This one belongs to the former.

Prophet for Momentum, Part II

Previously, we discussed using Meta’s Prophet to create a momentum portfolio that was rebalanced monthly. Is there a benefit to rebalancing this at a higher frequency?

Turns out that there isn’t. Even before factoring in costs, Prophet works best with a monthly schedule.

And does significantly worse if bring costs into the equation.

The problem is that Prophet portfolios have little overlap.

Once again, a +1 to KISS.

Code and charts on github.

Momentum Rebalance Frequency, Part II

Previously, we looked at momentum rebalance frequencies with a monthly increment. However, if you observe the individual returns of momentum stocks (Returns under Momentum), you’ll notice that the returns of momentum stocks tail off after the first two weeks. Does switching to a weekly rebalance frequency make sense?

The biggest problem with a higher frequency of rebalance is the higher transaction cost that comes with it. So, we set the drag to be 0.5% and run 1- through 4-week rebalancing scenarios.

Turns out, there is an advantage to rebalancing a momentum portfolio once in two weeks rather than once a month.

The transaction costs are roughly 5% (annualized) vs. 3% of the monthly rebalanced version.

The main thing to watch out for is the portfolio overlap between rebalancing. The lower the overlap, higher the costs.

Costs are permanent and immediate while returns are hypothetical and distant. Make of this what you will.

Code and charts on github.

Related: Factors