/** * Obtains an identifier used to find bond future volatilities. * * @param name the name * @return an identifier for the volatilities */ public static BondFutureVolatilitiesId of(String name) { return new BondFutureVolatilitiesId(BondFutureVolatilitiesName.of(name)); }
@Override public RepoCurveZeroRateSensitivity build() { return new RepoCurveZeroRateSensitivity( curveCurrency, yearFraction, currency, repoGroup, sensitivity); }
@Override public Double apply(Double y) { return dirtyPriceFromRealYield(bond, ratesProvider, settlementDate, y) - dirtyPrice; } };
public void test_presentValueWithZSpread_late() { CurrencyAmount computed = PRICER.presentValueWithZSpread( TRADE_LATE, RATES_PROVIDER, ISSUER_RATES_PROVIDER, Z_SPREAD, PERIODIC, PERIOD_PER_YEAR); double expected1 = QUANTITY * PRODUCT_PRICER.presentValueWithZSpread( RPRODUCT, RATES_PROVIDER, ISSUER_RATES_PROVIDER, SETTLEMENT_LATE, Z_SPREAD, PERIODIC, PERIOD_PER_YEAR).getAmount(); double df = ISSUER_RATES_PROVIDER.repoCurveDiscountFactors(SECURITY_ID, LEGAL_ENTITY, USD) .discountFactor(SETTLEMENT_LATE); double expected2 = df * PERIOD_PRICER.forecastValue(SETTLE_PERIOD_LATE, RATES_PROVIDER); assertEquals(computed.getAmount(), expected1 + expected2, NOTIONAL * QUANTITY * TOL); }
public void test_presentValue_standard() { CurrencyAmount computed = PRICER.presentValue(TRADE_STANDARD, RATES_PROVIDER, ISSUER_RATES_PROVIDER); double expected1 = PRODUCT_PRICER.presentValue( RPRODUCT, RATES_PROVIDER, ISSUER_RATES_PROVIDER, SETTLEMENT_STANDARD).getAmount() * QUANTITY; double df = ISSUER_RATES_PROVIDER.repoCurveDiscountFactors(SECURITY_ID, LEGAL_ENTITY, USD) .discountFactor(SETTLEMENT_STANDARD); double expected2 = df * PERIOD_PRICER.forecastValue(SETTLE_PERIOD_STANDARD, RATES_PROVIDER); assertEquals(computed.getAmount(), expected1 + expected2, NOTIONAL * QUANTITY * TOL); }
private PointSensitivityBuilder presentValueSensitivityPayment( ResolvedFixedCouponBondTrade trade, LegalEntityDiscountingProvider provider) { RepoCurveDiscountFactors repoDf = DiscountingFixedCouponBondProductPricer.repoCurveDf(trade.getProduct(), provider); Payment upfrontPayment = upfrontPayment(trade); PointSensitivityBuilder pt = paymentPricer.presentValueSensitivity( upfrontPayment, repoDf.getDiscountFactors()); if (pt instanceof ZeroRateSensitivity) { return RepoCurveZeroRateSensitivity.of((ZeroRateSensitivity) pt, repoDf.getRepoGroup()); } return pt; // NoPointSensitivity }
public void test_priceSensitivityBlackVolatility_from_future_price() { double futurePrice = 1.1d; BondFutureOptionSensitivity sensi = OPTION_PRICER.priceSensitivityModelParamsVolatility( FUTURE_OPTION_PRODUCT, RATE_PROVIDER, VOLS, futurePrice); testPriceSensitivityBlackVolatility( VOLS.parameterSensitivity(sensi), (p) -> OPTION_PRICER.price(FUTURE_OPTION_PRODUCT, RATE_PROVIDER, (p), futurePrice)); }
public void test_presentValueSensitivityBlackVolatility_from_future_price() { double futurePrice = 0.975d; BondFutureOptionSensitivity sensi = OPTION_TRADE_PRICER.presentValueSensitivityModelParamsVolatility( OPTION_TRADE, RATE_PROVIDER, VOLS, futurePrice); testPriceSensitivityBlackVolatility(VOLS.parameterSensitivity(sensi), (p) -> OPTION_TRADE_PRICER.presentValue(OPTION_TRADE, RATE_PROVIDER, (p), futurePrice, REFERENCE_PRICE).getAmount()); }
public void test_priceWithZSpread_continuous() { double computed = TRADE_PRICER.priceWithZSpread(FUTURE_TRADE, PROVIDER, Z_SPREAD, CONTINUOUS, 0); double expected = PRODUCT_PRICER.priceWithZSpread(FUTURE_PRODUCT, PROVIDER, Z_SPREAD, CONTINUOUS, 0); assertEquals(computed, expected, TOL); }
@Override public Double apply(final Double y) { return dirtyPriceFromYield(bond, settlementDate, y) - dirtyPrice; } };
/** * Obtains an instance based on discount factors and legal entity group. * * @param discountFactors the discount factors * @param legalEntityGroup the legal entity group * @return the issuer curve discount factors */ public static IssuerCurveDiscountFactors of(DiscountFactors discountFactors, LegalEntityGroup legalEntityGroup) { return new IssuerCurveDiscountFactors(discountFactors, legalEntityGroup); }
/** * Returns a builder that allows this bean to be mutated. * @return the mutable builder, not null */ public Builder toBuilder() { return new Builder(this); }
@Override public BlackBondFutureExpiryLogMoneynessVolatilities build() { return new BlackBondFutureExpiryLogMoneynessVolatilities( valuationDateTime, surface); }
@Override public ImmutableLegalEntityDiscountingProvider build() { preBuild(this); return new ImmutableLegalEntityDiscountingProvider( valuationDate, repoCurveSecurityGroups, repoCurveGroups, repoCurves, issuerCurveGroups, issuerCurves); }
@Override public BondFutureOptionSensitivity build() { return new BondFutureOptionSensitivity( volatilitiesName, expiry, futureExpiryDate, strikePrice, futurePrice, currency, sensitivity); }
public void test_presentValueWithZSpread_standard() { CurrencyAmount computed = PRICER.presentValueWithZSpread( TRADE_STANDARD, RATES_PROVIDER, ISSUER_RATES_PROVIDER, Z_SPREAD, CONTINUOUS, 0); double expected1 = QUANTITY * PRODUCT_PRICER.presentValueWithZSpread( RPRODUCT, RATES_PROVIDER, ISSUER_RATES_PROVIDER, SETTLEMENT_STANDARD, Z_SPREAD, CONTINUOUS, 0).getAmount(); double df = ISSUER_RATES_PROVIDER.repoCurveDiscountFactors(SECURITY_ID, LEGAL_ENTITY, USD) .discountFactor(SETTLEMENT_STANDARD); double expected2 = df * PERIOD_PRICER.forecastValue(SETTLE_PERIOD_STANDARD, RATES_PROVIDER); assertEquals(computed.getAmount(), expected1 + expected2, NOTIONAL * QUANTITY * TOL); }
public void test_presentValue_late() { CurrencyAmount computed = PRICER.presentValue(TRADE_LATE, RATES_PROVIDER, ISSUER_RATES_PROVIDER); double expected1 = PRODUCT_PRICER.presentValue( RPRODUCT, RATES_PROVIDER, ISSUER_RATES_PROVIDER, SETTLEMENT_LATE).getAmount() * QUANTITY; double df = ISSUER_RATES_PROVIDER.repoCurveDiscountFactors(SECURITY_ID, LEGAL_ENTITY, USD) .discountFactor(SETTLEMENT_LATE); double expected2 = df * PERIOD_PRICER.forecastValue(SETTLE_PERIOD_LATE, RATES_PROVIDER); assertEquals(computed.getAmount(), expected1 + expected2, NOTIONAL * QUANTITY * TOL); }
public void test_priceSensitivityBlackVolatility() { BondFutureOptionSensitivity sensi = OPTION_PRICER.priceSensitivityModelParamsVolatility( FUTURE_OPTION_PRODUCT, RATE_PROVIDER, VOLS); testPriceSensitivityBlackVolatility( VOLS.parameterSensitivity(sensi), (p) -> OPTION_PRICER.price(FUTURE_OPTION_PRODUCT, RATE_PROVIDER, (p))); }
public void test_presentValueSensitivityBlackVolatility() { BondFutureOptionSensitivity sensi = OPTION_TRADE_PRICER.presentValueSensitivityModelParamsVolatility( OPTION_TRADE, RATE_PROVIDER, VOLS); testPriceSensitivityBlackVolatility(VOLS.parameterSensitivity(sensi), (p) -> OPTION_TRADE_PRICER.presentValue(OPTION_TRADE, RATE_PROVIDER, (p), REFERENCE_PRICE).getAmount()); }
@Override public IssuerCurveDiscountFactors build() { return new IssuerCurveDiscountFactors( discountFactors, legalEntityGroup); }