Matt_ORATS
Sponsor
There are many ways to approach this question. The way we do it at ORATS is to look at:I want to buy options to place a directional bet. It makes sense only if the options are not too expensive currently. How to find out?
I demonstrate a possible way to solve the problem below, including Python code. I hope that you will point out its errors and shortcomings.
To begin with, I have OHLC historical data.
I could easily calculate the realized volatility for the last year. However, it differs significantly from year to year. It is unlikely that in the subsequent period, it will be very similar to the recent one.
It seems more reasonable to calculate the daily percentage price movements. I have annualized them by multiplying by 252^0,5 to compare with the traded options implied volatility.
I have also calculated the weekly percentage price movements and annualized them by multiplying by 52^0,5.
Code:data['pct_chng'] = (data['Close']-data['Close'].shift())/data['Close'].shift() # now annualize to be able to compare with traded options implied volatility data['pct_chng_a'] = abs(data['pct_chng']*100)*(252**0.5) # now do the same for weekly price movements data['pct_chng_weekly_a'] = (data['Close']-data['Close'].shift(5))/data['Close'].shift(5) data['pct_chng_weekly_a'] = abs(data['pct_chng_weekly_a']*100)*(52**0.5) print(data[['Close', 'pct_chng', 'pct_chng_a', 'pct_chng_weekly_a']].tail())
Result:
Code:Close pct_chng pct_chng_a pct_chng_weekly_a Date 2023-01-12 00:00:00-05:00 330.130005 0.008770 13.921579 47.569508 2023-01-13 00:00:00-05:00 332.820007 0.008148 12.935045 39.466293 2023-01-17 00:00:00-05:00 326.220001 -0.019831 31.480033 25.282416 2023-01-18 00:00:00-05:00 326.329987 0.000337 0.535210 2.663978 2023-01-19 00:00:00-05:00 315.779999 -0.032329 51.321016 25.295952
After that:
Code:data['pct_chng_annualized'].describe() count 5200.000000 mean 36.678109 std 43.812184 min 0.000000 25% 10.906413 50% 24.833079 75% 47.330351 max 670.277442
If I use weekly percentage price movements, the result is similar.
Code:data['pct_chng_week_annualized'].describe() count 5196.000000 mean 40.673958 std 43.129768 min 0.000000 25% 12.736723 50% 28.627616 75% 53.388777 max 530.388741
Let's say options are currently trading with an implied volatility of 54%. Is it correct to conclude that they are expensive because their implied volatility is higher than the 75th percentile?
Is the above approach generally correct?
- ex-earnings IV vs ex-earnings HV (with a good HV like Parkinsons. We have matched this to empirical studies simulating scalping gamma and converting to an HV.)
- Percentiles with ex-earnings IV
- Distributions of stock price moves adjusted for IV
- Forecasts of HV
- Smoothed IV curves
- Comparisons to the best ETF component weighted average.
https://gyazo.com/89a35af8aa38ffb2f8d3e88fec8215db
The ex-earnigns IV is what you should be calculating a percentile on. You should also look separately at the implied earnings move for the stock. Since there are two moving parts you should try to look at them separately. Here's a look at the implied earnings move.
https://gyazo.com/d844b15eabdd72cce50d28e52928e9ab
Today the market thinks the move will be 8.6% (pre market is about 6.3%), last earnings was 11.8% (it moved 13.1%). You can do a comparison to history to see if that is low or high. You should use the sector to see how other stocks were implying earnings moves. For example, the weighted average for XLY_C (component weighted discresionary) is 5.8% average implied earnings moves, whereas back on NFLXs last earnings 10/18/2022 the XLY_C implied moves avg was 6.3%.
https://gyazo.com/1143732597f3d3a4efae28fe712120d2
We also use distributions to value options. We do an expected return by multiplying the payoff at expiration times the node percentages. Here is a straddle trading $46.78 that we have valued at $39.97 or 14.56% overvalued. Similarly, our forecast based on HV research is $39.94. Both, probably would have worked out. The smoothed curve theoretical is right on the mid market which shows the straddle is fairly priced vs other options in the month.
https://gyazo.com/e7d38cb44148a66e6e8da0d33d64e0a2
) . If I had bet less, I would've lost less but I would've still lost. That's my point.