/** * Obtains an instance from a list of sensitivity entries. * <p> * The sensitivities are sorted using {@link CurrencyParameterSensitivity#compareKey}. * * @param sensitivities the list of sensitivity entries * @return the sensitivities instance */ public static CurrencyParameterSensitivities of(List<? extends CurrencyParameterSensitivity> sensitivities) { List<CurrencyParameterSensitivity> mutable = new ArrayList<>(); for (CurrencyParameterSensitivity otherSens : sensitivities) { insert(mutable, otherSens); } return new CurrencyParameterSensitivities(ImmutableList.copyOf(mutable)); }
/** * Combines this parameter sensitivities with another instance. * <p> * This returns a new sensitivity instance with the specified sensitivity added. * This instance is immutable and unaffected by this method. * <p> * The sensitivities are merged using market data name and currency as a key. * The parameter metadata is not checked, thus the caller must ensure the sensitivities * are compatible with the same metadata and parameter count. * To combine taking the metadata into account, use {@link #mergedWith(CurrencyParameterSensitivities)}. * * @param other the other parameter sensitivity * @return an instance based on this one, with the other instance added */ public CurrencyParameterSensitivities combinedWith(CurrencyParameterSensitivity other) { List<CurrencyParameterSensitivity> mutable = new ArrayList<>(sensitivities); insert(mutable, other); return new CurrencyParameterSensitivities(ImmutableList.copyOf(mutable)); }
/** * Combines this parameter sensitivities with another instance. * <p> * This returns a new sensitivity instance with a combined list of parameter sensitivities. * This instance is immutable and unaffected by this method. * <p> * The sensitivities are merged using market data name and currency as a key. * The parameter metadata is not checked, thus the caller must ensure the sensitivities * are compatible with the same metadata and parameter count. * To combine taking the metadata into account, use {@link #mergedWith(CurrencyParameterSensitivities)}. * * @param other the other parameter sensitivities * @return an instance based on this one, with the other instance added */ public CurrencyParameterSensitivities combinedWith(CurrencyParameterSensitivities other) { List<CurrencyParameterSensitivity> mutable = new ArrayList<>(sensitivities); for (CurrencyParameterSensitivity otherSens : other.sensitivities) { insert(mutable, otherSens); } return new CurrencyParameterSensitivities(ImmutableList.copyOf(mutable)); }
/** * Converts the sensitivities in this instance to an equivalent in the specified currency. * <p> * Any FX conversion that is required will use rates from the provider. * * @param resultCurrency the currency of the result * @param rateProvider the provider of FX rates * @return the sensitivity object expressed in terms of the result currency * @throws RuntimeException if no FX rate could be found */ @Override public CurrencyParameterSensitivities convertedTo(Currency resultCurrency, FxRateProvider rateProvider) { List<CurrencyParameterSensitivity> mutable = new ArrayList<>(); for (CurrencyParameterSensitivity sens : sensitivities) { insert(mutable, sens.convertedTo(resultCurrency, rateProvider)); } return new CurrencyParameterSensitivities(ImmutableList.copyOf(mutable)); }