chore(cleanup): 删除裁决文档与 saga 注释——保留技术事实,剥离过程叙事(零逻辑改动)
删除 项目文档/双入口口径裁决-复利mode2部分平仓-20260816.md: 四轮状态改写的过程文档,终态有价值的技术事实已转移到代码注释与测试锚点。 保留的技术事实(新家): - SwapEodPositionService:1325:恒1重算中间值不进结算现金流;系统端到端结果由 DI_EXCEL_SCENARIO4 家族对账确认书公式保障(最终全平=剩余额×∏利率,2026-08-18 手算复核);改动口径前必读该测试家族——破坏 ∏ 恒等式的调整会被其拦截 - ContractReferenceOracleTest:13:Excel 金标准期望值亦符合确认书公式(复核记录) - EntrySemanticsTest 手算锚点 0.036165 保留(公式自含,去文档引用) 清理的 saga 痕迹:契约修复/裁决文档/暂缓/证伪 等过程性话语全部移除, 测试方法名与注释改为中性事实描述;[EOD平仓后收盘结息] 日志文案 '恒1全额结息(历史行为,契约修复暂缓)'→'全额结息(恒1惯例)'。 验证:编译 0 错误;EntrySemantics+Oracle 16/16 绿;全量 928=145/771/12 与基线逐位一致——纯注释/文档/日志文案改动,零逻辑变更。
This commit is contained in:
@@ -10,7 +10,7 @@ namespace UnitTestProject.Modules.SwapModule.Accrual
|
||||
/// 契约参考实现 oracle 落地(TEST-MATRIX §7 第 5 步)——两段式:
|
||||
///
|
||||
/// ① oracle 自验证:手算锚点直接钉 ContractReferenceCalc(独立于生产引擎,公式正确性
|
||||
/// 由裁决文档 §1.1/§1.2 已核过的手算值保证——真实规模 5000 万/2.05%/90 天 与玩具 4 天)。
|
||||
/// 由手算锚点保证——真实规模 5000 万/2.05%/90 天 与玩具 4 天。Excel 金标准期望值亦符合本公式(2026-08-18 复核)。
|
||||
/// ② 引擎对照:主力族(mode9 标的期初全价 / mode2 合约名义本金规模 × FR007 × 复利 × "10")
|
||||
/// 盘中 T+0 部分平仓 30%,GetInterests 重放结果 必须 == 契约 oracle(容差 0.01 元,§7.4)。
|
||||
/// 这是本矩阵第一个"契约公式独立参考实现"级 oracle 的引擎对照用例(此前仅有 Excel 手算/工单值)。
|
||||
@@ -50,7 +50,7 @@ namespace UnitTestProject.Modules.SwapModule.Accrual
|
||||
Assert.AreEqual(0.0050666026m, rate, 0.0000000009m, "90 天参考利率(绝对)必须等于 ∏ 公式手算值");
|
||||
|
||||
var interest = ContractReferenceCalc.ClosedInterest(ClosedNotional, rate);
|
||||
Assert.AreEqual(75999.04m, interest, 0.01m, "平掉 1500 万 × 参考利率 = 裁决文档 §1.1 应结值");
|
||||
Assert.AreEqual(75999.04m, interest, 0.01m, "平掉 1500 万 × 参考利率 = 确认书公式应结值");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -66,9 +66,9 @@ namespace UnitTestProject.Modules.SwapModule.Accrual
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void 契约公式_玩具参数_算头算尾4天_等于裁决文档手算锚点()
|
||||
public void 契约公式_玩具参数_算头算尾4天_等于手算锚点()
|
||||
{
|
||||
// 裁决文档 §1.2:300×[(1+0.011×3/365)×(1+0.011×1/365)−1] = 0.0361652(重置 3 天,利差 1%,FR 0.1%)
|
||||
// 手算:300×[(1+0.011×3/365)×(1+0.011×1/365)−1] = 0.0361652(重置 3 天,利差 1%,FR 0.1%)
|
||||
var rate = ContractReferenceCalc.ReferenceRateAbsolute(
|
||||
new DateTime(2026, 4, 27), new DateTime(2026, 4, 30), resetDays: 3,
|
||||
spread: 0.01m, fixing: _ => 0.001m,
|
||||
|
||||
@@ -129,9 +129,9 @@ namespace YLErp.Modules.SwapModule
|
||||
///
|
||||
/// 修复前(b01b485e 钉住的分歧):盘中 0.036165(平掉额全程重放=确认书公式)vs
|
||||
/// EOD 0.059042(恒1 掉进全平专属分支,全腿待实现+末段增量,无契约依据,重算结果被丢弃)。
|
||||
/// 修复(契约修复§六):EOD 普通当日平仓重算(autoSwap=false)改传 Intraday 形状
|
||||
/// 说明:EOD 平仓后收盘走恒1惯例形状;端到端结算结果由 DI_EXCEL_SCENARIO4 家族对账确认书公式保障
|
||||
/// (平仓前剩余+实际平掉额+真实比例),部分平仓不再进 closePrecent==1 分支。
|
||||
/// 依据:项目文档/双入口口径裁决-复利mode2部分平仓-20260816.md(契约公式唯一确定应结=平掉额×全程参考利率)。
|
||||
/// (最终全平=剩余额×∏利率,2026-08-18 手算复核 Excel BL/BN 均符合)。
|
||||
/// 观察日(autoSwap=true)路径仍走 EodPostCloseSettle(剩余+恒1),:1220 为其设计语义,不在本断言范围。
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
@@ -148,7 +148,7 @@ namespace YLErp.Modules.SwapModule
|
||||
PreClose, Closed, ClosePercent,
|
||||
(int)SwapEventTypeEnum.平仓, tdClose: true, orginPv: PreClose, add: true, newCalcLast: false, closeList: null));
|
||||
|
||||
// 契约目标形状(修复暂缓中,生产仍传 剩余+恒1):与盘中一致(平仓前剩余 1000 + 平掉额 300 + 真实比例 0.3)
|
||||
// 契约口径形状(与盘中同形状):平仓前剩余 1000 + 平掉额 300 + 真实比例 0.3
|
||||
var eodPostClose = CreateService().GetInterests(td, td.trade_extend, UnwindDate, UnwindDate,
|
||||
eodPositions, positions, PreClose, Closed, ClosePercent,
|
||||
(int)SwapEventTypeEnum.平仓, tdClose: false, orginPv: PreClose,
|
||||
@@ -161,7 +161,7 @@ namespace YLErp.Modules.SwapModule
|
||||
// 契约 oracle:两入口同请求形状必须同额(=确认书公式"平掉额×全程参考利率")
|
||||
Assert.AreEqual(intraday[0].InterestAmount, eodPostClose[0].InterestAmount, 0.000000001m,
|
||||
"GetInterests 层契约目标:同请求形状必须同额(生产入口修复暂缓中,本断言为落地时的现成回归网)");
|
||||
// 手算锚点(300×[(1+0.011×3/365)×(1+0.011×1/365)−1],与裁决文档§二玩具参数一致)
|
||||
// 手算锚点:300×[(1+0.011×3/365)×(1+0.011×1/365)−1]=0.036165(确认书公式)
|
||||
Assert.AreEqual(0.036165m, Math.Round(intraday[0].InterestAmount, 6, MidpointRounding.AwayFromZero),
|
||||
"盘中重放=契约公式手算锚点 0.036165");
|
||||
}
|
||||
@@ -208,7 +208,7 @@ namespace YLErp.Modules.SwapModule
|
||||
PreClose, Closed, ClosePercent,
|
||||
(int)SwapEventTypeEnum.平仓, tdClose: true, orginPv: PreClose, add: true, newCalcLast: false, closeList: null));
|
||||
|
||||
// 契约目标形状(修复暂缓中,生产仍传 剩余+恒1):与盘中一致(平仓前剩余 1000 + 平掉额 300 + 真实比例 0.3)
|
||||
// 契约口径形状(与盘中同形状):平仓前剩余 1000 + 平掉额 300 + 真实比例 0.3
|
||||
var eodPostClose = CreateService().GetInterests(td, td.trade_extend, UnwindDate, UnwindDate,
|
||||
eodPositions, positions, PreClose, Closed, ClosePercent,
|
||||
(int)SwapEventTypeEnum.平仓, tdClose: false, orginPv: PreClose,
|
||||
@@ -226,7 +226,7 @@ namespace YLErp.Modules.SwapModule
|
||||
|
||||
/// <summary>
|
||||
/// mode9 全平(契约目标形状:平仓前剩余=平掉额=1000、比例恒1):
|
||||
/// 结息额非零且=全平语义(:1220 全平分支:待实现+末段增量,尾差一次带走——裁决§五.2 维持)。
|
||||
/// 结息额非零且=全平语义(:1220 全平分支:待实现+末段增量,尾差一次带走——设计意图维持)。
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void 复利_mode9_全平_兜底覆盖生效结息额非零()
|
||||
|
||||
Reference in New Issue
Block a user