aboutsummaryrefslogtreecommitdiffstats
path: root/python/tests/test_tranche_basket.py
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:]))