private ImmutableLegalEntityDiscountingProvider replaceRepoCurve( ImmutableLegalEntityDiscountingProvider ratesProvider, Pair<RepoGroup, Currency> rgCcy, DiscountFactors discountFactors) { Map<Pair<RepoGroup, Currency>, DiscountFactors> curves = new HashMap<>(); curves.putAll(ratesProvider.getRepoCurves()); curves.put(rgCcy, discountFactors); return ratesProvider.toBuilder() .repoCurves(curves) .build(); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(ImmutableLegalEntityDiscountingProvider beanToCopy) { this.valuationDate = beanToCopy.getValuationDate(); this.repoCurveSecurityGroups = beanToCopy.getRepoCurveSecurityGroups(); this.repoCurveGroups = beanToCopy.getRepoCurveGroups(); this.repoCurves = beanToCopy.getRepoCurves(); this.issuerCurveGroups = beanToCopy.getIssuerCurveGroups(); this.issuerCurves = beanToCopy.getIssuerCurves(); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 113107279: // valuationDate return ((ImmutableLegalEntityDiscountingProvider) bean).getValuationDate(); case -1749299407: // repoCurveSecurityGroups return ((ImmutableLegalEntityDiscountingProvider) bean).getRepoCurveSecurityGroups(); case -1279842095: // repoCurveGroups return ((ImmutableLegalEntityDiscountingProvider) bean).getRepoCurveGroups(); case 587630454: // repoCurves return ((ImmutableLegalEntityDiscountingProvider) bean).getRepoCurves(); case 1830129450: // issuerCurveGroups return ((ImmutableLegalEntityDiscountingProvider) bean).getIssuerCurveGroups(); case -1909076611: // issuerCurves return ((ImmutableLegalEntityDiscountingProvider) bean).getIssuerCurves(); } return super.propertyGet(bean, propertyName, quiet); }
private double sum(ImmutableLegalEntityDiscountingProvider provider) { double result = 0d; // repo curves ImmutableMap<Pair<RepoGroup, Currency>, DiscountFactors> mapIndex = provider.getRepoCurves(); for (Entry<Pair<RepoGroup, Currency>, DiscountFactors> entry : mapIndex.entrySet()) { InterpolatedNodalCurve curve = (InterpolatedNodalCurve) getCurve(entry.getValue()); result += sumSingle(curve); } // issuer curves ImmutableMap<Pair<LegalEntityGroup, Currency>, DiscountFactors> mapCurrency = provider.getIssuerCurves(); for (Entry<Pair<LegalEntityGroup, Currency>, DiscountFactors> entry : mapCurrency.entrySet()) { InterpolatedNodalCurve curve = (InterpolatedNodalCurve) getCurve(entry.getValue()); result += sumSingle(curve); } return result; }
private double sumCombine(ImmutableLegalEntityDiscountingProvider provider) { double result = 0d; // repo curves ImmutableMap<Pair<RepoGroup, Currency>, DiscountFactors> mapCurrency = provider.getRepoCurves(); for (Entry<Pair<RepoGroup, Currency>, DiscountFactors> entry : mapCurrency.entrySet()) { CombinedCurve curve = (CombinedCurve) getCurve(entry.getValue()); result += sumSingle((InterpolatedNodalCurve) curve.split().get(0)); result += sumSingle((InterpolatedNodalCurve) curve.split().get(1)); } // issuer curves ImmutableMap<Pair<LegalEntityGroup, Currency>, DiscountFactors> mapIndex = provider.getIssuerCurves(); for (Entry<Pair<LegalEntityGroup, Currency>, DiscountFactors> entry : mapIndex.entrySet()) { CombinedCurve curve = (CombinedCurve) getCurve(entry.getValue()); result += sumSingle((InterpolatedNodalCurve) curve.split().get(0)); result += sumSingle((InterpolatedNodalCurve) curve.split().get(1)); } return result; }
for (Entry<Pair<RepoGroup, Currency>, DiscountFactors> entry : immProv.getRepoCurves().entrySet()) { Pair<RepoGroup, Currency> rgCcy = entry.getKey(); Currency currency = rgCcy.getSecond();
private CurrencyParameterSensitivities sensiFnBond(ImmutableLegalEntityDiscountingProvider provider) { CurrencyParameterSensitivities sensi = CurrencyParameterSensitivities.empty(); double sum = sum(provider); // repo curves ImmutableMap<Pair<RepoGroup, Currency>, DiscountFactors> mapRepoCurves = provider.getRepoCurves(); for (Entry<Pair<RepoGroup, Currency>, DiscountFactors> entry : mapRepoCurves.entrySet()) { DiscountFactors discountFactors = entry.getValue(); InterpolatedNodalCurve curve = (InterpolatedNodalCurve) getCurve(discountFactors); sensi = sensi.combinedWith(CurrencyParameterSensitivity.of(curve.getName(), discountFactors.getCurrency(), DoubleArray.of(discountFactors.getParameterCount(), i -> 2d * curve.getXValues().get(i) * sum))); } // issuer curves ImmutableMap<Pair<LegalEntityGroup, Currency>, DiscountFactors> mapIssuerCurves = provider.getIssuerCurves(); for (Entry<Pair<LegalEntityGroup, Currency>, DiscountFactors> entry : mapIssuerCurves.entrySet()) { DiscountFactors discountFactors = entry.getValue(); InterpolatedNodalCurve curve = (InterpolatedNodalCurve) getCurve(discountFactors); sensi = sensi.combinedWith(CurrencyParameterSensitivity.of(curve.getName(), discountFactors.getCurrency(), DoubleArray.of(discountFactors.getParameterCount(), i -> 2d * curve.getXValues().get(i) * sum))); } return sensi; }
private CurrencyParameterSensitivities sensiCombinedFnBond(ImmutableLegalEntityDiscountingProvider provider) { CurrencyParameterSensitivities sensi = CurrencyParameterSensitivities.empty(); double sum = sumCombine(provider); // repo curves ImmutableMap<Pair<RepoGroup, Currency>, DiscountFactors> mapCurrency = provider.getRepoCurves(); for (Entry<Pair<RepoGroup, Currency>, DiscountFactors> entry : mapCurrency.entrySet()) { CombinedCurve curveComb = (CombinedCurve) getCurve(entry.getValue()); InterpolatedNodalCurve baseCurveInt = checkInterpolated(curveComb.getBaseCurve()); InterpolatedNodalCurve spreadCurveInt = checkInterpolated(curveComb.getSpreadCurve()); sensi = sensi.combinedWith(CurrencyParameterSensitivity.of(baseCurveInt.getName(), USD, DoubleArray.of(baseCurveInt.getParameterCount(), i -> 2d * sum * baseCurveInt.getXValues().get(i)))); sensi = sensi.combinedWith(CurrencyParameterSensitivity.of(spreadCurveInt.getName(), USD, DoubleArray.of(spreadCurveInt.getParameterCount(), i -> 2d * sum * spreadCurveInt.getXValues().get(i)))); } // issuer curves ImmutableMap<Pair<LegalEntityGroup, Currency>, DiscountFactors> mapIndex = provider.getIssuerCurves(); for (Entry<Pair<LegalEntityGroup, Currency>, DiscountFactors> entry : mapIndex.entrySet()) { CombinedCurve curveComb = (CombinedCurve) getCurve(entry.getValue()); InterpolatedNodalCurve baseCurveInt = checkInterpolated(curveComb.getBaseCurve()); InterpolatedNodalCurve spreadCurveInt = checkInterpolated(curveComb.getSpreadCurve()); sensi = sensi.combinedWith(CurrencyParameterSensitivity.of(baseCurveInt.getName(), USD, DoubleArray.of(baseCurveInt.getParameterCount(), i -> 2d * sum * baseCurveInt.getXValues().get(i)))); sensi = sensi.combinedWith(CurrencyParameterSensitivity.of(spreadCurveInt.getName(), USD, DoubleArray.of(spreadCurveInt.getParameterCount(), i -> 2d * sum * spreadCurveInt.getXValues().get(i)))); } return sensi; }