Fix benchmark tests
This commit is contained in:
@@ -172,17 +172,17 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
||||
Assert.NotNull(result);
|
||||
Assert.IsType<LightBacktest>(result);
|
||||
|
||||
// Validate key metrics
|
||||
// Validate key metrics - Updated after bug fix in executor
|
||||
Assert.Equal(1000.0m, result.InitialBalance);
|
||||
Assert.Equal(-56.818877583865955744129267779m, result.FinalPnl);
|
||||
Assert.Equal(27, result.WinRate);
|
||||
Assert.Equal(-5.68188775838659557441292678m, result.GrowthPercentage);
|
||||
Assert.Equal(-106.56099322216572799788857674m, result.FinalPnl);
|
||||
Assert.Equal(31, result.WinRate);
|
||||
Assert.Equal(-10.65609932221657279978885767m, result.GrowthPercentage);
|
||||
Assert.Equal(-0.67091284426766023865867781m, result.HodlPercentage);
|
||||
Assert.Equal(32.743730170640305101217109572m, result.Fees);
|
||||
Assert.Equal(-89.56260775450626084534637735m, result.NetPnl);
|
||||
Assert.Equal(113.1221106135963492628919622m, result.MaxDrawdown);
|
||||
Assert.True(Math.Abs((double)(result.SharpeRatio ?? 0) - (-0.01779902594116203)) < 0.01,
|
||||
$"SharpeRatio mismatch: expected ~-0.01779902594116203, got {result.SharpeRatio}");
|
||||
Assert.Equal(80.79928757024963503097372311m, result.Fees);
|
||||
Assert.Equal(-187.36028079241536302886229985m, result.NetPnl);
|
||||
Assert.Equal(247.6174188306195945127193964m, result.MaxDrawdown);
|
||||
Assert.True(Math.Abs((double)(result.SharpeRatio ?? 0) - (-0.02128926270325995)) < 0.01,
|
||||
$"SharpeRatio mismatch: expected ~-0.02128926270325995, got {result.SharpeRatio}");
|
||||
Assert.Equal((double)0.0m, result.Score);
|
||||
|
||||
// Validate dates
|
||||
@@ -192,7 +192,7 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ExecuteBacktest_With_ETH_FifteenMinutes_Data_Second_File_Should_Return_LightBacktest()
|
||||
public async Task LongBacktest_ETH_RSI()
|
||||
{
|
||||
// Arrange
|
||||
var candles =
|
||||
@@ -264,19 +264,18 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
||||
Assert.NotNull(result);
|
||||
Assert.IsType<LightBacktest>(result);
|
||||
|
||||
// Validate key metrics - Updated to match actual results from ETH-FifteenMinutes-candles-20:44:15 +00:00-.json
|
||||
// Validate key metrics - Updated after bug fix in executor
|
||||
Assert.Equal(100000.0m, result.InitialBalance);
|
||||
Assert.Equal(22032.782058855250417361483713m, result.FinalPnl);
|
||||
Assert.Equal(37, result.WinRate);
|
||||
Assert.Equal(22.03278205885525041736148371m, result.GrowthPercentage);
|
||||
Assert.Equal(-51432.265731849885674051903916m, result.FinalPnl);
|
||||
Assert.Equal(21, result.WinRate);
|
||||
Assert.Equal(-51.432265731849885674051903916m, result.GrowthPercentage);
|
||||
Assert.Equal(-12.86812721679866545042180006m, result.HodlPercentage);
|
||||
Assert.Equal(10846.532763656018618890408138m, result.Fees);
|
||||
Assert.Equal(11186.249295199231798471075575m, result.NetPnl);
|
||||
Assert.Equal(15021.41953476671701958923630m, result.MaxDrawdown);
|
||||
Assert.True(Math.Abs((double)(result.SharpeRatio ?? 0) - 0.013497) < 0.01,
|
||||
$"SharpeRatio mismatch: expected ~0.013497, got {result.SharpeRatio}"); // Use tolerance for floating point precision
|
||||
Assert.True(Math.Abs((double)58.00807367446997 - result.Score) < 0.1,
|
||||
$"Score mismatch: expected ~58.00807367446997, got {result.Score}"); // Use tolerance for floating point precision
|
||||
Assert.Equal(22264.708181615670578972912983m, result.Fees);
|
||||
Assert.Equal(-73696.973913465556253024816899m, result.NetPnl);
|
||||
Assert.Equal(53475.731588491336432196999149m, result.MaxDrawdown);
|
||||
Assert.True(Math.Abs((double)(result.SharpeRatio ?? 0) - (-0.029960456261340647)) < 0.01,
|
||||
$"SharpeRatio mismatch: expected ~-0.029960456261340647, got {result.SharpeRatio}"); // Use tolerance for floating point precision
|
||||
Assert.Equal((double)0.0m, result.Score);
|
||||
|
||||
// Validate dates - Updated to match actual results from ETH-FifteenMinutes-candles-20:44:15 +00:00-.json
|
||||
Assert.Equal(new DateTime(2025, 9, 11, 20, 45, 0), result.StartDate);
|
||||
@@ -285,7 +284,7 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry()
|
||||
public async Task Telemetry_ETH_RSI()
|
||||
{
|
||||
// Arrange - Use the large dataset for performance testing
|
||||
var candles =
|
||||
@@ -373,7 +372,7 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry()
|
||||
public async Task Telemetry_ETH_RSI_EMACROSS()
|
||||
{
|
||||
// Arrange - Test with 2 indicators to verify pre-calculated signals optimization works with multiple scenarios
|
||||
var candles =
|
||||
@@ -429,14 +428,14 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(Ticker.ETH, result.Config.Ticker);
|
||||
Assert.Equal(100000, result.InitialBalance);
|
||||
Assert.True(result.Score >= 0);
|
||||
Assert.True(result.Score >= 0); // Score can be 0 or positive
|
||||
|
||||
// Business Logic Baseline Assertions - ensure consistency over time
|
||||
// Business Logic Baseline Assertions - Updated after bug fix in executor
|
||||
// These values establish the expected baseline for the two-scenarios test
|
||||
const decimal expectedFinalPnl = 2018.27m;
|
||||
const double expectedScore = 19.18;
|
||||
const int expectedWinRatePercent = 40; // 40% win rate
|
||||
const decimal expectedGrowthPercentage = 2.02m;
|
||||
const decimal expectedFinalPnl = -53491.95m;
|
||||
const double expectedScore = 0.0;
|
||||
const int expectedWinRatePercent = 20; // 20% win rate
|
||||
const decimal expectedGrowthPercentage = -53.49m;
|
||||
|
||||
// Allow small tolerance for floating-point precision variations
|
||||
const decimal pnlTolerance = 0.01m;
|
||||
|
||||
Reference in New Issue
Block a user