2017-02-23 3 views
1

Pythonを使用しているときに、QuantLibの便利な機能の1つを使用することはできません。ここでは、QuantLibマニュアル(Jupyterノートブックの1つ)の簡単な例を示します。私は、Mac上で確実に壊れたコードを再現しています。PythonのQuantlib 1.9.1がSimpleQuote.setValueの呼び出し後に壊れる

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のいくつかの変更を加えてオプションをrepriceしたいのですが、モデルとは関係なく、「カーネルが死んでしまったようです。

同じスクリプトはPython REPLで使用する場合、私は「セグメンテーションフォールトを:11」を取得

誰もがこのような状況に対処?どのように問題を解決するための任意の提案?または私は何かを間違ってやっていますか? Windowsで同じ問題が発生する人はいますか?私はそこに動作する場合、私はWindowsに切り替えることができます。

多くの感謝!

+0

あなたはバグがあるようです。 – SmallChess

答えて

0

インストールに問題があるようです。スクリプトは正しいですし、Windowsで動作する必要があります(Mac OSでも— the instructionsで提案されているコンパイルフラグを再確認することもできます)。 Dockerに精通している場合は、Docker HubからプリコンパイルされたIPythonノートブックサーバをダウンロードして実行することもできます。これは、あなたが試したノートブックを実行するために使用するのと同じDockerイメージです。

+0

ありがとうございました。私は実際にMacでのインストールにかなりの時間を費やしました。私は、出版されたいくつかの例からHestonモデルを使用していたとき、私が「森の外」であると思っていました。それはうまく動作します。それは私が問題になったSimpleQuoteを使用する必要があったときです。 Boostのいくつかが私のために(shared_ptrのように)間違っていると推測しています。 Boostが正しくインストールされていることを確認するにはどうすればよいですか?一方、私はドッカーを試してみます。ありがとうございました! – mnos

+0

難しいです。ライブラリ内で使用されているBoostの部分はヘッダーのみなので、コンパイル後には再生されません。 –

関連する問題