# Compounding

## Definition

See Wikipedia:*Compound interest* for a definition.

## Codebook

The class `IRConverter` (IR = interest rate) is the workhorse for converting spot rates, forward rates and discount factors. In this section it is explained how one can switch from one compounding method to another one. The conversion between the financial quantities is shown in the spot rate and forward rate article, respectively.
Suppose you have a reference to a continuously compounded spot rate and you intend to convert it to a periodically compounded spot rate. This can be performed as follows:

IInterestRate spot_rate = InterestRate.create(0.05, 0.25, Compounding.CONTINUOUS); IRConverter.convertCompounding(spot_rate, Compounding.PERIODIC); double level = spot_rate.getLevel(); // level = 0.05127109637602412

The class `IRConverter` is extensively used by classes representing term structures. A term structure has an internal compounding and an external compounding. The internal compounding describes the *true* method used to generate the term structure. By default, the internal and external compounding methods are equal. If the external compounding is set to a different method, then the converted interest rates are returned. The following example demonstrates the idea

ILevelTS term_structure = FlatTS.create(0.05); // creates a flat term structure at a 5 % level; default: continuously compounding term_structure.setExternalCompounding(Compounding.PERIODIC); double spot_level = ts.spotRate(0.25) // spot_level = 0.05127109637602412

Of course, we obtain the same result as above.