Files
zszq-trs/YLErpDAL/Modules/SwapModule/Accrual/FundingLegRate.cs
T
hjhan 4e67af52e8 refactor(interest): FundingLegRate 瘦身为单一 all-in 利率值对象
固定/浮动腿的区别是取率环节的事,计息只认一个数;以 Fixed/Floating 工厂
取代原 4 字段构造,不再为腿型背负多余字段。
2026-08-12 05:36:01 +08:00

30 lines
1.2 KiB
C#

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