using YLErp.DBModels; namespace YLErp.Modules.SwapModule.Accrual; /// /// 融资腿在某一计息日生效的利率(不可变值对象)。 /// /// 计息只认一个数:(当日生效年利率)。 /// 固定腿与浮动腿的区别是"取率"环节的事,已在 SwapDealService.CalcDailySimpleInterestByEod /// 收敛成 all-in 数;本结构不再为腿型背负四个字段——利息计算不是互换特有的, /// 固定利率就是一个 /// public readonly struct FundingLegRate { /// 当日生效年利率(all-in)。固定腿=固定利率;浮动腿=加点利差+指数定盘。 public decimal Rate { get; } /// 计息用的当日生效年利率。即 public decimal AllInRate => Rate; private FundingLegRate(decimal rate) => Rate = rate; /// 构造固定腿利率。 public static FundingLegRate Fixed(decimal fixedRate) => new(fixedRate); /// 构造浮动腿利率(all-in = 加点利差 + 指数定盘)。 public static FundingLegRate Floating(decimal spread, decimal indexFixing) => new(spread + indexFixing); /// 从 swap_position 构造:固定腿→Fixed(spread),浮动腿→Floating(spread+fixing)。 public static FundingLegRate Build(swap_position position, decimal spread, decimal effectiveFloat) => string.IsNullOrEmpty(position.FloatRateUnderlyingCode) ? Fixed(spread) : Floating(spread, effectiveFloat); }