Update test

This commit is contained in:
2025-11-13 00:55:14 +07:00
parent 6d6f70ae00
commit d8f7a73605
6 changed files with 62 additions and 35 deletions

View File

@@ -174,16 +174,17 @@ public class BacktestExecutorTests : BaseTests, IDisposable
// Validate key metrics - Updated after bug fix in executor
Assert.Equal(1000.0m, result.InitialBalance);
Assert.Equal(-106.56099322216572799788857674m, result.FinalPnl);
Assert.Equal(44.343999999999999999999999991m, result.FinalPnl);
Assert.Equal(31, result.WinRate);
Assert.Equal(-10.65609932221657279978885767m, result.GrowthPercentage);
Assert.Equal(4.43440000000000000000000m, result.GrowthPercentage);
Assert.Equal(-0.67091284426766023865867781m, result.HodlPercentage);
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);
Assert.Equal(86.64864600000000000000000000m, result.Fees);
Assert.Equal(-42.304646000000000000000000009m, result.NetPnl);
Assert.Equal(119.8400000000000000000000000m, result.MaxDrawdown);
Assert.True(Math.Abs((double)(result.SharpeRatio ?? 0) - 0.01080949889674031) < 0.01,
$"SharpeRatio mismatch: expected ~0.01080949889674031, got {result.SharpeRatio}");
Assert.True(Math.Abs(result.Score - 12.402462484050353) < 0.001,
$"Score {result.Score} should be within 0.001 of expected value 12.402462484050353");
// Validate dates
Assert.Equal(new DateTime(2025, 10, 14, 12, 0, 0), result.StartDate);
@@ -266,15 +267,15 @@ public class BacktestExecutorTests : BaseTests, IDisposable
// Validate key metrics - Updated after bug fix in executor
Assert.Equal(100000.0m, result.InitialBalance);
Assert.Equal(-51432.265731849885674051903916m, result.FinalPnl);
Assert.Equal(-31899.032000000000000000000000m, result.FinalPnl);
Assert.Equal(21, result.WinRate);
Assert.Equal(-51.432265731849885674051903916m, result.GrowthPercentage);
Assert.Equal(-31.8990320000000000000000m, result.GrowthPercentage);
Assert.Equal(-12.86812721679866545042180006m, result.HodlPercentage);
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(25875.444102000000000000000000m, result.Fees);
Assert.Equal(-57774.476102000000000000000000m, result.NetPnl);
Assert.Equal(37030.256000000000000000000000m, result.MaxDrawdown);
Assert.True(Math.Abs((double)(result.SharpeRatio ?? 0) - (-0.024119163190349627)) < 0.01,
$"SharpeRatio mismatch: expected ~-0.024119163190349627, 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
@@ -430,12 +431,32 @@ public class BacktestExecutorTests : BaseTests, IDisposable
Assert.Equal(100000, result.InitialBalance);
Assert.True(result.Score >= 0); // Score can be 0 or positive
// Output the result to console for review
var json = JsonConvert.SerializeObject(new
{
result.FinalPnl,
result.WinRate,
result.GrowthPercentage,
result.HodlPercentage,
result.Fees,
result.NetPnl,
result.MaxDrawdown,
result.SharpeRatio,
result.Score,
result.InitialBalance,
StartDate = result.StartDate.ToString("yyyy-MM-dd HH:mm:ss"),
EndDate = result.EndDate.ToString("yyyy-MM-dd HH:mm:ss")
}, Formatting.Indented);
Console.WriteLine("Two-Scenarios Backtest Results:");
Console.WriteLine(json);
// Business Logic Baseline Assertions - Updated after bug fix in executor
// These values establish the expected baseline for the two-scenarios test
const decimal expectedFinalPnl = -53491.95m;
const decimal expectedFinalPnl = -34137.424000000000000000000000m;
const double expectedScore = 0.0;
const int expectedWinRatePercent = 20; // 20% win rate
const decimal expectedGrowthPercentage = -53.49m;
const decimal expectedGrowthPercentage = -34.1374240000000000000000m;
// Allow small tolerance for floating-point precision variations
const decimal pnlTolerance = 0.01m;