Aunque @Baruch Youssin responde correctamente en el sentido general, la primera parte de su respuesta no es lo que ocurrió en el código de ejemplo.
Aunque QLNet es un port de QuantLib, no es un port directo. Su ejemplo citado no aparece en QLNet. El ejemplo en QuantLib fue escrito de manera muy complicada, de hecho es un ejemplo simple.
discountingTermStructure es simplemente una variable en el código. Puedo nombrarla como otra cosa. Se vincula a estructura del plazo de descuento de los bonos una curva de rendimiento derivada de las comillas del mercado actual. La curva de rendimiento se deriva de los tipos de cupón cero y de los bonos de tipo fijo.
// Adding the ZC bonds to the curve for the short end
bondInstruments.push_back(zc3m);
bondInstruments.push_back(zc6m);
bondInstruments.push_back(zc1y);
// Adding the Fixed rate bonds to the curve for the long end
for (Size i=0; i<numberOfBonds; i++) {
bondInstruments.push_back(bondsHelpers[i]);
}
boost::shared_ptr<YieldTermStructure> bondDiscountingTermStructure(
new PiecewiseYieldCurve<Discount,LogLinear>(
settlementDate, bondInstruments,
termStructureDayCounter,
tolerance));
Esta curva puede utilizarse para el descuento en el precio de los bonos.
boost::shared_ptr<PricingEngine> bondEngine(
new DiscountingBondEngine(discountingTermStructure));
DiscountingBondEngine pediría al bono subyacente de tipo fijo el importe del flujo de caja. Esta cantidad tendría que ser descontada. El tipo de descuento es suministrado por el discountingTermStructure curva de rendimiento.
A continuación, querríamos fijar el precio de un bono de tipo flotante. Esto requiere una curva a plazo. En concreto, necesitamos una curva a plazo del LIBOR 3M USD porque el bono está vinculado al índice LIBOR 3M.
FloatingRateBond floatingRateBond(
settlementDays,
faceAmount,
floatingBondSchedule,
libor3m,
Actual360(),
ModifiedFollowing,
Natural(2),
// Gearings
std::vector<Real>(1, 1.0),
// Spreads
std::vector<Rate>(1, 0.001),
// Caps
std::vector<Rate>(),
// Floors
std::vector<Rate>(),
// Fixing in arrears
true,
Real(100.0),
Date(21, October, 2005));
Esta curva hacia delante se ha establecido por:
// A depo-swap curve
std::vector<boost::shared_ptr<RateHelper> > depoSwapInstruments;
depoSwapInstruments.push_back(d1w);
depoSwapInstruments.push_back(d1m);
depoSwapInstruments.push_back(d3m);
depoSwapInstruments.push_back(d6m);
depoSwapInstruments.push_back(d9m);
depoSwapInstruments.push_back(d1y);
depoSwapInstruments.push_back(s2y);
depoSwapInstruments.push_back(s3y);
depoSwapInstruments.push_back(s5y);
depoSwapInstruments.push_back(s10y);
depoSwapInstruments.push_back(s15y);
boost::shared_ptr<YieldTermStructure> depoSwapTermStructure(
new PiecewiseYieldCurve<Discount,LogLinear>(
settlementDate, depoSwapInstruments,
termStructureDayCounter,
tolerance));
La relación entre los tipos cero y los tipos swap nos indicará los tipos a plazo.