2014년 3월 25일 화요일

QuantLib 분석하기 - RelativeDateBootstrapHelper

현재 게재 중인 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들이므로 생략하겠습니다.

댓글 없음:

댓글 쓰기