fix(swap): 修复互换价格变动时盈亏计算错误

- 在后端计算逻辑中添加 longRatio 参数用于区分多空头寸类型
- 修改前端 JavaScript 代码中的盈亏计算公式,加入 longRatio 参与计算
- 更新单元测试,增加空头头寸价格上涨时亏损的测试用例
- 补充前端测试用例验证空头头寸计算逻辑的准确性
- 修复了空头头寸在价格上涨时显示盈利而非亏损的计算错误
This commit is contained in:
张名锐
2026-08-07 17:44:04 +08:00
parent 0672dbbcca
commit d78d1f48e7
5 changed files with 45 additions and 5 deletions
+12
View File
@@ -308,6 +308,18 @@ describe('交叉校验:对齐 C# FrontendCalcCharacterizationTest 金标准',
expectClose(r.MarkClosePnl, 5400000, 'income MarkClosePnl按数量计算');
expectClose(r.FloatPnlSum, 5355000, 'income FloatPnlSum包含分红');
});
test('收取空头价格上涨应为亏损', () => {
const r = SwapCalc.calcIncome({
multiplier: 100, posiGrossPrice: 1.01654321, tradingAmountAvg: 101.754321,
positionQty: 50000000, contractSize: 1,
closeNotionalValue: 50827160.5, closeQty: 0,
payDirection: 1, positionType: 2,
tradingFee: '0', tradingFeePending: '0', dividendIn: '-90400'
});
expectClose(r.MarkClosePnl, -50000, '收取空头价格上涨=盯市亏损');
expectClose(r.FloatPnlSum, -140400, '盯市亏损加分红');
});
});
// ============================================================================