public void test_of() { ResolvedTradeParameterMetadata test = ResolvedTradeParameterMetadata.of(TRADE, "Label"); assertEquals(test.getLabel(), "Label"); assertEquals(test.getIdentifier(), "Label"); assertEquals(test.getTrade(), TRADE); }
/** * Obtains an instance specifying the trade and label. * * @param trade the resolved trade * @param label the label * @return the instance */ public static ResolvedTradeParameterMetadata of(ResolvedTrade trade, String label) { return new ResolvedTradeParameterMetadata(trade, label); }
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(); }
public void test_serialization() { ResolvedTradeParameterMetadata test = ResolvedTradeParameterMetadata.of(TRADE, "Label"); assertSerialization(test); }
public void coverage() { ResolvedTradeParameterMetadata test1 = ResolvedTradeParameterMetadata.of(TRADE, "Label"); coverImmutableBean(test1); ResolvedTrade trade = ResolvedBulletPaymentTrade.of( TradeInfo.empty(), BulletPayment.builder() .date(AdjustableDate.of(LocalDate.of(2017, 3, 3))) .value(CurrencyAmount.of(Currency.USD, 100d)) .payReceive(PayReceive.PAY) .build() .resolve(REF_DATA)); ResolvedTradeParameterMetadata test2 = ResolvedTradeParameterMetadata.builder().trade(trade).label("Label2").build(); coverBeanEquals(test1, test2); }
@Override public String getIdentifier() { return getLabel(); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 110621028: // trade return ((ResolvedTradeParameterMetadata) bean).getTrade(); case 102727412: // label return ((ResolvedTradeParameterMetadata) bean).getLabel(); } return super.propertyGet(bean, propertyName, quiet); }
private ImmutableList<ResolvedCdsIndexTrade> getBucketCdsIndex(ResolvedCdsIndex product, CreditRatesProvider ratesProvider) { CreditDiscountFactors creditCurve = ratesProvider.survivalProbabilities(product.getCdsIndexId(), product.getCurrency()).getSurvivalProbabilities(); int nNodes = creditCurve.getParameterCount(); Builder<ResolvedCdsIndexTrade> 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 ResolvedCdsIndexTrade, "ResolvedTrade must be ResolvedCdsIndexTrade"); builder.add((ResolvedCdsIndexTrade) trade); } return builder.build(); }
/** * Computes bucketed CS01 for CDS index using a single credit curve. * <p> * This is coherent to the pricer {@link IsdaHomogenousCdsIndexTradePricer}. * The relevant credit curve must be stored in {@code RatesProvider}. * * @param trade the trade * @param bucketCdsIndex the CDS index bucket * @param ratesProvider the rates provider * @param refData the reference data * @return the bucketed CS01 */ public CurrencyParameterSensitivity bucketedCs01( ResolvedCdsIndexTrade trade, List<ResolvedCdsIndexTrade> bucketCdsIndex, CreditRatesProvider ratesProvider, ReferenceData refData) { ResolvedCdsTrade cdsTrade = trade.toSingleNameCds(); List<ResolvedCdsTrade> bucketCds = bucketCdsIndex.stream() .map(ResolvedCdsIndexTrade::toSingleNameCds) .collect(Collectors.toList()); List<ResolvedTradeParameterMetadata> metadata = bucketCdsIndex.stream() .map(t -> ResolvedTradeParameterMetadata.of(t, t.getProduct().getProtectionEndDate().toString())) .collect(Guavate.toImmutableList()); CurrencyParameterSensitivity bucketedCs01 = bucketedCs01(cdsTrade, bucketCds, metadata, ratesProvider, refData); double indexFactor = getIndexFactor(cdsTrade.getProduct(), ratesProvider); return bucketedCs01.multipliedBy(indexFactor); }
public void test_consistency_singleName() { IsdaCreditCurveDefinition curveDefinition = IsdaCreditCurveDefinition.of( CURVE_NAME, EUR, VALUATION_DATE, ACT_365F, CURVE_NODES_PS, true, true); LegalEntitySurvivalProbabilities creditCurveComputed = CALIBRATOR.calibrate( curveDefinition, MARKET_DATA_PS, RATES_PROVIDER, REF_DATA); NodalCurve curveComputed = (NodalCurve) creditCurveComputed.getSurvivalProbabilities().findData(CURVE_NAME).get(); double computedIndex = curveComputed.getMetadata().getInfo(CurveInfoType.CDS_INDEX_FACTOR); assertEquals(computedIndex, 93.0 / 97.0, TOL); IsdaCompliantCreditCurveCalibrator cdsCalibrator = FastCreditCurveCalibrator.standard(); List<CdsIsdaCreditCurveNode> cdsNodes = new ArrayList<>(); for (int i = 0; i < CURVE_NODES_PS.size(); ++i) { cdsNodes.add(CdsIsdaCreditCurveNode.ofParSpread( CURVE_NODES_PS.get(i).getTemplate(), CURVE_NODES_PS.get(i).getObservableId(), CURVE_NODES_PS.get(i).getCdsIndexId())); ParameterMetadata metadata = curveComputed.getParameterMetadata(i); assertTrue(metadata instanceof ResolvedTradeParameterMetadata); ResolvedTradeParameterMetadata tradeMetadata = (ResolvedTradeParameterMetadata) metadata; assertTrue(tradeMetadata.getTrade() instanceof ResolvedCdsIndexTrade); } IsdaCreditCurveDefinition cdsCurveDefinition = IsdaCreditCurveDefinition.of( CURVE_NAME, EUR, VALUATION_DATE, ACT_365F, cdsNodes, true, false); LegalEntitySurvivalProbabilities creditCurveExpected = cdsCalibrator.calibrate( cdsCurveDefinition, MARKET_DATA_PS, RATES_PROVIDER, REF_DATA); NodalCurve curveExpected = (NodalCurve) creditCurveExpected.getSurvivalProbabilities().findData(CURVE_NAME).get(); assertTrue(DoubleArrayMath.fuzzyEquals(curveComputed.getXValues().toArray(), curveExpected.getXValues().toArray(), TOL)); assertTrue(DoubleArrayMath.fuzzyEquals(curveComputed.getYValues().toArray(), curveExpected.getYValues().toArray(), TOL)); assertEquals(curveComputed.getMetadata().getInfo(CurveInfoType.JACOBIAN), curveExpected.getMetadata().getInfo(CurveInfoType.JACOBIAN)); }
private CurrencyParameterSensitivity bucketedCs01( ResolvedCdsTrade trade, List<ResolvedCdsTrade> bucketCds, List<ResolvedTradeParameterMetadata> metadata, CreditRatesProvider ratesProvider, ReferenceData refData) { DoubleArray sensiValue = computedBucketedCs01(trade, bucketCds, ratesProvider, refData); return CurrencyParameterSensitivity.of( CurveName.of("impliedSpreads"), metadata, trade.getProduct().getCurrency(), sensiValue); }
@Override public ResolvedTradeParameterMetadata build() { return new ResolvedTradeParameterMetadata( trade, label); }
assertTrue(param instanceof ResolvedTradeParameterMetadata); ResolvedTradeParameterMetadata tradeParam = (ResolvedTradeParameterMetadata) param; assertTrue(tradeParam.getTrade() instanceof ResolvedCdsTrade);
ImmutableList<ParameterMetadata> parameterMetadata = IntStream.range(0, nNodes) .mapToObj( n -> ResolvedTradeParameterMetadata.of( curveNodes.get(n).trade(1d, marketData, refData).getUnderlyingTrade().resolve(refData), curveNodes.get(n).getLabel()))
if (storeTrade) { parameterMetadata = IntStream.range(0, nNodes) .mapToObj(n -> ResolvedTradeParameterMetadata.of(trades.get(n), curveNodes.get(n).getLabel())) .collect(Guavate.toImmutableList()); } else {