def test_first_example_isda(self): day_counter = ActualActual(ISDA) self.assertAlmostEqual( 0.497724380567, day_counter.year_fraction(self.from_date, self.to_date))
def test_first_example_isma(self): day_counter = ActualActual(ISMA) self.assertAlmostEqual( 0.5, day_counter.year_fraction(self.from_date, self.to_date, self.ref_start, self.ref_end))
def test_first_example_afb(self): day_counter = ActualActual(AFB) self.assertAlmostEqual( 0.497267759563, day_counter.year_fraction(self.from_date, self.to_date) )
def test_first_example_isma(self): day_counter = ActualActual(ISMA) self.assertAlmostEqual( 0.5, day_counter.year_fraction(self.from_date, self.to_date, self.ref_start, self.ref_end) )
def test_first_example_isda(self): day_counter = ActualActual(ISDA) self.assertAlmostEqual( 0.497724380567, day_counter.year_fraction(self.from_date, self.to_date) )
def test_short_calculation_second_period_isda(self): day_counter = ActualActual(ISDA) from_date = Date(1, July, 1999) to_date = Date(1, July, 2000) expected_result = 1.001377348600 self.assertAlmostEquals(expected_result, day_counter.year_fraction(from_date, to_date))
def test_short_calculation_first_period_afb(self): day_counter = ActualActual(AFB) from_date = Date(1, February, 1999) to_date = Date(1, July, 1999) expected_result = 0.410958904110 self.assertAlmostEquals(expected_result, day_counter.year_fraction(from_date, to_date))
def test_short_calculation_first_period_isma(self): day_counter = ActualActual(ISMA) from_date = Date(1, February, 1999) to_date = Date(1, July, 1999) ref_start = Date(1, July, 1998) ref_end = Date(1, July, 1999) expected_result = 0.410958904110 self.assertAlmostEquals( expected_result, day_counter.year_fraction(from_date, to_date, ref_start, ref_end))
def test_short_calculation_first_period_afb(self): day_counter = ActualActual(AFB) from_date = Date(1, February, 1999) to_date = Date(1, July, 1999) expected_result = 0.410958904110 self.assertAlmostEquals( expected_result, day_counter.year_fraction(from_date, to_date) )
def test_short_calculation_second_period_afb(self): day_counter = ActualActual(AFB) from_date = Date(1, July, 1999) to_date = Date(1, July, 2000) expected_result = 1.000000000000 self.assertAlmostEquals( expected_result, day_counter.year_fraction(from_date, to_date) )
def test_short_calculation_second_period_isma(self): day_counter = ActualActual(ISMA) from_date = Date(1, July, 1999) to_date = Date(1, July, 2000) ref_start = Date(1, July, 1999) ref_end = Date(1, July, 2000) expected_result = 1.000000000000 self.assertAlmostEquals( expected_result, day_counter.year_fraction(from_date, to_date, ref_start, ref_end))
def test_short_calculation_first_period_isma(self): day_counter = ActualActual(ISMA) from_date = Date(1, February, 1999) to_date = Date(1, July, 1999) ref_start = Date(1,July,1998) ref_end = Date(1,July,1999) expected_result = 0.410958904110 self.assertAlmostEquals( expected_result, day_counter.year_fraction(from_date, to_date, ref_start, ref_end) )
def test_short_calculation_second_period_isma(self): day_counter = ActualActual(ISMA) from_date = Date(1, July, 1999) to_date = Date(1, July, 2000) ref_start = Date(1, July, 1999) ref_end = Date(1, July, 2000) expected_result = 1.000000000000 self.assertAlmostEquals( expected_result, day_counter.year_fraction(from_date, to_date, ref_start, ref_end) )
class DayCounters(dict): from pybg.quantlib.time.daycounter import (Thirty360, Actual360, Actual365Fixed) from pybg.quantlib.time.daycounters.actual_actual import (ActualActual, ISMA, ISDA, Bond) _lookup = dict([(dc.name(), dc) for dc in [ Thirty360(), Actual360(), Actual365Fixed(), ActualActual(), ActualActual(ISMA), ActualActual(ISDA), ActualActual(Bond) ]]) def __init__(self, *args): dict.__init__(self, self._lookup) self.update(*args) @classmethod def year_fraction(cls, date1, date2, daycounter=None): ''' Calculate the fraction of a year between two date1 and date2, based on the daycount specified. dates may be ccyymmdd or python datetime.dates ''' pydate1, pydate2 = map(parse_date, (date1, date2)) if not daycounter: daycounter = cls.ActualActual() qldate1 = qldate_from_pydate(pydate1) qldate2 = qldate_from_pydate(pydate2) return daycounter.year_fraction(qldate1, qldate2) @classmethod def daycount(cls, date1, date2, daycounter=None): pydate1, pydate2 = map(parse_date, (date1, date2)) if not daycounter: daycounter = cls.ActualActual() qldate1 = qldate_from_pydate(pydate1) qldate2 = qldate_from_pydate(pydate2) return daycounter.day_count(qldate1, qldate2)
def test_first_example_afb(self): day_counter = ActualActual(AFB) self.assertAlmostEqual( 0.497267759563, day_counter.year_fraction(self.from_date, self.to_date))