public void test_serialization() { SecurityInfo test = SecurityInfo.of(ID, PRICE_INFO); assertSerialization(test); }
static Position parseNonEtdPosition(CsvRow row, PositionInfo info, PositionCsvInfoResolver resolver) { SecurityPosition base = parseSecurityPosition(row, info, resolver); Optional<Double> tickSizeOpt = row.findValue(TICK_SIZE).map(str -> LoaderUtils.parseDouble(str)); Optional<Currency> currencyOpt = row.findValue(CURRENCY).map(str -> Currency.of(str)); Optional<Double> tickValueOpt = row.findValue(TICK_VALUE).map(str -> LoaderUtils.parseDouble(str)); double contractSize = row.findValue(CONTRACT_SIZE).map(str -> LoaderUtils.parseDouble(str)).orElse(1d); if (tickSizeOpt.isPresent() && currencyOpt.isPresent() && tickValueOpt.isPresent()) { SecurityPriceInfo priceInfo = SecurityPriceInfo.of(tickSizeOpt.get(), CurrencyAmount.of(currencyOpt.get(), tickValueOpt.get()), contractSize); GenericSecurity sec = GenericSecurity.of(SecurityInfo.of(base.getSecurityId(), priceInfo)); return GenericSecurityPosition.ofLongShort(base.getInfo(), sec, base.getLongQuantity(), base.getShortQuantity()); } return base; }
static SecurityQuantityTrade parseTrade(CsvRow row, TradeInfo info, TradeCsvInfoResolver resolver) { SecurityTrade trade = parseSecurityTrade(row, info, resolver); SecurityTrade base = resolver.completeTrade(row, trade); Optional<Double> tickSizeOpt = row.findValue(TICK_SIZE).map(str -> LoaderUtils.parseDouble(str)); Optional<Currency> currencyOpt = row.findValue(CURRENCY).map(str -> Currency.of(str)); Optional<Double> tickValueOpt = row.findValue(TICK_VALUE).map(str -> LoaderUtils.parseDouble(str)); double contractSize = row.findValue(CONTRACT_SIZE).map(str -> LoaderUtils.parseDouble(str)).orElse(1d); if (tickSizeOpt.isPresent() && currencyOpt.isPresent() && tickValueOpt.isPresent()) { SecurityPriceInfo priceInfo = SecurityPriceInfo.of(tickSizeOpt.get(), CurrencyAmount.of(currencyOpt.get(), tickValueOpt.get()), contractSize); GenericSecurity sec = GenericSecurity.of(SecurityInfo.of(base.getSecurityId(), priceInfo)); return GenericSecurityTrade.of(base.getInfo(), sec, base.getQuantity(), base.getPrice()); } return base; }
private static Security security() { SecurityInfo info = SecurityInfo.of(ID, 20, CurrencyAmount.of(USD, 10)); return GenericSecurity.of(info); }
public void test_of_priceInfo() { SecurityInfo test = SecurityInfo.of(ID, PRICE_INFO); assertEquals(test.getId(), ID); assertEquals(test.getPriceInfo(), PRICE_INFO); assertEquals(test.getAttributes(), ImmutableMap.of()); assertThrowsIllegalArg(() -> test.getAttribute(AttributeType.NAME)); assertEquals(test.findAttribute(AttributeType.NAME), Optional.empty()); }
public void test_of_withAdditionalInfo() { SecurityInfo test = SecurityInfo.of(ID, PRICE_INFO) .withAttribute(AttributeType.NAME, "B") .withAttribute(AttributeType.NAME, "A"); // overwrites "B" assertEquals(test.getId(), ID); assertEquals(test.getPriceInfo(), PRICE_INFO); assertEquals(test.getAttributes(), INFO_MAP); assertEquals(test.getAttribute(AttributeType.NAME), "A"); assertEquals(test.findAttribute(AttributeType.NAME), Optional.of("A")); }
public void test_of_priceInfoFields() { SecurityInfo test = SecurityInfo.of(ID, PRICE_INFO.getTickSize(), PRICE_INFO.getTickValue()); assertEquals(test.getId(), ID); assertEquals(test.getPriceInfo(), PRICE_INFO); assertEquals(test.getAttributes(), ImmutableMap.of()); assertThrowsIllegalArg(() -> test.getAttribute(AttributeType.NAME)); assertEquals(test.findAttribute(AttributeType.NAME), Optional.empty()); }
public void test_resolveTarget() { SecurityPosition position = sut(); GenericSecurity resolvedSecurity = GenericSecurity.of(SecurityInfo.of(SECURITY_ID, 1, CurrencyAmount.of(USD, 0.01))); ImmutableReferenceData refData = ImmutableReferenceData.of(SECURITY_ID, resolvedSecurity); GenericSecurityPosition expected = GenericSecurityPosition.ofLongShort(POSITION_INFO, resolvedSecurity, LONG_QUANTITY, SHORT_QUANTITY); assertEquals(position.resolveTarget(refData), expected); }
/** * Obtains an instance from a contract specification, expiry year-month and variant. * <p> * The security identifier will be automatically created using {@link EtdIdUtils}. * The specification must be for a future. * * @param spec the future contract specification * @param expiry the expiry year-month of the future * @param variant the variant of the ETD, such as 'Monthly', 'Weekly, 'Daily' or 'Flex' * @return a future security based on this contract specification * @throws IllegalStateException if the product type of the contract specification is not {@code FUTURE} */ public static EtdFutureSecurity of(EtdContractSpec spec, YearMonth expiry, EtdVariant variant) { if (spec.getType() != EtdType.FUTURE) { throw new IllegalStateException( Messages.format("Cannot create an EtdFutureSecurity from a contract specification of type '{}'", spec.getType())); } SecurityId securityId = EtdIdUtils.futureId(spec.getExchangeId(), spec.getContractCode(), expiry, variant); return EtdFutureSecurity.builder() .info(SecurityInfo.of(securityId, spec.getPriceInfo())) .contractSpecId(spec.getId()) .expiry(expiry) .variant(variant) .build(); }
static EtdFutureSecurity sut() { return EtdFutureSecurity.builder() .info(SecurityInfo.of(SecurityId.of("A", "B"), SecurityPriceInfo.of(Currency.GBP, 100))) .contractSpecId(EtdContractSpecId.of("test", "123")) .expiry(YearMonth.of(2017, 6)) .build(); }
public void test_load_genericSecurity() { TradeCsvLoader test = TradeCsvLoader.standard(); ValueWithFailures<List<Trade>> trades = test.load(FILE); List<GenericSecurityTrade> filtered = trades.getValue().stream() .flatMap(filtering(GenericSecurityTrade.class)) .collect(toImmutableList()); assertEquals(filtered.size(), 1); GenericSecurityTrade expected1 = GenericSecurityTrade.builder() .info(TradeInfo.builder() .id(StandardId.of("OG", "123433")) .tradeDate(date(2017, 6, 1)) .settlementDate(date(2017, 6, 3)) .build()) .security( GenericSecurity.of( SecurityInfo.of( SecurityId.of("OG-Security", "AAPL"), SecurityPriceInfo.of(5, CurrencyAmount.of(USD, 0.01), 10)))) .quantity(12) .price(14.5) .build(); assertBeanEquals(expected1, filtered.get(0)); }
static EtdOptionSecurity sut() { return EtdOptionSecurity.builder() .info(SecurityInfo.of(SecurityId.of("A", "B"), SecurityPriceInfo.of(Currency.GBP, 100))) .contractSpecId(EtdContractSpecId.of("test", "123")) .expiry(YearMonth.of(2017, 6)) .putCall(PutCall.PUT) .strikePrice(2) .build(); }
static EtdFutureSecurity sut2() { return EtdFutureSecurity.builder() .info(SecurityInfo.of(SecurityId.of("B", "C"), SecurityPriceInfo.of(Currency.EUR, 10))) .contractSpecId(EtdContractSpecId.of("test", "234")) .expiry(YearMonth.of(2017, 9)) .variant(EtdVariant.ofWeekly(2)) .build(); }
private static Trade trade() { SecurityInfo info = SecurityInfo.of(SecurityId.of("OG-Test", "1"), 20, CurrencyAmount.of(USD, 10)); GenericSecurity security = GenericSecurity.of(info); TradeInfo tradeInfo = TradeInfo.builder() .counterparty(StandardId.of("cpty", "a")) .build(); return GenericSecurityTrade.builder() .info(tradeInfo) .security(security) .quantity(123) .price(456) .build(); }
public void test_withInfo() { BillSecurity base = BillSecurity.builder() .dayCount(DAY_COUNT) .info(INFO) .legalEntityId(LEGAL_ENTITY) .notional(NOTIONAL) .settlementDateOffset(SETTLE) .yieldConvention(YIELD_CONVENTION) .build(); SecurityInfo info = SecurityInfo.of(SECURITY_ID, SecurityPriceInfo.ofCurrencyMinorUnit(CCY)); BillSecurity expected = BillSecurity.builder() .dayCount(DAY_COUNT) .info(info) .legalEntityId(LEGAL_ENTITY) .notional(NOTIONAL) .settlementDateOffset(SETTLE) .yieldConvention(YIELD_CONVENTION) .build(); assertEquals(base.withInfo(info), expected); }
static EtdOptionSecurity sut2() { return EtdOptionSecurity.builder() .info(SecurityInfo.of(SecurityId.of("B", "C"), SecurityPriceInfo.of(Currency.EUR, 10))) .contractSpecId(EtdContractSpecId.of("test", "234")) .expiry(YearMonth.of(2017, 9)) .variant(EtdVariant.ofWeekly(2)) .version(4) .putCall(PutCall.CALL) .strikePrice(3) .underlyingExpiryMonth(YearMonth.of(2017, 12)) .build(); }
static CapitalIndexedBondSecurity createSecurity(CapitalIndexedBond product) { return CapitalIndexedBondSecurity.builder() .info(SecurityInfo.of(product.getSecurityId(), INFO.getPriceInfo())) .currency(product.getCurrency()) .notional(product.getNotional()) .accrualSchedule(product.getAccrualSchedule()) .rateCalculation(product.getRateCalculation()) .dayCount(product.getDayCount()) .yieldConvention(product.getYieldConvention()) .legalEntityId(product.getLegalEntityId()) .settlementDateOffset(product.getSettlementDateOffset()) .exCouponPeriod(product.getExCouponPeriod()) .build(); }
static FixedCouponBondSecurity createSecurity(FixedCouponBond product) { return FixedCouponBondSecurity.builder() .info(SecurityInfo.of(product.getSecurityId(), INFO.getPriceInfo())) .currency(product.getCurrency()) .notional(product.getNotional()) .accrualSchedule(product.getAccrualSchedule()) .fixedRate(product.getFixedRate()) .dayCount(product.getDayCount()) .yieldConvention(product.getYieldConvention()) .legalEntityId(product.getLegalEntityId()) .settlementDateOffset(product.getSettlementDateOffset()) .exCouponPeriod(product.getExCouponPeriod()) .build(); }
public void coverage() { BillSecurity test1 = BillSecurity.builder() .dayCount(DAY_COUNT) .info(INFO) .legalEntityId(LEGAL_ENTITY) .notional(NOTIONAL) .settlementDateOffset(SETTLE) .yieldConvention(YIELD_CONVENTION) .build(); coverImmutableBean(test1); BillSecurity test2 = BillSecurity.builder() .dayCount(DayCounts.ACT_365F) .info(SecurityInfo.of(SecurityId.of("OG-Test", "ID2"), PRICE_INFO)) .legalEntityId(LegalEntityId.of("OG-Ticker", "LE2")) .notional(AdjustablePayment.of(CurrencyAmount.of(CCY, 10), MATURITY_DATE_ADJ)) .settlementDateOffset(DaysAdjustment.ofBusinessDays(2, EUTA, BUSINESS_ADJUST)) .yieldConvention(BillYieldConvention.INTEREST_AT_MATURITY) .build(); coverBeanEquals(test1, test2); }