August 25th, 2011, 8:38 pm
here's the code I am using:double IV(double S, double X, double r, double div, double k, double T){ double a=0.25; const double epsilon=0.00000001; double error=0.0; double vol=0.0; double mktprc=11;//option's market price do { double price=BSprice(100,100,0.02,0.0,a,1); double vega=Vega(100,100,0.02,0.0,a,1); vol=a-(price-mktprc)/(vega); std::cout<<"vol is: "<<vol<<std::endl; error=vol-a; a=vol; } while (abs(error)>epsilon); return a;} any suggestions on improvement.
Last edited by
barora on August 24th, 2011, 10:00 pm, edited 1 time in total.