def calculateVolatility(self, primium, type, stockPrice, strike, expiryYears, riskfreeRate): if stockPrice <= 0 or primium <= 0 or expiryYears <= 0: return 0 bs = BlackScholesCalculator() loopVolatility = self.initVolatility(stockPrice, expiryYears, primium) prevVolatility = loopVolatility / 2.0 loopPremium = bs.getValue(type, stockPrice, strike, prevVolatility, expiryYears, riskfreeRate) loop = 0 while (1 == 1): loop += 1 if loop > 1000: return -1 newPrimium = bs.getValue(type, stockPrice, strike, loopVolatility, expiryYears, riskfreeRate) prevPrimium = loopPremium loopPrimium = newPrimium if newPrimium < 0.00001: return -1 var1 = loopPrimium - primium if (abs(loopPrimium - primium) <= 0.01): return loopVolatility loopVega = bs.getVega(stockPrice, strike, loopVolatility, expiryYears, riskfreeRate) newVolatility = self.adjVolatility(loopVolatility, loopPrimium, loopVega, prevVolatility, prevPrimium, primium) prevVolatility = loopVolatility loopVolatility = newVolatility
theta = bs.getTheta(opt.type, opt.stockPrice, opt.strike, opt.volatility, opt.expiryYears, opt.riskfreeRate) print "theta of call:", theta rho = bs.getRho(opt.type, opt.stockPrice, opt.strike, opt.volatility, opt.expiryYears, opt.riskfreeRate) print "rho of call:", rho print opt = EuropeanOptions("put", 100.0, 100.0, 0.35607, 1, 0.02) value = bs.getValue(opt.type, opt.stockPrice, opt.strike, opt.volatility, opt.expiryYears, opt.riskfreeRate) print "value of put:", value delta = bs.getDelta(opt.type, opt.stockPrice, opt.strike, opt.volatility, opt.expiryYears, opt.riskfreeRate) print "delta of put:", delta theta = bs.getTheta(opt.type, opt.stockPrice, opt.strike, opt.volatility, opt.expiryYears, opt.riskfreeRate) print "theta of put:", theta rho = bs.getRho(opt.type, opt.stockPrice, opt.strike, opt.volatility, opt.expiryYears, opt.riskfreeRate) print "rho of put:", rho print gamma = bs.getGamma(opt.stockPrice, opt.strike, opt.volatility, opt.expiryYears, opt.riskfreeRate) print "gamma:", gamma vega = bs.getVega(opt.stockPrice, opt.strike, opt.volatility, opt.expiryYears, opt.riskfreeRate) print "vega:", vega