diff options
Diffstat (limited to 'python/tests/test_index.py')
| -rw-r--r-- | python/tests/test_index.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/python/tests/test_index.py b/python/tests/test_index.py new file mode 100644 index 00000000..eaea83d6 --- /dev/null +++ b/python/tests/test_index.py @@ -0,0 +1,46 @@ +import unittest +import datetime +import numpy as np + +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.index import g + +class TestStrike(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) + + def test_strike(self): + """strike price equals clean_pv using expected forward yield curve""" + strike = g(self.index, self.index.spread, self.exercise_date, False) * self.index.notional + old_yc = self.index._yc + self.index.trade_date = self.exercise_date + self.index._yc = old_yc.expected_forward_curve(self.exercise_date) + self.index.spread = 75 + self.assertAlmostEqual(self.index.clean_pv, strike) + + def test_strike_vec(self): + self.index.trade_date = datetime.date(2016, 8, 19) + a, b = strike_vec(np.array([70, 75])*1e-4, self.index._yc, self.index.trade_date, + self.index._value_date, self.index.start_date, self.index.end_date, + self.index.recovery) + r = (a - self.index.fixed_rate*1e-4 * b) + self.index.notional = 1 + self.index.spread = 70 + self.assertAlmostEqual(self.index.clean_pv, r[0]) + self.index.spread = 75 + self.assertAlmostEqual(self.index.clean_pv, r[1]) + + 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) + +if __name__=="__main__": + unittest.main() |
