- We are long.
- The price jumps up. Good.
- But this means the risk goes up
- So cut our position, just as we're finally making serious money.
How can this make sense?
This is a post about volatility targeting - dynamically adjusting your positions according to your estimate of market volatility - in the context of trend following systems. I blindly do this when building all my trading strategies without thinking about it - but is this a good thing to do?
It's also a post about how you generally have to balance different criteria when judging backtests - there are no free lunches in finance.
What do we mean by volatility targeting?
It's not obvious whether "Volatility Targeting" is referring to the practice of scaling positions by volatility for a given level of conviction or targeting a constant portfolio or position level volatility regardless of conviction.
To be clear for the unfamiliar the way I run a CTA style strategy is:
1- Decide on a level of conviction
2- From that infer the volatility target for a given position
3- Scale the position to a given volatility target
There is then another stage that some people do which I don't agree with:
4- Rescale the leverage in the entire portfolio to some fixed target.
Essentially doing the last thing will throw away the absolute average level of conviction that you have across your system. I don't think you should do this, although it's very popular in eg equity neutral portfolios (mainly for historical reasons, take a bow Fama and French). To make things confusing this is sometimes called "Vol targeting". But it's not what I'm discussing in this post (maybe another one).
POSTSCRIPT: I discuss it in this post. TLDR: it doesn't work.
Another thing some people do is run a binary system, in which the level of conviction is essentially fixed. Doing this will throw away all the information you have about conviction, both absolute and relative. Again I think this is sub optimal.
To be clear then what I am defending here is stage 2: the scaling of positions to a given volatility target, irrespective of whether conviction was involved. It's implicit here that the volatility target is dynamic, otherwise what you're doing is just some kind of long run risk budgeting exercise.
Trend following is considered a nice thing, because it's return profile is:
This sort of return distribution will contain both positive skew (at least when measured at an appropriate time interval - at least monthly if not annually) and high kurtosis. Skew is an asymmetric measure of return 'non-Gausianness' (if that's a word), whereas kurtosis is a symmetric measure - it just means we have 'fat tails', without specifying which tail we're talking about.
Positive skew is generally agreed to be a good thing (to own a negatively skewed asset I'd want paying, in the form of higher expected Sharpe Ratio), but high kurtosis is generally agreed to be a bad thing, because it means we're going to get surprisingly large returns on both the up and down side. It makes no sense to talk about kurtosis that only existed on the right hand side of the distribution.
But a combination of positive skew and more kurtosis will give you more mass on the right hand side.
Some people don't like vol targeting because they think it degrades the nice property of trend following: that extra mass on the right hand tail.
It's relatively easy to test this sort of thing with pysystemtrade. Here's an account curve for 37 futures markets using the system in chapter fifteen of my first book (with carry removed, since the original article was about trend following), and also the monthly distribution of returns:
This is a system which vol targets using the last month or so of returns. Vol targeting also increases costs, and all the analysis in this post are done after costs.
Now for the counterfactual. It's actually quite hard to 'turn off' vol targeting as it's not obvious what you'd replace it with: would you for example give all markets the same cash position and ignore vol completely? That would lead to some very distorted results indeed! I decided to continue to use vol to scale positions, but a very long term vol which didn't move around for each market; so basically cross sectional vol budgeting, without the time series adjustment to vol. I went with this set of config changes:
system.config.volatility_calculation['days']=7500
system.config.volatility_calculation['min_periods']=1000
system.config.volatility_calculation['backfill']=True
This is as close to fixed vol as you can get. Here's the account curve and the distribution:
Well the account curve clearly isn't as good. The distribution is harder to read: it looks like there are some outliers that weren't there before on both the left and right tails.
Here are some statistics that reinforce this result (all based on monthly returns):
With vol targeting Without
Skew +1.08 +2.46
Sharpe 0.92 0.569
Sortino 1.62 0.867
Min return -32.6% -55.6%
Max return +47.7% +100.6%
Kurtosis 5.28 33.0
1% point -16.5% -18.1%
99% point +31.8% +30.2%
To summarise then removing vol targeting leads to:
Now depending on your utility function you might argue this is a trade worth taking. If you cared about Skew above all else then maybe you'd accept this deal. Personally I wouldn't take this deal, but you might have a very strange utility function indeed.
But... and there is a big but here... I'm not sure how significant these results are. Skew and Kurtosis are like anything else statistical estimators, which means they are subject to uncertainty, and they're also subject to being affected by a couple of outliers.
(By the way a formal T-test on the Sharpe Ratio difference in the curves has a statistic of 3.59, so the difference is indeed significant to something like 99.97%)
If we use a more robust measure of left and right tail - the 1% and 99% points on the distribution of returns - we can see that removing vol targeting leads to slightly worse outcomes on the left tail (1%), and more surprisingly a slightly worse outcome on the right tail as well (99% point). We were sold no vol targeting as a product to improve our right tail, and we don't see it.
This strongly suggests that the skew and kurtosis numbers are being heavily driven by one or two outliers.
Formally if we bootstrap the distribution of skew for each curve we get this:
And this without vol targeting:
Notice the much wider range of uncertainty, and the weird bimodal distribution, characteristic of a statistic that is being driven by one or two outliers.
How do we get round this? Well both the largest positive and negative returns occur in 1979 - 1980; when there weren't many instruments trading in the data. Let's recheck the statistics, but this time ignoring everything before January 1981; this is still over 36 years of data:
With vol targeting Without
Skew +0.45 +0.64
Sharpe 0.78 0.52
Min return -26.5% -25.4%
Max return +33.4% +33.6%
Kurtosis 3.12 3.9
1% point -16.3% -14.2%
99% point +22.2% +22.0%
On the face of it vol targeting does indeed seem to remove some of the positive skew from trend following. But there are a few caveats:
So yes, maybe, there is something in the idea that vol targeting involves giving up some of the positive skew that trend following gives you, at least with monthly data. But the cost is terribly high: about a third of our Sharpe Ratio! This is the old 'no free lunch in finance' idea - we can improve one moment of our return distribution, but it usually involves giving something up. Another word for this is the 'waterbed' effect - when we push down on the skew part of our waterbed to ensure a better nights sleep, the water just moves somewhere else (the kurtosis and Sharpe Ratio parts of the bed).
I can't help thinking there are cheaper ways of getting positive skew; like maybe buying some out of the money straddles as an overlay on your trading system.
Finally, it's also worth reading this recent paper by my old shop, AHL, which goes into more detail on this subject.
Acknowledgements - I'd like to thank Mark Serafini who accidentally inspired this blog post with a LinkedIn post that turned out to be on an entirely different topic, and Helder Palaro who found that post for me.
Another thing some people do is run a binary system, in which the level of conviction is essentially fixed. Doing this will throw away all the information you have about conviction, both absolute and relative. Again I think this is sub optimal.
To be clear then what I am defending here is stage 2: the scaling of positions to a given volatility target, irrespective of whether conviction was involved. It's implicit here that the volatility target is dynamic, otherwise what you're doing is just some kind of long run risk budgeting exercise.
Why do people like trend following
Trend following is considered a nice thing, because it's return profile is:
- a majority of time periods when we have small lossess
- a minority of time periods when we have big gains. Generally these come when other asset classes are suffering
This sort of return distribution will contain both positive skew (at least when measured at an appropriate time interval - at least monthly if not annually) and high kurtosis. Skew is an asymmetric measure of return 'non-Gausianness' (if that's a word), whereas kurtosis is a symmetric measure - it just means we have 'fat tails', without specifying which tail we're talking about.
Positive skew is generally agreed to be a good thing (to own a negatively skewed asset I'd want paying, in the form of higher expected Sharpe Ratio), but high kurtosis is generally agreed to be a bad thing, because it means we're going to get surprisingly large returns on both the up and down side. It makes no sense to talk about kurtosis that only existed on the right hand side of the distribution.
But a combination of positive skew and more kurtosis will give you more mass on the right hand side.
A possible case for not vol targeting
Some people don't like vol targeting because they think it degrades the nice property of trend following: that extra mass on the right hand tail.
Essentially not vol targeting will make sense if there is an asymmetric effect in the markets: where we tend to cut our positions on vol spikes in winning positions more than we do on losing positions. This indeed would lower your skew, and this would indeed be a bad thing. It would be better to stop vol targeting, and be rewarded with higher returns on winning positions, even after taking into account the higher losses on losers.
To be clear if you could get higher positive skew for free this would be a good thing. However if you have to pay for your higher positive skew with higher kurtosis then that wouldn't be so good. But intuitively removing vol targeting will mean worse kurtosis - vol targeting will tend to trim the tails of both sides of the distribution. This also ignores the first two moments of the distribution: if higher positive skew means a worse Sharpe Ratio would I be happy?
In general terms then it's unlikely that you can get positive skew for free without giving up something else: kurtosis or Sharpe Ratio. There are plenty of situations when this sort of trade off is present - for example you can boost your Sharpe Ratio by consistently selling option vol, but that give you rather unpleasant kurtosis and make your skew more negative.
In general terms then it's unlikely that you can get positive skew for free without giving up something else: kurtosis or Sharpe Ratio. There are plenty of situations when this sort of trade off is present - for example you can boost your Sharpe Ratio by consistently selling option vol, but that give you rather unpleasant kurtosis and make your skew more negative.
All this is a theoretical discussion - let's see what actually happens to the moments of the return distribution when we remove vol targeting.
Empirical evidence
It's relatively easy to test this sort of thing with pysystemtrade. Here's an account curve for 37 futures markets using the system in chapter fifteen of my first book (with carry removed, since the original article was about trend following), and also the monthly distribution of returns:
Account curve with vol targeting |
Distribution of monthly returns with vol targeting |
This is a system which vol targets using the last month or so of returns. Vol targeting also increases costs, and all the analysis in this post are done after costs.
Now for the counterfactual. It's actually quite hard to 'turn off' vol targeting as it's not obvious what you'd replace it with: would you for example give all markets the same cash position and ignore vol completely? That would lead to some very distorted results indeed! I decided to continue to use vol to scale positions, but a very long term vol which didn't move around for each market; so basically cross sectional vol budgeting, without the time series adjustment to vol. I went with this set of config changes:
system.config.volatility_calculation['days']=7500
system.config.volatility_calculation['min_periods']=1000
system.config.volatility_calculation['backfill']=True
In plain english we will:
- Calculate the vol over the first 4 years of data (because I only have about 4 years of data for many instruments)
- Backfill and use that vol for the first 4 years (so forward looking, but <shrugs>)
- After that use a very slow moving average of vol (half life of 30 years)
Account curve without vol targeting |
Distribution of monthly returns without vol targeting |
Well the account curve clearly isn't as good. The distribution is harder to read: it looks like there are some outliers that weren't there before on both the left and right tails.
Here are some statistics that reinforce this result (all based on monthly returns):
With vol targeting Without
Skew +1.08 +2.46
Sharpe 0.92 0.569
Sortino 1.62 0.867
Min return -32.6% -55.6%
Max return +47.7% +100.6%
Kurtosis 5.28 33.0
1% point -16.5% -18.1%
99% point +31.8% +30.2%
To summarise then removing vol targeting leads to:
- Higher skew
- Worse Kurtosis
- Worse Sharpe Ratio
Now depending on your utility function you might argue this is a trade worth taking. If you cared about Skew above all else then maybe you'd accept this deal. Personally I wouldn't take this deal, but you might have a very strange utility function indeed.
But... and there is a big but here... I'm not sure how significant these results are. Skew and Kurtosis are like anything else statistical estimators, which means they are subject to uncertainty, and they're also subject to being affected by a couple of outliers.
(By the way a formal T-test on the Sharpe Ratio difference in the curves has a statistic of 3.59, so the difference is indeed significant to something like 99.97%)
If we use a more robust measure of left and right tail - the 1% and 99% points on the distribution of returns - we can see that removing vol targeting leads to slightly worse outcomes on the left tail (1%), and more surprisingly a slightly worse outcome on the right tail as well (99% point). We were sold no vol targeting as a product to improve our right tail, and we don't see it.
This strongly suggests that the skew and kurtosis numbers are being heavily driven by one or two outliers.
Formally if we bootstrap the distribution of skew for each curve we get this:
Distribution of monthly skew estimate with vol targeting |
Distribution of monthly skew estimate without vol targeting |
How do we get round this? Well both the largest positive and negative returns occur in 1979 - 1980; when there weren't many instruments trading in the data. Let's recheck the statistics, but this time ignoring everything before January 1981; this is still over 36 years of data:
With vol targeting Without
Skew +0.45 +0.64
Sharpe 0.78 0.52
Min return -26.5% -25.4%
Max return +33.4% +33.6%
Kurtosis 3.12 3.9
1% point -16.3% -14.2%
99% point +22.2% +22.0%
The improvement in Skew, and worsening Kurtosis, are both still there but nowhere near as dramatic. The minima and maxima, and 1% / 99% points, are almost identical. It looks like there might be a slight improvement in the left tail without vol targeting, and a slight worsening in the right tail - which is the opposite of what we'd expected - but the values are not significantly different. And, sadly, the drop in Sharpe Ratio is still present (and it is still very significant).
Summary
On the face of it vol targeting does indeed seem to remove some of the positive skew from trend following. But there are a few caveats:
- The improvement in Skew can be heavily influenced by one or two outliers in the data
- It looks like the improvement in Skew doesn't in fact lead to a better right tail
- The kurtosis is definitely worse, although again this could be influenced by outliers; taking these out the degradation in Kurtosis is still there but not as dramatic
- There is a substantial reduction in Sharpe Ratio, with or without outliers
So yes, maybe, there is something in the idea that vol targeting involves giving up some of the positive skew that trend following gives you, at least with monthly data. But the cost is terribly high: about a third of our Sharpe Ratio! This is the old 'no free lunch in finance' idea - we can improve one moment of our return distribution, but it usually involves giving something up. Another word for this is the 'waterbed' effect - when we push down on the skew part of our waterbed to ensure a better nights sleep, the water just moves somewhere else (the kurtosis and Sharpe Ratio parts of the bed).
I can't help thinking there are cheaper ways of getting positive skew; like maybe buying some out of the money straddles as an overlay on your trading system.
Finally, it's also worth reading this recent paper by my old shop, AHL, which goes into more detail on this subject.
Acknowledgements - I'd like to thank Mark Serafini who accidentally inspired this blog post with a LinkedIn post that turned out to be on an entirely different topic, and Helder Palaro who found that post for me.
Great article! it seems that it improves the sharpe ratio without much impact on the positive skew. As we see that skew is pretty unstable, may i know what are your thoughts on some CTAs using maximizing skew as a basis to reduce drawdowns in their systems?
ReplyDeleteSorry for the delay.
DeleteIt's not obvious whether maximising skew will reduce drawdowns. To take an extreme example if you lost 1% a month for 10 years then made 1000% in one month, your skew would be fantastic, but your drawdown would be enormous.
Hi,
ReplyDeleteIm trying to compare your account curve with vol target and without vol target.
Why is the ending account curve for vol target approximately 1200, while no vol target is approximately 750. I think it should be fairly similar?
Sorry for the delay in responding.
DeleteNo, without vol target makes less money so the account curve ends up in a worse place.
Thank you for your insightful post!
ReplyDeleteI have a question; have you considered the downside deviation?
By taking a ratio similar to Sharpe, but with the downside deviation instead of the standard deviation, you get the Sortino ratio.
I am very curious about your thoughts on this.
Your results are consistent with the paper "Momentum has its Moments" by Barroso and Santa-Clara, although they investigate cross-sectional momentum rather than time series momentum. Interesting!
ReplyDeleteSorry for the delay in responding.
DeleteYes that is a classic paper. The link between c/s and t/s momentum is always interesting to think about.
An off-topic question: when trading assets with very high (absolute) skewness and/or very large kurtosis, do you make any adjustment to your vol targeting process?
ReplyDeleteFor example, let's say we are short VIX futures on Feb 2 2018, when the trade had an annualized historical standard deviation of around 65% (slightly below its long term average); the following day the future almost doubled in price (a 16x standard deviation move). If we had scaled our position based on volatility, our ex-post exposure to the trade would have been hugely larger than expected.
So my question is: is volatility a good metric to scale positions in such assets? Are there better alternatives?
I accidentally found this forum post where you basically answered my question:
ReplyDeletehttps://www.elitetrader.com/et/threads/fully-automated-futures-trading.289589/page-146#post-4600117
Personally, as short-term volatility is a poor predictor of future volatility for VIX / V2X, I only see two possible solutions (other than giving them a lower risk allocation):
- use the worst of short-term and long-term volatility (10 year) to scale positions
- calculate a "tail-adjusted volatility". A simple heuristic I developed is as follows: for my universe of diversified assets, I calculate long term vol, CVAR (.025) and CVAR (.975). Then, for each asset I calculate the absolute ratios between CVARs and volatility and then take the two median values (which are both around 21%).
For VIX / V2X futures the ratio is 27% (+ 30% vs the median of the universe) for the right tail and 19% (-12% vs the median of the universe) for the left tail. So a simple heuristic would be to increase the vol by 30% when short and reduce the vol by 12% when long. It doesn't fix the underlying issue (when we have big jumps in VIX we will still be overexposed) but looks like a small step in the right direction.
In theory this approach could be applied to any asset. Silver, for example, shows very high ratios (especially on the left tail). But, while high skewness and high kurtosis are "structural" for vol futures , there is no reason why return distributions for other assets cannot change in the future, so I will probably apply it only to vol futures.
Does it make any sense?
"worse of" will make your system completely unresponsive to changes in vol when vol is below the historical average - which is half the time. So this will definitely be bad (under my definition of bad, which is that vol targeting is good). Better is to take an average of these two measures, discussed here https://qoppac.blogspot.com/2020/09/forecast-linearity-and-forecasting-mean.html
DeleteThe second option is too complicated for me to understand so I wouldnt' use it.
Other options include setting a vol floor at say 5% of the historical vol period.
Ultimately the main protection against horrible skewness is diversification; enough assets with horrible distributions averaged together come out normal if they are uncorrelated... we'll never get to this ideal but it will certainly help.
Thanks Rob.
DeleteDiversification may help, but if we have a sudden market shift we will probably have losses from other assets piling on (huge) losses on vol futures.
In the end, I think that setting a tight max risk allocation, as you suggested in your forum post, is probably the cleanest and most effective way to deal with this problem.