diff --git a/YLErpDAL/Modules/SwapModule/Accrual/FundingLegRate.cs b/YLErpDAL/Modules/SwapModule/Accrual/FundingLegRate.cs
index 284210a6..6240eae6 100644
--- a/YLErpDAL/Modules/SwapModule/Accrual/FundingLegRate.cs
+++ b/YLErpDAL/Modules/SwapModule/Accrual/FundingLegRate.cs
@@ -3,38 +3,27 @@ namespace YLErp.Modules.SwapModule.Accrual;
///
/// 融资腿在某一计息日生效的利率(不可变值对象)。
///
-/// 把"固定利率 / 加点利差 / 浮动指数定盘"三种来源收敛为一个概念,避免把它们作为裸 decimal
-/// 散落在计息方法签名里——这正是初版 AccrueSimpleEod 参数膨胀、可读性差的根因。
-///
-/// 固定腿与浮动腿是互斥的两种形态:固定腿只设 (其余为 0);
-/// 浮动腿设 + ( 为 0)。
-/// 对两种形态统一为三者之和。
-///
-///
-/// - :固定腿的固定年利率;浮动腿为 0。
-/// - :浮动腿在指数之上的加点利差(合约侧);固定腿为 0。
-/// - :浮动指数定盘(FR007 等);固定腿为 0。
-/// - :计息用的"当日生效年利率"。固定腿取 ;浮动腿取 + (二者互斥,非叠加)。
-///
+/// 计息只认一个数:(当日生效年利率)。
+/// 固定腿与浮动腿的区别是"取率"环节的事,已在 SwapDealService.CalcDailySimpleInterestByEod
+/// 收敛成 all-in 数;本结构不再为腿型背负四个字段——利息计算不是互换特有的,
+/// 固定利率就是一个 。
///
public readonly struct FundingLegRate
{
- /// 固定腿的固定年利率;浮动腿为 0。
- public decimal FixedRate { get; }
+ /// 当日生效年利率(all-in)。固定腿=固定利率;浮动腿=加点利差+指数定盘。
+ public decimal Rate { get; }
- /// 浮动腿在指数之上的加点利差(合约侧);固定腿为 0。
- public decimal Spread { get; }
+ /// 计息用的当日生效年利率。即 。
+ public decimal AllInRate => Rate;
- /// 浮动指数定盘利率(市场侧,FR007 等);固定腿为 0。
- public decimal IndexFixing { get; }
+ private FundingLegRate(decimal rate)
+ => Rate = rate;
- ///
- /// 当日生效年利率。固定腿与浮动腿是互斥的两种利率确定方式,不是可叠加分量:
- /// 固定腿取 ;浮动腿取 + 。
- /// 约定:固定腿只设 FixedRate(其余为 0),浮动腿只设 Spread + IndexFixing(FixedRate 为 0)。
- ///
- public decimal AllInRate => FixedRate != 0m ? FixedRate : Spread + IndexFixing;
+ /// 构造固定腿利率。
+ public static FundingLegRate Fixed(decimal fixedRate)
+ => new(fixedRate);
- public FundingLegRate(decimal fixedRate = 0m, decimal spread = 0m, decimal indexFixing = 0m)
- => (FixedRate, Spread, IndexFixing) = (fixedRate, spread, indexFixing);
+ /// 构造浮动腿利率(all-in = 加点利差 + 指数定盘)。
+ public static FundingLegRate Floating(decimal spread, decimal indexFixing)
+ => new(spread + indexFixing);
}