Trade Modeling
Table of Contents
1. Summary
Trades are a key concept in ORE Studio. Through the application of Data Oriented Programming principles, they were modeled as four distinct entities with the following responsibilities:
- Product Type: The class of financial contract that can be traded.
- Security Issue: A particular tradable instance of a product type, where one exists.
- Trade: An agreement struck on a product type and, where one exists, on a security issue.
- Instrument: The economic terms of that agreement.
This document covers the entities a trade is built from and the relationships between them. Trade is the hub for the cluster, and names every neighbouring subject: how a trade is classified, what happens to it over its life, and what it needs in order to be valued.
The relationships between these entities are as follows. A product type classifies many security issues and many trades. A security issue is dealt by many trades. A trade holds exactly one set of economic terms, which is the instrument.
This document describes the above entities in detail, their relationships, the prior art that was considered during their modeling and any other considerations regarding the modeling process.
2. Key Entities and Relationships
The following UML diagram captures the key entities described above and their relationships.
Note that a trade names its product type directly rather than reaching it through a security issue, because a product type may have no associated security issue (e.g. in the OTC case). That is why the diagram carries an association from product type to trade as well as the path through the security issue.
The next sections provide details of each entity.
2.1. Product Type
Wikipedia defines a financial instrument as "a monetary contract between parties", and reports the accounting definition from IAS 32.11 as "any contract that gives rise to a financial asset of one entity and a financial liability or equity instrument of another entity". A product type is a class of such contracts.
In other words, kinds of contract recur, and a firm may support only a subset of these. A trader picks the kind of the thing being traded before entering any terms, and a firm may only enable or disable the trading for a subset of these. A risk engine may also only support a subset of the available product types.
The entity holds the properties that belong to the class rather than to any
contract of it: a code, a description, and the asset class it groups under. It
is a closed list, so a trade whose type is absent cannot be booked. Within ORE
Studio it is modelled as trade_type, whose code column carries the
catalogue's identifier.
2.2. Security Issue
Wikipedia defines a security as "a tradable financial asset", and adds that in a fungible security "all holdings of the security are treated identically and are interchangeable".1 A security issue is one such asset as put into the market by its issuer. Fungibility is what makes it an entity in its own right: every holder of one unit holds the same thing, so the terms belong to the security issue and not to any one holding of it.
That is to say, some contracts are defined once and traded many times, and every holder holds the identical thing. For example, an issuer fixes a bond's coupon and maturity, and two traders dealing that bond cannot negotiate either. Their trades share terms that neither party chose. Fungibility is the observation that all holdings of the security are interchangeable, so the terms belong to the thing held - the security issue - rather than to any holding of it. Without it, an issuer's terms would be copied onto every trade in the issue, and the copies could disagree.
A security issue is therefore one tradable instance of a product type: this bond issue, this futures contract. One product type has many security issues, and traders deal the same security issue many times.
A bond issue is one such instance. An issuer sells a specific tranche of debt under fixed terms — coupon, maturity, currency, size — and an ISIN or CUSIP identifies it (c.f. Standard financial identifiers). The issuer is the borrower: a sovereign debt office, a corporate, an agency, a supranational. A central bank may run the auction, but it does not issue the government's debt.
Issuers re-open existing lines rather than always creating new ones. An issue
therefore reads best as the security issue its ISIN identifies rather than as a
single sale event. Bond issuance sets out the mechanics, and bond_issue models
the entity.
The relationship from product type to security issue is optional, and many product types exercise that option. Two parties strike a vanilla OTC option between themselves, and no official issue exists because nobody defines the option once and trades it many times. A bond has an issue, a bond future has a contract, and a swaption has neither.
We therefore model security issues per product type as we reach each one, starting with the bond issue. The absence is a fact about the product type, not missing data for a later task to supply.
2.3. Trade
Wikipedia defines a financial transaction as "an agreement, or communication,
between a buyer and seller to exchange goods, services, or assets for payment".
A trade is that agreement recorded. We model it as a trade, and the trade id
identifies it. That id names the trade inside this firm only, and trade
identifiers covers the regulatory codes two counterparties share.
The trade models the notion of an agreement being struck at a time point between two identified legal entities, and establishes its controlling legal entity. Confirmation, authorisation, versioning, amendment and audit all attach to this agreement.
The trade's properties can be grouped into two:
- Envelope: the
trade_envelopemodels administrative properties such as the counterparty, the netting set, portfolios, book and desk, and any further fields the firm may attach. It places a trade in the organisation. These have limited variability by product type, if any. - Economics: The economic terms determine what the trade pays, to whom, and when, and vary greatly by product type. For example, the notional, the direction, the payment schedule, the strike, the rate, etc.
The two are read and may change independently: A trade may change portfolio or book without any changes to its economic terms, and the economic terms may change without any updates to the envelope. This categorisation is also important with regards to Confirmations.
2.4. Instrument
Within ORE Studio, the instrument concerns itself with the economic terms or just economics of a trade. The economics differ in shape, not merely in value, between different kinds of contract: a bond's terms are a coupon, a maturity and a redemption; a swaption's are an exercise schedule, an underlying swap and a settlement method. No single set of columns holds both without leaving most of them empty.
The variation is structural, which is why the economics are an entity per
product type rather than a wider trade table. However, the economic terms are
properties of one agreement: a notional, a direction, a schedule and a strike
all belong to that deal, and two trades on the same security issue carry different
ones. The relationship between trade and instrument is therefore one to one, and
the trade id identifies both.
3. Prior art
There are several examples of market standard representations for trades and related entities. The next section looks at prior art that was considered when designing this model.
3.1. Messaging standards
FIX and MDDL meet this model only at the identifier. FIX carries an Instrument
component block that names a security by SecurityID with a SecurityIDSource
saying which scheme the value belongs to, and MDDL wraps any existing scheme in
a controlled vocabulary. Neither proposes a persistent model of a trade: both
describe a message on the wire. They matter here only because they confirm that
a security identifier is meaningless without the scheme that issued it, which is
the point standard financial identifiers makes.
3.2. FpML
FPML covers trading, valuation, confirmation, novation, amendment, termination and position reporting, and unlike FIX it specifies no transport: it is a data representation only. Its relevance here is the shape rather than the content. FpML represents a trade as a header carrying identifiers and parties, alongside one product element chosen from many. That is the same division this model makes between the envelope and the economic terms, and the same observation that the economic terms vary in shape by product rather than in value alone.
Its limitation is scope. FpML addresses OTC derivatives, so it says little about securities defined once by an issuer and traded many times, which is where our security issue entity earns its place.
3.3. The Common Domain Model
The CDM (Common Domain Model) is the most directly relevant prior art. FINOS
maintains it with ISDA, ISLA and ICMA. CDM defines a product from three
attributes: an identifier, a taxonomy that classifies it, and economicTerms,
described as "a parametric representation of the future financial obligations".
It then defines a tradable product as the "definition of a financial product as
ready to be traded, i.e. included in an execution or contract, by associating
a specific price and quantity", which also binds exactly two counterparties.
The reuse mechanism is of particular interest. CDM normalises counterparty roles
to Party1 and Party2, so that "the same product can now be defined in a
party-agnostic way and used to represent transactions between potentially many
different parties". A product definition is therefore instantiated many times.
CDM allows for two trades to share a set of economic terms by placing
economicTerms on the reusable product. However, CDM's economic terms are
parametric mechanics - payouts, date methodologies, termination rules — and
carry no price, quantity or party, which are properties of the trade. What this
model calls the instrument is the per-deal half: the notional, the direction,
the strike. CDM's reusable half corresponds to our product type and security
issue, and its tradable product corresponds to our trade. Both models therefore
cut at price and quantity, and differ only in where they draw the boundary of
the word "product".
3.4. Vendor platforms
Calypso separates Trade from Product. A product, in its terms, is a financial instrument that can be held or traded, defined once and traded many times, and it manages product holdings independently of trades. Calypso's Product is the definition (e.g. a bond, a future contract, a stock, etc.) which is the security issue here.
Murex builds a trade from Financial Contract Components, its elementary unit for P&L and sensitivity, and those components cannot live independently. A Financial Contract is the set of components dealt with one counterparty and processed as one object. The public material does not settle how definitions are shared between contracts, so the shape of a contract is established and its reuse is not.
Neither platform holds an entity between the trade and the product definition. Both descriptions come from vendor documentation rather than from a published standard, and neither is cited to an edition or page, so they corroborate the model without establishing it.
3.5. ORE
ORE is the ground truth for ORE Studio. Our entities must be a super set of the attributes in the related ORE entities, possibly normalised, so that a portfolio can round-trip between the two representations without data loss. ORE Studio's trades cannot be priced unless they can be represented into ORE format so we must address all divergences between data model.
ORE names the product type with a TradeType element on each trade, whose
permitted values are the oreTradeType enumeration. Each product page in ORE
Products by Asset Class states its TradeType, so the catalogue and the
documentation can be read against each other.
ORE models security issues as ReferenceData, a list of ReferenceDatum elements.
Each element carries an id attribute, an optional validFrom, a Type
discriminator, and one payload chosen from a closed list: bond, bond future,
convertible bond, callable bond, CBO, bond basket, equity, equity index,
commodity index, credit index, currency-hedged equity index, credit, and
portfolio basket. A bond trade names its datum through BondData/SecurityId,
and a bond future names its contract through ContractName.
ORE divides the trade itself into the Envelope element and the trade-data
group, which offers one choice per TradeType. That division is the same one
the domain gives, which is why our model keeps it.
Both the reference datum payload and the trade-data group are choices discriminated by type. An XML schema expresses a choice directly; a relational model expresses it as a table per type. The two sides of the ORE model therefore have the same shape as each other, and one modeling approach covers both.
| Our entity | ORE representation |
|---|---|
trade_type |
The oreTradeType enumeration, and the TradeType element on a trade |
bond_issue and its siblings |
ReferenceData, as a ReferenceDatum with a Type discriminator and its payload |
trade |
The Trade element, identified by Trade/@id |
trade_envelope |
The Envelope element |
bond_instrument and its siblings |
The trade-data group, one choice per TradeType |
In terms of divergence, ORE carries no identity between its trade and its trade
data, because the trade data is a child element of the trade and needs none. Our
instrument_id is therefore a divergence from ORE rather than a reflection of
it, and it is the one place where the correspondence above does not hold.
4. Sources
The three general definitions are quoted from Wikipedia as retrieved on 13 September 2026: Financial instrument, which also reports the IAS 32.11 accounting definition; Security (finance); and Financial transaction.
FpML is quoted from its Wikipedia article, retrieved on 13 September 2026. The Common Domain Model is quoted from the FINOS CDM product model documentation, retrieved on the same date.
The ORE statements are read from the ORE schema and the ORE user guide. The Calypso and Murex statements come from vendor documentation, without an edition or page.
5. See also
- Trade — the hub for this cluster.
- Trade classification — who the firm faces, and whether anything happened.
- Product Family — the contract shape a product type takes; aggregation rather than trade definition.
- Trade Lifecycle — the states a trade moves through.
- Trade Activity — the events that create, change or end a trade.
- Trade Versioning — what a change to a trade produces.
- Confirmations — what is agreed with the counterparty.
- Market Data Requirement — what a trade needs to be valued, and a candidate relation against the trade.
- Positions — the aggregate over deals, which has no identity of its own.
- ORE Products by Asset Class — the product pages, one per
TradeType. - Asset Classes — the eight classes, what each covers, and the two coding schemes.
- Standard financial identifiers — ISIN, CUSIP and SEDOL, which identify a security issue, alongside the entity, venue and market data schemes.
- Trade identifiers — UTI and USI, which identify a trade.
- Bond issuance — what an issue is.
- Data-oriented design — identity by key, and explicit variation over inheritance webs.
- Knowledge — the hub of all knowledge notes.
Footnotes:
In Domain Musings we have debated at length the difficulty in pinning down these domain terms. For our notes on securities, see Trading.