// // bs.cc Black-Scholes Pricing Engine // #include #include "bs.h" bs::bs(double ttm,double r,double sigma) { sigsqttm = sigma * sigma * ttm; disc = exp(-r * ttm);} void bs::newpars(double ttm,double r,double sigma) { sigsqttm = sigma * sigma * ttm; disc = exp(-r * ttm);} valhedge bs::ezcall(double stock,double bond,double vol) { distdens Nn1,Nn2; valhedge toreturn; Nn1 = Gaussian(log(stock/bond)/vol+vol/2.0); Nn2 = Gaussian(log(stock/bond)/vol-vol/2.0); toreturn.value = stock * Nn1.dist - bond * Nn2.dist; toreturn.delta = Nn1.dist; return(toreturn);} valhedge bs::call(double S0,double X) { return(ezcall(S0,X*disc,sqrt(sigsqttm)));}