DStream::pricingEngine

首发版本:3.00.6.1

语法

DStream::pricingEngine(instrument, [engineConfig])

详情

在 ORCA 中创建一个实时定价引擎。该引擎接收上游传入的标准市场数据对象,自动将市场数据与注册的金融工具匹配,并输出定价结果。

它适用于债券、国债期货、存款、利率互换、外汇远期、外汇掉期、外汇期权等金融工具的实时估值场景。

参数

instrument INSTRUMENT 类型标量或向量,表示待定价的金融工具。定价过程中,市场数据匹配规则遵循 instrumentPricer 的规范。

engineConfig 可选参数,一个字典,用于设置引擎运行配置。字典包含如下键值对:

返回值

返回一个 DStream 对象。

例子

本例演示了在 Orca 中如何实现“行情变动即定价更新”的实时估值流程。

系统实时接收包括 3M 存款及 1y/3y/5y 利率互换在内的多笔市场报价,并将其注入行情流表 quote_in。随后,mktDataEngine 引擎会根据这些实时报价动态构建 CNY_FR_007 人民币收益率曲线。定价引擎以此曲线作为贴现基准,对一笔名义本金为 100 万人民币的 3 个月期存款合约进行实时估值。最终的估值结果(NPV)将持续写入 price_out 流表。

if (!existsCatalog("orca")) {
    createCatalog("orca")
}
go
use catalog orca

// 配置市场数据(收益率曲线)与待定价合约(存款)
curveConfig = {
    "name": "CNY_FR_007",                    
    "type": "IrSingleCurrencyCurve",
    "insts": [
        ("FR_007", "Deposit", duration("3M")),          
        ("CNY_FR_007", "IrVanillaSwap", duration("1y")), 
        ("CNY_FR_007", "IrVanillaSwap", duration("3y")),
        ("CNY_FR_007", "IrVanillaSwap", duration("5y"))
    ],
    "currency": "CNY",
    "dayCountConvention": "Actual365"
}
deposit = {
    "productType": "Cash",          
    "assetType": "Deposit",
    "instrumentId": "dep_3m",
    "start": 2025.01.01,
    "maturity": 2025.04.01,
    "rate": 0.02,
    "dayCountConvention": "Actual360",   
    "notionalCurrency": "CNY",           
    "notionalAmount": 1000000,
    "payReceive": "Receive",
    "discountCurve": "CNY_FR_007"
}
deposit = parseInstrument(deposit)

// 定义流图:行情输入 -> 曲线构建 -> 实时定价 -> 结果输出
g = createStreamGraph("simple_pricing_demo")
g.source(`quote_in, `type`name`term`price, [STRING, STRING, STRING, DOUBLE])
 .mktDataEngine(2025.01.01, curveConfig)
 .pricingEngine(deposit)
 .sink("price_out")
g.submit()

// 注入利率报价触发定价计算
appendOrcaStreamTable("quote_in", table(
    ["Deposit","IrVanillaSwap","IrVanillaSwap","IrVanillaSwap"] as type,
    ["FR_007","CNY_FR_007","CNY_FR_007","CNY_FR_007"] as name,
    ["3M","1y","3y","5y"] as term,
    [0.019, 0.021, 0.024, 0.027] as price))

// 查看实时定价结果
select * from useOrcaStreamTable("price_out", t -> select * from t)
name date price
dep_3m 2025.01.01 980,522.20

相关函数:DStream::mktDataEnginecreatePricingEngine