From 59651b802e2ef5733abcbb87b8ac4bb0673150eb Mon Sep 17 00:00:00 2001 From: hjhan Date: Tue, 11 Aug 2026 10:40:17 +0800 Subject: [PATCH] =?UTF-8?q?refactor(return-leg):=20QuantityRollforward=20?= =?UTF-8?q?=E6=94=B9=E5=90=8D=20QtyRollforward?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 代码里统一用 Qty 表示数量, 命名更简洁。 文件/类/测试类同步改名: Quantity→Qty。 --- ...llforwardTest.cs => QtyRollforwardTest.cs} | 23 ++++++++----------- ...antityRollforward.cs => QtyRollforward.cs} | 4 ++-- .../SwapModule/SwapEodPositionService.cs | 2 +- 3 files changed, 13 insertions(+), 16 deletions(-) rename UnitTestProject/Modules/SwapModule/ReturnLegs/{QuantityRollforwardTest.cs => QtyRollforwardTest.cs} (50%) rename YLErpDAL/Modules/SwapModule/ReturnLegs/{QuantityRollforward.cs => QtyRollforward.cs} (92%) 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;