diff --git a/UnitTestProject/Modules/SwapModule/ReturnLegs/QuantityRollforwardTest.cs b/UnitTestProject/Modules/SwapModule/ReturnLegs/QtyRollforwardTest.cs
similarity index 50%
rename from UnitTestProject/Modules/SwapModule/ReturnLegs/QuantityRollforwardTest.cs
rename to UnitTestProject/Modules/SwapModule/ReturnLegs/QtyRollforwardTest.cs
index 7274b2c3..3c423d33 100644
--- a/UnitTestProject/Modules/SwapModule/ReturnLegs/QuantityRollforwardTest.cs
+++ b/UnitTestProject/Modules/SwapModule/ReturnLegs/QtyRollforwardTest.cs
@@ -6,58 +6,55 @@ namespace UnitTestProject.Modules.SwapModule.ReturnLegs
/// 标的端数量递推测试。验证开仓/平仓/公司行为场景下数量正确推进。
///
[TestClass]
- public class QuantityRollforwardTest
+ public class QtyRollforwardTest
{
[TestMethod]
public void 无交易_数量不变()
{
- Assert.AreEqual(1000m, QuantityRollforward.Calc(1000m, 0m, 0m));
+ Assert.AreEqual(1000m, QtyRollforward.Calc(1000m, 0m, 0m));
}
[TestMethod]
public void 开仓_数量增加()
{
- Assert.AreEqual(1500m, QuantityRollforward.Calc(1000m, 500m, 0m));
+ Assert.AreEqual(1500m, QtyRollforward.Calc(1000m, 500m, 0m));
}
[TestMethod]
public void 平仓_数量减少()
{
- Assert.AreEqual(600m, QuantityRollforward.Calc(1000m, 0m, 400m));
+ Assert.AreEqual(600m, QtyRollforward.Calc(1000m, 0m, 400m));
}
[TestMethod]
public void 开仓加平仓_净值()
{
- Assert.AreEqual(1200m, QuantityRollforward.Calc(1000m, 500m, 300m));
+ Assert.AreEqual(1200m, QtyRollforward.Calc(1000m, 500m, 300m));
}
[TestMethod]
public void 全平_数量归零()
{
- Assert.AreEqual(0m, QuantityRollforward.Calc(1000m, 0m, 1000m));
+ Assert.AreEqual(0m, QtyRollforward.Calc(1000m, 0m, 1000m));
}
[TestMethod]
public void 超额平仓_不低于零()
{
- Assert.AreEqual(0m, QuantityRollforward.Calc(1000m, 0m, 1500m));
+ Assert.AreEqual(0m, QtyRollforward.Calc(1000m, 0m, 1500m));
}
[TestMethod]
public void 公司行为送股_数量增加_默认不影响()
{
- // 默认 corpActionDeltaQty=0, 行为不变
- Assert.AreEqual(1000m, QuantityRollforward.Calc(1000m, 0m, 0m));
- // 送股 10%: 1000 × 10% = 100
- Assert.AreEqual(1100m, QuantityRollforward.Calc(1000m, 0m, 0m, corpActionDeltaQty: 100m));
+ Assert.AreEqual(1000m, QtyRollforward.Calc(1000m, 0m, 0m));
+ Assert.AreEqual(1100m, QtyRollforward.Calc(1000m, 0m, 0m, corpActionDeltaQty: 100m));
}
[TestMethod]
public void 公司行为拆股_数量翻倍()
{
- // 1拆2: 数量翻倍, corpActionDeltaQty = 当前数量
- Assert.AreEqual(2000m, QuantityRollforward.Calc(1000m, 0m, 0m, corpActionDeltaQty: 1000m));
+ Assert.AreEqual(2000m, QtyRollforward.Calc(1000m, 0m, 0m, corpActionDeltaQty: 1000m));
}
}
}
diff --git a/YLErpDAL/Modules/SwapModule/ReturnLegs/QuantityRollforward.cs b/YLErpDAL/Modules/SwapModule/ReturnLegs/QtyRollforward.cs
similarity index 92%
rename from YLErpDAL/Modules/SwapModule/ReturnLegs/QuantityRollforward.cs
rename to YLErpDAL/Modules/SwapModule/ReturnLegs/QtyRollforward.cs
index c2352db4..990a265f 100644
--- a/YLErpDAL/Modules/SwapModule/ReturnLegs/QuantityRollforward.cs
+++ b/YLErpDAL/Modules/SwapModule/ReturnLegs/QtyRollforward.cs
@@ -1,7 +1,7 @@
namespace YLErp.Modules.SwapModule.ReturnLegs;
///
-/// 标的端数量递推(quantity rollforward)。
+/// 标的端数量递推(Qty Rollforward)。
///
/// 逐日推进持仓数量:今日数量 = 上一日终数量 + 今日开仓 - 今日平仓 + 公司行为调整。
///
@@ -9,7 +9,7 @@ namespace YLErp.Modules.SwapModule.ReturnLegs;
/// 预留给公司行为改造(送股/拆股/配股)——届时填入非零值。
/// 原代码(SwapEodPositionService:1980)只有开仓/平仓两项,硬编码了"数量只因交易变动"假设。
///
-public static class QuantityRollforward
+public static class QtyRollforward
{
///
/// 计算今日持仓数量。
diff --git a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs
index ef3e7901..02cf5a9f 100644
--- a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs
+++ b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs
@@ -1978,7 +1978,7 @@ namespace YLErp.Modules.SwapModule
var openFlowEvents = unwindEvents.Where(x => x.EventType == (int)SwapFlowEventTypeEnum.开仓).ToList();
decimal unwindQty = unwindFlowEvents.Sum(s => s.Quantity);
decimal openQty = openFlowEvents.Sum(s => s.Quantity);
- curretEod.PosiQuantity = QuantityRollforward.Calc(eod.PosiQuantity, openQty, unwindQty);
+ curretEod.PosiQuantity = QtyRollforward.Calc(eod.PosiQuantity, openQty, unwindQty);
if (unwindEvents.Count == 0)
{
curretEod.PosiNetPrice = position.PosiNetPrice;