fix(swap): 固定值利息腿平仓比例缩放缺陷(GLMS) + 证明测试
- SwapDealService.CalcNotionalByMode 固定值分支原实现把 closePrincipal 钉成 Fix 全量 且 newClosePercent 强制置 1,导致界面『全部平仓→部分平仓』改比例时利息腿数据 完全不变。修复为 closePrincipal = InterestPrincipalFix * closePercent(与预付金/ 多头/空头/标的期初全价等模式一致),posiPrincipal 仍保留 Fix 全量,newClosePercent 保留真实平仓比例,两个缩放入口作用于不同项不双重缩放。 - EOD 结算路径 SwapEodPositionService 传 closePrecent=1 字面量,Fix*1=Fix,日终行为不变。 - 新增 SwapFixedInterestLegClosePercentBugTest(9 例真实函数复现+证明)。 - 纠正 SwapUnwindPrepayPrincipalBugTdd 中把『免疫』当期望的断言为线性缩放。 - 引入溯源:95686f4c(吴方海, EQD-5718, 2026-05-08);newClosePercent=1 祖传自 acbd2e76(2024-06-04)。
This commit is contained in:
@@ -899,8 +899,18 @@ namespace YLErp.Modules.SwapModule
|
||||
switch ((InterestModeEnum)position.InterestMode)
|
||||
{
|
||||
case InterestModeEnum.固定值:
|
||||
closePrincipal = posiPrincipal = position.InterestPrincipalFix;
|
||||
newClosePercent = 1m;
|
||||
// 【缺陷修复】界面「全部平仓→部分平仓」改比例,下方利息腿数据完全不变。
|
||||
// 原实现:closePrincipal = posiPrincipal = Fix; newClosePercent = 1m;
|
||||
// 固定值腿的"计息本金"确实固定(Fix),但"本次平仓结算/返还多少利息"必须按平仓比例缩放。
|
||||
// 旧代码把 closePrincipal 与 newClosePercent 两个缩放入口同时抹平,
|
||||
// 导致 GetUnwindInterests 盘中预览无论传 30%/50%/70%/100%,返回利息完全相同。
|
||||
// 修复口径:与 初始/追加预付金 腿(下方 case)以及 标的期初全价(mode 9) 完全一致——
|
||||
// closePrincipal 承担"本期新增利息"的缩放,newClosePercent 承担"历史累计/已消耗利息"的缩放,
|
||||
// 二者作用在不同项上,不会双重缩放(mode 9 已由回归测试证明线性)。
|
||||
// 兼容性:EOD 结算路径 SwapEodPositionService:1350 传 closePrecent = 1 字面量,
|
||||
// 此处 Fix × 1 = Fix,日终行为与修复前完全一致。
|
||||
closePrincipal = position.InterestPrincipalFix * closePercent;
|
||||
posiPrincipal = position.InterestPrincipalFix;
|
||||
break;
|
||||
case InterestModeEnum.多头存续名义本金:
|
||||
closePrincipal = posiLong * closePercent;
|
||||
|
||||
Reference in New Issue
Block a user