Skip to content

Commit 72ec261

Browse files
committed
QPR-11992 final version
1 parent eac86e0 commit 72ec261

3 files changed

Lines changed: 10 additions & 11 deletions

File tree

ql/termstructures/volatility/swaption/swaptionvolcube.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,6 @@ namespace QuantLib {
7676
swapIndexBase_->tenor() << ")");
7777

7878
registerWithVolatilitySpread();
79-
registerWith(Settings::instance().evaluationDate());
80-
evaluationDate_ = Settings::instance().evaluationDate();
8179
}
8280

8381
void SwaptionVolatilityCube::registerWithVolatilitySpread()

ql/termstructures/volatility/swaption/swaptionvoldiscrete.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,14 @@ namespace QuantLib {
3636
optionTenors_(optionTenors),
3737
optionDates_(nOptionTenors_),
3838
optionTimes_(nOptionTenors_),
39+
optionDatesAsReal_(nOptionTenors_),
3940
optionInterpolatorTimes_(nOptionTenors_ + 1),
4041
optionInterpolatorDatesAsReal_(nOptionTenors_ + 1),
4142
nSwapTenors_(swapTenors.size()),
4243
swapTenors_(swapTenors),
4344
swapLengths_(nSwapTenors_) {
4445

4546
checkOptionTenors();
46-
evaluationDate_ = Settings::instance().evaluationDate();
4747
initializeOptionDatesAndTimes();
4848

4949
checkSwapTenors();
@@ -54,8 +54,7 @@ namespace QuantLib {
5454
optionInterpolatorDatesAsReal_.begin());
5555
optionInterpolator_.update();
5656
optionInterpolator_.enableExtrapolation();
57-
58-
registerWith(Settings::instance().evaluationDate());
57+
cachedReferenceDate_ = referenceDate();
5958
}
6059

6160
SwaptionVolatilityDiscrete::SwaptionVolatilityDiscrete(
@@ -70,6 +69,7 @@ namespace QuantLib {
7069
optionTenors_(optionTenors),
7170
optionDates_(nOptionTenors_),
7271
optionTimes_(nOptionTenors_),
72+
optionDatesAsReal_(nOptionTenors_),
7373
optionInterpolatorTimes_(nOptionTenors_ + 1),
7474
optionInterpolatorDatesAsReal_(nOptionTenors_ + 1),
7575
nSwapTenors_(swapTenors.size()),
@@ -101,6 +101,7 @@ namespace QuantLib {
101101
optionTenors_(nOptionTenors_),
102102
optionDates_(optionDates),
103103
optionTimes_(nOptionTenors_),
104+
optionDatesAsReal_(nOptionTenors_),
104105
optionInterpolatorTimes_(nOptionTenors_ + 1),
105106
optionInterpolatorDatesAsReal_(nOptionTenors_ + 1),
106107
nSwapTenors_(swapTenors.size()),
@@ -155,10 +156,10 @@ namespace QuantLib {
155156
}
156157

157158
void SwaptionVolatilityDiscrete::initializeOptionDatesAndTimes() const {
158-
optionInterpolatorDatesAsReal_[0] = static_cast<Real>(evaluationDate_.serialNumber());
159+
optionInterpolatorDatesAsReal_[0] = static_cast<Real>(referenceDate().serialNumber());
159160
for (Size i=0; i<nOptionTenors_; ++i) {
160161
optionDates_[i] = optionDateFromTenor(optionTenors_[i]);
161-
optionInterpolatorDatesAsReal_[i + 1] =
162+
optionDatesAsReal_[i] = optionInterpolatorDatesAsReal_[i + 1] =
162163
static_cast<Real>(optionDates_[i].serialNumber());
163164
}
164165
initializeOptionTimes();
@@ -179,9 +180,8 @@ namespace QuantLib {
179180
void SwaptionVolatilityDiscrete::performCalculations() const {
180181
// recalculate dates if necessary...
181182
if (moving_) {
182-
Date d = Settings::instance().evaluationDate();
183-
if (evaluationDate_ != d) {
184-
evaluationDate_ = d;
183+
if (cachedReferenceDate_ != referenceDate()) {
184+
cachedReferenceDate_ = referenceDate();
185185
initializeOptionDatesAndTimes();
186186
initializeSwapLengths();
187187
optionInterpolator_.update();

ql/termstructures/volatility/swaption/swaptionvoldiscrete.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,14 @@ namespace QuantLib {
7474
mutable std::vector<Date> optionDates_;
7575
mutable std::vector<Time> optionTimes_;
7676
mutable Interpolation optionInterpolator_;
77+
mutable std::vector<Real> optionDatesAsReal_;
7778
mutable std::vector<Time> optionInterpolatorTimes_;
7879
mutable std::vector<Real> optionInterpolatorDatesAsReal_;
7980

8081
Size nSwapTenors_;
8182
std::vector<Period> swapTenors_;
8283
mutable std::vector<Time> swapLengths_;
83-
mutable Date evaluationDate_;
84+
mutable Date cachedReferenceDate_;
8485
private:
8586
void checkOptionTenors() const;
8687
void checkOptionDates(const Date& reference) const;

0 commit comments

Comments
 (0)