aboutsummaryrefslogtreecommitdiffstats
path: root/python/tests/test_swaption.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/tests/test_swaption.py')
-rw-r--r--python/tests/test_swaption.py43
1 files changed, 42 insertions, 1 deletions
diff --git a/python/tests/test_swaption.py b/python/tests/test_swaption.py
index 935a964b..1fd71d27 100644
--- a/python/tests/test_swaption.py
+++ b/python/tests/test_swaption.py
@@ -43,7 +43,7 @@ class TestPutCallParity(unittest.TestCase):
def test_hy(self):
index = Index.from_name("hy", 27, "5yr",
- trade_date = datetime.date(2016, 11, 8))
+ trade_date=datetime.date(2016, 11, 8))
index.price = 103.875
exercise_date = datetime.date(2017, 3, 15)
strike = 102.5
@@ -51,5 +51,46 @@ class TestPutCallParity(unittest.TestCase):
payer.pv = 1.948 * 1e-2
self.assertAlmostEqual(payer.sigma, 0.4144886488)
+class TestBreakeven(unittest.TestCase):
+
+ exercise_date = datetime.date(2017, 3, 15)
+ hyindex = Index.from_name("hy", 27, "5yr",
+ trade_date=datetime.date(2016, 11, 16))
+ hyindex.price = 103.75
+ hystrike = 102.5
+
+ igindex = Index.from_name("ig", 27, "5yr",
+ trade_date=datetime.date(2016, 11, 18))
+ igindex.spread = 76.5
+ igstrike = 80
+
+ def test_hypayer(self):
+ payer = Swaption(self.hyindex, self.exercise_date,
+ self.hystrike, strike_is_price=True)
+ payer.sigma = .4
+ payer.notional = 1e7
+ self.assertAlmostEqual(payer.breakeven, 100.66971148766)
+
+ def test_hyreceiver(self):
+ receiver = Swaption(self.hyindex, self.exercise_date,
+ self.hystrike, "receiver", strike_is_price=True)
+ receiver.sigma = .4
+ receiver.notional = 1e7
+ self.assertAlmostEqual(receiver.breakeven, 103.9609977905)
+
+ def test_igpayer(self):
+ payer = Swaption(self.igindex, self.exercise_date,
+ self.igstrike, strike_is_price=False)
+ payer.sigma = .4
+ payer.notional = 1e7
+ self.assertAlmostEqual(payer.breakeven, 88.39037813)
+
+ def test_igreceiver(self):
+ receiver = Swaption(self.igindex, self.exercise_date,
+ self.igstrike, "receiver", strike_is_price=False)
+ receiver.sigma = .4
+ receiver.notional = 1e7
+ self.assertAlmostEqual(receiver.breakeven, 73.698281555)
+
if __name__=="__main__":
unittest.main()