2017-02-02 3 views
0

これはおそらく本当にばかな質問ですが、何をすべきかわかりません。 すべて ex div日付とそれに対応するdivYieldを返す関数があります。evalDateexpirationオプションの日付です。ブートストラップZeroCurveにはex-divの日付とdivの数が1つしかありません

Handle<YieldTermStructure> dividendTermStructure(bootstrapDividendCurveDB("INTC", today, expiration, underlyingPrice)); 

boost::shared_ptr<ZeroCurve> 
bootstrapDividendCurveDB() 
{ 
.... 
    return boost::shared_ptr<ZeroCurve>(new ZeroCurve(ddy.exDivDates, ddy.dividendYields, ActualActual(), calendar)); 
} 

これだけ一つだけevalDateexpiration間での配当、したがってddy.exDivDatesddy.dividendYieldsそれぞれ一つのエントリが含まれているがある場合、私はエラーを取得し、しかし

//instantiate BSM process 
    Handle<Quote> underlyingH(boost::shared_ptr<Quote>(new SimpleQuote(underlyingPrice))); 
    boost::shared_ptr<BlackScholesMertonProcess> bsmProcess(new BlackScholesMertonProcess(underlyingH, 
     dividendTermStructure, yieldTermStructure, volatilityTermStructure)); 

に渡されます:

unknown location(0): fatal error: in "testAmericanOptionPricingWithDividends": QuantLib::Error: not enough input dates given 
FD_Div_IRAmerican.cpp(524): last checkpoint: "testAmericanOptionPricingWithDividends" entry. 

私がこのコードセクションを解決した例がこれを解決する方法は、これまでの分割evalDate(今日)がその前のdiv日付を過ぎていても、nd yield。そうすれば、少なくとも2つの値から、ZeroCurveを構築するのに十分なポイントが得られます。

これは正しくないようです。期限切れと「今日」の間に1回だけ配当を支払う可能性がある短期オプションについては、この場合何をすべきか?

答えて

1

この場合、あなたが持っている単一の値に基づいてフラットカーブを使用することが理にかなっています。

boost::shared_ptr<YieldTermStructure> 
bootstrapDividendCurveDB() 
{ 
... 
if (just one dividend) 
    return boost::make_shared<FlatForward>(evalDate, single_dividend, 
              ActualActual()); 
else 
    return boost::make_shared<ZeroCurve>(ddy.exDivDates, ddy.dividendYields, 
             ActualActual(), calendar)); 
} 

注:お使いのファクトリ関数は次のようになりますあなたは、上記のようにそれを構築する場合は、ZeroCurveのための基準日はexDivDateベクトルの最初の日ではなく、評価日となります。それがあなたの望むものでない場合は、日付ベクトルの前に評価日付を追加し、レートベクトルの前に別の配当(おそらく最初のもののコピー)を追加する必要があります。

+0

ありがとうございました。それは動作します。私はちょっとあなたの "メモ"に混乱しています。私が返すものはex-div日付ではなく、評価日(今日)であるべきだと言っていますか?なぜ私は注意が必要なのか分かりません。 – Ivan

+0

私はカーブが 'ddy.exDivDates'ベクトルの最初の日付から始まり、その日付の前にレートを求められたら例外を送出することを意味します。 –

+0

Gotcha。ありがとう。 – Ivan

関連する問題