diff options
Diffstat (limited to 'python/tests')
| -rw-r--r-- | python/tests/test_index.py | 20 | ||||
| -rw-r--r-- | python/tests/test_swaption.py | 7 |
2 files changed, 23 insertions, 4 deletions
diff --git a/python/tests/test_index.py b/python/tests/test_index.py index 18c639e2..bc3f9966 100644 --- a/python/tests/test_index.py +++ b/python/tests/test_index.py @@ -6,7 +6,7 @@ from pyisda.cdsone import upfront_charge from pyisda.utils import build_yc from pyisda.flat_hazard import strike_vec -from analytics import Index +from analytics import Index, ForwardIndex from analytics.index import g class TestStrike(unittest.TestCase): @@ -42,10 +42,24 @@ class TestStrike(unittest.TestCase): self.index.spread = 75 self.assertAlmostEqual(self.index.clean_pv, r[1]) +class TestForwardIndex(unittest.TestCase): + index = Index.from_name("ig", 26, "5yr", + trade_date = datetime.date(2016, 7, 1)) + index.notional = 50e6 + index.spread = 75 + exercise_date = datetime.date(2016, 8, 19) + fi = ForwardIndex(index, exercise_date) + + def test_forward_pv(self): + """default adjusted forward spread and forward annuity match""" + self.assertAlmostEqual(self.fi.forward_pv, + self.fi.forward_annuity * + (self.fi.index.fixed_rate - self.forward_spread) * 1e-4) + def test_forward_pv(self): """default adjusted forward price for trade_date equals clean pv """ - self.assertAlmostEqual(self.index.forward_pv(self.index.trade_date), - self.index.clean_pv) + fi = ForwardIndex(self.index, self.index.trade_date) + self.assertAlmostEqual(fi.forward_pv, self.index.clean_pv / self.index.notional) if __name__=="__main__": unittest.main() diff --git a/python/tests/test_swaption.py b/python/tests/test_swaption.py index c3b008c6..bccab8de 100644 --- a/python/tests/test_swaption.py +++ b/python/tests/test_swaption.py @@ -20,8 +20,13 @@ class TestPutCallParity(unittest.TestCase): receiver.sigma = 0.416 df = self.index._yc.discount_factor(payer.exercise_date_settle) self.assertAlmostEqual(payer.pv - receiver.pv, - df * (self.index.forward_pv(self.exercise_date)/self.index.notional - + df * (payer.forward_pv(self.exercise_date) - g(self.index, self.strike, self.exercise_date, payer._forward_yc))) + def test_inheritance(self): + payer = Swaption(self.index, self.exercise_date, self.strike) + self.assertEqual(payer.forward_pv, + self.index.forward_pv(self.exercise_date)/self.index.notional) + def test_parity_pvblack(self): payer = Swaption(self.index, self.exercise_date, self.strike) receiver = Swaption(self.index, self.exercise_date, self.strike, "receiver") |
