It's freezing here in NYC and I'm sidelined at home with a cold. I figured I'd finally get around to playing with this platform.
Someone had asked earlier about the possibility of backtesting options based strategies off here, lately I've been starting to think about vol based strategies again. Since the platform doesn't have futures or options, I figured I'd work something out and share with the people here.
So we can think of a LETF as a derivative on whatever is being levered (the delta 1 product if you wish). Now I'm sure everyone here is familiar with the decay that occurs with these products, so I won't go into it. Now a not so well known fact is that the decay is directly related to volatility. So if we construct a delta-neutral position between the LETF and its delta 1 underlying, the payoff of that position is similar to a straddle (See figure 1).
Now in the real world we'd have issues putting this trade on due to borrow costs on the short side, but for now we'll ignore it as we're just using this as a proxy to be short gamma.
As I hope everyone is aware, you don't want to be consistently short gamma. It's one of those things that works until it doesn't and when it doesn't - the pain is plentiful. So here's a simple first pass at the problem, we're going to take VIX spot and smooth it then tie our position to the current level of SMA of VIX. Basically if the SMA exceeds 30 then we take our position off.
In the backtest it seems to do alright. The max drawdown is concerning, might be reasonable for a PA but you'd likely be blown out in a professional setting.
So where does this leave us? Well as you noticed I used SMA to define my levels as oppose to some other filter and also I never actually go long in this model either. I think the notion of vol regimes is fairly well established and where I'm trying to get at is different filters, strategies, or whatnot will perform better within certain regimes.
This leaves you open a few possibilities such as running some sort of hidden markov model, then running sub-strategies (e.g. filters, long/short, whatever) within each state. It's a hairy path to walk down after this though, as you run a high risk of overfitting your model if you're not careful.
Hope someone gets some type of utility out of this.
-A
EDIT: Ignore my variable naming convention, I became too lazy to change the variable names but context.sds is not using SDS (it's using SSO).