2017-02-23 54 views
1

當使用python時,我無法在QuantLib中使用其中一個有用的函數。以下是QuantLib手冊(Jupyter筆記本之一)的一個簡單示例。我正在複製一段可靠地在我的Mac上破解的代碼。在調用SimpleQuote.setValue後,Python中的Quantlib 1.9.1中斷了

from QuantLib import * 
today = Date(7, March, 2014) 
Settings.instance().evaluationDate = today 
option = EuropeanOption(PlainVanillaPayoff(Option.Call, 100.0), 
         EuropeanExercise(Date(7, June, 2014))) 
u = SimpleQuote(100.0) 
r = SimpleQuote(0.01) 
sigma = SimpleQuote(0.20) 
riskFreeCurve = FlatForward(0, TARGET(), QuoteHandle(r), Actual360()) 
volatility = BlackConstantVol(0, TARGET(), QuoteHandle(sigma), Actual360()) 
process = BlackScholesProcess(QuoteHandle(u), 
           YieldTermStructureHandle(riskFreeCurve), 
           BlackVolTermStructureHandle(volatility)) 
engine = AnalyticEuropeanEngine(process) 
option.setPricingEngine(engine) 
print option.NPV() 
u.setValue(105.0) ### <= this step is broken 

我在我的MacOs(10.11.6)上安裝了QuantLib v.1.9.1。很多功能都可以正常工作,但是一旦設置了定價引擎,我想在SimpleQuote中進行一些更改並重新設置選項,而不依賴於模型。我得到這個彈出窗口:「內核看起來死了,它會自動重啓。

當同樣的腳本在Python REPL中,我得到「段錯誤:11」

任何處理這種情況呢?有關如何解決該問題的任何建議?或者我做錯了什麼?有沒有人在Windows上遇到同樣的問題?如果它在那裏工作,我可以切換到Windows。

非常感謝!

+0

看起來像你有一個錯誤。 – SmallChess

回答

0

您的安裝似乎有問題。該腳本是正確的,並且應該可以在Windows上工作(也可能在Mac OS上運行,您也可以嘗試仔細檢查the instructions中建議的編譯標誌)。如果您熟悉Docker,則另一種可能性是從Docker Hub下載並運行預編譯的IPython筆記本服務器。這是我用來運行你一直在試用的筆記本電腦的Docker鏡像。

+0

謝謝你Luigi。我確實花了很長時間在Mac上進行安裝。當我從一些已發表的例子中使用海斯頓模型時,我認爲我「走出困境」。它工作得很好。這是我需要使用SimpleQuote時遇到的問題。我猜測一些Boost對我來說行爲不當(比如shared_ptr)。我如何知道我的Boost安裝正確?同時,我會嘗試Docker。謝謝! – mnos

+0

很難說。庫中使用的Boost的部分僅用於標題,因此編譯後不再處於播放狀態。 –