blob: 6383f6fd4e9a9e81e3949af32ead8ab515d64a6c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import unittest
import datetime
from analytics import DualCorrTranche, TrancheBasket
import numpy as np
import pickle
class TestPickle(unittest.TestCase):
bozeman = DualCorrTranche.from_tradeid(1037)
def test_pickle(self):
a = pickle.loads(pickle.dumps(self.bozeman))
self.assertTrue(hash(a) == hash(self.bozeman))
def test_pv(self):
self.assertAlmostEqual(self.bozeman.upfront, 0.0)
class TestTopDown(unittest.TestCase):
eu30 = TrancheBasket("EU", 30, "5yr", value_date=datetime.date(2019, 8, 15))
market_quotes = (
eu30.tranche_quotes.running * eu30.accrued() + eu30.tranche_quotes.quotes
)
def test_bottomup(self):
self.eu30.build_skew()
upfronts = 1 - self.eu30.tranche_pvs().bond_price
self.assertTrue(np.allclose(upfronts[:-1], self.market_quotes[:-1]))
def test_topdown(self):
self.eu30.build_skew("topdown")
upfronts = 1 - self.eu30.tranche_pvs(complement=True).bond_price
self.assertTrue(np.allclose(upfronts[1:], self.market_quotes[1:]))
|