def setUp(self):
        DefaultHeston = HestonBarrierOption(spot=100,
                                            strike=100,
                                            interest_rate=0.06,
                                            volatility=0.2,
                                            tenor=1.0,
                                            mean_reversion=1,
                                            mean_variance=0.12,
                                            vol_of_variance=0.3,
                                            correlation=0.4,
                                            top=(False, 170.0))
        option = DefaultHeston
        # option = HestonOption(tenor=1, strike=99.0, volatility=0.2,
        # mean_reversion=3, mean_variance=0.04,
        # vol_of_variance=0.6, correlation=-0.7)

        self.dt = 1.0 / 150.0
        self.F = HestonFiniteDifferenceEngine(option,
                                              nspots=150,
                                              nvols=80,
                                              force_bandwidth=None,
                                              flip_idx_var=False)

        self.F.init()
        self.F.operators[1].diagonalize()
        self.FG = FDG.HestonFiniteDifferenceEngine(option,
                                                   nspots=self.F.grid.shape[0],
                                                   nvols=self.F.grid.shape[1])
        self.FG.make_operator_templates()
        self.FG.set_zero_derivative()
        self.FG.scale_and_combine_operators()
    def setUp(self):
        DefaultHeston = HestonBarrierOption(spot=100,
                                            strike=100,
                                            interest_rate=0.03125,
                                            volatility=0.2,
                                            tenor=1.0,
                                            mean_reversion=1,
                                            mean_variance=0.12,
                                            vol_of_variance=0.3,
                                            correlation=10.4,
                                            top=(False, 170.0))
        option = DefaultHeston

        # option = HestonOption(tenor=1, strike=99.0, volatility=0.2,
        # mean_reversion=3, mean_variance=0.04,
        # vol_of_variance=0.6, correlation=-0.7)

        self.dt = 1.0 / 2.0
        self.F = HestonFiniteDifferenceEngine(option,
                                              nspots=5,
                                              nvols=5,
                                              force_bandwidth=None,
                                              force_exact=False,
                                              flip_idx_var=False)

        # self.F = HestonFiniteDifferenceEngine(H, nspots=100,
        # nvols=100, spotdensity=10, varexp=4,
        # var_max=12, flip_idx_spot=False,
        # flip_idx_var=False, verbose=False,
        # force_bandwidth=None,
        # force_exact=False)

        self.F.init()

        self.FGG = FDG.HestonFiniteDifferenceEngine(
            option,
            force_exact=False,
            nspots=self.F.grid.shape[0],
            nvols=self.F.grid.shape[1])
        self.FGG.set_zero_derivative()
        self.FGG.make_operator_templates()