diff options
Diffstat (limited to 'python/tests/test_cds.py')
| -rw-r--r-- | python/tests/test_cds.py | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/python/tests/test_cds.py b/python/tests/test_cds.py index fb1c9b5b..6798c771 100644 --- a/python/tests/test_cds.py +++ b/python/tests/test_cds.py @@ -18,41 +18,43 @@ class TestUpfront(unittest.TestCase): def test_upfront(self): self.assertAlmostEqual(-self.index.pv, 685292.81, 2) - def test_cdsone(self): - jp_yc = get_curve(self.index.value_date, "USD") - fee_dirty = self.index.notional * ( - upfront_charge( - self.index.value_date, - self.index._cash_settle_date, - self.index.start_date, - self.index._step_in_date, - self.index.start_date, - self.index.end_date, - self.index.fixed_rate * 1e-4, - jp_yc, - 70e-4, - self.index.recovery, - False, - ) - ) - fee_clean = self.index.notional * ( + @staticmethod + def aux(index, yc, clean): + """computes upfront fee from index using upfront_charge of pyisda""" + return index.notional * ( upfront_charge( - self.index.value_date, - self.index._cash_settle_date, - self.index.start_date, - self.index._step_in_date, - self.index.start_date, - self.index.end_date, - self.index.fixed_rate * 1e-4, - jp_yc, - 70e-4, - self.index.recovery, - True, + index.value_date, + index._cash_settle_date, + index.start_date, + index._step_in_date, + index.start_date, + index.end_date, + index.fixed_rate * 1e-4, + yc, + index.spread * 1e-4, + index.recovery, + clean, ) ) + + def test_cdsone(self): + jp_yc = get_curve(self.index.value_date, "USD") + fee_dirty = self.aux(self.index, jp_yc, False) + fee_clean = self.aux(self.index, jp_yc, True) self.assertAlmostEqual(-fee_dirty, 685292.81, 2) self.assertAlmostEqual(fee_clean, self.index.clean_pv) + def test_ois(self): + index = CreditIndex("HY", 37, "5yr", value_date=datetime.date(2022, 2, 4)) + index.notional = 100_000_000 + index.spread = 1000 + yc_ois = get_curve(index.value_date, "USD", True) + yc = get_curve(index.value_date, "USD") + fee_clean_ois = self.aux(index, yc_ois, True) + fee_clean = self.aux(index, yc, True) + self.assertAlmostEqual(17154197.82, fee_clean, 2) # bloomberg curve 260 + self.assertAlmostEqual(17229522.44, fee_clean_ois, 2) # bloomberg curve 531 + def test_annuity(self): self.assertAlmostEqual( -self.index.clean_pv, |
