test(swap): 补算尾/不算尾部分平仓的 InterestIncomeSum 递推断言
DI_MANUAL_PARTIAL_CLOSE_CalcLast/NoCalcLast 原仅断言 TdInterestIncome(当日新计利息 按全额/剩余本金计提),未钉死该差异是否传导到待实现利息总额 InterestIncomeSum。 补一条递推断言:InterestIncomeSum = 前日待实现 + 当日新计 - 当日实现, 锁定"算尾 → 被平仓部分多1天利息 → 进入待实现总额"完整链条,不算尾同理对照。 纯测试改动,生产代码无改动,双绿通过。
This commit is contained in:
@@ -829,7 +829,14 @@ namespace YLErp.Modules.SwapModule
|
||||
500m, 0m, new List<swap_flow_event> { closeFlow }, 500m, false);
|
||||
|
||||
AssertDecimal(Principal * FixedRate / AnnualDays, result.TdInterestIncome,
|
||||
"算尾部分平仓的当日新计利息应包含已平仓部分");
|
||||
"算尾部分平仓的当日新计利息应包含已平仓部分(按全额本金计提)");
|
||||
|
||||
// 补充:算尾部分平仓的待实现利息总额应满足递推
|
||||
// InterestIncomeSum = 前日待实现 + 当日新计(全额本金,含被平仓部分) - 当日实现
|
||||
// 钉死"算尾 → 被平仓部分多1天利息 → 进入待实现总额"的完整链条
|
||||
decimal expectedIncomeSum = previousEod.InterestIncomeSum + result.TdInterestIncome - result.TdCloseInterest;
|
||||
AssertDecimal(expectedIncomeSum, result.InterestIncomeSum,
|
||||
"算尾部分平仓:InterestIncomeSum 应=前日待实现+当日新计(含被平仓部分)-当日实现");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -848,7 +855,14 @@ namespace YLErp.Modules.SwapModule
|
||||
500m, 0m, new List<swap_flow_event> { closeFlow }, 500m, false);
|
||||
|
||||
AssertDecimal(500m * FixedRate / AnnualDays, result.TdInterestIncome,
|
||||
"不算尾部分平仓的当日新计利息只应包含剩余持仓部分");
|
||||
"不算尾部分平仓的当日新计利息只应包含剩余持仓部分(按剩余本金计提)");
|
||||
|
||||
// 补充对照:不算尾时待实现利息总额同样满足递推,但当日新计只含剩余持仓
|
||||
// 与 CalcLast 测试对照:不算尾的 TdInterestIncome 更小(差额=被平仓部分1天利息),
|
||||
// 因此 InterestIncomeSum 也相应更小——证明算尾/不算尾的差异确实传导到待实现总额
|
||||
decimal expectedIncomeSum = previousEod.InterestIncomeSum + result.TdInterestIncome - result.TdCloseInterest;
|
||||
AssertDecimal(expectedIncomeSum, result.InterestIncomeSum,
|
||||
"不算尾部分平仓:InterestIncomeSum 应=前日待实现+当日新计(仅剩余持仓)-当日实现");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
|
||||
Reference in New Issue
Block a user