현재 게재 중인 QuantLib 포스트의 목표는 Bond.cpp 예제에 나오는 Curve Construction의 구조의 이해임을 밝힙니다.
RelativeDateBootstrapHelper class 의 존재의 이유는 다음 comment에서 너무 확실해 졌습니다.
global evaluation date와 date schedule 을 잘 이어주는 class라고 합니다.
global evaluation date가 변화 하면 date schedule을 재조정하기도 하고요.
//! Bootstrap helper with date schedule relative to global evaluation date
/*! Derived classes must takes care of rebuilding the date schedule when
the global evaluation date changes
*/
RelativeDateBootstrapHelper class의 선언부입니다. 이전 포스트에서 설명한 BootstrapHelper을 상속 받는 구조입니다.
template <class TS>
class RelativeDateBootstrapHelper : public BootstrapHelper<TS> {
public:
생성자들입니다. 생성자의 모습이 BootstrapHelper와 너무 흡사합니다.
RelativeDateBootstrapHelper(const Handle<Quote>& quote);
RelativeDateBootstrapHelper(Real quote);
//! \name Observer interface
//@{
중요한 부분입니다. RelaticeDateBootstrapHelper class의 이유이기도 하구요. Settings 객체의 evaluationDate 와 RelaticeDateBootstrapHelper class의 member 인 evaluationDate_의 날짜를 동일하게 유지하게 하고 있습니다.
void update() {
if (evaluationDate_ != Settings::instance().evaluationDate()) {
evaluationDate_ = Settings::instance().evaluationDate();
initializeDates();
}
BootstrapHelper<TS>::update();
}
//@}
protected:
Date schedule 에 대해서 날짜를 재조정 하는 함수인것 같습니다. Date Schedule의 상황에 따라서 적당한 날짜 초기화 함수를 RelaticeDateBootstrapHelper class 를 상속받는 class들에서 구현하리라 예상됩니다.
virtual void initializeDates() = 0;
Date evaluationDate_;
};
class method들에 대한 정의가 있기는 하지만 모두 constructor들이므로 생략하겠습니다.
댓글 없음:
댓글 쓰기