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
