Implied volatility calculator

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
 
Aah, I didn’t know this was you.

wheeliy2.jpg


Circ. = 4 * side
 
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;
};
 
Quote from commiebat:

I'm developing something called a "wheel". Anyone have a formula for calculating the circumference?
Very rarely will I laugh out loud reading a forum :D

But ya got me cb...
 
Back
Top