示例#1
0
	def test_interpolate(self):
		testBond = bondAnalysis.Bond("test", bondAnalysis.BondType.corporate, 2.0, 3.0)

		lowerBond = bondAnalysis.Bond("test", bondAnalysis.BondType.government, 1.0, 1.0)
		upperBond = bondAnalysis.Bond("test", bondAnalysis.BondType.government, 3.0, 3.0)

		expected = 2.0
		actual = testBond._interpolate(lowerBond, upperBond)

		self.assertEqual(expected, actual)
示例#2
0
	def testInitInvalidArgs(self):
		validName = "C1"
		validType = bondAnalysis.BondType.corporate
		validTerm = 1.0
		validYld = 1.0
		with self.assertRaises(AssertionError):
			bond = bondAnalysis.Bond(1, validType, validTerm, validYld)
		with self.assertRaises(AssertionError):
			bond = bondAnalysis.Bond(validName, "invalid", validTerm, validYld)
		with self.assertRaises(AssertionError):
			bond = bondAnalysis.Bond(validName, validType, "invalid", validYld)
		with self.assertRaises(AssertionError):
			bond = bondAnalysis.Bond(validName, validType, validTerm, "invalid")
示例#3
0
	def testFindClosestNeighbours(self):
		bonds = [bondAnalysis.Bond('G1', bondAnalysis.BondType.government, 1.0, 1.0),
			bondAnalysis.Bond('G2', bondAnalysis.BondType.government, 4.0, 4.0),
			bondAnalysis.Bond('G3', bondAnalysis.BondType.government, 5.0, 5.0),
			bondAnalysis.Bond('G4', bondAnalysis.BondType.government, 10.0, 10.0)]

		#standard case
		test = bondAnalysis.Bond('C1', bondAnalysis.BondType.corporate, 7.0, 8.0)
		expectedLower, expectedHigher = bonds[2], bonds[3]
		actualLower, actualHigher = test._findClosestNeighbours(bonds)
		self.assertEqual(expectedLower, actualLower)
		self.assertEqual(expectedHigher, actualHigher)

		# only a lower neighbour exists
		test = bondAnalysis.Bond('C1', bondAnalysis.BondType.corporate, 11.0, 8.0)
		expectedLower, _ = bonds[3], None
		actualLower, actualHigher = test._findClosestNeighbours(bonds)
		self.assertEqual(expectedLower, actualLower)
		self.assertIsNone(actualHigher)

		# only a higher neighbour exists
		test = bondAnalysis.Bond('C1', bondAnalysis.BondType.corporate, 0.5, 8.0)
		_, expectedHigher = None, bonds[0]
		actualLower, actualHigher = test._findClosestNeighbours(bonds)
		self.assertIsNone(actualLower)
		self.assertEqual(expectedHigher, actualHigher)
示例#4
0
	def testWithFile(self):
		gov, corp = bondAnalysis.processInput('testFiles/test.csv')
		expectedGov = [bondAnalysis.Bond('G1', bondAnalysis.BondType.government, 1.0, 1.0),
			bondAnalysis.Bond('G2', bondAnalysis.BondType.government, 4.0, 4.0),
			bondAnalysis.Bond('G3', bondAnalysis.BondType.government, 5.0, 5.0),
			bondAnalysis.Bond('G4', bondAnalysis.BondType.government, 10.0, 10.0)]

		expectedCorp = [bondAnalysis.Bond('C1', bondAnalysis.BondType.corporate, 3.0, 5.0),
			bondAnalysis.Bond('C2', bondAnalysis.BondType.corporate, 4.0, 7.0),
			bondAnalysis.Bond('C3', bondAnalysis.BondType.corporate, 7.0, 12.0)]

		self.assertEqual(gov, expectedGov)
		self.assertEqual(corp, expectedCorp)
示例#5
0
	def testEq(self):
		name = "C1"
		term = 1.0
		yld = 1.0
		bondA = bondAnalysis.Bond(name, bondAnalysis.BondType.corporate, term, yld)
		bondB = bondAnalysis.Bond(name, bondAnalysis.BondType.corporate, term, yld)
		bondC = bondAnalysis.Bond(name, bondAnalysis.BondType.government, term, yld)
		bondD = bondAnalysis.Bond("G1", bondAnalysis.BondType.corporate, term, yld)
		bondE = bondAnalysis.Bond(name, bondAnalysis.BondType.corporate, 2.0, yld)
		bondF = bondAnalysis.Bond(name, bondAnalysis.BondType.corporate, term, 2.0)

		self.assertTrue(bondA == bondB)
		self.assertFalse(bondA == bondC)
		self.assertFalse(bondA == bondD)
		self.assertFalse(bondA == bondE)
		self.assertFalse(bondA == bondF)
示例#6
0
	def testFindClosest(self):
		bonds = [bondAnalysis.Bond('G1', bondAnalysis.BondType.government, 1.0, 1.0),
			bondAnalysis.Bond('G2', bondAnalysis.BondType.government, 4.0, 4.0),
			bondAnalysis.Bond('G3', bondAnalysis.BondType.government, 5.0, 5.0),
			bondAnalysis.Bond('G4', bondAnalysis.BondType.government, 10.0, 10.0)]

		#standard case
		test = bondAnalysis.Bond('C1', bondAnalysis.BondType.corporate, 7.0, 8.0)
		expected = bonds[2]
		actual = test._findClosest(bonds)
		self.assertEqual(expected, actual)

		# only a lower neighbour exists
		test = bondAnalysis.Bond('C1', bondAnalysis.BondType.corporate, 11.0, 8.0)
		expected = bonds[3]
		actual = test._findClosest(bonds)
		self.assertEqual(expected, actual)

		# only a higher neighbour exists
		test = bondAnalysis.Bond('C1', bondAnalysis.BondType.corporate, 0.5, 8.0)
		expected = bonds[0]
		actual = test._findClosest(bonds)
		self.assertEqual(expected, actual)