refactor(accrual): 参数命名对齐业界标准(QuantLib/Strata)

FundingLegAccrual 4个方法的参数命名全面纠正:

| 旧名              | 新名               | 理由 |
|-------------------|-------------------|------|
| originalPv        | referenceNotional | Pv(现值)概念错误,实际是参考本金 |
| closeRatio/closePercent | unwindFraction | 统一,对齐 ApplyUnwind.unwindPercent |
| consumedInterest  | realizedInterest  | 对齐 AccrualState.RealizedInterest |
| priorUnrealized   | priorAccrued      | 对齐 InterestResult.Accrued |
| priorAccrualPrincipal | priorNotional  | 简洁,对齐 QuantLib notional |
| positionPrincipal | notional          | 简化,去掉冗余前缀 |
| dynomicPrincipal  | accrualBasis      | 修正typo+用业界术语 |

同步更新:
- SwapDealService.CalcDailySimpleInterestByEod 调用点
- 3个影子测试文件命名参数
- SwapInterest.Round 改为 public(所有Round收口一处)

删除半成品残留: SwapInterest_CompoundInArrears_RolloverTimingTests.cs

验证: 编译0错误, 7个影子测试全过, 全量520测试7失败(基线一致)。
This commit is contained in:
hjhan
2026-08-12 10:11:26 +08:00
parent 3f194f7ccc
commit ce6c0812e1
4 changed files with 93 additions and 85 deletions
@@ -87,7 +87,7 @@ namespace UnitTestProject.Modules.SwapModule.Accrual
(StartDate.AddDays(14), allInRate),
};
var result = FundingLegAccrual.AccrueCompoundPeriod(
principal: Notional,
notional: Notional,
segmentRates: segRates,
startDate: StartDate,
endDate: EndDate,
@@ -129,7 +129,7 @@ namespace UnitTestProject.Modules.SwapModule.Accrual
(StartDate.AddDays(14), allInRate),
};
var result = FundingLegAccrual.AccrueCompoundPeriod(
principal: Notional * closePct,
notional: Notional * closePct,
segmentRates: segRates,
startDate: StartDate,
endDate: EndDate,
@@ -137,8 +137,8 @@ namespace UnitTestProject.Modules.SwapModule.Accrual
annualDays: AnnualDays,
isAnnualized: true,
resetCarryInterest: carry,
consumedInterest: consumed,
closePercent: closePct);
realizedInterest: consumed,
unwindFraction: closePct);
Console.WriteLine($"旧: I={oldI} Td={oldTd}");
Console.WriteLine($"新: Accrued={result.Accrued} AccruedToday={result.AccruedToday}");
@@ -171,7 +171,7 @@ namespace UnitTestProject.Modules.SwapModule.Accrual
(StartDate.AddDays(14), allInRate),
};
var result = FundingLegAccrual.AccrueCompoundPeriod(
principal: Notional,
notional: Notional,
segmentRates: segRates,
startDate: StartDate,
endDate: EndDate,
@@ -86,9 +86,9 @@ namespace UnitTestProject.Modules.SwapModule.Accrual
var segRates = new List<(DateTime, decimal)> { (StartDate, Spread) };
var accrualPrincipal = 0m + Notional - Notional; // 差分 = 0
var result = FundingLegAccrual.AccrueSimplePeriod(
priorUnrealized: 0m,
accrualPrincipal: 0m, // 差分=0(无归档时 preEod.TdInterestPrincipal=0)
closeRatio: 1m,
priorAccrued: 0m,
notional: 0m,
unwindFraction: 1m,
segmentRates: segRates,
startDate: StartDate,
endDate: EndDate,
@@ -131,9 +131,9 @@ namespace UnitTestProject.Modules.SwapModule.Accrual
var accrualPrincipal = Notional + Notional - Notional;
var segRates = new List<(DateTime, decimal)> { (StartDate, Spread) };
var result = FundingLegAccrual.AccrueSimplePeriod(
priorUnrealized: 200_000m * 0.5m, // InterestProfitSum × closePercent
accrualPrincipal: accrualPrincipal,
closeRatio: 0.5m,
priorAccrued: 200_000m * 0.5m,
notional: accrualPrincipal,
unwindFraction: 0.5m,
segmentRates: segRates,
startDate: StartDate,
endDate: EndDate,