Dies ist wahrscheinlich eine wirklich dumme Frage, aber nicht sicher, was zu tun ist. Ich habe eine Funktion, die alle die Ex-div-Daten und die divYield entsprechenden evalDate
bisexpiration
Datum der Option zurückgibt.Bootstrap ZeroCurve mit nur einem Ex-Div-Datum und einem Div-Wert
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));
}
Diese dann zu
//instantiate BSM process
Handle<Quote> underlyingH(boost::shared_ptr<Quote>(new SimpleQuote(underlyingPrice)));
boost::shared_ptr<BlackScholesMertonProcess> bsmProcess(new BlackScholesMertonProcess(underlyingH,
dividendTermStructure, yieldTermStructure, volatilityTermStructure));
jedoch übergeben wird, wenn es nur eine Dividende in zwischen evalDate
und expiration
und damit ddy.exDivDates
, ddy.dividendYields
jeder nur einen Eintrag enthalten, erhalte ich eine Fehlermeldung:
unknown location(0): fatal error: in "testAmericanOptionPricingWithDividends": QuantLib::Error: not enough input dates given
FD_Div_IRAmerican.cpp(524): last checkpoint: "testAmericanOptionPricingWithDividends" entry.
Die Art und Weise, wie das Beispiel, das ich diesen Codeabschnitt von gelöst habe, löst, ist die vorherige Teilung nd yield, obwohl das evalDate (heute) nach diesem ex-div-Datum liegt. Auf diese Weise gibt es mindestens zwei Werte, aus denen genügend Punkte sind, um eine ZeroCurve
zu erstellen.
Das scheint nicht richtig. Was ist in diesem Fall für kurzfristige Optionen zu tun, die zwischen Ablauf und "heute" möglicherweise nur eine Dividende haben?
Danke. Das funktioniert. Ich bin etwas verwirrt von deiner "A-Note". Willst du damit sagen, dass das, was ich zurückgebe, nicht das Ex-Div-Datum sein sollte, sondern das Eval-Datum (heute)? Ich bin mir nicht sicher, warum die Vorsicht geboten ist. – Ivan
Ich meine, dass die Kurve beim ersten Datum im 'ddy.exDivDates'-Vektor beginnt und eine Ausnahme auslöst, wenn nach einer Rate vor diesem Datum gefragt wird. –
Gotcha. Vielen Dank. – Ivan