appendMktData

Syntax

appendMktData(engine, data, [eventTime])

Details

Writes market data to either a market data engine or a pricing engine.

  • For a market data engine, the written data is used to update the cached historical data.
  • For a pricing engine, the written data is applied to update pricing calculations.

Parameters

engine is the handle of a market data engine/pricing engine.

data is an MKTDATA scalar/vector or a dictionary, indicating the market data to be written.

eventTime (optional) is a NANOTIMESTAMP scalar indicating the time at which the event occurs. This parameter is used only when engineConfig.outputTime is set to true.

Returns

A LONG scalar.

Examples

Example 1. Writing market data to a market data engine.

Create a market data engine.

try{dropStreamEngine("MKTDATA_ENGINE")}catch(ex){}
referenceDate = 2025.07.01
config1 = {"name": "USDCNY", "type": "FxSpotRate"}
config2 = {"name": "EURUSD", "type": "FxSpotRate"}
config3 = {"name": "EURCNY", "type": "FxSpotRate"}
engine = createMktDataEngine("MKTDATA_ENGINE", referenceDate, [config1, config2, config3])

Write a single MKTDATA record (scalar).

fxSpot1 = {
    "mktDataType": "Price",
    "referenceDate": referenceDate,
    "spotDate": 2025.07.03,
    "priceType": "FxSpotRate",
    "value": 7.12,
    "unit": "USDCNY"
}
mktData1 = parseMktData(fxSpot1)

appendMktData(engine, mktData1)

Write multiple MKTDATA records (vector).

fxSpot2 = {
    "mktDataType": "Price",
    "referenceDate": referenceDate,
    "priceType": "FxSpotRate",
    "value": 7.88,
    "unit": "EURCNY"
}
fxSpot3 = {
    "mktDataType": "Price",
    "referenceDate": referenceDate,
    "priceType": "FxSpotRate",
    "value": 1.10,
    "unit": "EURUSD"
}
mktData2 = parseMktData(fxSpot2)
mktData3 = parseMktData(fxSpot3)
appendMktData(engine, [mktData1, mktData2, mktData3])    

Inspect the generated market data.

re = getMktData(engine, "Price", referenceDate, "EURUSD")
print(re)

// output: {"mktDataType": "Price","priceType": "FxSpotRate","spotDate": "2025.07.03","referenceDate": "2025.07.01","value": 1.1,"unit": "EURUSD","version": 2,"underlying": "EURUSD"}

Example 2. Specifying eventTime when outputTime is enabled

When the engine is configured with outputTime=true, the eventTime parameter must be provided when inserting data using appendMktData.

// Clean up the environment (if the engine already exists)
try{dropStreamEngine("MKTDATA_ENGINE")}catch(ex){}

// Set the reference date and market data configurations
referenceDate = 2025.07.01
config1 = {"name": "USDCNY", "type": "FxSpotRate"}
config2 = {"name": "EURUSD", "type": "FxSpotRate"}
config3 = {"name": "EURCNY", "type": "FxSpotRate"}

// Create engine configuration with outputTime enabled
engineConfig = {
    "outputTime": true
}

// Create a market data engine
engine = createMktDataEngine(
    name="MKTDATA_ENGINE",
    referenceDate=referenceDate,
    mktDataConfig=[config1, config2, config3],
    engineConfig=engineConfig  
)

// Create MKTDATA object
fxSpot1 = {
    "mktDataType": "Price",
    "referenceDate": referenceDate,
    "spotDate": 2025.07.03,
    "priceType": "FxSpotRate",
    "value": 7.12,
    "unit": "USDCNY"
}
mktData1 = parseMktData(fxSpot1)

// Use appendMktData and explicitly specify the eventTime parameter
eventTime = now() 
appendMktData(engine, mktData1, eventTime)

re = getMktData(engine, "Price", referenceDate, "USDCNY")
print(re)

// output: {"mktDataType": "Price","priceType": "FxSpotRate","spotDate": "2025.01.03","referenceDate": "2025.01.01","value": 7.12,"unit": "USDCNY","version": 2,"underlying": "USDCNY"}

Related functions: createMktDataEngine, createPricingEngine, parseMktData, getMktData