def test_model_cache(self): opt = Option(opt_type=OptionType.CALL, spot0=90, strike=100, mat=3.0 / 12, vol=0.35, riskless_rate=0.10, yield_=0.025) self.assertEquals(0, len(opt.model_cache)) self.assertAlmostEquals( 3.19, opt.run_model( model=OptionModel.BINOMIAL_TREE)[OptionMeasure.VALUE], delta=0.01) self.assertEquals([OptionModel.BINOMIAL_TREE], opt.model_cache.keys()) self.assertAlmostEquals( 3.19, opt.run_model( model=OptionModel.BINOMIAL_TREE)[OptionMeasure.VALUE], delta=0.01) opt.model_cache[OptionModel.BINOMIAL_TREE][OptionMeasure.VALUE] = 42.42 self.assertAlmostEquals( 42.42, opt.run_model( model=OptionModel.BINOMIAL_TREE)[OptionMeasure.VALUE], delta=0.01) opt.vol = 0.55 self.assertAlmostEquals( 6.76, opt.run_model( model=OptionModel.BINOMIAL_TREE)[OptionMeasure.VALUE], delta=0.01)
def test_model_cache(self): opt = Option(opt_type=OptionType.CALL, spot0=90, strike=100, mat=3.0 / 12, vol=0.35, riskless_rate=0.10, yield_=0.025) self.assertEquals(0, len(opt.model_cache)) self.assertAlmostEquals(3.19, opt.run_model(model=OptionModel.BINOMIAL_TREE)[OptionMeasure.VALUE], delta=0.01) self.assertEquals([OptionModel.BINOMIAL_TREE], opt.model_cache.keys()) self.assertAlmostEquals(3.19, opt.run_model(model=OptionModel.BINOMIAL_TREE)[OptionMeasure.VALUE], delta=0.01) opt.model_cache[OptionModel.BINOMIAL_TREE][OptionMeasure.VALUE] = 42.42 self.assertAlmostEquals(42.42, opt.run_model(model=OptionModel.BINOMIAL_TREE)[OptionMeasure.VALUE], delta=0.01) opt.vol = 0.55 self.assertAlmostEquals(6.76, opt.run_model(model=OptionModel.BINOMIAL_TREE)[OptionMeasure.VALUE], delta=0.01)