Skip to main content

Static Data Server

Overview

Static Data Server (SDS) is the central reference data service for the KeySquare platform. It maintains the canonical store for all static and semi-static data that downstream services — pricing, risk, execution, and reporting — depend on.

Every piece of data managed by SDS can be added (MessageAdd) or edited (MessageEdit) via the platform API.
Simple user-interface is also available in key-ui to manage all SDS data.

SDS owns the authoritative versions of:

  • Instruments — Fixed Income Bonds and Interest Rate Swaps (canonical Instrument)
  • Instrument Profiles — Display and formatting conventions (value type, precision, close time) per group of instruments
  • Instrument Aliases — Custom name-to-instrument-id mappings
  • Business Dates — Per-currency current and next business dates, with automatic daily roll (canonical BusinessDate)
  • Holiday Calendars — Named calendars with weekend rules and explicit holiday date lists (canonical HolidayCalendar)
  • Reference Indices — Floating rate index definitions (e.g. SOFR, EURIBOR) (canonical Index)
  • Index Fixings — Historical rate fixings for each reference index (canonical IndexFixing)

All data is persisted in a supported database (QuestDB or Oracle) and re-published on restart, ensuring consumers always receive a full snapshot.

Installation

Static Data Server can be run via binaries or docker.

The package for this component is static-data-server-{version}.tar.gz.
Please reach out to us if you'd like to try static-data-server

Please follow the instructions in deployment guide on how to install components.

Remember to register the new application. The simplest way to do this is by importing the app-permissions.json included in the components's package.

Entitlements

The following entitlements must be configured in KeyAccess for the static-data-server application.

If you imported the permissions using the supplied app-permissions.json then most of these should already be setup for you. However, be aware that any custom data-providers will need to be setup. See feeding data section for more information.

Simplified

PUB/SUBSchemaSourceGroup
SUB**static-data-server
SUBKsCanonical.Instrument**
PUB*static-data-server*

Full Detail

PUB/SUBSchemaSourceGroup
SUBKsPlatform.MessageAdd*static-data-server
SUBKsStaticDataServer.* (RPC requests)*static-data-server
SUBKsCanonical.Instrument{data-provider}*
PUBKsPlatform.MessageStoreEnvelopestatic-data-server*
PUBKsPlatform.MessageAddAckstatic-data-server*
PUBKsStaticDataServer.* (RPC responses)static-data-server*
PUBKsStaticDataServer.* (RPC requests)*{data-provider}
PUBKsStaticDataServer.InstrumentIdReverseMappingstatic-data-server*
PUBKsStaticDataServer.InstrumentWishstatic-data-server*
PUBKsCanonical.InstrumentProfilestatic-data-server*
PUBKsCanonical.Instrumentstatic-data-server*
PUBKsCanonical.BusinessDatestatic-data-server*
PUBKsCanonical.HolidayCalendarstatic-data-server*

Startup Dependencies

SDS depends on keysquare-platform and configured database being healthy before it starts.

In a typical platform boot sequence:

  1. aeron-media-driver
  2. key-access
  3. sequencer
  4. relay-cache, relay-live
  5. static-data-server ← starts here

SDS signals readiness via a ReadinessState.READY monitoring event.

note

Applications should monitor static data server's ApplicationStatus when making requests. LivenessState.ONLINE and ReadinessState.READY indicate the service is healthy

Feeding Data

SDS acts as an aggregator and enrichment layer between external data providers and platform consumers.
Recommended way to feed data to SDS is to use the provided java data-provider-api.

For all workflows (except realtime instrument refresh), no additional configuration is required in sds.
Note: you will need to permission your data-provider application appropriately.

See instruments for details of all instrument workflows.
See data provider for details on how to setup a custom data provider.

User Interface

SDS data is viewable and editable in Key UI under the module named static-data-server. From this module you can:

  • Browse and edit instruments, business dates, calendars, profiles, indices, and fixings
  • Search for instruments locally or via external data providers
  • Manage instrument aliases
  • Manually roll business dates

To enable the static-data-server user interface:

  1. Update configuration for application web-data-server
    • Update configuration: KS_WEB_DATA_SERVER_UI_MODULES by appending static-data-server (comma separated)
      e.g. KS_WEB_DATA_SERVER_UI_MODULES=static-data-server,price-engine,curve-engine,analytics-engine
    • Restart web-data-server
  2. Login to key-ui using an account that has admin roles
    • Navigate to Admin → Modules
    • Click on Static Data Server from module list
    • Enable the module and hit Save
    • Note: make sure the appName in module configuration matches the app name you used when installing the application

static data server module

If enabled, successfully you'll see the following new menu items in the side-bar:

static data server side-bar

Topic Structure

Data TypetopicSourcetopicGrouptopicId
Instrumentstatic-data-server{type}{currency} e.g. BUSDinstrumentId
Business Datestatic-data-serverstatic-data-server{currency} e.g. USD
Holiday Calendarstatic-data-serverstatic-data-server{calendarName}
Instrument Profilestatic-data-serverstatic-data-server{profileName}
Reference Indexstatic-data-serverstatic-data-server{indexName}
Index Fixingstatic-data-server{date}{indexName}
Instrument Aliasstatic-data-serverstatic-data-server{alias}

Instrument topicGroup is prefixed by instrument type:

Instrument TypePrefixExample topicGroup
BondBBUSD, BGBP, BEUR
IR SwapSSUSD, SGBP
IR Future / Bond FutureFFUSD

Detailed Topics