hjhan
|
ce6c0812e1
|
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失败(基线一致)。
|
2026-08-12 10:11:26 +08:00 |
|
hjhan
|
431ac9b502
|
feat(accrual): 新增 AccrueCompoundPeriod + 影子测试(3个全过)
第3步迁移: CalcDailyCompoundInterest(盘中复利多日)。
新增纯函数 AccrueCompoundPeriod:
- 从 PosiStartDate 到 endDate 全程重放
- 每个重置日并本金: principal + replayed interest
- 末日(endDate)为重置日且 resetCarryInterest!=0 时用存量替代
- consumedInterest × closePercent 在末尾扣除
- 分段模型替代逐日循环, 段内本金恒定+利率恒定
影子测试(3个,全过):
- 固定利率全平+末日重置日: 旧新一致
- 部分平仓30%+consumedInterest扣除: 旧新一致
- 算头算尾(calcMode=11): 旧新一致
清理: 删除 SwapInterestAccrueCompoundInArrearsTest(半成品残留,
依赖已回退的 SwapInterest 签名)。
修复: SwapInterestAccrueCompoundInArrearsTest 缺 using(已随文件删除)。
验证: 编译0错误, 全量520测试7失败(基线一致)。
4个CalcDaily*方法的新架构纯函数全部就绪, 旧方法暂保留对比。
|
2026-08-12 09:48:49 +08:00 |
|