Hi
I guess there is an error in the class BermudanExercise. In the constructor
code, the following line:
type_ = American
should be substituted by the line:
type_ = Bermudan
The above error also implies a mispricing for BermudanSwaptions, because
they are actually priced assuming an american-type exercise.
Indeed, the following code implements the exercise conditions for discretized
options (and then for discretized swaptions).
When the execution reaches the switch statement the flag "exerciseType_"
is equal to American also for bermudan swaptions, and the wrong section
of code is executed thereafter.
void DiscretizedOption::postAdjustValues() {
method()->rollAlmostBack(underlying_, time());
switch (exerciseType_) {
case Exercise::American:
if (time_ >= exerciseTimes_[0] && time_ <= exerciseTimes_[1])
applyExerciseCondition();
break;
default:
for (Size i=0; i Time t = exerciseTimes_[i];
if (t >= 0.0 && isOnTime(t))
applyExerciseCondition();
}
}
underlying_->postAdjustValues();
}
}
__________________________________________________________________
Tiscali Adsl 2 Mega Free: l'adsl piu' veloce e' gratis!
Naviga libero dai costi fissi con Tiscali Adsl 2 Mega Free, l'adsl Free
piu' veloce in Italia. In piu', se ti abboni entro il 7 gennaio 2005,
navighi gratis fino al 31 marzo. E il costo di adesione e' GRATIS.
http://abbonati.tiscali.it/adsl/