Adding a New Asset Class
Strata includes support for a range of common asset classes, but support for new asset classes can easily be added. Three steps are required to add a new asset class:
- Define classes for the asset class
- Writing the pricing logic
- Providing a function to integrate the new asset class into the Calculation API
Defining an Asset Class
Once the product model design is understood, the process of creating the asset class is relatively simple
For an OTC product “Foo”, the following classes will be needed:
- FooTrade - implements ProductTrade
- Foo - implements Product
- ResolvedFooTrade - implements ResolvedTrade
- ResolvedFoo - implements ResolvedProduct
ResolvedFra for an example to copy.
For a listed security “Moo”, the following classes will be needed:
- MooTrade - implements SecuritizedProductTrade
- MooSecurity - implements Security
- Moo - implements SecuritizedProduct
- ResolvedMooTrade - implements ResolvedTrade
- ResolvedMoo - implements ResolvedProduct
ResolvedBondFuture for an example to copy.
Note that the primary difference between
BondFuture is that
BondFutureSecurity refers to the underlying securities by identifier, whereas
directly to the
The built-in asset classes in Strata are all immutable Joda Beans. See the core technologies documentation for details. New asset classes should follow the same pattern as the built-in classes to ensure interoperability with the rest of the system.
Writing the pricing logic
The pricing logic should typically follow the design pattern of the
This will typically involve new market data structures.
Providing a new calculation function
See this guide.