Quantlib

QuantLib python中是否缺少方法?

  • January 24, 2017

我正在閱讀Dimitri Reiswich的 QuantLib 庫的選定類簡介,並試圖將其“轉換”為 Python。

在我看來,python 中沒有一些 C++ 的可能性。

我不熟悉 SWIG,但我想這是在適當的 *.i 文件中聲明它們的問題。

例如,這兩個工作都遵循 pdf 文本:

一月:QuantLib::January 或 QuantLib::Jan

print(ql.Date(12, 12, 2015))
print(ql.Date(12, ql.January, 2015))

但是為什麼 Jan 不起作用?

print(ql.Date(12, ql.Jan, 2015))

在日曆描述中,以下 2 條註釋行返回錯誤,瀏覽我未能找到它們的程式碼。有人會好心地向我指出如何使它們可用的方向嗎?

import QuantLib as ql


def calendarTesting():
   frankfurtCal = ql.Germany(ql.Germany.FrankfurtStockExchange)
   saudiArabCal = ql.SaudiArabia()
   myEve = ql.Date(31, 12, 2009)
   print('is BD: {}'.format(frankfurtCal.isBusinessDay(myEve)))
   print('is Holiday: {}'.format(frankfurtCal.isHoliday(myEve)))
   # print('is weekend: {}'.format(saudiArabCal.isWeekend(ql.Saturday)))
   print('is last BD: {}'.format(frankfurtCal.isEndOfMonth(ql.Date(30, 12, 2009))))
   # print('last BD: {}'.format(frankfurtCal.endOfMonth(myEve)))


calendarTesting()

是的,Python 包裝器中仍然缺少許多方法(不過,您的問題中的兩個現在可用)。這是因為 SWIG 介面中的聲明必須手動與 C++ 庫保持同步;我們確保它們不會隨著庫的發展而中斷,但除此之外,我們可以為此付出的時間是有限的,並且只有在有人需要並完成工作時才會添加新的東西。

如果您想嘗試一下,可以查看http://www.implementingquantlib.com/2016/09/quantlib-and-swig.html。它解釋了包裝器的一些怪癖的原因,並希望能給你一些一般的指導。

我不確定你是如何建構 python 綁定的,但看看這裡的 swig 程式碼:

https://github.com/lballabio/quantlib/blob/master/QuantLib-SWIG/SWIG/calendars.i#L63

看起來沒有任何特定的聲明,即..

#if defined(SWIGPYTHON) 

這將排除這些方法。話雖如此,我根本沒有看到 swig 定義中列出的那些方法,這表明您需要自己添加它們才能呼叫它們。

引用自:https://quant.stackexchange.com/questions/20924