/** * Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.product; import com.opengamma.strata.basics.currency.Currency; /** * The product details of a financial instrument that is traded as a security. * <p> * A securitized product contains the structure of a financial instrument that is traded as a {@link Security}. * The product of a security is distinct from the security itself. * A {@link Security} contains details about itself, with any underlying securities * referred to by {@linkplain SecurityId identifier}. * By contrast, the product contains the full model for pricing, including underlying products. * <p> * For example, the securitized product of a bond future option directly contains all * the details of the future and the basket of bonds. Whereas, a bond future option security * only contains details of the option and an identifier referring to the future. * <p> * Implementations of this interface must be immutable beans. */ public interface SecuritizedProduct extends Product { /** * Gets the security identifier. * <p> * This identifier uniquely identifies the security within the system. * * @return the security identifier */ public abstract SecurityId getSecurityId(); /** * Gets the currency that the security is traded in. * * @return the trading currency */ public abstract Currency getCurrency(); }