refactor(swap): 合并多空名义本金参数为单一 posiTotalNotional 并加固测试
- DealInterests 的 posiLongNotionalValue + posiShortNotionalValue 合并为 posiTotalNotional(调用点以 posiLongNotional+posiShortNotional 求和传入),净减一个参数 - SwapDealService / SwapEodPositionService / InterestCalcRequest 同步收敛多空死管道参数 - 19 个测试调用点适配新签名 - SwapEodPositionServiceIntegrationTest 参数计数断言由裸数字改为参数名集合断言(CollectionAssert.AreEquivalent,对增删/重排/改名敏感)
This commit is contained in:
@@ -63,7 +63,7 @@ namespace YLErp.Modules.SwapModule
|
||||
trade td, trade_extend tradeExtend,
|
||||
DateTime valueDate, DateTime unwindDate,
|
||||
List<eod_swap_position> eodPositions, List<swap_position> positions,
|
||||
decimal posiNotionalValue, decimal posiLongNotionalValue, decimal posiShortNotionalValue,
|
||||
decimal posiNotionalValue,
|
||||
decimal closePosiNotionalValue, decimal closePrecent,
|
||||
int eventType, bool tdClose,
|
||||
decimal orginPv,
|
||||
@@ -77,7 +77,7 @@ namespace YLErp.Modules.SwapModule
|
||||
}
|
||||
|
||||
return (DealService ?? new SwapDealService(this)).GetInterests(td, tradeExtend, valueDate, unwindDate,
|
||||
eodPositions, positions, posiNotionalValue, posiLongNotionalValue, posiShortNotionalValue,
|
||||
eodPositions, positions, posiNotionalValue,
|
||||
closePosiNotionalValue, closePrecent, eventType, tdClose,
|
||||
orginPv, add, settment, newCalcLast, closeList);
|
||||
}
|
||||
@@ -99,7 +99,7 @@ namespace YLErp.Modules.SwapModule
|
||||
decimal orginPv = DealInterestsScenarioTest.Principal)
|
||||
{
|
||||
SaveAutoEodInterestPosition(eodPayPosition, null, position, td, valueDate, interval,
|
||||
lastEodSwap, posiLongNotional, 0m, 1m, orginPv);
|
||||
lastEodSwap, posiLongNotional + 0m, 1m, orginPv);
|
||||
return PersistedPositions.LastOrDefault();
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ namespace YLErp.Modules.SwapModule
|
||||
decimal closeNotional, bool autoSwap)
|
||||
{
|
||||
SaveAutoEodWithCloseInterestPosition(eodPayPosition, null, position, td, valueDate, interval,
|
||||
posiLongNotional, posiShortNotional, flowEvents, closeNotional, autoSwap, 1m,
|
||||
posiLongNotional + posiShortNotional, flowEvents, closeNotional, autoSwap, 1m,
|
||||
DealInterestsScenarioTest.Principal);
|
||||
return PersistedPositions.LastOrDefault();
|
||||
}
|
||||
@@ -121,7 +121,7 @@ namespace YLErp.Modules.SwapModule
|
||||
decimal grossPrice, decimal orginPv)
|
||||
{
|
||||
SaveEodInterestPositionCopy(eodPayPosition, null, valueDate, td, position, null,
|
||||
false, posiLongNotional, posiShortNotional, grossPrice, orginPv);
|
||||
false, posiLongNotional + posiShortNotional, grossPrice, orginPv);
|
||||
return PersistedPositions.LastOrDefault();
|
||||
}
|
||||
|
||||
@@ -134,7 +134,7 @@ namespace YLErp.Modules.SwapModule
|
||||
{
|
||||
DealInterests(interestList, eodPositions, new List<eod_swap_position>(),
|
||||
settleDate, td, flowEvents, new List<swap_flow_event>(), null,
|
||||
posiLongNational, posiShortNational, closeNational, grossPrice, orginPv);
|
||||
posiLongNational + posiShortNational, closeNational, grossPrice, orginPv);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1229,7 +1229,7 @@ namespace YLErp.Modules.SwapModule
|
||||
var result = new SwapDealService(service).GetInterests(
|
||||
td, td.trade_extend, closeDate, closeDate,
|
||||
new List<eod_swap_position> { previousEod }, new List<swap_position> { position },
|
||||
remainingNotional, remainingNotional, 0m, remainingNotional, 1m,
|
||||
remainingNotional, remainingNotional, 1m,
|
||||
(int)SwapEventTypeEnum.平仓, false, orginPv,
|
||||
false, settment: false, newCalcLast: false, closeList: null).Single();
|
||||
|
||||
@@ -1268,7 +1268,7 @@ namespace YLErp.Modules.SwapModule
|
||||
var firstCloseInterest = dealService.GetInterests(
|
||||
td, td.trade_extend, firstCloseDate, firstCloseDate,
|
||||
new List<eod_swap_position>(), new List<swap_position> { position },
|
||||
originalNotional, originalNotional, 0m, remainingNotional, 0.5m,
|
||||
originalNotional, remainingNotional, 0.5m,
|
||||
(int)SwapEventTypeEnum.平仓, false, originalNotional,
|
||||
settment: false).Single();
|
||||
var firstCloseCash = Math.Round(firstCloseInterest.InterestAmount, ConsGlobal.MoneyRound,
|
||||
@@ -1286,13 +1286,13 @@ namespace YLErp.Modules.SwapModule
|
||||
var replayAtPreviousEod = dealService.GetInterests(
|
||||
td, td.trade_extend, firstCloseDate, firstCloseDate,
|
||||
new List<eod_swap_position>(), new List<swap_position> { position },
|
||||
remainingNotional, remainingNotional, 0m, remainingNotional, 1m,
|
||||
remainingNotional, remainingNotional, 1m,
|
||||
(int)SwapEventTypeEnum.平仓, false, originalNotional,
|
||||
settment: false).Single();
|
||||
var replayAtFinalClose = dealService.GetInterests(
|
||||
td, td.trade_extend, finalCloseDate, finalCloseDate,
|
||||
new List<eod_swap_position>(), new List<swap_position> { position },
|
||||
remainingNotional, remainingNotional, 0m, remainingNotional, 1m,
|
||||
remainingNotional, remainingNotional, 1m,
|
||||
(int)SwapEventTypeEnum.平仓, false, originalNotional,
|
||||
settment: false).Single();
|
||||
var expectedFinalInterest = firstCloseEod.InterestIncomeSum
|
||||
@@ -1306,7 +1306,7 @@ namespace YLErp.Modules.SwapModule
|
||||
var finalCloseInterest = dealService.GetInterests(
|
||||
td, td.trade_extend, finalCloseDate, finalCloseDate,
|
||||
new List<eod_swap_position> { firstCloseEod }, new List<swap_position> { position },
|
||||
remainingNotional, remainingNotional, 0m, remainingNotional, 1m,
|
||||
remainingNotional, remainingNotional, 1m,
|
||||
(int)SwapEventTypeEnum.平仓, false, originalNotional,
|
||||
settment: false).Single();
|
||||
var finalCloseCash = Math.Round(finalCloseInterest.InterestAmount, ConsGlobal.MoneyRound,
|
||||
@@ -1434,7 +1434,7 @@ namespace YLErp.Modules.SwapModule
|
||||
var partial = service.GetInterests(
|
||||
td, td.trade_extend, partialCloseDate, partialCloseDate,
|
||||
new List<eod_swap_position> { previousEod }, new List<swap_position> { position },
|
||||
notional, notional, 0m, partialNotional, partialPercent,
|
||||
notional, partialNotional, partialPercent,
|
||||
(int)SwapEventTypeEnum.平仓, false, notional,
|
||||
settment: false).Single();
|
||||
AssertDecimal(84090.95m, Math.Round(partial.InterestAmount, ConsGlobal.MoneyRound,
|
||||
@@ -1444,7 +1444,7 @@ namespace YLErp.Modules.SwapModule
|
||||
var final = service.GetInterests(
|
||||
td, td.trade_extend, maturityDate, maturityDate,
|
||||
new List<eod_swap_position>(), new List<swap_position> { position },
|
||||
remainingNotional, remainingNotional, 0m, remainingNotional, 1m,
|
||||
remainingNotional, remainingNotional, 1m,
|
||||
(int)SwapEventTypeEnum.平仓, false, remainingNotional,
|
||||
settment: false, newCalcLast: true).Single();
|
||||
AssertDecimal(268428.73m, Math.Round(final.InterestAmount, ConsGlobal.MoneyRound,
|
||||
@@ -1575,7 +1575,7 @@ namespace YLErp.Modules.SwapModule
|
||||
var intermediateInterest = dealService.GetInterests(
|
||||
td, td.trade_extend, intermediateDate, intermediateDate,
|
||||
new List<eod_swap_position> { partialEod }, new List<swap_position> { position },
|
||||
remainingNotional, remainingNotional, 0m, remainingNotional, 1m,
|
||||
remainingNotional, remainingNotional, 1m,
|
||||
(int)SwapEventTypeEnum.平仓, false, originalNotional,
|
||||
settment: false, newCalcLast: true).Single();
|
||||
Assert.IsTrue(Math.Abs(259348.386714765m - intermediateInterest.InterestAmount) <= 0.01m,
|
||||
@@ -1706,7 +1706,7 @@ namespace YLErp.Modules.SwapModule
|
||||
var intermediateInterest = dealService.GetInterests(
|
||||
td, td.trade_extend, intermediateDate, intermediateDate,
|
||||
new List<eod_swap_position> { partialEod }, new List<swap_position> { position },
|
||||
remainingNotional, remainingNotional, 0m, remainingNotional, 1m,
|
||||
remainingNotional, remainingNotional, 1m,
|
||||
(int)SwapEventTypeEnum.平仓, false, originalNotional,
|
||||
settment: false, newCalcLast: true).Single();
|
||||
Assert.IsTrue(Math.Abs(259348.386714765m - intermediateInterest.InterestAmount) <= 0.01m,
|
||||
@@ -1739,7 +1739,7 @@ namespace YLErp.Modules.SwapModule
|
||||
var finalInterest = dealService.GetInterests(
|
||||
td, td.trade_extend, finalCloseDate, finalCloseDate,
|
||||
new List<eod_swap_position> { intermediateEod }, new List<swap_position> { position },
|
||||
remainingNotional, remainingNotional, 0m, remainingNotional, 1m,
|
||||
remainingNotional, remainingNotional, 1m,
|
||||
(int)SwapEventTypeEnum.平仓, false, originalNotional,
|
||||
settment: false, newCalcLast: false).Single();
|
||||
AssertDecimal(expectedFinalInterest, finalInterest.InterestAmount,
|
||||
@@ -1829,7 +1829,7 @@ namespace YLErp.Modules.SwapModule
|
||||
var result = dealService.GetInterests(
|
||||
td, td.trade_extend, finalCloseDate, finalCloseDate,
|
||||
new List<eod_swap_position> { previousEod }, new List<swap_position> { position },
|
||||
remainingNotional, remainingNotional, 0m, remainingNotional, 1m,
|
||||
remainingNotional, remainingNotional, 1m,
|
||||
(int)SwapEventTypeEnum.平仓, false, remainingNotional,
|
||||
settment: false).Single();
|
||||
|
||||
@@ -1927,7 +1927,7 @@ namespace YLErp.Modules.SwapModule
|
||||
var partialInterest = dealService.GetInterests(
|
||||
td, td.trade_extend, partialCloseDate, partialCloseDate,
|
||||
new List<eod_swap_position> { preCloseEod }, new List<swap_position> { position },
|
||||
originalNotional, originalNotional, 0m, partialNotional, partialClosePercent,
|
||||
originalNotional, partialNotional, partialClosePercent,
|
||||
(int)SwapEventTypeEnum.平仓, false, originalNotional,
|
||||
settment: false).Single();
|
||||
AssertExcelMoney(scenario.ExpectedPartialInterest, partialInterest.InterestAmount,
|
||||
@@ -1976,7 +1976,7 @@ namespace YLErp.Modules.SwapModule
|
||||
var finalInterest = dealService.GetInterests(
|
||||
td, td.trade_extend, finalCloseDate, finalCloseDate,
|
||||
new List<eod_swap_position> { finalPreEod }, new List<swap_position> { position },
|
||||
remainingNotional, remainingNotional, 0m, remainingNotional, 1m,
|
||||
remainingNotional, remainingNotional, 1m,
|
||||
(int)SwapEventTypeEnum.平仓, false, remainingNotional,
|
||||
settment: false).Single();
|
||||
AssertExcelMoney(scenario.ExpectedFinalInterest, finalInterest.InterestAmount,
|
||||
|
||||
Reference in New Issue
Block a user