aboutsummaryrefslogtreecommitdiffstats
path: root/python/tests/test_cds.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/tests/test_cds.py')
-rw-r--r--python/tests/test_cds.py60
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,