Fix test with new ROI and collateral calcul

This commit is contained in:
2025-11-20 20:04:20 +07:00
parent b1aa0541e2
commit a6adf5e458

View File

@@ -44,9 +44,9 @@ public class TradingBoxAgentSummaryMetricsTests
Assert.Equal(5m, metrics.TotalPnL); Assert.Equal(5m, metrics.TotalPnL);
Assert.Equal(3m, metrics.TotalFees); Assert.Equal(3m, metrics.TotalFees);
Assert.Equal(2m, metrics.NetPnL); Assert.Equal(2m, metrics.NetPnL);
Assert.Equal(0.5m, metrics.TotalROI); Assert.Equal(1m, metrics.TotalROI);
Assert.Equal(810m, metrics.TotalVolume); Assert.Equal(810m, metrics.TotalVolume);
Assert.Equal(400m, metrics.Collateral); Assert.Equal(200m, metrics.Collateral);
Assert.Equal(1, metrics.Wins); Assert.Equal(1, metrics.Wins);
Assert.Equal(1, metrics.Losses); Assert.Equal(1, metrics.Losses);
} }
@@ -269,9 +269,9 @@ public class TradingBoxAgentSummaryMetricsTests
Assert.Equal(13m, metrics.TotalPnL); Assert.Equal(13m, metrics.TotalPnL);
Assert.Equal(2m, metrics.TotalFees); Assert.Equal(2m, metrics.TotalFees);
Assert.Equal(11m, metrics.NetPnL); Assert.Equal(11m, metrics.NetPnL);
Assert.Equal(11m / 300m * 100m, metrics.TotalROI); // 11 / 300 * 100 Assert.Equal(5.5m, metrics.TotalROI); // 11 / 300 * 100
Assert.Equal(600m, metrics.TotalVolume); // 100*1*1 + 110*1*1 + 200*1*1 + 190*1*1 = 210 + 390 = 600 Assert.Equal(600m, metrics.TotalVolume); // 100*1*1 + 110*1*1 + 200*1*1 + 190*1*1 = 210 + 390 = 600
Assert.Equal(300m, metrics.Collateral); // 100*1 + 200*1 Assert.Equal(200m, metrics.Collateral); // Max (100*1, 200*1)
Assert.Equal(2, metrics.Wins); Assert.Equal(2, metrics.Wins);
Assert.Equal(0, metrics.Losses); Assert.Equal(0, metrics.Losses);
} }
@@ -312,9 +312,9 @@ public class TradingBoxAgentSummaryMetricsTests
Assert.Equal(-8m, metrics.TotalPnL); Assert.Equal(-8m, metrics.TotalPnL);
Assert.Equal(2m, metrics.TotalFees); Assert.Equal(2m, metrics.TotalFees);
Assert.Equal(-10m, metrics.NetPnL); Assert.Equal(-10m, metrics.NetPnL);
Assert.Equal(-10m / 300m * 100m, metrics.TotalROI); // -10 / 300 * 100 Assert.Equal(-5, metrics.TotalROI); // -10 / 300 * 100
Assert.Equal(605m, metrics.TotalVolume); // 100*1 + 95*1 + 200*1 + 210*1 = 195 + 410 = 605 Assert.Equal(605m, metrics.TotalVolume); // 100*1 + 95*1 + 200*1 + 210*1 = 195 + 410 = 605
Assert.Equal(300m, metrics.Collateral); // 100*1 + 200*1 Assert.Equal(200m, metrics.Collateral); // 100*1 + 200*1
Assert.Equal(0, metrics.Wins); Assert.Equal(0, metrics.Wins);
Assert.Equal(2, metrics.Losses); Assert.Equal(2, metrics.Losses);
} }
@@ -420,9 +420,9 @@ public class TradingBoxAgentSummaryMetricsTests
Assert.Equal(150m, metrics.TotalPnL); Assert.Equal(150m, metrics.TotalPnL);
Assert.Equal(4m, metrics.TotalFees); Assert.Equal(4m, metrics.TotalFees);
Assert.Equal(146m, metrics.NetPnL); Assert.Equal(146m, metrics.NetPnL);
Assert.Equal(146m / 8000m * 100m, metrics.TotalROI); // 146 / 8000 * 100 Assert.Equal(2.9200m, metrics.TotalROI); // 146 / 8000 * 100
Assert.Equal(10250m + 5850m, metrics.TotalVolume); // BTC: 5000+5250, ETH: 3000+2850 Assert.Equal(10250m + 5850m, metrics.TotalVolume); // BTC: 5000+5250, ETH: 3000+2850
Assert.Equal(5000m + 3000m, metrics.Collateral); // 50000*0.1 + 3000*1 Assert.Equal(5000m, metrics.Collateral); // 50000*0.1 + 3000*1
Assert.Equal(2, metrics.Wins); Assert.Equal(2, metrics.Wins);
Assert.Equal(0, metrics.Losses); Assert.Equal(0, metrics.Losses);
} }
@@ -466,7 +466,8 @@ public class TradingBoxAgentSummaryMetricsTests
return position; return position;
} }
private static Trade BuildTrade(TradeDirection direction, TradeStatus status, decimal price, decimal quantity, decimal leverage = 1m) private static Trade BuildTrade(TradeDirection direction, TradeStatus status, decimal price, decimal quantity,
decimal leverage = 1m)
{ {
return new Trade( return new Trade(
date: DateTime.UtcNow, date: DateTime.UtcNow,
@@ -702,7 +703,7 @@ public class TradingBoxAgentSummaryMetricsTests
Timeframe = Timeframe.OneHour, Timeframe = Timeframe.OneHour,
StopLoss = 0.02m, StopLoss = 0.02m,
TakeProfit = 0.04m, TakeProfit = 0.04m,
Leverage = 10m // High leverage Leverage = 10m // High leverage
}, },
initiator: PositionInitiator.User, initiator: PositionInitiator.User,
date: DateTime.UtcNow, date: DateTime.UtcNow,
@@ -727,7 +728,7 @@ public class TradingBoxAgentSummaryMetricsTests
Timeframe = Timeframe.OneHour, Timeframe = Timeframe.OneHour,
StopLoss = 0.02m, StopLoss = 0.02m,
TakeProfit = 0.04m, TakeProfit = 0.04m,
Leverage = 5m // Moderate leverage Leverage = 5m // Moderate leverage
}, },
initiator: PositionInitiator.User, initiator: PositionInitiator.User,
date: DateTime.UtcNow, date: DateTime.UtcNow,
@@ -777,7 +778,7 @@ public class TradingBoxAgentSummaryMetricsTests
Assert.Equal(1300m, metrics.TotalPnL); // 1000 + 300 Assert.Equal(1300m, metrics.TotalPnL); // 1000 + 300
Assert.Equal(15m, metrics.TotalFees); // 5+5 + 2.5+2.5 Assert.Equal(15m, metrics.TotalFees); // 5+5 + 2.5+2.5
Assert.Equal(1285m, metrics.NetPnL); // 1300 - 15 Assert.Equal(1285m, metrics.NetPnL); // 1300 - 15
Assert.Equal(1285m / 8000m * 100m, metrics.TotalROI); // 1285 / 8000 * 100 Assert.Equal(25.700m, metrics.TotalROI);
// Volume calculations with leverage: price * quantity * leverage // Volume calculations with leverage: price * quantity * leverage
// BTC: (50000 * 0.1 * 10) + (52500 * 0.1 * 10) = 50000 + 52500 = 102500 // BTC: (50000 * 0.1 * 10) + (52500 * 0.1 * 10) = 50000 + 52500 = 102500
@@ -785,7 +786,7 @@ public class TradingBoxAgentSummaryMetricsTests
Assert.Equal(102500m + 29250m, metrics.TotalVolume); // 131750 Assert.Equal(102500m + 29250m, metrics.TotalVolume); // 131750
// Collateral is price * quantity (without leverage) // Collateral is price * quantity (without leverage)
Assert.Equal(5000m + 3000m, metrics.Collateral); // 8000 Assert.Equal(5000m, metrics.Collateral); // 5000
Assert.Equal(2, metrics.Wins); Assert.Equal(2, metrics.Wins);
Assert.Equal(0, metrics.Losses); Assert.Equal(0, metrics.Losses);
} }