Class FxMatrixBuilder
- java.lang.Object
-
- com.opengamma.strata.basics.currency.FxMatrixBuilder
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description FxMatrixBuilder
addRate(CurrencyPair currencyPair, double rate)
Adds a new rate for a currency pair to the builder.FxMatrixBuilder
addRate(Currency ccy1, Currency ccy2, double rate)
Add a new pair of currencies to the builder.FxMatrixBuilder
addRates(Map<CurrencyPair,Double> rates)
Adds a collection of new rates for currency pairs to the builder.FxMatrix
build()
Build a newFxMatrix
from the data in the builder.
-
-
-
Method Detail
-
build
public FxMatrix build()
Build a newFxMatrix
from the data in the builder.- Returns:
- a new
FxMatrix
- Throws:
IllegalStateException
- if an attempt was made to add currencies which have no currency in common with other rates
-
addRate
public FxMatrixBuilder addRate(CurrencyPair currencyPair, double rate)
Adds a new rate for a currency pair to the builder. SeeaddRate(Currency, Currency, double)
for full explanation.- Parameters:
currencyPair
- the currency pair to be addedrate
- the FX rate between the base currency of the pair and the counter currency. The rate indicates the value of one unit of the base currency in terms of the counter currency.- Returns:
- the builder updated with the new rate
-
addRate
public FxMatrixBuilder addRate(Currency ccy1, Currency ccy2, double rate)
Add a new pair of currencies to the builder.An invocation of the method with
There are a number of possible outcomes when this method is called:builder.addRate(GBP, USD, 1.6)
indicates that 1 pound sterling is worth 1.6 US dollars. It is equivalent to:builder.addRate(USD, GBP, 1 / 1.6)
(1 US dollar is worth 0.625 pounds sterling) for all cases except where the USD/GBP rates is already in the matrix and so will be updated.- The builder is currently empty. In this case these currencies and rates will be added as the initial pair.
-
The builder is non-empty and neither of the currencies are
currently in the matrix. In this case the currencies cannot be
immediately added as there is no common currency to allow the
cross rates to be calculated. The currencies and rates are put
into a pending set for later processing, for example after another
pair containing one of the currencies and a currency already in
the matrix is added. If no such event occurs, then an exception
will be thrown when
build()
is called. - The builder is non-empty and one of the currencies in the pair is already in the matrix, whilst the other is not. In this case the pair and rate is added to the matrix and all the cross rates to the other currencies are calculated.
-
The builder is non-empty and contains both of the currencies in
the pair. In this case the pair is treated as an update to the
rate already in the matrix. The first currency (ccy1) is treated
as the reference currency and the second currency (ccy2) is the
updated currency. All rates involving the updated currency will
be recalculated using the new rate.
Note that due to one of the rates being treated as a reference, this operation is not symmetric. That is, the result of
matrix.addRate(USD, EUR, 1.23)
will be different to the result ofmatrix.addRate(EUR, USD, 1 / 1.23)
when there are other currencies present in the builder.
- Parameters:
ccy1
- the first currency of the pairccy2
- the second currency of the pairrate
- the FX rate between the first currency and the second currency. The rate indicates the value of one unit of the first currency in terms of the second currency.- Returns:
- the builder updated with the new rate
-
addRates
public FxMatrixBuilder addRates(Map<CurrencyPair,Double> rates)
Adds a collection of new rates for currency pairs to the builder. Pairs that are already in the builder are treated as updates to the existing rates -> !e.getKey().equals(commonCurrency) && !currencies.containsKey(e.getKey())- Parameters:
rates
- the currency pairs and rates to be added- Returns:
- the builder updated with the new rates
-
-