Category: Investing Insight

Investing insight to make you a better investor.

VVIX for VIX

Came across an intriguing post by Markku Kurtti: Employing volatility of volatility in long-term volatility forecasts (outcastbeta). The gist of it is that the volatility of volatility and average volatility is more predictable. So, predict them separately and then put them together to get a volatility forecast.

Our previous attempts at forecasting VIX have led us the conclude that nothing beats locf. Just extending the last value of VIX forward has beaten all of the models we’ve looked at.

What if, we applied the process outlined in Mr. Kurtti’s blog for VIX?

Not looking so good if you forecast out for 20-days.

A good forecasting model should be able to estimate large spikes and reversion to mean from them. If not the former, then at least the latter. So, if a model is good at the mean-reverting bit, then you can combine both locf and the model to get better predictions.

For example, if you only consider the 1-day forecast, then obviously locf has the upper hand.

However, as you try to predict farther away, you expect the model to nail the mean-reversion bit.

That is not the case here.

Once again, locf wins.

Code and charts up on github.

CGMM for VIX

Previously, we explored using Meta’s Prophet library to predict VIX. It turned out that simply extrapolating the last value of the index worked better (Prophet for VIX). In fact, locf (last one carried forward) works better than GARCH(1, 1) and most other approaches. Can the same be said about Conditional Gaussian Mixture Models?

We used the cgmm python library to forecast 20-day forward VIX and compared its root-mean-squared errors (rmse) to those of locf‘s.

locf is pretty hard to beat.

Especially so when the VIX index itself is volatile.

Code up on github.

Leverage

When you buy a stock, you buy a piece of business, not a quote from a broker. – Naved Abdali

There was a time when people actually believed that buying a stock meant that you were buying a piece of the underlying business. However, we have strayed far, far away from that. The average holding period of equities keeps dropping and everything has become trading sardines.

If we are all traders anyway, why not trade with leverage? Or so goes the clarion call of brokers offering the Margin Trading Facility.

Here’s how it works:

Initial Margin: You pay a portion of the total trade value from your own funds.
Broker Funding: Your broker provides the remaining amount to complete the purchase.
Collateral: The stocks you buy are pledged as collateral to the broker.
Interest: The broker charges daily interest on the borrowed funds.

Margin Trading Facility (MTF) has become a more significant revenue stream than traditional brokerage fees. And the market has been expanding.

Judicious application of leverage, especially on low-volatility portfolios, does make sense. However, the ground reality is different. As a percentage of free-float capitalization, its mid/small-cap momentum stocks that are being financed on margin.

For example, back in August 2024, almost 75% of Motilal Oswal Nifty Smallcap 250 ETF’s free-float capitalization was financed by MTF. If a situation were to have arisen where most of the traders who had bought this on leverage couldn’t meet a margin call, the broker’s risk management team would’ve just dumped this in the market. Given the already abysmal liquidity situation of that ETF, it would have been enough to trigger a cascade of stop-losses, further dislocating the market.


As it turned out, the index would proceed to go down 25% by March 2025.

Currently, more than 15% of Nazara – a company who’s entire business model has been legislated out of existence – is financed under MTF. I hope traders know that MTF is a full recourse loan?

As much as leverage exposes you to risk, there’s another side to this equation. Keeping track of the most leveraged stocks can help you identify margin liquidations and profit from it. However, the pain of liquidations will be felt by many but the profit will go to the few.

The Smirk, Part II

While the concept of volatility smirk is simple, the pattern itself is unstable. For example, different expiries have different shapes.

And these shapes change across days as well.

One way to keep track of these changes is by fitting a model through the implied volatilities. Here, we fit a parabola (y = ax2 + bx + c). a, the coefficient of strike_pct2, gives a measure of the narrowness/steepness of the smirk.

By sampling the curve and tracking these coefficients, you can begin to form an opinion on what is “normal” vs. a trading opportunity.

Code and charts on github.

Monitoring Network Glitches

More often than not, real time feeds are exposed as web socket streams. Web sockets are extremely sensitive to network glitches. Glitches – when the connection drops for a very small span of time – will cause your market data to lag badly as your client tries to reconnect/re-establish the feed, eventually leading to catastrophic failure.

The problem with glitches is that it is hard to work around. A complete drop in the connection can be handled by a router that can switch over to a backup connection. Glitches are more sinister.

For example, we have broadband connections from three different service providers (Hathway, Excitel and BSNL) to make sure our systems can stay connected. They all have varying degrees of stability and customer service. Here are the number of glitches per hour over the last few days:

You can work around 1-2 glitches an hour by making your re-connection logic more robust. However, there is no getting around the Hathway level of glitches.

If your service provider itself is not monitoring for glitches, then explaining the problem to them is impossible. Support tickets get closed because “network is connected.” Here is a history of our support tickets with Hathway – an ongoing saga with no end:

As you scale, monitoring your infrastructure becomes increasingly important. Be aware that your service provider could be (willfully) blind to the specific issues you are facing – their job might depend on them not solving it. And, always have a backup and a backup for your backup.

The python code to monitor for glitches and the R code to draw the charts are on github.