Quantlib
QuantLib python中是否缺少方法?
我正在閱讀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 定義中列出的那些方法,這表明您需要自己添加它們才能呼叫它們。