Atoti Market Data overview

Atoti Market Data offers an API for retrieving and processing market data across various sources. The library provides interfaces for integrating market data into applications, supporting interpolation techniques, and allowing flexible configurations.

Market data retrieval

Atoti Market Data provides retrieval methods for various types of market data:

Type Description
Single market data retrieval Retrieve a single market data value based on specified coordinates, like date, market data set, or instrument.
Curve data retrieval Retrieve market data organized along a single axis, such as a yield curve or interest rate curve.
Surface data retrieval Retrieve market data organized along two axes, such as volatility surfaces (dependent on both tenor and moneyness).
Cube data retrieval Retrieve multi-dimensional data from a cube (for example, swaptions data), with dimensions like tenor, moneyness, and underlying maturities.
FX rate data retrieval Retrieve foreign exchange rates from the FX rate market data store.

Interpolation techniques

The library supports multiple interpolation techniques for estimating missing or intermediate data points within market data:

Interpolation type Description
Curve Useful for estimating unknown values between two or more known values along a curve. For example in yield, volatility, term structure, or interest rate curves.
Surface Supports interpolation across two axes, such as tenor and moneyness, to estimate data points on a volatility surface.

Using Atoti Market Data

You can integrate Atoti Market Data into your project the following ways:

These approaches are a trade-off between flexibility and ease of use.

market-data-lib

The market-data-lib module is a library of components, including market data store definitions, post-processors for retrieval, interpolators, and more. Add this dependency to your project to pick and choose only the specific components you need. These can be used as a base for custom implementations of the interfaces, or as-is.

For details on the available interfaces and implementations, see Configuration and implementation details.

You will need to manage the lifecycle of the components directly. Simply adding the dependency to your project will not do anything.

Implementation

To use this dependency add the following to your pom.xml file:

<dependency>
    <groupId>com.activeviam.apps.market-data</groupId>
    <artifactId>market-data-lib</artifactId>
    <version>${atoti-market-data.version}</version>
</dependency>

Pros & cons

This approach provides the most flexibility to utilize only those components you require. However, it requires the most work to instantiate and manage these components.

market-data-config

The market-data-config contains Spring configuration classes that instantiate beans to address specific use-cases. You can import these configuration classes in your Spring project to make the beans accessible in your application.

Implementation

To use this dependency add the following to your pom.xml file:

<dependency>
    <groupId>com.activeviam.apps.market-data</groupId>
    <artifactId>market-data-config</artifactId>
    <version>${atoti-market-data.version}</version>
</dependency>

You can then import configuration classes. For example if you wanted to use the FX retrieval stack you would create a configuration class as follows:

@Configuration
@Import(value = {
        FxRateMarketDataRetrievalConfig.class
})
public class MyMarketDataConfigurationClass() {

For details on the available configuration files and their behavior, see the relevant section.

You can configure the instantiated beans with Configuration Properties.

Pros & cons

This approach requires a lot less code than using the library directly, although not as easy as using the Spring Boot Starter. It is more opinionated than using the library but more flexible than the Spring Boot Starter which automatically imports all configuration classes.

market-data-spring-boot-starter

The market-data-spring-boot-starter module allows you to add a single dependency project and have all beans auto-configured for you. Beans will be configured for:

  • Stores (and specific retrievers)
  • Services (retrievers and interpolators)
  • Registry injection (injecting the appropriate objects into post-processors)

You can configure the instantiated beans with Configuration Properties.

Implementation

To use this dependency add the following to your pom.xml file:

<dependency>
    <groupId>com.activeviam.apps.market-data</groupId>
    <artifactId>market-data-spring-boot-starter</artifactId>
    <version>${atoti-market-data.version}</version>
</dependency>

Pros & cons

This approach provides a highly opinionated implementation for Atoti Market Data with the easiest set up.

Configuration and implementation details

For detailed information about the implementation and configuration, please refer to:

Topic Section
Retrieval Data retrieval
Interpolation Interpolation APIs
Post-processors Post-processors
Configuration Properties Configuration Properties
Stores CubeMarketData
CurveMarketData
FXRateMarketData
SpotMarketData
SurfaceMarketData

Source configuration

Atoti Market Data does not provide source configuration for loading data into the market data stores. You can implement it as appropriate for your project.