def test_implied_volatility(self): self.assertAlmostEquals(0.30, Option.imply_volatility(10.10, opt_type=OptionType.PUT, spot0=90, strike=100, mat=1.0 / 12, riskless_rate=0.10), delta=0.01) self.assertAlmostEquals(0.52, Option.imply_volatility(2.25, opt_type=OptionType.CALL, spot0=90, strike=100, mat=1.0 / 12, riskless_rate=0.10), delta=0.01) premium = 10.10 opt_kwargs = { 'opt_type': OptionType.PUT, 'spot0': 90, 'strike': 100, 'mat': 1.0 / 12, 'riskless_rate': 0.10, } self.assertAlmostEquals(0.30, Option.imply_volatility(premium, **opt_kwargs), delta=0.01) opt_kwargs['vol'] = Option.imply_volatility(premium, **opt_kwargs) self.assertAlmostEquals(premium, Option(**opt_kwargs).run_model(model=OptionModel.BINOMIAL_TREE)[OptionMeasure.VALUE], delta=0.01)
def test_implied_volatility(self): self.assertAlmostEquals(0.30, Option.imply_volatility( 10.10, opt_type=OptionType.PUT, spot0=90, strike=100, mat=1.0 / 12, riskless_rate=0.10), delta=0.01) self.assertAlmostEquals(0.52, Option.imply_volatility( 2.25, opt_type=OptionType.CALL, spot0=90, strike=100, mat=1.0 / 12, riskless_rate=0.10), delta=0.01) premium = 10.10 opt_kwargs = { 'opt_type': OptionType.PUT, 'spot0': 90, 'strike': 100, 'mat': 1.0 / 12, 'riskless_rate': 0.10, } self.assertAlmostEquals(0.30, Option.imply_volatility(premium, **opt_kwargs), delta=0.01) opt_kwargs['vol'] = Option.imply_volatility(premium, **opt_kwargs) self.assertAlmostEquals( premium, Option(**opt_kwargs).run_model( model=OptionModel.BINOMIAL_TREE)[OptionMeasure.VALUE], delta=0.01)