possible error in pricing bermudan swaptions

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

possible error in pricing bermudan swaptions

Luca Berardi
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/





Reply | Threaded
Open this post in threaded view
|

Re: possible error in pricing bermudan swaptions

Luigi Ballabio-2
On 2004.12.16 09:28, Luca Berardi wrote:
>
> 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

Luca,
        you're right. The above is fixed in 0.3.8 (to be released in a few  
days, I hope.)

Thanks,
        Luigi