Nope. It doesn’t cut it. You can’t use a single measure of historic volatility for everything from a one month option to an expiry 24 months out. Perhaps the whole scheme is invalid. For instance IV for an SPX two year maturity is currently 15%+ while an option expiring in the next few days is 5% ish.
It may be invalid to use manufactured data at all. Except if you treat it as a sort of Monte Carlo test: this is what may/could have happened / might happen.
Anthony, the script is calculating the current price of an option. The current price depends on current volatility. Not on volatility from 24 months ago.
You calculate the value of European options with the Black Scholes formula, and American options, as in the script above, with an approximation method. Both methods normally use 20 days volatility. The volatility sampling method can differ, but the 20 days are pretty common to all options trading software that I know. And you can see from the comparison with real prices above that this period works rather well.
No, you can not calculate the current price of an option on any given day in that way. There is no way to accurately reproduce implied volatility hence price on any given date in the past. And it is the implied volatility we are interested in, not the historic. I totally agree on Black Scholes of course and its uses but it is cart before horse to expect to plug in 20 day volatility as at 3rd January 1985 and expect it to come up with an accurate price as traded at the close on that day for the SPX for any given strike or expiry.
It’s looking at it the wrong way around.
What you can try is to play around with different methods of estimating what the implied vol/ price MAY have been on 3rd Jan 1985 for a given strike and expiry of an SPX option.
For instance you might use 5 day historic volatility for an option expiring in a week and 252 day volatility for an option expiring in a year. Or you might imply volatilities by looking at the term structure of VIX futures contracts from 2004. Or at least use the VIX index itself going back to 1986 as input for 30 day volatility.
Whatever you do you won’t really be producing anything like what was actually traded on the day. Or at least not consistently and accurately over all expiries and strikes.
I believe that the process you describe does have a value but that the outcome of both the prices produced and the back tests resulting therefrom will be more akin to a random monte carlo process than to a back test on actual traded price data.
I believe it is a valuable process but that what is produced is a series of parallel universes: what might have happened to a given strategy over a given period of time using implied volatilities which may or may not have been traded.
Sorry to be long winded and I am an admirer of both your product and your script above. I would not have thought of generating fake option prices had I not seen your excellent article.
But in my opinion at least you need to rethink your input into the BS formula as far as volatility is concerned.
Incidentally please be well aware that I admire your product and your thoughts. Don’t imagine I am being difficult. Equally please don’t imagine I believe I am “right”!
I am just enjoying the journey and the dialogue with you and hoping together we can improve each other’s understanding of the topic.
Mine is limited!
Say the date you are looking at is 7th January 1987. On that day historic SPX volatility calculated over 20 trading days was 15.23. Historic volatility on that day for the past 252 days was 14.65
For 5 days it was 18
Now say I am trying to “calculate” (guess) a price (which might have been traded on 7th January 1987) for an option expiring in 5 days, 20 days and 252 days. Let’s assume ATM.
My suspicion is that it would not be helpful to use 15.23 for all three expiries.