You and Dest are very generous with your time and deep financial expertise. I wish posters who challenged your answers understood that.
My tip to everybody: I came to the conclusion that one ALWAYS IMMEDIATELY has to recalculate Bid, Ask, IV using the very current data (Spot, DTE, MidPrice, Risk-Free Interest Rate etc.). The difference is like night and day and really gives a good insight. I added 3 new fields named OriginalBid, OriginalAsk, OriginalIV which I fill from the Bid, Ask, IV. And then modify the Bid, Ask, IV with my own calculations... Ie. I keep the originals only to see the difference... Ie. I'm now re-calculating the whole option chain table every time I download new data... Re-calculating IV is a little bit costly, but I 'm using a binary-search algorithm with some optimizations (esp. regarding accuracy and with it when to abort the search. On average only about 25 interval-halving steps are used...). Here's an example of re-calculated data of last Friday at around 10 minutes before market close: compare B to OB, A to OA, IV to OIV ("O" meaning the original data): Code: FAZE_051923P5 K=5.00 L=4.60 B=4.5001 + A=4.8142 - IV=1061.9354- OB=4.20 OA=6.40 OIV=1494.3 FAZE_051923P7.5 K=7.50 L=7.16 B=7.0001 + A=7.3136 - IV=1141.1285- OB=6.70 OA=8.90 OIV=1569.6 WE_052623P.5 K=0.50 L=0.15 B=0.0700 + A=0.3375 - IV=388.2921 - OB=0.00 OA=0.35 OIV=777.61 NVAX_051923P4.5 K=4.50 L=0.20 B=0.0300 A=1.0559 - IV=368.7644 - OB=0.03 OA=2.21 OIV=518.09 NVAX_052623P4 K=4.00 L=0.16 B=0.0100 A=1.0753 - IV=347.6816 - OB=0.01 OA=2.21 OIV=489.45 FAZE_061623P5 K=5.00 L=4.50 B=4.5001 + A=4.8717 - IV=655.5939 - OB=4.00 OA=6.70 OIV=982.52 NVAX_051923P5.5 K=5.50 L=0.27 B=0.0200 A=1.1286 - IV=279.3562 - OB=0.02 OA=2.38 OIV=410.69 NVAX_060923P3.5 K=3.50 L=0.17 B=0.0300 A=1.2175 - IV=330.5501 - OB=0.03 OA=2.26 OIV=469.02 NVAX_060223P4 K=4.00 L=0.17 B=0.0100 A=1.1089 - IV=305.1636 - OB=0.01 OA=2.29 OIV=431.50 NVAX_060223P4.5 K=4.50 L=0.15 B=0.0200 A=1.1407 - IV=268.7991 - OB=0.02 OA=2.35 OIV=383.40 NVAX_051223P4.5 K=4.50 L=0.10 B=0.0700 A=0.1893 - IV=312.8043 - OB=0.07 OA=0.39 OIV=350.18 NVAX_052623P6 K=6.00 L=0.54 B=0.1600 A=1.2941 - IV=219.9522 - OB=0.16 OA=2.53 OIV=319.22 BFH_051923P17.5 K=17.50 L=0.30 B=0.0500 A=2.2796 - IV=232.9402 - OB=0.05 OA=4.80 OIV=321.27 NVAX_060923P5 K=5.00 L=0.35 B=0.1000 A=1.3766 - IV=234.2030 - OB=0.10 OA=2.40 OIV=338.17 ACB_062323P.5 K=0.50 L=0.06 B=0.0100 A=0.2425 - IV=237.2915 - OB=0.01 OA=0.43 OIV=408.35 FLUX_051923P2.5 K=2.50 L=0.05 B=0.0500 A=0.1976 - IV=237.6740 - OB=0.05 OA=0.45 OIV=284.16 WE_061623P5 K=5.00 L=2.48 B=4.5700 + A=4.8000 IV=595.7031 - OB=4.40 OA=4.80 OIV=1248.0 NVAX_051223P5.5 K=5.50 L=0.24 B=0.1600 A=0.1611 - IV=233.3650 - OB=0.16 OA=0.24 OIV=233.64 NVAX_051223P5 K=5.00 L=0.15 B=0.1186 - A=0.1186 - IV=256.5511 OB=0.14 OA=0.16 OIV=256.55 NVAX_060223P5.5 K=5.50 L=0.45 B=0.0500 A=1.1967 - IV=206.0384 - OB=0.05 OA=2.45 OIV=301.61 IBRX_061623P5 K=5.00 L=1.24 B=1.1000 A=1.1425 - IV=196.9266 - OB=1.10 OA=1.35 OIV=200.12 VRM_061623P.5 K=0.50 L=0.04 B=0.0200 A=0.1286 - IV=228.5036 - OB=0.02 OA=0.24 OIV=309.46 SI_051923P1 K=1.00 L=0.05 B=0.0500 A=0.0590 - IV=200.5441 - OB=0.05 OA=0.10 OIV=207.38 IBRX_061623P2.5 K=2.50 L=0.30 B=0.2980 - A=0.2980 - IV=256.5271 OB=0.30 OA=0.35 OIV=256.53 TUP_061623P1 K=1.00 L=0.30 B=0.2000 A=0.2346 - IV=186.9109 - OB=0.20 OA=0.25 OIV=199.93 NVAX_051923P5 K=5.00 L=0.20 B=0.2032 - A=0.2032 - IV=214.5810 OB=0.21 OA=0.26 OIV=214.58 SI_061623P1 K=1.00 L=0.18 B=0.1500 A=0.1582 - IV=194.5779 - OB=0.15 OA=0.20 OIV=197.65 NVAX_062323P4.5 K=4.50 L=0.24 B=0.0200 A=1.3366 - IV=218.8107 - OB=0.02 OA=2.45 OIV=319.70 SI_052623P1 K=1.00 L=0.10 B=0.0500 A=0.0834 - IV=178.7004 - OB=0.05 OA=0.15 OIV=198.22 SI_060923P1 K=1.00 L=0.20 B=0.1000 A=0.1331 - IV=182.0350 - OB=0.10 OA=0.20 OIV=195.83 SI_062323P1 K=1.00 L=0.20 B=0.1500 A=0.1974 - IV=193.6239 - OB=0.15 OA=0.30 OIV=209.85 NVAX_060923P6.5 K=6.50 L=0.85 B=0.1400 A=1.6275 - IV=162.0030 - OB=0.14 OA=2.73 OIV=255.04 NVAX_060223P6 K=6.00 L=0.54 B=0.0400 A=1.0656 - IV=163.2470 - OB=0.04 OA=2.21 OIV=241.98 NVAX_052623P5 K=5.00 L=0.31 B=0.0200 A=0.4681 - IV=186.7484 - OB=0.02 OA=0.98 OIV=242.48 SI_060223P1 K=1.00 L=0.15 B=0.0500 A=0.1026 - IV=164.5425 - OB=0.05 OA=0.20 OIV=190.29 VUZI_072123P3 K=3.00 L=0.25 B=0.0500 A=1.9370 - IV=237.0536 - OB=0.05 OA=3.80 OIV=443.46 IMUX_072123P1.5 K=1.50 L=0.35 B=0.1000 A=1.0012 - IV=225.6542 - OB=0.10 OA=1.95 OIV=435.52 SRPT_051923P100 K=100.00 L=3.80 B=3.5000 A=3.7926 - IV=157.1624 - OB=3.50 OA=4.30 OIV=159.59 SRPT_060223P105 K=105.00 L=9.20 B=6.7000 A=8.4635 - IV=136.6460 - OB=6.70 OA=10.20 OIV=144.80 NNOX_061623P12.5 K=12.50 L=1.35 B=1.3500 A=1.3820 - IV=136.8140 - OB=1.35 OA=1.80 OIV=137.78 UVIX_062323P10 K=10.00 L=1.55 B=1.4500 A=1.5721 - IV=137.0348 - OB=1.45 OA=1.75 OIV=141.21 TUP_072123P1 K=1.00 L=0.33 B=0.3000 A=0.3232 - IV=191.3756 - OB=0.30 OA=0.35 OIV=198.10 IBRX_072123P5 K=5.00 L=1.50 B=1.1500 A=1.3145 - IV=157.7994 - OB=1.15 OA=1.55 OIV=167.03 MRAI_072123P5 K=5.00 L=2.67 B=4.3595 + A=4.7000 IV=404.1958 - OB=4.10 OA=4.70 OIV=583.93
Update to the above table: this here includes also the Spot (named "US") and DTE. And: I do recalc the IV only if Bid or Ask gets changed by checking the boundaries (minPremium, maxPremium as was previously posted here). And: of course these re-calculated Bid, Ask, IV are just some theoretical values (but more realistic values) intended as input for trading systems that make use of these data and use only limit orders. Of course these are not real Bid, Ask, IV (as said, the real/original values are saved in OB, OA, OIV) . Code: FAZE_051923P5 DTE=14 US=0.4999 K=5.00 L=4.60 B=4.5001 + A=4.8142 - IV=1061.9354- OB=4.20 OA=6.40 OIV=1494.34 ... FAZE_051923P7.5 DTE=14 US=0.4999 K=7.50 L=7.16 B=7.0001 + A=7.3136 - IV=1141.1285- OB=6.70 OA=8.90 OIV=1569.63 WE_052623P.5 DTE=21 US=0.4300 K=0.50 L=0.15 B=0.0700 + A=0.3375 - IV=388.2921 - OB=0.00 OA=0.35 OIV=777.61 NVAX_051923P4.5 DTE=14 US=7.7000 K=4.50 L=0.20 B=0.0300 A=1.0559 - IV=368.7644 - OB=0.03 OA=2.21 OIV=518.09 NVAX_052623P4 DTE=21 US=7.7000 K=4.00 L=0.16 B=0.0100 A=1.0753 - IV=347.6816 - OB=0.01 OA=2.21 OIV=489.45 FAZE_061623P5 DTE=42 US=0.4999 K=5.00 L=4.50 B=4.5001 + A=4.8717 - IV=655.5939 - OB=4.00 OA=6.70 OIV=982.52 NVAX_051923P5.5 DTE=14 US=7.7000 K=5.50 L=0.27 B=0.0200 A=1.1286 - IV=279.3562 - OB=0.02 OA=2.38 OIV=410.69 NVAX_060923P3.5 DTE=35 US=7.7000 K=3.50 L=0.17 B=0.0300 A=1.2175 - IV=330.5501 - OB=0.03 OA=2.26 OIV=469.02 NVAX_060223P4 DTE=28 US=7.7000 K=4.00 L=0.17 B=0.0100 A=1.1089 - IV=305.1636 - OB=0.01 OA=2.29 OIV=431.50 NVAX_060223P4.5 DTE=28 US=7.7000 K=4.50 L=0.15 B=0.0200 A=1.1407 - IV=268.7991 - OB=0.02 OA=2.35 OIV=383.40 NVAX_051223P4.5 DTE=7 US=7.7000 K=4.50 L=0.10 B=0.0700 A=0.1893 - IV=312.8043 - OB=0.07 OA=0.39 OIV=350.18 NVAX_052623P6 DTE=21 US=7.7000 K=6.00 L=0.54 B=0.1600 A=1.2941 - IV=219.9522 - OB=0.16 OA=2.53 OIV=319.22 BFH_051923P17.5 DTE=14 US=25.0100 K=17.50 L=0.30 B=0.0500 A=2.2796 - IV=232.9402 - OB=0.05 OA=4.80 OIV=321.27 NVAX_060923P5 DTE=35 US=7.7000 K=5.00 L=0.35 B=0.1000 A=1.3766 - IV=234.2030 - OB=0.10 OA=2.40 OIV=338.17 ACB_062323P.5 DTE=49 US=0.6510 K=0.50 L=0.06 B=0.0100 A=0.2425 - IV=237.2915 - OB=0.01 OA=0.43 OIV=408.35 FLUX_051923P2.5 DTE=14 US=3.9499 K=2.50 L=0.05 B=0.0500 A=0.1976 - IV=237.6740 - OB=0.05 OA=0.45 OIV=284.16 WE_061623P5 DTE=42 US=0.4300 K=5.00 L=2.48 B=4.5700 + A=4.8000 IV=595.7031 - OB=4.40 OA=4.80 OIV=1248.03 NVAX_051223P5.5 DTE=7 US=7.7000 K=5.50 L=0.24 B=0.1600 A=0.1611 - IV=233.3650 - OB=0.16 OA=0.24 OIV=233.64 NVAX_051223P5 DTE=7 US=7.7000 K=5.00 L=0.15 B=0.1186 - A=0.1186 - IV=256.5511 OB=0.14 OA=0.16 OIV=256.55 NVAX_060223P5.5 DTE=28 US=7.7000 K=5.50 L=0.45 B=0.0500 A=1.1967 - IV=206.0384 - OB=0.05 OA=2.45 OIV=301.61 IBRX_061623P5 DTE=42 US=5.5500 K=5.00 L=1.24 B=1.1000 A=1.1425 - IV=196.9266 - OB=1.10 OA=1.35 OIV=200.12 VRM_061623P.5 DTE=42 US=0.8278 K=0.50 L=0.04 B=0.0200 A=0.1286 - IV=228.5036 - OB=0.02 OA=0.24 OIV=309.46 SI_051923P1 DTE=14 US=1.3700 K=1.00 L=0.05 B=0.0500 A=0.0590 - IV=200.5441 - OB=0.05 OA=0.10 OIV=207.38 IBRX_061623P2.5 DTE=42 US=5.5500 K=2.50 L=0.30 B=0.2980 - A=0.2980 - IV=256.5271 OB=0.30 OA=0.35 OIV=256.53 TUP_061623P1 DTE=42 US=1.0900 K=1.00 L=0.30 B=0.2000 A=0.2346 - IV=186.9109 - OB=0.20 OA=0.25 OIV=199.93 NVAX_051923P5 DTE=14 US=7.7000 K=5.00 L=0.20 B=0.2032 - A=0.2032 - IV=214.5810 OB=0.21 OA=0.26 OIV=214.58 SI_061623P1 DTE=42 US=1.3700 K=1.00 L=0.18 B=0.1500 A=0.1582 - IV=194.5779 - OB=0.15 OA=0.20 OIV=197.65 NVAX_062323P4.5 DTE=49 US=7.7000 K=4.50 L=0.24 B=0.0200 A=1.3366 - IV=218.8107 - OB=0.02 OA=2.45 OIV=319.70 SI_052623P1 DTE=21 US=1.3700 K=1.00 L=0.10 B=0.0500 A=0.0834 - IV=178.7004 - OB=0.05 OA=0.15 OIV=198.22 SI_060923P1 DTE=35 US=1.3700 K=1.00 L=0.20 B=0.1000 A=0.1331 - IV=182.0350 - OB=0.10 OA=0.20 OIV=195.83 SI_062323P1 DTE=49 US=1.3700 K=1.00 L=0.20 B=0.1500 A=0.1974 - IV=193.6239 - OB=0.15 OA=0.30 OIV=209.85 NVAX_060923P6.5 DTE=35 US=7.7000 K=6.50 L=0.85 B=0.1400 A=1.6275 - IV=162.0030 - OB=0.14 OA=2.73 OIV=255.04 NVAX_060223P6 DTE=28 US=7.7000 K=6.00 L=0.54 B=0.0400 A=1.0656 - IV=163.2470 - OB=0.04 OA=2.21 OIV=241.98 NVAX_052623P5 DTE=21 US=7.7000 K=5.00 L=0.31 B=0.0200 A=0.4681 - IV=186.7484 - OB=0.02 OA=0.98 OIV=242.48 SI_060223P1 DTE=28 US=1.3700 K=1.00 L=0.15 B=0.0500 A=0.1026 - IV=164.5425 - OB=0.05 OA=0.20 OIV=190.29 VUZI_072123P3 DTE=77 US=4.0000 K=3.00 L=0.25 B=0.0500 A=1.9370 - IV=237.0536 - OB=0.05 OA=3.80 OIV=443.46 IMUX_072123P1.5 DTE=77 US=1.6500 K=1.50 L=0.35 B=0.1000 A=1.0012 - IV=225.6542 - OB=0.10 OA=1.95 OIV=435.52 SRPT_051923P100 DTE=14 US=131.1000 K=100.00 L=3.80 B=3.5000 A=3.7926 - IV=157.1624 - OB=3.50 OA=4.30 OIV=159.59 SRPT_060223P105 DTE=28 US=131.1000 K=105.00 L=9.20 B=6.7000 A=8.4635 - IV=136.6460 - OB=6.70 OA=10.20 OIV=144.80 NNOX_061623P12.5 DTE=42 US=15.3700 K=12.50 L=1.35 B=1.3500 A=1.3820 - IV=136.8140 - OB=1.35 OA=1.80 OIV=137.78 UVIX_062323P10 DTE=49 US=11.3350 K=10.00 L=1.55 B=1.4500 A=1.5721 - IV=137.0348 - OB=1.45 OA=1.75 OIV=141.21 TUP_072123P1 DTE=77 US=1.0900 K=1.00 L=0.33 B=0.3000 A=0.3232 - IV=191.3756 - OB=0.30 OA=0.35 OIV=198.10 IBRX_072123P5 DTE=77 US=5.5500 K=5.00 L=1.50 B=1.1500 A=1.3145 - IV=157.7994 - OB=1.15 OA=1.55 OIV=167.03 MRAI_072123P5 DTE=77 US=0.6405 K=5.00 L=2.67 B=4.3595 + A=4.7000 IV=404.1958 - OB=4.10 OA=4.70 OIV=583.93
I've improved the above method by using 2 BSM calls (one for min, one for max). It's computationally of course more costly, but also more accurate than the above method. Drop me a PM if you need the C++ code (but you already should have the BSM function as this just calls it with some params).
I just expanded my option chains and looked at what columns were available to select. IV bid, IV ask, and IV mid are all available.
That's probably because people on the buy-side will be more interested in the ask and people on the sell-side will be more interested in the bid. I think it's important to remember that IV is, in a sense, a make believe number... it's trying to quantify expectations; of which there may be quite a few. The real question IMHO when trading vol is: what is your expectation.
If this thread has done anything, because I pay attention to Newurldman, I've learned quite a bit of new stuff about IV going down the rabbit-hole reading things.