Esempio n. 1
0
    def test_binomial_variable_hazard(self):
        """Test variable hazard rate."""
        dS = WienerJumpProcess(0.1, 0.2, lambda S: (S / 100)**-1, cap_lambda=True)

        S = np.linspace(0, 200, 401)
        for pu, pd, po in zip(*dS.binomial(1, S)):
            self.assertGreaterEqual(min(pu, pd, po), 0)
            self.assertEqual(pu + pd + po, 1)
        dS.cap_lambda = False
        self.assertRaises(ValueError, dS.binomial, 1, S)
Esempio n. 2
0
    def test_binomial(self):
        """Test parameters for the binomial model."""
        dS = WienerJumpProcess(0.1, 0.2, 0.1, 0.3)

        u, d, l, (pu, pd, po) = dS.binomial(1)
        self.assertGreater(u, np.exp(0.1))
        self.assertLess(d, np.exp(0.1))
        self.assertGreater(d, 0)

        self.assertGreaterEqual(l, 0)
        self.assertLessEqual(l, 1)

        self.assertGreaterEqual(min(pu, pd, po), 0)
        self.assertEqual(pu + pd + po, 1)

        dS.r = 1
        self.assertRaises(ValueError, dS.binomial, 0.2)

        dS.lambd_ = np.double('inf')
        self.assertRaises(ValueError, dS.binomial, 0.01)

        self.assertRaises(ValueError, dS.binomial, 0)
        self.assertRaises(ValueError, dS.binomial, -0.01)