Package com.opengamma.strata.product
The trade model has three basic concepts, trades, securities and products.
A Trade
is the basic element of finance,
a transaction between two organizations, known as counterparties.
Most trades represented in the system will be contracts that have been agreed on a date in the past.
The trade model also allows trades with a date in the future, or without any date.
A Security
is a standard contract that is traded,
such as an equity share or futures contract. Securities are typically created once and shared
using an identifier, represented by a SecurityId
.
They are often referred to as reference data.
Securities may also be stored in a Position
instead
of in a Trade
.
A Product
is the financial details of the trade or security.
A product typically contains enough information to be priced, such as the dates, holidays, indices,
currencies and amounts. There is an implementation of Product
for each distinct type
of financial instrument.
Trades are typically classified as Over-The-Counter (OTC) and listed.
An OTC trade directly embeds the product it refers to.
As such, OTC trades implement ProductTrade
.
For example, consider an OTC instrument such as an interest rate swap.
The object model consists of a SwapTrade
that directly contains a Swap
,
where SwapTrade
implements ProductTrade
.
The key to understanding the model is appreciating the separation of products from trades. In many cases, it is possible to price the product without knowing any trade details. This allows a product to be an underlying of another product, such as a swap within a swaption.
A listed trade can be defined in two ways.
The first approach is to use SecurityTrade
.
A SecurityTrade
stores just the security identifier, quantity and trade price.
When the trade needs to be priced, the identifier can be resolved to a Security
using
ReferenceData
.
The reference data could be backed by an in-memory store or a database.
The second approach is to use a more specific trade type, such as
BondFutureTrade
.
These types include the product details directly so that no reference data is needed.
As such, this approach avoids the need to use the Strata Security
classes.
For example, consider a bond future.
In the first approach, the application would create a SecurityTrade
using the identifier of the future.
The reference data would be populated, mapping the identifier to an instance of BondFutureSecurity
and additional identifiers for each of the underlying FixedCouponBondSecurity
instances.
In the second approach, the trade would be defined using BondFutureTrade
. In this case,
the trade directly holds the product model of the BondFuture
and each underlying FixedCouponBond
.
There is thus no need to populate the reference data with securities.
The key to understanding the model is appreciating the separation of products from trades and securities. It is often possible to price either against the market or against a model. Details for pricing against the market are held in the security. Details for pricing against the model are held in the product.
-
Interface Summary Interface Description Attributes Additional attributes that can be associated with a model object.LegalEntity A legal entity.PortfolioItem An item in a portfolio.PortfolioItemInfo Additional information about a portfolio item.PortfolioItemInfoBuilder<T extends PortfolioItemInfo> Interface across the various info builder classes.Position A position in a security.Product The product details of a financial instrument.ProductTrade A trade that is directly based on a product.ResolvableSecurityPosition A position that has a security identifier that can be resolved using reference data.ResolvableSecurityTrade A trade that has a security identifier that can be resolved using reference data.ResolvableTrade<T extends ResolvedTrade> A trade that can to be resolved using reference data.ResolvedProduct A product that has been resolved for pricing.ResolvedTrade A trade that has been resolved for pricing.SecuritizedProduct The product details of a financial instrument that is traded as a security.SecuritizedProductPortfolioItem<P extends SecuritizedProduct> A trade that is directly based on a securitized product.SecuritizedProductPosition<P extends SecuritizedProduct> A position that is directly based on a securitized product.SecuritizedProductTrade<P extends SecuritizedProduct> A trade that is directly based on a securitized product.Security A security that can be traded.SecurityQuantity A quantity of a security.SecurityQuantityTrade A trade that is based on security, quantity and price.Trade A trade with additional structured information.TradeConvention A market convention for trades.TradeTemplate A template used to create a trade. -
Class Summary Class Description AttributeType<T> The type that provides meaning to an attribute.GenericSecurity A generic security, defined in terms of the value of each tick.GenericSecurity.Meta The meta-bean forGenericSecurity
.GenericSecurityPosition A position in a security, where the security is embedded ready for mark-to-market pricing.GenericSecurityPosition.Builder The bean-builder forGenericSecurityPosition
.GenericSecurityPosition.Meta The meta-bean forGenericSecurityPosition
.GenericSecurityTrade A trade representing the purchase or sale of a security, where the security is embedded ready for mark-to-market pricing.GenericSecurityTrade.Builder The bean-builder forGenericSecurityTrade
.GenericSecurityTrade.Meta The meta-bean forGenericSecurityTrade
.LegalEntityId An identifier for a legal entity.PortfolioItemSummary A summary of a portfolio item.PortfolioItemSummary.Builder The bean-builder forPortfolioItemSummary
.PositionInfo Additional information about a position.PositionInfo.Meta The meta-bean forPositionInfo
.PositionInfoBuilder Builder to createPositionInfo
.ProductType The type of a portfolio item.SecurityId An identifier for a security.SecurityInfo Information about a security.SecurityInfo.Meta The meta-bean forSecurityInfo
.SecurityInfoBuilder Builder to createSecurityInfo
.SecurityPosition A position in a security, where the security is referenced by identifier.SecurityPosition.Builder The bean-builder forSecurityPosition
.SecurityPosition.Meta The meta-bean forSecurityPosition
.SecurityPriceInfo Defines the meaning of the security price.SecurityPriceInfo.Meta The meta-bean forSecurityPriceInfo
.SecurityTrade A trade representing the purchase or sale of a security, where the security is referenced by identifier.SecurityTrade.Builder The bean-builder forSecurityTrade
.SecurityTrade.Meta The meta-bean forSecurityTrade
.SimpleAttributes A simple implementation of attributes.SimpleLegalEntity A simple legal entity implementation.TradedPrice The traded price of a security-based trade.TradeInfo Additional information about a trade.TradeInfo.Meta The meta-bean forTradeInfo
.TradeInfoBuilder Builder to createTradeInfo
. -
Enum Summary Enum Description PortfolioItemType The type of a portfolio item.