NotImplementedError: Неверное количество или тип аргументов для перегруженной функции Quantlib Python - PullRequest
0 голосов
/ 05 сентября 2018

Я новичок в QuantLib и только что установил Quantlib и Quantlib-Python. У меня MS Visual Studio 2017 и 2.7.15 64 бит.

Я пытаюсь разобраться с примерами из блога Гутэма Баларамана (http://gouthamanbalaraman.com/blog/quantlib-basics.html). Однако я сталкиваюсь с ошибкой.

Код:

    # schedule object can be used to construct a list of dates such as coupon payments
    date1 = ql.Date(1, 1, 2015)
    date2 = ql.Date(1, 1, 2016)
    tenor = ql.Period(ql.Monthly)
    calendar = ql.UnitedStates
    schedule = ql.Schedule(date1, date2, tenor, calendar, ql.Following, ql.Following, ql.DateGeneration.Forward, False)
schedule 




Error:
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-5-cae31a33e500> in <module>()
      4 tenor = ql.Period(ql.Monthly)
      5 calendar = ql.UnitedStates
----> 6 schedule = ql.Schedule(date1, date2, tenor, calendar, ql.Following, ql.Following, ql.DateGeneration.Forward, False)
      7 schedule

c:\users\papu\envs\quantlib\lib\site-packages\QuantLib\QuantLib.pyc in __init__(self, *args)
   9419 
   9420     def __init__(self, *args):
-> 9421         this = _QuantLib.new_Schedule(*args)
   9422         try:
   9423             self.this.append(this)

NotImplementedError: Wrong number or type of arguments for overloaded function 'new_Schedule'.
  Possible C/C++ prototypes are:
    Schedule::Schedule(std::vector< Date,std::allocator< Date > > const &,Calendar const &,BusinessDayConvention const,boost::optional< BusinessDayConvention >,boost::optional< Period > const,boost::optional< DateGeneration::Rule >,boost::optional< bool >,std::vector< bool,std::allocator< bool > > const &)
    Schedule::Schedule(std::vector< Date,std::allocator< Date > > const &,Calendar const &,BusinessDayConvention const,boost::optional< BusinessDayConvention >,boost::optional< Period > const,boost::optional< DateGeneration::Rule >,boost::optional< bool >)
    Schedule::Schedule(std::vector< Date,std::allocator< Date > > const &,Calendar const &,BusinessDayConvention const,boost::optional< BusinessDayConvention >,boost::optional< Period > const,boost::optional< DateGeneration::Rule >)
    Schedule::Schedule(std::vector< Date,std::allocator< Date > > const &,Calendar const &,BusinessDayConvention const,boost::optional< BusinessDayConvention >,boost::optional< Period > const)
    Schedule::Schedule(std::vector< Date,std::allocator< Date > > const &,Calendar const &,BusinessDayConvention const,boost::optional< BusinessDayConvention >)
    Schedule::Schedule(std::vector< Date,std::allocator< Date > > const &,Calendar const &,BusinessDayConvention const)
    Schedule::Schedule(std::vector< Date,std::allocator< Date > > const &,Calendar const &)
    Schedule::Schedule(std::vector< Date,std::allocator< Date > > const &)
    Schedule::Schedule(Date const &,Date const &,Period const &,Calendar const &,BusinessDayConvention,BusinessDayConvention,DateGeneration::Rule,bool,Date const &,Date const &)
    Schedule::Schedule(Date const &,Date const &,Period const &,Calendar const &,BusinessDayConvention,BusinessDayConvention,DateGeneration::Rule,bool,Date const &)
    Schedule::Schedule(Date const &,Date const &,Period const &,Calendar const &,BusinessDayConvention,BusinessDayConvention,DateGeneration::Rule,bool)
    Schedule::Schedule()

Любая помощь в том, что идет не так?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Календарь должен быть ql.UnitedStates(), а не ql.UnitedStates. Как и сейчас, вы передаете сам класс, а не его экземпляр.

0 голосов
/ 05 сентября 2018

Не совсем ответ, все еще дается здесь, поскольку ответы правильно отформатированы, а комментарии - нет.

Перегрузка, которая лучше всего соответствует вашим параметрам:

schedule = ql.Schedule(
    date1,
    date2,
    tenor,
    calendar,
    ql.Following,
    ql.Following,
    ql.DateGeneration.Forward,
    False
)

есть:

Schedule::Schedule(
    Date const &,
    Date const &,
    Period const &,
    Calendar const &,
    BusinessDayConvention,
    BusinessDayConvention,
    DateGeneration::Rule,
    bool
)

Предполагая, что ql.DataGeneration.Forward имеет тип DataGeneration.Rule, к сожалению, я не вижу ничего плохого в вашем коде ...

...