이것은 정말로 바보 같은 질문 일뿐, 무엇을해야할지 확신하지 못합니다. 모두 ex div 날짜와 이에 해당하는 divYield를 반환하는 함수가 있습니다. evalDate
~expiration
날짜 옵션입니다. 하나의 항목이 포함 evalDate
및 expiration
, 따라서 ddy.exDivDates
, ddy.dividendYields
각 사이에 하나 개의 배당이있는 경우부트 스트랩 ZeroCurve에 ex-div 날짜와 div 금액이 하나만 있습니다.
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));
}
이 후, 그러나
//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 날짜를 지난 경우에도 수익이 발생합니다. 그런 식으로 ZeroCurve
을 구축하기에 충분한 점수가있는 값이 적어도 두 개 있습니다.
그럴 것 같지 않습니다. 이 경우 만료일과 "오늘"사이에 단 하나의 배당금을 가질 수있는 짧은 일자 옵션의 경우 어떻게해야합니까?
감사합니다. 그거야. 나는 너의 "메모"에 약간 혼란 스럽다. 내가 반환하는 것은 ex-div 날짜가 아니라 평가 날짜 (오늘)가되어야한다고 말하고 있습니까? 나는 왜주의가 보증되는지 모르겠다. – Ivan
커브는'ddy.exDivDates' 벡터의 첫 번째 날짜부터 시작하고 그 날짜 이전에 요금을 물으면 예외가 발생합니다. –
Gotcha. 감사. – Ivan