2017-03-04 39 views
1

假设固定利率债券与下面示例代码中显示的计划。如何获取计划的“时间”值

我可以通过使用businessDaysBetween函数来获取男高音之间的天数。

现在我想要“时间价值”。有没有办法做到这一点,而不创建一个新的功能?

这里是预期的结果:

May 14th, 2012   .5 
November 14th, 2012  .5 
May 14th, 2013   .5 
November 14th, 2013  .5 
May 14th, 2014   .5 
November 14th, 2014  .5 
May 14th, 2015   .5 
November 16th, 2015  .505556 
May 16th, 2016   .5 
November 14th, 2016  .49444 

下面是代码:

from QuantLib import * 
import pandas as pd 


effective_date = Date(14, 11, 2011) 
termination_date = Date(14, 11, 2016) 
tenor = Period(Semiannual) 
calendar = UnitedStates() 
business_convention = ModifiedFollowing 
termination_business_convention = Following 
date_generation = DateGeneration.Forward 
end_of_month = False 
day_count = Thirty360() 
schedule = Schedule(effective_date, 
        termination_date, 
        tenor, 
        calendar, 
        business_convention, 
        termination_business_convention, 
        date_generation, 
        end_of_month) 
t = [] 
for i, d in enumerate(schedule): 
    tmp = i+1, d, 
    t.append(tmp) 
df = pd.DataFrame(t,columns = ['tenorNo','tenorDate']) 

nbDays = [] 
for x in df['tenorNo'] : 
    if x == 1: 
     tmp = 0 
    else: 
     tmp = calendar.businessDaysBetween(df['tenorDate'][x-2],df['tenorDate'][x-1]) 
     nbDays.append(tmp) 

    df['nbDays'] = nbDays 

print df 
    tenorNo   tenorDate nbDays 
0   1 November 14th, 2011  0 
1   2  May 14th, 2012  125 
2   3 November 14th, 2012  127 
3   4  May 14th, 2013  124 
4   5 November 14th, 2013  127 
5   6  May 14th, 2014  124 
6   7 November 14th, 2014  127 
7   8  May 14th, 2015  124 
8   9 November 16th, 2015  127 
9  10  May 16th, 2016  125 
10  11 November 14th, 2016  125 

回答

1

这就是DayCounter实例是。时间将取决于您选择的日常会议惯例(例如,您似乎在使用30/360)。

调用

day_count.yearFraction(date1, date2) 

将返回date1date2之间的时间。