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)
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)