protected void checkCdsBucket(ResolvedCdsTrade trade, List<ResolvedCdsTrade> bucketCds) { Iterator<StandardId> legalEntities = bucketCds.stream().map(t -> t.getProduct().getLegalEntityId()).collect(Collectors.toSet()).iterator(); ArgChecker.isTrue(legalEntities.next().equals(trade.getProduct().getLegalEntityId()), "legal entity must be common"); ArgChecker.isFalse(legalEntities.hasNext(), "legal entity must be common"); Iterator<Currency> currencies = bucketCds.stream().map(t -> t.getProduct().getCurrency()).collect(Collectors.toSet()).iterator(); ArgChecker.isTrue(currencies.next().equals(trade.getProduct().getCurrency()), "currency must be common"); ArgChecker.isFalse(currencies.hasNext(), "currency must be common"); }
void validateRecoveryRates(ResolvedCds cds, CreditRatesProvider ratesProvider) { RecoveryRates recoveryRates = ratesProvider.recoveryRates(cds.getLegalEntityId()); ArgChecker.isTrue(recoveryRates instanceof ConstantRecoveryRates, "recoveryRates must be ConstantRecoveryRates"); }
double recoveryRate(ResolvedCds cds, CreditRatesProvider ratesProvider) { RecoveryRates recoveryRates = ratesProvider.recoveryRates(cds.getLegalEntityId()); ArgChecker.isTrue(recoveryRates instanceof ConstantRecoveryRates, "recoveryRates must be ConstantRecoveryRates"); return recoveryRates.recoveryRate(cds.getProtectionEndDate()); }
private ImmutableList<ResolvedCdsTrade> getBucketCds(ResolvedCds product, CreditRatesProvider ratesProvider) { CreditDiscountFactors creditCurve = ratesProvider.survivalProbabilities(product.getLegalEntityId(), product.getCurrency()).getSurvivalProbabilities(); int nNodes = creditCurve.getParameterCount(); Builder<ResolvedCdsTrade> builder = ImmutableList.builder(); for (int i = 0; i < nNodes; ++i) { ParameterMetadata metadata = creditCurve.getParameterMetadata(i); ArgChecker.isTrue(metadata instanceof ResolvedTradeParameterMetadata, "ParameterMetadata of credit curve must be ResolvedTradeParameterMetadata"); ResolvedTradeParameterMetadata tradeMetadata = (ResolvedTradeParameterMetadata) metadata; ResolvedTrade trade = tradeMetadata.getTrade(); ArgChecker.isTrue(trade instanceof ResolvedCdsTrade, "ResolvedTrade must be ResolvedCdsTrade"); builder.add((ResolvedCdsTrade) trade); } return builder.build(); }
private double getIndexFactor(ResolvedCds cds, CreditRatesProvider ratesProvider) { LegalEntitySurvivalProbabilities survivalProbabilities = ratesProvider.survivalProbabilities(cds.getLegalEntityId(), cds.getCurrency()); // instance is checked in pricer double indexFactor = ((IsdaCreditDiscountFactors) survivalProbabilities.getSurvivalProbabilities()) .getCurve() .getMetadata() .getInfo(CurveInfoType.CDS_INDEX_FACTOR); return indexFactor; }
q -> ArgChecker.isTrue(q.getQuoteConvention().equals(CdsQuoteConvention.PAR_SPREAD), "quote must be par spread")); Iterator<StandardId> legalEntities = trades.stream().map(t -> t.getProduct().getLegalEntityId()).collect(Collectors.toSet()).iterator(); StandardId legalEntityId = legalEntities.next(); ArgChecker.isFalse(legalEntities.hasNext(), "legal entity must be common to trades");
StandardId legalEntityId = cdsProduct.getLegalEntityId(); Pair<StandardId, Currency> pair = Pair.of(legalEntityId, currency); ImmutableCreditRatesProvider ratesbase = ImmutableCreditRatesProvider.builder()
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 244977400: // buySell return ((ResolvedCds) bean).getBuySell(); case 866287159: // legalEntityId return ((ResolvedCds) bean).getLegalEntityId(); case -1674414612: // paymentPeriods return ((ResolvedCds) bean).getPaymentPeriods(); case -1193325040: // protectionEndDate return ((ResolvedCds) bean).getProtectionEndDate(); case 1905311443: // dayCount return ((ResolvedCds) bean).getDayCount(); case -480203780: // paymentOnDefault return ((ResolvedCds) bean).getPaymentOnDefault(); case 2103482633: // protectionStart return ((ResolvedCds) bean).getProtectionStart(); case 852621746: // stepinDateOffset return ((ResolvedCds) bean).getStepinDateOffset(); case 135924714: // settlementDateOffset return ((ResolvedCds) bean).getSettlementDateOffset(); } return super.propertyGet(bean, propertyName, quiet); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(ResolvedCds beanToCopy) { this.buySell = beanToCopy.getBuySell(); this.legalEntityId = beanToCopy.getLegalEntityId(); this.paymentPeriods = beanToCopy.getPaymentPeriods(); this.protectionEndDate = beanToCopy.getProtectionEndDate(); this.dayCount = beanToCopy.getDayCount(); this.paymentOnDefault = beanToCopy.getPaymentOnDefault(); this.protectionStart = beanToCopy.getProtectionStart(); this.stepinDateOffset = beanToCopy.getStepinDateOffset(); this.settlementDateOffset = beanToCopy.getSettlementDateOffset(); }
private Pair<CreditDiscountFactors, LegalEntitySurvivalProbabilities> reduceDiscountFactors( ResolvedCds cds, CreditRatesProvider ratesProvider) { Currency currency = cds.getCurrency(); CreditDiscountFactors discountFactors = ratesProvider.discountFactors(currency); ArgChecker.isTrue(discountFactors.isIsdaCompliant(), "discount factors must be IsdaCompliantZeroRateDiscountFactors"); LegalEntitySurvivalProbabilities survivalProbabilities = ratesProvider.survivalProbabilities(cds.getLegalEntityId(), currency); ArgChecker.isTrue(survivalProbabilities.getSurvivalProbabilities().isIsdaCompliant(), "survival probabilities must be IsdaCompliantZeroRateDiscountFactors"); ArgChecker.isTrue(discountFactors.getDayCount().equals(survivalProbabilities.getSurvivalProbabilities().getDayCount()), "day count conventions of discounting curve and credit curve must be the same"); return Pair.of(discountFactors, survivalProbabilities); }
public void test_builder() { ResolvedCds test = ResolvedCds.builder() .buySell(BUY) .dayCount(ACT_360) .legalEntityId(LEGAL_ENTITY) .paymentOnDefault(ACCRUED_PREMIUM) .protectionStart(BEGINNING) .paymentPeriods(PAYMENTS) .protectionEndDate(PAYMENTS.get(PAYMENTS.size() - 1).getEffectiveEndDate()) .settlementDateOffset(SETTLE_DAY_ADJ) .stepinDateOffset(STEPIN_DAY_ADJ) .build(); assertEquals(test.getBuySell(), BUY); assertEquals(test.getCurrency(), USD); assertEquals(test.getAccrualStartDate(), PAYMENTS.get(0).getStartDate()); assertEquals(test.getAccrualEndDate(), PAYMENTS.get(42).getEndDate()); assertEquals(test.getDayCount(), ACT_360); assertEquals(test.getFixedRate(), COUPON); assertEquals(test.getLegalEntityId(), LEGAL_ENTITY); assertEquals(test.getNotional(), NOTIONAL); assertEquals(test.getPaymentOnDefault(), ACCRUED_PREMIUM); assertEquals(test.getPaymentPeriods(), PAYMENTS); assertEquals(test.getProtectionEndDate(), PAYMENTS.get(42).getEffectiveEndDate()); assertEquals(test.getSettlementDateOffset(), SETTLE_DAY_ADJ); assertEquals(test.getProtectionStart(), BEGINNING); assertEquals(test.getStepinDateOffset(), STEPIN_DAY_ADJ); }
Triple<CreditDiscountFactors, LegalEntitySurvivalProbabilities, Double> reduceDiscountFactors( ResolvedCds cds, CreditRatesProvider ratesProvider) { Currency currency = cds.getCurrency(); CreditDiscountFactors discountFactors = ratesProvider.discountFactors(currency); ArgChecker.isTrue(discountFactors.isIsdaCompliant(), "discount factors must be IsdaCompliantZeroRateDiscountFactors"); LegalEntitySurvivalProbabilities survivalProbabilities = ratesProvider.survivalProbabilities(cds.getLegalEntityId(), currency); ArgChecker.isTrue(survivalProbabilities.getSurvivalProbabilities().isIsdaCompliant(), "survival probabilities must be IsdaCompliantZeroRateDiscountFactors"); ArgChecker.isTrue(discountFactors.getDayCount().equals(survivalProbabilities.getSurvivalProbabilities().getDayCount()), "day count conventions of discounting curve and credit curve must be the same"); double indexFactor = ((IsdaCreditDiscountFactors) survivalProbabilities.getSurvivalProbabilities()) .getCurve().getMetadata().getInfo(CurveInfoType.CDS_INDEX_FACTOR); return Triple.of(discountFactors, survivalProbabilities, indexFactor); }
ReferenceData refData) { StandardId legalEntityId = cds.getLegalEntityId(); Currency currency = cds.getCurrency(); if (isExpired(cds, ratesProvider)) {
refData); Currency currency = calibrationCds.getProduct().getCurrency(); StandardId legalEntityId = calibrationCds.getProduct().getLegalEntityId(); ImmutableCreditRatesProvider rates = ImmutableCreditRatesProvider.builder() .valuationDate(valuationDate)
ResolvedCds product = trade.getProduct(); Currency currency = product.getCurrency(); StandardId legalEntityId = product.getLegalEntityId(); LocalDate valuationDate = ratesProvider.getValuationDate();
StandardId legalEntityId = product.getLegalEntityId(); LocalDate valuationDate = ratesProvider.getValuationDate(); NodalCurve creditCurve = calibrator.calibrate(
StandardId legalEntityId = product.getLegalEntityId(); LocalDate valuationDate = ratesProvider.getValuationDate(); NodalCurve creditCurve = calibrator.calibrate(
ResolvedCds product = trade.getProduct(); Currency currency = product.getCurrency(); StandardId legalEntityId = product.getLegalEntityId(); LocalDate valuationDate = ratesProvider.getValuationDate(); ImmutableCreditRatesProvider immutableRatesProvider = ratesProvider.toImmutableCreditRatesProvider();
ResolvedCds product = trade.getProduct(); Currency currency = product.getCurrency(); StandardId legalEntityId = product.getLegalEntityId(); LocalDate valuationDate = ratesProvider.getValuationDate(); ImmutableCreditRatesProvider immutableRatesProvider = ratesProvider.toImmutableCreditRatesProvider();