質問

私もこれをWilmottに投稿しましたが、どちらがより多くの応答を得るか確信が持てませんでした。

私はQuantlib(およびC ++。。。)の世界に比較的慣れていないので、おそらくこれは非常に明白です。 Quantlibがプレミアムバニラスワプション(OIS割引、推定のために3ml曲線)を価格設定できるかどうかを把握しようとしています。 SwaptionファイルのQuantlibで見ることができるのは、割引のための1つの用語構造の入力だけです。推定にもこれを使用しますか?または、2つの曲線を入力できるように、オーバーライドする方法があります。

どんな助け、例などは大歓迎されます(そして、何かが私に飛び出すことを期待して同じファイルを見つめるのに多くの時間を節約できます...)!

どうもありがとう

役に立ちましたか?

解決

場合によります。あなたがバミューダのスワクションを価格設定したいなら、あなたは運が悪い。 Quantlibはツリーでのみ価格を設定でき、2つの曲線を使用する方法はありません。

ヨーロッパのスワッションを価格設定したい場合は、黒い式で2つの曲線を使用できますが、コードを見ることでそれを見つけることは明らかではないことに同意します。おそらくすでに見たように、楽器(スワプションクラス)と対応するエンジン(BlackSwaptionEngineクラス)の両方をインスタンス化する必要があります。 BlackSwaptionEngineのコンストラクターは、他のARGS以外に割引曲線を撮影するため、ここでOIS曲線を渡すことになります。一方、Swaptionのコンストラクターは、バニラスワップインスタンスとしてオプションの根底にあるスワップを取得します。次に、VanillasWapコンストラクターは、支払われるフローティングレートインデックスを表すIborIndexインスタンスを取得します。そして最後に、iborindexコンストラクターは、固定具を予測するために使用される曲線を使用しているため、3ML曲線を渡すことができる場所です。要約する:

shared_ptr<IborIndex> libor(new GBPLibor(3*Months, forecastCurve));
shared_ptr<VanillaSwap> swap(new VanillaSwap(..., libor, ...));
shared_ptr<Instrument> swaption(new Swaption(swap, ...));
shared_ptr<PricingEngine> engine(new BlackSwaptionEngine(discountCurve, ...));
swaption->setPricingEngine(engine);
double price = swaption->NPV();

また、電流リリースバージョン(Quantlib 1.1)には、計算中のある時点で間違った曲線を使用するバグがあることに注意してください。まだリリースされていないが、subversionリポジトリからチェックアウトできます。 https://quantlib.svn.sourceforge.net/svnroot/quantlib/branches/r01020x-branch/quantlib.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top