hjhan
|
3f194f7ccc
|
fix(accrual): Round收口到SwapInterest.Round + 复利分段边界修复
3项修复:
1. SwapInterest.Round 从 private 改为 public:
所有计息路径收口到一处, FundingLegAccrual 不再用裸 Math.Round
2. ApplyUnwind 精度警告:
注释标注'资金腿务必传 FundingLegPrecision=12', 默认11是易忘的坑
3. AccrueCompoundPeriod 分段边界修复(根因):
旧bug: 中间段 IncludeEnd=true 导致重置日利息用了旧本金
修复: 中间段 IncludeEnd=false(半开区间), 重置日归下一段用新本金
对齐旧逐日循环语义: 重置日先更新本金再算息
同时: 中间值不Round(对齐旧代码只在最终输出Round一次)
清理: 删除 SwapInterestAccrueCompoundInArrearsTest 半成品残留
验证: 编译0错误, 7个影子测试全过, 全量520测试7失败(基线一致)。
|
2026-08-12 09:59:53 +08:00 |
|
hjhan
|
be3be877ec
|
refactor(interest): 引入 AccrualContext 并将 AccrueCompound 重命名为 AccrueCompoundInArrears
1. 新增 AccrualContext 只读值对象,把 annualDays/precision/trace 三个"与金额利率无关"
的横向参数打包为上下文成员。计息纯函数只吃一个 ctx,签名去噪、可读性提升;
ctx 为只读值对象(非类的实例/静态字段),不破坏纯函数(线程安全、可重入、可测)。
trace 因此成为"传入上下文的成员"而非散落参数,满足"默认成员而非参数"的诉求。
2. AccrueCompound → AccrueCompoundInArrears:精确表达 OIS/SOFR/FR007 的
compounded-in-arrears 语义(每子区间取定盘、段末滚入本金),与
InterestRate.Compounding.Compounded 闭式分支(TRS 下死路径)一刀两断、不再混淆。
纯增量、数值逻辑不变;YLErpDAL + UnitTestProject 编译 0 错 0 警;FR007 两段切换场景
实跑 trace 与旧版数值完全一致。
|
2026-08-12 06:13:38 +08:00 |
|
hjhan
|
fba87bd7cc
|
feat(interest): AccrueCompound 支持每段独立利率 + 发射 Reset/Rollover trace
重构为按重置日切段、每段可有独立利率(resetSchedule),适配 FR007 浮动逐段取价
(取价仍在编排层,原语只吃一个数,与 QuantLib/Strata 同范);trace 记录
重置日前后利率切换与段末并本金(本金增加),完整覆盖"重置日前后/利率切换/本金增减"。
|
2026-08-12 06:05:02 +08:00 |
|
hjhan
|
39ec71f268
|
refactor(interest): SwapInterest 计息数学收敛为 InterestRate,新增资金腿精度常量
引入 ToInterestRate 入口把 TRS 利率收敛为通用原语;提取 FundingLegPrecision=12
公共常量,消除 SwapDealService 与 FundingLegAccrual 的重复定义。
|
2026-08-12 05:36:01 +08:00 |
|
hjhan
|
d78d5a46c4
|
feat(interest): 新增 TRS 利息腿纯函数库 SwapInterest
独立于 SwapDealService / SwapEodPositionService 的纯函数计息层:无副作用、
同 input 同 output,正交轴(算头算尾 / 单利复利 / unwind / 待实现收益)各自独立。
术语采用金融标准 Unwind / Realized / Unrealized。纯新增零接入核心计息逻辑,
待 Excel 对账确认"绿而不错"后 pilot 替换。
|
2026-08-09 16:07:27 +08:00 |
|