public virtual void test_calculateReferenceDateFromTradeDate() { IborFutureTemplate @base = IborFutureTemplate.of(YEAR_MONTH, CONVENTION); LocalDate date = LocalDate.of(2015, 10, 20); LocalDate expected = LocalDate.of(2016, 6, 15); assertEquals(@base.calculateReferenceDateFromTradeDate(date, REF_DATA), expected); }
public virtual void test_calculateReferenceDateFromTradeDate() { IborFutureTemplate @base = IborFutureTemplate.of(MIN_PERIOD, NUMBER, CONVENTION); LocalDate date = LocalDate.of(2015, 10, 20); // 2nd Quarterly IMM at least 2 months later from this date LocalDate expected = LocalDate.of(2016, 6, 15); // 1st is March 2016, 2nd is Jun 2016 assertEquals(@base.calculateReferenceDateFromTradeDate(date, REF_DATA), expected); }
//------------------------------------------------------------------------- public virtual void coverage() { IborFutureCurveNode test = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD); coverImmutableBean(test); IborFutureCurveNode test2 = IborFutureCurveNode.of(IborFutureTemplate.of(PERIOD_TO_START, NUMBER, CONVENTION), QuoteId.of(StandardId.of("OG-Ticker", "Unknown"))); coverBeanEquals(test, test2); }
//------------------------------------------------------------------------- public virtual void test_createTrade() { IborFutureTemplate @base = IborFutureTemplate.of(YEAR_MONTH, CONVENTION); LocalDate date = LocalDate.of(2015, 10, 20); double quantity = 3; double price = 0.99; double notional = 100.0; SecurityId secId = SecurityId.of("OG-Future", "GBP-LIBOR-3M-Jun16"); IborFutureTrade trade = @base.createTrade(date, secId, quantity, notional, price, REF_DATA); IborFutureTrade expected = CONVENTION.createTrade(date, secId, YEAR_MONTH, quantity, notional, price, REF_DATA); assertEquals(trade, expected); }
private static CurveNode curveIborFutureCurveNode(string conventionStr, string timeStr, string label, QuoteId quoteId, double spread, CurveNodeDate date, CurveNodeDateOrder order) { Matcher matcher = FUT_TIME_REGEX.matcher(timeStr.ToUpper(Locale.ENGLISH)); if (matcher.matches()) { Period periodToStart = Period.parse("P" + matcher.group(1)); int sequenceNumber = int.Parse(matcher.group(2)); IborFutureConvention convention = IborFutureConvention.of(conventionStr); IborFutureTemplate template = IborFutureTemplate.of(periodToStart, sequenceNumber, convention); return(IborFutureCurveNode.builder().template(template).rateId(quoteId).additionalSpread(spread).label(label).date(date).dateOrder(order).build()); } Matcher matcher2 = FUT_MONTH_REGEX.matcher(timeStr.ToUpper(Locale.ENGLISH)); if (matcher2.matches()) { YearMonth yearMonth = YearMonth.parse(matcher2.group(1), YM_FORMATTER); IborFutureConvention convention = IborFutureConvention.of(conventionStr); IborFutureTemplate template = IborFutureTemplate.of(yearMonth, convention); return(IborFutureCurveNode.builder().template(template).rateId(quoteId).additionalSpread(spread).label(label).date(date).dateOrder(order).build()); } throw new System.ArgumentException(Messages.format("Invalid time format for Ibor Future: {}", timeStr)); }
public virtual void test_approximateMaturity() { IborFutureTemplate @base = IborFutureTemplate.of(YEAR_MONTH, CONVENTION); assertEquals(@base.approximateMaturity(LocalDate.of(2015, 10, 20)), 8d / 12d, 0.1d); }
static CalibrationZeroRateUsd2OisFuturesHWIrsTest() { DSC_NAMES[DSCON_CURVE_NAME] = USD; ISet <Index> usdFedFundSet = new HashSet <Index>(); usdFedFundSet.Add(USD_FED_FUND); IDX_NAMES[DSCON_CURVE_NAME] = usdFedFundSet; ISet <Index> usdLibor3Set = new HashSet <Index>(); usdLibor3Set.Add(USD_LIBOR_3M); IDX_NAMES[FWD3_CURVE_NAME] = usdLibor3Set; for (int i = 0; i < DSC_NB_DEPO_NODES; i++) { BusinessDayAdjustment bda = BusinessDayAdjustment.of(FOLLOWING, USNY); TermDepositConvention convention = ImmutableTermDepositConvention.of("USD-Dep", USD, bda, ACT_360, DaysAdjustment.ofBusinessDays(DSC_DEPO_OFFSET[i], USNY)); DSC_NODES[i] = TermDepositCurveNode.of(TermDepositTemplate.of(Period.ofDays(1), convention), QuoteId.of(StandardId.of(SCHEME, DSC_ID_VALUE[i]))); } for (int i = 0; i < DSC_NB_OIS_NODES; i++) { DSC_NODES[DSC_NB_DEPO_NODES + i] = FixedOvernightSwapCurveNode.of(FixedOvernightSwapTemplate.of(Period.ZERO, Tenor.of(DSC_OIS_TENORS[i]), USD_FIXED_1Y_FED_FUND_OIS), QuoteId.of(StandardId.of(SCHEME, DSC_ID_VALUE[DSC_NB_DEPO_NODES + i]))); } FWD3_NODES[0] = IborFixingDepositCurveNode.of(IborFixingDepositTemplate.of(USD_LIBOR_3M), QuoteId.of(StandardId.of(SCHEME, FWD3_ID_VALUE[0]))); IborFutureConvention convention = ImmutableIborFutureConvention.of(USD_LIBOR_3M, DateSequences.QUARTERLY_IMM); for (int i = 0; i < FWD3_NB_FUT_NODES; i++) { IborFutureTemplate template = IborFutureTemplate.of(Period.ofDays(7), FWD3_FUT_SEQ[i], convention); FWD3_NODES[i + 1] = IborFutureCurveNode.of(template, QuoteId.of(StandardId.of(SCHEME, FWD3_ID_VALUE[i + 1]))); } for (int i = 0; i < FWD3_NB_IRS_NODES; i++) { FWD3_NODES[i + 1 + FWD3_NB_FUT_NODES] = FixedIborSwapCurveNode.of(FixedIborSwapTemplate.of(Period.ZERO, Tenor.of(FWD3_IRS_TENORS[i]), USD_FIXED_6M_LIBOR_3M), QuoteId.of(StandardId.of(SCHEME, FWD3_ID_VALUE[i + 1 + FWD3_NB_FUT_NODES]))); } ImmutableMarketDataBuilder builder = ImmutableMarketData.builder(VAL_DATE); for (int i = 0; i < DSC_NB_NODES; i++) { builder.addValue(QuoteId.of(StandardId.of(SCHEME, DSC_ID_VALUE[i])), DSC_MARKET_QUOTES[i]); } for (int i = 0; i < FWD3_NB_NODES; i++) { builder.addValue(QuoteId.of(StandardId.of(SCHEME, FWD3_ID_VALUE[i])), FWD3_MARKET_QUOTES[i]); } ALL_QUOTES = builder.build(); IList <CurveNode[]> groupDsc = new List <CurveNode[]>(); groupDsc.Add(DSC_NODES); CURVES_NODES.Add(groupDsc); IList <CurveNode[]> groupFwd3 = new List <CurveNode[]>(); groupFwd3.Add(FWD3_NODES); CURVES_NODES.Add(groupFwd3); IList <CurveMetadata> groupDsc = new List <CurveMetadata>(); groupDsc.Add(DefaultCurveMetadata.builder().curveName(DSCON_CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.ZERO_RATE).dayCount(CURVE_DC).build()); CURVES_METADATA.Add(groupDsc); IList <CurveMetadata> groupFwd3 = new List <CurveMetadata>(); groupFwd3.Add(DefaultCurveMetadata.builder().curveName(FWD3_CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.ZERO_RATE).dayCount(CURVE_DC).build()); CURVES_METADATA.Add(groupFwd3); }
public virtual void test_approximateMaturity() { IborFutureTemplate @base = IborFutureTemplate.of(MIN_PERIOD, NUMBER, CONVENTION); assertEquals(@base.approximateMaturity(LocalDate.of(2015, 10, 20)), 0.5d, 0.1d); }