Example #1
0
    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)
Example #2
0
    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)