-- ============================================================ -- 变量池初始数据(对应当前 glms_risk_variable 数据库内容) -- ============================================================ -- 4.4.1 簿记要素类(Category=1) -- 4.4.2 行情类(Category=2,统一取上一交易日收盘价) -- 4.4.3 系统计算值类(Category=3) -- 新增变量(ID 45~53): -- 45=期初净价偏离度 46=期初收益率偏离度 47=期初价格偏离度 -- 48=利息端利率与FR007偏离度 49=利息端利率与借贷加权费率偏离度 -- 50=执行价偏离度 51=执行价 52=客户品种最低保证金率 53=参考价格 -- 4.4.4 布尔判断类(Category=4) -- 说明:结构化 RuleExpr 的固定数值不追加 m;本文件 VariableExpr 为人工维护的 C# 表达式,原有 m 后缀保持不变。 -- 插入当前数据库中的 6 条变量,保留原始 ID 以匹配规则 ConditionJson 中的 VariableId INSERT INTO `yltrs_ylcms`.`glms_risk_variable` (`id`, `VariableName`, `Category`, `DataType`, `Unit`, `ValueDomain`, `Description`, `VariableExpr`, `Status`, `Version`, `SortOrder`, `OptId`, `OptName`, `OptDate`, `UpdateOptId`, `UpdateOptName`, `UpdateDate`) VALUES (1, '合约名义本金', 1, 1, '元', '≥ 0', '', 'DbContext.trade.First(t => t.id == TradeId).StockEqvNotional', 1, 18, 0, 0, 'SYSTEM', '2026-06-23 20:13:16', 1, '初始用户', '2026-07-17 10:02:27'), (32, '对手方累计标的数量', 3, 1, '个', '≥ 0', '当前交易对手方所有存续交易涉及的标的数量(去重)合计(含本笔)', 'DbContext.swap_position.Where(p => !string.IsNullOrEmpty(p.UnderlyingCode) && !p.IsInitial && p.PosiQuantity > 0 && !p.Invalid && p.PosiDirection > 0 && DbContext.trade.Any(t => t.id == p.SwapTradeId && t.ValidState != "InValid" && t.ClientId == DbContext.trade.First(x => x.id == TradeId).ClientId)).Select(p => p.UnderlyingCode).Distinct().Count()', 1, 3, 0, 0, 'SYSTEM', '2026-06-23 20:13:16', 1, '初始用户', '2026-07-17 11:20:06'), (45, 'TRS债券净价偏离绝对值', 3, 1, '%', '≥ 0', 'abs(期初标的交割净价% - 上一收盘日中债估值净价)', 'Math.Abs(DbContext.swap_position.First(p => p.SwapTradeId == TradeId && p.IsInitial && !p.Invalid && p.PosiDirection == 2 && !string.IsNullOrEmpty(p.UnderlyingCode)).PosiNetNoFeePrice.Value * 100 - DbContext.china_bond_valuation.Where(v => v.bond_id == DbContext.swap_position.First(p => p.SwapTradeId == TradeId && p.IsInitial && !p.Invalid && p.PosiDirection == 2 && !string.IsNullOrEmpty(p.UnderlyingCode)).UnderlyingCode && v.valuation_date < DbContext.trade.First(t => t.id == TradeId).TradeDate.Value.Date).OrderByDescending(v => v.valuation_date).First().net_price.Value)', 1, 6, 0, 0, 'SYSTEM', '2026-06-24 15:51:47', 1, '初始用户', '2026-07-17 13:28:12'), (46, 'TRS债券收益率偏离绝对值', 3, 1, '%', '≥ 0', 'abs(期初标的成交收益率% - 上一收盘日中债估值收益率)', 'Math.Abs(DbContext.swap_position.First(p => p.SwapTradeId == TradeId && p.IsInitial && !p.Invalid && p.PosiDirection == 2 && !string.IsNullOrEmpty(p.UnderlyingCode)).InitYtm.Value * 100 - DbContext.china_bond_valuation.Where(v => v.bond_id == DbContext.swap_position.First(p => p.SwapTradeId == TradeId && p.IsInitial && !p.Invalid && p.PosiDirection == 2 && !string.IsNullOrEmpty(p.UnderlyingCode)).UnderlyingCode && v.valuation_date < DbContext.trade.First(t => t.id == TradeId).TradeDate.Value.Date).OrderBy(v => v.credibility).ThenByDescending(v => v.valuation_date).First().yield.Value)', 1, 3, 0, 0, 'SYSTEM', '2026-06-24 15:51:47', 1, '初始用户', '2026-07-17 13:28:30'), (47, 'TRS非债券价格偏离绝对值', 3, 1, '元', '≥ 0', 'abs(期初标的交割全价% - 上一日标的收盘价)', 'Math.Abs(DbContext.swap_position.First(p => p.SwapTradeId == TradeId && p.IsInitial && !p.Invalid && p.PosiDirection == 2 && !string.IsNullOrEmpty(p.UnderlyingCode)).PosiGrossPrice * 100 - Convert.ToDecimal(DbContext.eod_commodity_future_price.Where(e => e.UnderlyingCode == DbContext.swap_position.First(p => p.SwapTradeId == TradeId && p.IsInitial && !p.Invalid && p.PosiDirection == 2 && !string.IsNullOrEmpty(p.UnderlyingCode)).UnderlyingCode && e.ValueDate < DbContext.trade.First(t => t.id == TradeId).TradeDate.Value.Date).OrderByDescending(e => e.ValueDate).First().ClosePrice))', 1, 4, 0, 0, 'SYSTEM', '2026-06-24 15:51:47', 1, '初始用户', '2026-07-17 13:29:43'), (48, '利息端利率与FR007偏离度', 3, 1, '%', '≥ 0', 'ABS(利息端利率-FR007)/FR007*100', 'Math.Abs(DbContext.swap_position.First(p => p.SwapTradeId == TradeId && p.InterestDirection == 1).InterestRateDefault)*100m', 1, 2, 0, 0, 'SYSTEM', '2026-06-24 15:51:47', 1, '初始用户', '2026-07-16 19:23:05');