import unittest from pyisda.cdsone import upfront_charge from pyisda.utils import build_yc import datetime import sys sys.path.append('..') from swaption import Index class TestUpfront(unittest.TestCase): index = Index.from_name("ig", 26, "5yr", trade_date = datetime.date(2016, 9, 21)) index.notional = 50e6 index.spread = 70 yc = build_yc(index.trade_date, True) def test_upfront(self): self.assertAlmostEqual(-self.index.pv, 685292.81, 2) def test_cdsone(self): fee_dirty = self.index.notional * ( upfront_charge(self.index.trade_date, self.index._value_date, self.index.start_date, self.index._step_in_date, self.index.start_date, self.index.end_date, self.index.fixed_rate, self.index._yc, 70e-4, self.index.recovery, False)) fee_clean = self.index.notional * ( upfront_charge(self.index.trade_date, self.index._value_date, self.index.start_date, self.index._step_in_date, self.index.start_date, self.index.end_date, self.index.fixed_rate, self.index._yc, 70e-4, self.index.recovery, True)) self.assertAlmostEqual(-fee_dirty, 685292.81, 2) self.assertAlmostEqual(fee_clean, self.index.clean_pv) if __name__=="__main__": unittest.main()