Question

J'ai également posté ceci sur Wilmott, n'était pas sûr qui aurait plus de réponse.

Je suis relativement nouveau dans le monde de Quantibib (et C ++ ...), alors peut-être que c'est assez évident.J'essaie de comprendre si Quantlib peut faire des swaptions de vanille Premium avant la prime (réduction de l'actualisation de l'OIS, une courbe de 3 ml pour l'estimation).Tout ce que je peux voir dans Quantlib dans les fichiers de swaption sont des entrées pour une structure d'une durée pour l'actualisation.Utilise-t-il cela aussi pour l'estimation?Ou existe-t-il un moyen de le remplacer, de telle sorte que je puisse entrer deux courbes.

Toute aide, exemples, etc. serait très appréciée (et me sauverait beaucoup de temps à regarder les mêmes fichiers en espérant que quelque chose ne saute pas à moi ...)!

Merci beaucoup

Était-ce utile?

La solution

Cela dépend. Si vous voulez faire des swaptions des bermudes, vous n'avez pas de chance; Quantlib ne peut que les prix sur un arbre et il n'y a aucun moyen d'utiliser les deux courbes.

Si vous souhaitez faire des prix européennes européennes, vous pouvez utiliser les deux courbes de la formule noire, même si je conviens qu'il n'est pas évident de la découvrir en regardant le code. Comme vous l'avez probablement déjà vu, vous devrez instantiier à la fois un instrument (la classe de swaption) et un moteur correspondant (la classe Blackswaptionengine). Le constructeur du BlackSwaptionEngine prend une courbe de remise en plus des autres arguments. Vous allez donc passer la courbe de l'OIS ici. Le constructeur de l'oscillation, d'autre part, prend le swap sous-jacent à l'option comme une instance de vanillaswap. À son tour, le constructeur de Vanillaswap prend une instance Iborindex représentant l'indice de taux flottant à payer; Et enfin, le constructeur Iborindex prend la courbe à utiliser pour prévoir ses fixations. C'est donc l'endroit où vous pouvez passer la courbe de 3 ml. Résumer:

shared_ptr<IborIndex> libor(new GBPLibor(3*Months, forecastCurve));
shared_ptr<VanillaSwap> swap(new VanillaSwap(..., libor, ...));
shared_ptr<Instrument> swaption(new Swaption(swap, ...));
shared_ptr<PricingEngine> engine(new BlackSwaptionEngine(discountCurve, ...));
swaption->setPricingEngine(engine);
double price = swaption->NPV();

Aussi, notez que la version actuelle relâchée (Quantlib 1.1) a un bug qui permet d'utiliser la mauvaise courbe à un moment donné pendant les calculs. Vous voudrez utiliser la version 1.2, qui n'est pas encore sorti mais peut être vérifié à partir du référentiel Subversion à https://quantlib.svn.sourceforge.net/svnroot/QuantLib/Branches/r01020x-branch/QuantLib .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top