What is the FINOS CDM
The FINOS Common Domain Model (CDM) is a standardised, machine-readable and machine-executable blueprint for how financial products are traded and managed across the transaction lifecycle. It is represented as a domain model and distributed in open source.
A single, digital processing standard for trade events and actions enhances financial markets' operational efficiency in several ways:
- Enables inter-operability and straight-through processing across firms, solutions and platforms, reducing the need for reconciliation caused by variations in how each firm records trade lifecycle events.
- Accelerates financial technology innovation by providing a common, readily operational foundation for how technologies like distributed ledger, smart contracts, cloud computing, and artificial intelligence can be applied to financial markets.
- Delivers better regulatory oversight, promotes transparency and alignment between regulators and market participants and enables consistency in regulatory reporting, by providing a standard representation of trade data and supporting machine executable reporting requirements.
To support these objectives, the CDM is built according to a set of design principles that include the following concepts:
- Normalisation through abstraction of common components
- Composability where objects are composed and qualified from the bottom up
- Mapping to existing industry messaging formats
- Embedded logic to represent industry processes
- Modularisation into logical layers
These design principles are further detailed in the design-principles section of the CDM documentation.
The CDM governance framework regulates the development of the CDM in open source.
The CDM covers OTC derivatives, cash securities, securities financing, commodities, and can expand to include other Capital Markets products and Asset Classes.
The CDM is made of three sets of components, as laid-out in the FINOS CDM components diagram below:
- The FINOS CDM Distribution (in blue)
- The Rosetta DSL (in grey)
- CDM Applications (in green)
FINOS CDM Distribution
The FINOS CDM distribution is openly accessible to all industry participants, subject to the FINOS CDM open source licence. This distribution is fully downloadable.
The FINOS CDM distribution comprises three main sets of components:
- Model definition, which corresponds to the model as expressed in
the Rosetta DSL and contained into a set of .rosetta files
organised as namespaces. The primary dimensions of the model are
listed below and further described in the
common-domain-model of the
- Legal Agreement
- Reference Data
- Mapping (Synonym)
- Executable code distribution, automatically generated from the model definitions expressed in the Rosetta DSL using available code generators. Once a code generator is implemented for a particular language, the corresponding code generation is included as part of the CDM build and release process, allowing the CDM to be automatically distributed in that language going forward.
- Default implementation, comprising manually-written code (in Java) which, combined with the auto-generated code, provides a complete implementation of the model. This hand-written code is distributed together with the CDM to facilitate adoption by firms, which can directly use the CDM distribution to set-up and test an implementation. The default implementation can be used in its original state or be disabled or extended by industry participants in their implementations. For example, the default implementation uses the de-facto Java hash function to support cross-referencing in the CDM, but firms may elect to use an alternative implementation.
Note: Only the Java executable code distribution is complete: i.e. it represents the entire CDM as defined in Rosetta (plus any associated default implementation). Other distributions may only capture parts of the model: for instance, the Scala and TypeScript distributions include the complete data model and function specifications, but not the functions' executable code.
The language includes one default code generator into java. To facilitate adoption and implementation of the CDM by the community of industry participants, the Rosetta DSL is available in open source under an Apache 2.0 license. This allows industry participants to write and share code generators into any other languages.
Note: All the language components, their syntax and purpose are detailed in the Rosetta DSL Documentation. The documentation also describes the mechanism to write and use code generators.
An ecosystem of CDM-based application components from software providers exists in order to support the adoption of CDM and the implementation of CDM-based production systems by industry participants. These applications may be open source software or licensed under commercial terms. In particular:
- Rosetta is a Software Development Kit (SDK or dev-kit) for the Rosetta DSL, that provides the cumminity with a free and easy way to contribute code to the CDM. Please refer to the Rosetta Documentation for more details.
Note: The CDM Portal and Rosetta have been developed by technology firm REGnosys. FINOS encourages the adoption of CDM by software providers but does not endorse any CDM application component.
Using the CDM (Java)
The Java distribution of the CDM is designed to be built and used with Maven.
It depends on some open source java artifacts which are freely available
from an artifact repository. Maven can be configured to use this
repository using the repository settings contained in the
file in the CDM jar.
For more details, please follow the CDM Java Distribution Guidelines.