It’s been a while since my last post; I’ve just gotten super busy with my move from Toronto to Los Angeles and basically uprooting my life. However, I’ve managed to keep monitoring and researching my portfolio throughout my relocation and after doing some review, one of my biggest earners is short SPX puts. With this being the case, I decided to build a stress test function in Python just so that I would have a better idea of what strike I should sell and how many days to expiry.
A lot of my research and thoughts came from the following links:
- Which Index Options Should You Sell? – Brief summary is to sell short-dated slightly out-of-the-money SPX Puts.
- Easy Market Profile in Python: Grasp Price Action Quickly – Python function for building a range to trade around, this repository still requires some more investigation from me.
- Volatility and the Prisoner’s Dilemma – This paper from Artemis Capital is a bit of a counter-argument to my short volatility trading, but it raises key concerns I have and is useful to remind me of hedging/capital protection strategies.
Here is basically what I did to do to improve my SPX Put selling (my function can be found here):
- It’s been well documented that index returns can be approximated by a normal-distribution, however, it’s also known that SPX returns are somewhat left or negatively skewed. Thus, I chose to approximate the distribution of SPX returns using the Skew Normal Distribution.
- VIX was used to approximate the scaling parameter and the SKEW index was used to approximate the shape parameter in the Skew Normal Distribution.
- Assuming returns are still centered around 0, to find a strike of SPX such that there has a p% chance of occurring given all the current information, I went through historical data from 1990 to date to determine the given levels and their actual historical probabilities of occurrence.
I’ve ran this historical check for a few cases and plotted the distribution of returns, distribution of VIX, and the amount by which historical returns actually breached the simulated VaR levels.
P = 0.0001 and 1 DTE
- The historical probability of breaching is 0.33% with the total occurrences being 23 times. The worst 5 cases as follows:
Date | SPX | VIX | Ending SPX | Ending VIX | Calculated VaR Return | Actual SPX Return | Difference in VaR and Actual Return |
---|---|---|---|---|---|---|---|
10-24-1997 | 950.69 | 26.05 | 876.99 | 39.96 | -4.87% | -7.75% | -3.15% |
08-21-2015 | 2,034.08 | 28.03 | 1,893.21 | 40.74 | -4.76% | -6.93% | -2.39% |
08-20-2015 | 2,076.61 | 19.14 | 1,970.89 | 28.03 | -3.49% | -5.09% | -1.72% |
09-26-2008 | 1,204.47 | 34.74 | 1,106.42 | 46.72 | -6.92% | -8.14% | -1.56% |
02-26-2007 | 1,451.04 | 11.15 | 1,399.04 | 18.31 | -2.23% | -3.58% | -1.41% |
P = 0.0001 and 3 DTE
- The historical probability of breaching is 0.13% with the total occurrences being 9 times. The worst 5 cases as follows:
Date | SPX | VIX | Ending SPX | Ending VIX | Calculated VaR Return | Actual SPX Return | Difference in VaR and Actual Return |
---|---|---|---|---|---|---|---|
08-19-2015 | 2,095.69 | 15.25 | 1,893.21 | 40.74 | -5.42% | -9.66% | -4.63% |
08-20-2015 | 2,076.61 | 19.14 | 1,867.61 | 36.02 | -6.05% | -10.06% | -4.46% |
08-03-2011 | 1,254.25 | 23.38 | 1,119.46 | 48.00 | -8.62% | -10.75% | -2.72% |
10-22-1997 | 972.28 | 21.90 | 876.99 | 39.96 | -7.97% | -9.80% | -2.32% |
10-06-2008 | 1,097.56 | 52.05 | 909.92 | 63.92 | -16.49% | -17.10% | -2.24% |
P = 0.0001 and 5 DTE
- The historical probability of breaching is 0.12% with the total occurrences being 8 times. The worst 5 cases as follows:
Date | SPX | VIX | Ending SPX | Ending VIX | Calculated VaR Return | Actual SPX Return | Difference in VaR and Actual Return |
---|---|---|---|---|---|---|---|
10-02-2008 | 1,160.64 | 45.26 | 909.92 | 63.92 | -18.78% | -21.60% | -5.40% |
08-18-2015 | 2,101.99 | 13.79 | 1,867.61 | 36.02 | -6.33% | -11.15% | -5.35% |
08-01-2011 | 1,292.59 | 23.66 | 1,119.46 | 48.00 | -10.67% | -13.39% | -3.64% |
08-17-2015 | 2,089.70 | 13.02 | 1,893.21 | 40.74 | -6.75% | -9.40% | -3.07% |
08-19-2015 | 2,095.69 | 15.25 | 1,940.51 | 30.32 | -7.00% | -7.40% | -0.69% |
This provides a good guideline for me when I see days that are opportunistic to sell an SPX put: note that August 2015 (the China Stock Market crash) had breached VaR levels consistently for the various scenarios. Currently, I’m still looking into whether it’s worthwhile to play the short call side, but research so far has indicated the SPX calls are not compensated well for the risks involved.