Streamgraphs provide a useful way to visualize the volatility for a large group of assets over time. You can think of a streamgraph as like a stacked line graph where the data radiates out around a central axis. The following chart plots the rolling 10 day volatility for the Nasdaq 100 plus SPY and QQQ:
We can clearly note the bulge in the stream occurring around October 15th 2014 (the so called Bullard bounce).
Streamgraphs let us see volatility spikes in individual names as well. See how stocks such as KLAC, MNST, and SIAL all experience temporary increases in volatility; these episodes look like pockets within the stream and are noticeable immediately to the naked eye.
Creating these graphs in Python is a straightforward process thanks to Pystreamgraph. Its a pretty basic package but can create some stunning results. There’s lots of room to extend the functionality. In examples like this where there are many symbols it can be easy to loose track of the labels as time evolves. Ideally this could be included in an interactive graph which could highlight individual streams and allow for a more intuitive exploration. Further work is required to make this a truly awesome method for visualizing vol, but for now it seemed worth sharing.
The next chart looks at the absolute value of the rolling correlation of each Nasdaq 100 component vs QQQ. We can see confirmation of the stylized fact that in a crisis, all correlations go to one. It is interesting to note that correlations peaked prior to the October 15th lows last year. Overall correlations remain elevated right now, suggesting instabilities in the stock market despite rising equity prices: