What are your best tips for reducing turnover?

I have the following weighting in different factor themes in my ranking:

image

So, I am looking for tips to reduce turnover. There are some adjustments I have made and tested:

  • Decrease the weight of sentiment
  • Increase the weight of volatility
  • Set the simulation to 4 weeks instead of 1 week
  • Ensure that the simulation is in “force into universe” mode

What I see is that the total return quickly goes down, especially in the US when I do the above things except the last one.

Are there any other recommendations for things I can try out?

The first thing I usually adjust is my Rank or RankPos threshold in my sell rules. What is yours now?

And what is your current turnover and what are you targeting?

No doubt you have adjusted your sell rank.

Some things I have tried…

  1. Assume your sell rank is 95 and turnover is high. Make a rule that says something line this: rank<=95 and (gainpct-benchpct<-5 or gainpct-benchpct>5)

What this will do is sell your stock when the rank is hit but only after the stock has moved plus or minus 5% compared to the index from the time you started the position. You’ll have to play with the values to find what’s right for you.

  1. Try creating a ranking system that separates the high turnover components from the low. Maybe value and growth and quality are in one ranking system. But momentum and sentiment in the other. Then have separate rules for them in the sim.

*Rank>95 is buy and rank<90 is sell
*Rating(“system2”)>75 is buy and Rating(“system2”)<50 is sell

The goal here is to allow more tolerance for highly volatile ranking components and be more strict on variables that move very little. You might even find that some components work well on the buy side but are not useful on the sell side.

A possible example of this is volume formulas. Perhaps you want to buy when volume is spiking but you don’t necessarily want to sell when volume normalizes. This is more of a buy event than a buy/sell rank.

All of this will take a lot of experimentation. You may find that some factors should become buy side sim rules only. Others work as ranking rules.

Another way of going about this is to use for example TTM instead of QTR in your stock formula’s. In most cases this reduces returns a bit, but in some cases the difference isn’t that ‘large’ so might be worthwile.

I have a little trouble sometimes wondering if reducing turnover is a worthy goal.

From my experience, P123’s variable transaction costs are generous. And the sim backtest more than accounts for the trading cost in a live port

Assuming the backtest is not overfit, reducing transaction costs will not help. Meaning if the sim is optimized while running it with variable slippage any changes (including reducing turnover) will degrade the returns.

Of course that is quite an assumption as almost all backtests ARE overfit (or will suffer regression-toward-the-mean). So the expected return per trade is lower, making the trading costs are costlier than backtest would suggest. Making the transaction cost a bigger proportion of the total return in other words.

I try to at least be aware of this even if I do not know how much worse my out-of-sample results will be due to overfitting, mean-reversion or whatever.

So good question for most (but not all) backtests depending on how closely the backtest resembles the out-of-sample results.

Jim

The best way to reduce turnover is through your sell rules. For example, if you’re currently selling when RankPos > 50, change that to RankPos > 100. Other sell rules can be modified or eliminated. If you’re using formula weight rebalancing, change the formula so that it doesn’t go to 0 so easily.

In terms of ranking systems, reducing the value and sentiment components will be best to reduce turnover. In my experience, they’re the most labile.

1 Like

Check your ranking system for volatile components.

Under Data->Rank, select your ranking system and a current portfolio holdings. The panel will chart the stock rank over time. If it looks very volatile, enable each of the rank sub-components individually and rerun. Eventually, you’ll find which components are the most volatile. Work to add/remove/modify factors to tap down that volatility.

Just an idea that I have not tried. But obviously Walter Yuval and others are correct that certain factors will be more volatile. And as they say you can reduce their weight or removed them.

Or increase RankPos() as mentioned by Yuval.

If I were actually concerned about turnover (see my above post), I would identify the volatile factors as Walter, Yuval and Victor (QTR factors) suggest and put them into a separate ranking system.

Then essentially do as Yuval suggests using RatingPos() —not to be confused with RankPos() – for those factors. If you usually use RankPos() > 25 for a sell rule try moving the volatile factors to RatingPos () > 50. Just for the the volatile factors and have a separate ranking system for those factors.

I have not tried this but if I saw reducing turnover as a top priority I would try it. There are a lot of ways to do the ranking systems. Maybe you would not completely remove them from the main rank but only underweight them there.

And the truth is—for the OCD among us—each factor probably deserves its own RatingPos() or Frank() but that would add to the optimization exponentially. Maybe 2 groups (volatile and not volatile) would be more than enough for the non-OCD.

Edit: I should have said I have not done this recently. I think it can make a difference.

Jim

1 Like

Thank you for all the responses. I will test it out and give a feedback.

Regarding the question about my turnover, my latest US strategy has been around 400%. I have mostly controlled it by adjusting the sell rank down. Reduced turnover is important because trading in the US is expensive for a European investor. (at least for me.)

The problem so far has been that I have rarely been able to reduce turnover without significantly affecting the returns. So, what I wanted to try is different solutions to reduce turnover without impacting the returns too much.

As a follow-up question, have anyone considered how low a turnover or number of transactions should be included in a simulation for the numbers to be statistically significant?

So far, I have solved this by increasing the number of holdings, using a 1-week rebalance frequency and rolling tests. However, I can see that if there are too few transactions, the simulation becomes statistically less relevant to say anything about the future.

The best solution really is to put the full cost of transactions into your sims, or perhaps even more. Let’s say it’s 2% per trade. Use that as your fixed slippage, or even 3%. Run your high-turnover strategy and note your returns. Then when you adjust your strategy to reduce turnover, you won’t be hurting those returns, because your slippage costs will be lower.

1 Like

I’m curious what this group considers excessive turnover. I know Yuval thinks anything over 400% is excessive because that equates to 100% every quarter.

In my strategies I consider excessive as above 1000%. In the following year I had a slippage of below 0,2%, so anything below 1000% turnover is acceptable for me. For me the problem is that reducing turnover leads to lower alpha in the backtest, this is why I stick to strategies with high turnover.

WOW, yes that is a very much higher turnover than what I have.

Do you get a decent return in the simulation when you use “Variable Slippage” and over 1000% in turnover?

You probably have a higher stock volume strategy than what I have, so “variable slippage” does not have the same effect.

1 Like

I ran a test of different sell rankings, to see how it affected the portfolio return.

image

I test 25 stock to avoid that the test becomes overly sensitive to returns in one stock. It is a test on this universe, I have no purchase rules beyond that:

This is the sales rule:

image

“Variable slippage” is used but no transaction costs.
image

What surprised me is that it is possible to reduce turnover in the portfolio by over 100% and still achieve the same or better result. (I understand that some of this is simply due to a stocks, but still interesting)

Here are the results:

image

Would you not choose the lowest turnover possible, or do you think that there is a statistical weakness in the test (too few data points) and that there is anyway more room to do better by increasing turnover?

“Variable Slippage” significantly reduces the return, but still I get decent returns in the backtest. As long as I will control the slippage I will probably stick to higher turnover in my strategies, because reducing it always led to reduction of alpha in the backtest.
As it comes to „variable slippage”, I like this option in testing the results of strategy. However, I’m using portfolio for more than a year and I don’t get as high slippage in my trading history. If my slippage rises, I will probably need to decrease the turnover to reduce the rebalance costs.

1 Like

Based on my post above, where would you put sell rank ? Is there any reason to set it closer to the highest sellrank interval or is it just an advantage to set turnover as low as possible?

I would also look at sharpe and sortino ratios, but still probably would set sell rank at 97.5, so lowest turnover possible in this case. And generally I prefer using alpha than performance.

1 Like

It’s probably been said already but certain sentiment and especially momentum factors will inevitably lead to higher turnover.

I have a a strategy which utilizes sentiment for buy and sell, but on the sell side I have eliminated some of the more volatile factors (analyst recommendations and estimates) and kept the more persistent factors (surprises, short float, etc). When I did this I didn’t lose much if any alpha, but it did lead to longer hold times on positions and time to let them run.

I should note that I always use variable slippage in my sims. I use sentiment in all of my sims in some way or another, but haven’t really traded momentum even though I’d like to. I’ve just always found that sentiment always seemed to give superior results to momentum with shallower drawdowns and yes, less turnover. Plus I question how persistent certain timeframes of momentum really are given how much faster markets move compared to even 5 or 10 years ago.

@Schm1347

I have a a strategy which utilizes sentiment for buy and sell, but on the sell side I have eliminated some of the more volatile factors

How would you do this? Different buy and sell rankings? A buy rule?

You use your primary rank for buying. Then you create another ranking system and use Rating(“other ranking system name”)<75 or RatingPos(“…”)<75 for your sell rule.