General Topics
Markets
Technical Topics
Brokerage Firms
Community Lounge
Site Support

# Implied volatility calculator

Discussion in 'Options' started by freshpotato, Feb 15, 2008.

1. ### freshpotato

Hello,

I'm working on a implied volatility calculator for my new site, but are having some problems.

I have a rather lage options price database, and want to calculate implied volatility on all the options, does anyone have an idea on how to calculate iv?

Best regards

2. ### mihalich

please post the name of the site for not to use your calculator

3. ### nonprophet

For the IV, divide the number of days to go by the strike price, then take the root. Keep us posted about your site!

4. ### commiebat

I'm developing something called a "wheel". Anyone have a formula for calculating the circumference?

lol

6. ### nonprophet

Aah, I didnât know this was you.

Circ. = 4 * side

7. ### commiebat

Curse you. I was supposed to win this thread!

8. ### panzerman

From Bernt Odegaard's site. Finds IV using Method of Bisections

#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;
};

9. ### dipper17

Commie you got out smithed again!

10. ### NoBoB

Very rarely will I laugh out loud reading a forum

But ya got me cb...

#10     Feb 17, 2008
ET IS FREE BECAUSE OF THE FINANCIAL SUPPORT FROM THESE COMPANIES: