refactor(accrual): 拆分FundingLegAccrual→SimpleInterestAccrual/CompoundInterestAccrual
单利与复利语义完全不同(单利本金恒定/复利重置日并本金), 拆成两个独立静态类,各自只含自己的方法: SimpleInterestAccrual: - AccrueEod (原AccrueSimpleEod) - AccruePeriod (原AccrueSimplePeriod) CompoundInterestAccrual: - EodBasis (原CompoundEodBasis) - AccrueEod (原AccrueCompoundEod) - AccruePeriod (原AccrueCompoundPeriod) 方法名去掉Simple/Compound前缀(类名已携带类型),消除冗余 SwapModule零回归(7基线/510通过)
This commit is contained in:
@@ -13,7 +13,7 @@ using YLErp.Core.Interest;
|
||||
namespace UnitTestProject.Modules.SwapModule.Accrual
|
||||
{
|
||||
/// <summary>
|
||||
/// 影子测试:CalcDailyCompoundInterestByEod(旧逐日循环)vs FundingLegAccrual.AccrueCompoundEod(新纯函数)。
|
||||
/// 影子测试:CalcDailyCompoundInterestByEod(旧逐日循环)vs CompoundInterestAccrual.AccrueEod(新纯函数)。
|
||||
/// 构造同一组参数,两套实现并行跑,断言结果一致(到分)。
|
||||
/// </summary>
|
||||
[TestClass]
|
||||
@@ -99,7 +99,7 @@ namespace UnitTestProject.Modules.SwapModule.Accrual
|
||||
var rate = FundingLegRate.Fixed(FixedRate);
|
||||
var policy = new AccrualPolicy(AccrualBoundary.Both, true, 7, AnnualDays, true);
|
||||
var remainingPercent = Math.Max(0m, Math.Min(1m, Notional / Notional));
|
||||
var result = FundingLegAccrual.AccrueCompoundEod(
|
||||
var result = CompoundInterestAccrual.AccrueEod(
|
||||
50_000m, Notional, Notional, 1m, rate, policy,
|
||||
isResetDay: true, remainingPercent, EodDate);
|
||||
|
||||
@@ -131,7 +131,7 @@ namespace UnitTestProject.Modules.SwapModule.Accrual
|
||||
// 新方法
|
||||
var rate = FundingLegRate.Fixed(FixedRate);
|
||||
var policy = new AccrualPolicy(AccrualBoundary.Both, true, 7, AnnualDays, true);
|
||||
var result = FundingLegAccrual.AccrueCompoundEod(
|
||||
var result = CompoundInterestAccrual.AccrueEod(
|
||||
30_000m, Notional, Notional, 1m, rate, policy,
|
||||
isResetDay: false, 0m, nonResetDate);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user