aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/tests/test_index.py20
-rw-r--r--python/tests/test_swaption.py7
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")