Classes | |
| class | DigitalCoupon |
| Digital-payoff coupon. More... | |
| class | CallableBond |
| Callable bond base class. More... | |
| class | CallableFixedRateBond |
| callable/puttable fixed rate bond More... | |
| class | CallableZeroCouponBond |
| callable/puttable zero coupon bond More... | |
| class | Commodity |
| Commodity base class. More... | |
| class | EnergyCommodity |
| Energy commodity class. More... | |
| class | EnergyFuture |
| Energy future. More... | |
| class | CompoundOption |
| Compound option on a single asset. More... | |
| class | MargrabeOption |
| Margrabe option on two assets. More... | |
| class | PagodaOption |
| Roofed Asian option on a number of assets. More... | |
| class | TwoAssetBarrierOption |
| Barrier option on two assets More... | |
| class | VarianceOption |
| Variance option. More... | |
| class | ContinuousAveragingAsianOption |
| Continuous-averaging Asian option. More... | |
| class | DiscreteAveragingAsianOption |
| Discrete-averaging Asian option. More... | |
| class | AssetSwap |
| Bullet bond vs Libor swap. More... | |
| class | BarrierOption |
| Barrier option on a single asset. More... | |
| class | BasketOption |
| Basket option on a number of assets. More... | |
| class | Bond |
| Base bond class. More... | |
| class | CCTEU |
| class | BTP |
| Italian BTP (Buono Poliennali del Tesoro) fixed rate bond. More... | |
| class | CmsRateBond |
| CMS-rate bond. More... | |
| class | CPIBond |
| class | FixedRateBond |
| fixed-rate bond More... | |
| class | FloatingRateBond |
| floating-rate bond (possibly capped and/or floored) More... | |
| class | ZeroCouponBond |
| zero-coupon bond More... | |
| class | CapFloor |
| Base class for cap-like instruments. More... | |
| class | Cap |
| Concrete cap class. More... | |
| class | Floor |
| Concrete floor class. More... | |
| class | Collar |
| Concrete collar class. More... | |
| class | CliquetOption |
| cliquet (Ratchet) option More... | |
| class | CompositeInstrument |
| Composite instrument More... | |
| class | CreditDefaultSwap |
| Credit default swap. More... | |
| class | DividendBarrierOption |
| Single-asset barrier option with discrete dividends. More... | |
| class | DividendVanillaOption |
| Single-asset vanilla option (no barriers) with discrete dividends. More... | |
| class | EuropeanOption |
| European option on a single asset. More... | |
| class | FixedRateBondForward |
| Forward contract on a fixed-rate bond More... | |
| class | Forward |
| Abstract base forward class. More... | |
| class | ForwardVanillaOption |
| Forward version of a vanilla option More... | |
| class | YoYInflationCapFloor |
| Base class for yoy inflation cap-like instruments. More... | |
| class | YoYInflationCap |
| Concrete YoY Inflation cap class. More... | |
| class | YoYInflationFloor |
| Concrete YoY Inflation floor class. More... | |
| class | YoYInflationCollar |
| Concrete YoY Inflation collar class. More... | |
| class | ContinuousFloatingLookbackOption |
| Continuous-floating lookback option. More... | |
| class | ContinuousFixedLookbackOption |
| Continuous-fixed lookback option. More... | |
| class | QuantoBarrierOption |
| Quanto version of a barrier option. More... | |
| class | QuantoForwardVanillaOption |
| Quanto version of a forward vanilla option. More... | |
| class | QuantoVanillaOption |
| quanto version of a vanilla option More... | |
| class | Stock |
| Simple stock class. More... | |
| class | Swap |
| Interest rate swap. More... | |
| class | Swaption |
| Swaption class More... | |
| class | VanillaOption |
| Vanilla option (no discrete dividends, no barriers) on a single asset. More... | |
| class | VanillaSwap |
| Plain-vanilla swap: fix vs floating leg. More... | |
| class | VarianceSwap |
| Variance swap. More... | |
Since version 0.3.4, the Instrument class was reworked as shown in the following figure.

On the one hand, the checking of the expiration condition is now performed in a method isExpired() separated from the actual calculation, and a setupExpired() method is provided. The latter sets the NPV to 0.0 and can be extended in derived classes should any other results be returned.
On the other hand, the pricing-engine machinery previously contained in the Option class was moved upwards to the Instrument class. Also, the setupEngine() method was replaced by a setupArguments(Arguments*) method. This allows one to cleanly implement containment of instruments with code such as:
which was more difficult to write with setupEngine().
Therefore, there are now two ways to inherit from Instrument, namely:
-# implement the <tt>isExpired</tt> method, and completely override the <tt>performCalculations</tt> method so that it bypasses the pricing-engine machinery. If the class declared any other results beside <tt>NPV_</tt> and <tt>errorEstimate_</tt>, the <tt>setupExpired</tt> method should also be extended so that those results are set to a value suitable for an expired instrument. This was the migration path taken for all instruments not previously deriving from the <tt>Option</tt> class. -# define suitable argument and result classes for the instrument and implement the <tt>isExpired</tt> and <tt>setupArguments</tt> methods, reusing the pricing-engine machinery provided by the default <tt>performCalculations</tt> method. The latter can be extended by first calling the default implementation and then performing any additional tasks required by the instrument---most often, copying additional results from the pricing engine results to the corresponding data members of the instrument. As in the previous case, the <tt>setupExpired</tt> method can be extended to account for such extra data members.