これはおそらく本当にばかな質問ですが、何をすべきかわかりません。 すべて ex div日付とそれに対応するdivYieldを返す関数があります。evalDate
〜expiration
オプションの日付です。ブートストラップ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));
}
これだけ一つだけevalDate
とexpiration
間での配当、したがってddy.exDivDates
、ddy.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回だけ配当を支払う可能性がある短期オプションについては、この場合何をすべきか?
ありがとうございました。それは動作します。私はちょっとあなたの "メモ"に混乱しています。私が返すものはex-div日付ではなく、評価日(今日)であるべきだと言っていますか?なぜ私は注意が必要なのか分かりません。 – Ivan
私はカーブが 'ddy.exDivDates'ベクトルの最初の日付から始まり、その日付の前にレートを求められたら例外を送出することを意味します。 –
Gotcha。ありがとう。 – Ivan