ir.date_time package

ir.date_time.conv module

Convert date_time module

ir.date_time.conv.py_to_ql_date(py_date)

Convert from datetime.date to QuantLib date

Parameters:py_date (datetime.date) – Python date
Returns:QuantLib date
Return type:ql.Date
ir.date_time.conv.ql_period_to_str(ql_period)
ir.date_time.conv.ql_to_py_date(ql_date)

Convert from ql.Date to datetime.date

Parameters:ql_date (ql.Date) – QuantLib Date
Returns:Python date
Return type:datetime.date
ir.date_time.conv.str_to_ql_date(str_date)

Convert string date to QuantLib date

Parameters:str_date (list, str) – String date in %m/%d/%Y format (e.g., ‘8/4/2016’)
Returns:QuantLib date in list
Return type:list

Examples

>>> print(conv.str_to_ql_date('8/4/2016'))
August 4th, 2016
ir.date_time.conv.str_to_ql_period(str_period)

Convert string period to Quantlib period

Parameters:str_period (str) – String period (e.g., ‘1Y’, ‘2M’, ‘3W’, ‘4D’)
Returns:QuantLib period
Return type:ql.Period

Examples

>>> print(conv.str_to_ql_period(['6m', '12Y', '30d', '45D']))
[Period("6M"), Period("12Y"), Period("4W2D"), Period("6W3D")]

ir.date_time.enum module

Enumerator for DayCount, Compounding, Freq

class ir.date_time.enum.Compounding

Bases: enum.Enum

Enum for compounding

Compounded = <Compounding.Compounded: 1>

(1 + r)^t

Continuous = <Compounding.Continuous: 2>

exp(rt)

Simple = <Compounding.Simple: 0>

1 + rt

class ir.date_time.enum.DayCount

Bases: enum.Enum

Enum for day count

Act360 = <DayCount.Act360: <QuantLib.QuantLib.Actual360; proxy of <Swig Object of type 'QuantLib::Actual360 *' at 0x000000000696E0F0> >>
Act365 = <DayCount.Act365: <QuantLib.QuantLib.Actual365Fixed; proxy of <Swig Object of type 'QuantLib::Actual365Fixed *' at 0x000000000696E180> >>
ActAct = <DayCount.ActAct: <QuantLib.QuantLib.ActualActual; proxy of <Swig Object of type 'QuantLib::ActualActual *' at 0x000000000696E1B0> >>
Simple = <DayCount.Simple: <QuantLib.QuantLib.SimpleDayCounter; proxy of <Swig Object of type 'QuantLib::SimpleDayCounter *' at 0x000000000696E630> >>
Thirty360 = <DayCount.Thirty360: <QuantLib.QuantLib.Thirty360; proxy of <Swig Object of type 'QuantLib::Thirty360 *' at 0x000000000696E600> >>
class ir.date_time.enum.Freq

Bases: enum.Enum

Enum for frequency

Annual = <Freq.Annual: 1>
Daily = <Freq.Daily: 365>
Monthly = <Freq.Monthly: 12>
NoFreq = <Freq.NoFreq: -1>
Quarterly = <Freq.Quarterly: 4>
Semiannual = <Freq.Semiannual: 2>
Weekly = <Freq.Weekly: 52>

ir.date_time.util module

Utilities for date_time

ir.date_time.util.get_daycount_from_str(daycount_str)

Get date_time.enum.DayCount from string daycount

Parameters:daycount_str (str) – daycount string (e.g., ‘Act360’)
Returns:Enum for DayCount
Return type:ir.date_time.enum.DayCount
Raises:IOError – If the string daycount cannot be matched.

Examples

>>> util.get_daycount_from_str('Act360')
<DayCount.Act360: <QuantLib.QuantLib.Actual360; proxy of <Swig Object of type 'QuantLib::Actual360 *' at 0x00000000046A5BD0> >>
ir.date_time.util.notify_val_date_ch(val_date, is_raise_error=False)

Notify the valuation date change. Also, update ql.Settings.instance().evaluationDate

Parameters:
  • val_date (ql.Date) – Valuation date
  • is_raise_error (bool) – Raise error (Default: False, only show warning)

Examples

>>> util.notify_val_date_ch(ql.Date(1, 1, 2000))
2016-05-11 15:51:29 WARNING Valuation date is changed to [January 1st, 2000]