Makes sense. I know that there is volatility "smile" (concave versus strike with minimum ATM) and that the smile can skew in one direction or the other. But I am trying to wrap my head around the systematic variations in IV as a given option "ages". Interesting stuff, very interesting...
To quote @destriero, "vol = synth time." Think about it this way: when you pay for insurance, the longer the term, the more you pay. Why? Because for every unit of time that passes, that insurance company is at a risk of you crashing. So, more time = more volatility. Same deal with you being short an option: the longer you write it for, the more volatility you're exposed to - and the greater the premium. Read up on the vol smirk (it's not a smile, because it's lopsided), and why it's on the put side... at least since 1987 or so. There's a number of other influences on price, and thus vol - which way the market sees trend/movement/uncertainty - so there's plenty of places to hunt for opportunity. (I find this stuff fascinating, and can geek out about it for days. )
When I started analyzing the vol smile/smirk as well as the IV DTE-dependence, my eyes were immediately opened. Such a small market, with so many degrees of freedom. Some guy on this forum previously posted that he spent 16 hours a day looking at options chains. I can believe it. I assume people are looking for dislocations from an expected vol curve and trading reversions to the mean?
Looking at theta and gamma surfaces (or at least curves), especially as they approach expiration, is very instructive. That's certainly one approach. But consider that dislocations may simply reflect correctly priced-in events - and "perfect" vol curves may conceal one that's not being correctly priced. If you like multidimensional chess played aboard the Millennium Falcon as it's dodging through the asteroid field at high speed in variable gravity, you've found it.
Calculation of implied volatility of Black Scholes using method of bisections. C++ in Finance (ba-odegaard.no) #include <cmath> #include "fin_recipes.h" double option_price_implied_volatility_call_black_scholes_bisections(const double &S, const double &K, const double &r, const double &time, const double &option_price) { if (option_price<0.99*(S-K*exp(-time*r))) { // check for arbitrage violations. return 0.0; // Option price is too low if this happens }; // simple binomial search for the implied volatility. // relies on the value of the option increasing in volatility const double ACCURACY = 1.0e-5; // make this smaller for higher accuracy const int MAX_ITERATIONS = 100; const double HIGH_VALUE = 1e10; const double ERROR = -1e40; // want to bracket sigma. first find a maximum sigma by finding a sigma // with a estimated price higher than the actual price. double sigma_low=1e-5; double sigma_high=0.3; double price = option_price_call_black_scholes(S,K,r,sigma_high,time); while (price < option_price) { sigma_high = 2.0 * sigma_high; // keep doubling. price = option_price_call_black_scholes(S,K,r,sigma_high,time); if (sigma_high>HIGH_VALUE) return ERROR; // panic, something wrong. }; for (int i=0;i<MAX_ITERATIONS;i++) { double sigma = (sigma_low+sigma_high)*0.5; price = option_price_call_black_scholes(S,K,r,sigma,time); double test = (price-option_price); if (fabs(test)<ACCURACY) { return sigma; }; if (test < 0.0) { sigma_low = sigma; } else { sigma_high = sigma; } }; return ERROR; };
No chess for me, but I do like the multidimensional part! So are the smart (miserly) kids doing their own data mining to extract the vol/greek surfaces? Or is there a data provider(s) that makes it easy?
Bisection method...A blast from Numerical Analysis class in 1996ish. So the professor was an Egyptian guy who was on sabbatical at Rice. He'd be explaining or deriving an equation, and one of us would ask for clarification. Typical response: "eeeeetz treeeveeeal" (it's trivial). I guess you had to be there