fix(期权到期): 债券标的到期取价补查中债估值表,并标注债券净/全价映射不一致(Layer2)
- EodPriceQueryService 新增 TryGetSettlementEodPrice:债券走中债估值、期货/股票走原路径 - 单笔 tradeExpireInner + 批量 MultipleTradeExpireConfirm 改用统一方法,修 GLMS-20260715-0002 债券期权到期报'结算价未找到' - 移除批量路径未初始化的 EodPriceProvider(对债券无效且有误导性的 footgun) - Layer2:标注 EodPriceProvider.Initialize 与 GetBondPrice 债券 ClosePrice/SettlePrice 净全价定义相反,待统一(不改逻辑) - 新增白盒单测覆盖债券标的到期取价(3用例 DB驱动,均通过)
This commit is contained in:
@@ -140,7 +140,9 @@ namespace YLErp.Modules.TradeModule.DealModule
|
||||
|
||||
#region 设置期末价格和执行价格
|
||||
|
||||
var finalPrice = EodPriceQueryService.TryGetEodPrice(exerciseDate, td.UnderlyingCode, out var eodPrice)
|
||||
// 债券标的需走中债估值表取价,原 TryGetEodPrice 只查期货/股票两表会漏掉债券,导致"结算价未找到"。
|
||||
// 统一改用债券感知的 TryGetSettlementEodPrice(见 EodPriceQueryService)。
|
||||
var finalPrice = EodPriceQueryService.TryGetSettlementEodPrice(exerciseDate, td.UnderlyingCode, out var eodPrice)
|
||||
? eodPrice.GetPrice(td.SettlementType) : 0;
|
||||
|
||||
if (finalPrice <= 0)
|
||||
@@ -280,8 +282,6 @@ namespace YLErp.Modules.TradeModule.DealModule
|
||||
trade_cash tradeCash = null;
|
||||
|
||||
//日终价格
|
||||
var underlyingIds = tradeUnwindTrades.Select(t => t.UnderlyingId).ToList();
|
||||
var EodPriceProvider = new EodPriceProvider(valueDate);
|
||||
//批量结算的全是现金流交易就不用结算价
|
||||
if (!EodPriceQueryService.CheckDbExists(valueDate) && tradeQuery.Any(t => t.TradeType != "现金流交易"))
|
||||
{
|
||||
@@ -308,8 +308,8 @@ namespace YLErp.Modules.TradeModule.DealModule
|
||||
var CountRatio = 1;
|
||||
if (t.TradeType != "现金流交易")
|
||||
{
|
||||
//结算价
|
||||
if (EodPriceProvider.TryGetEodPrice(t.UnderlyingCode, out var eodPrice))
|
||||
//结算价(债券感知统一取价:债券走中债估值,期货/股票走原路径,见 EodPriceQueryService.TryGetSettlementEodPrice)
|
||||
if (EodPriceQueryService.TryGetSettlementEodPrice(valueDate, t.UnderlyingCode, out var eodPrice))
|
||||
{
|
||||
settlePrice = eodPrice.GetPrice(t.SettlementType);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user