Fix benchmark tests
This commit is contained in:
@@ -18,11 +18,11 @@ Or run the script directly:
|
|||||||
|
|
||||||
## What it does
|
## What it does
|
||||||
|
|
||||||
1. Runs the **main performance telemetry test** (`ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry`)
|
1. Runs the **main performance telemetry test** (`Telemetry_ETH_RSI`)
|
||||||
2. Runs the **two-scenarios performance test** (`ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry`) - tests pre-calculated signals with 2 indicators and validates business logic consistency
|
2. Runs the **two-scenarios performance test** (`Telemetry_ETH_RSI_EMACROSS`) - tests pre-calculated signals with 2 indicators and validates business logic consistency
|
||||||
3. Runs **two business logic validation tests**:
|
3. Runs **two business logic validation tests**:
|
||||||
- `ExecuteBacktest_With_ETH_FifteenMinutes_Data_Should_Return_LightBacktest`
|
- `ExecuteBacktest_With_ETH_FifteenMinutes_Data_Should_Return_LightBacktest`
|
||||||
- `ExecuteBacktest_With_ETH_FifteenMinutes_Data_Second_File_Should_Return_LightBacktest`
|
- `LongBacktest_ETH_RSI`
|
||||||
4. **Validates Business Logic**: Compares Final PnL with the first run baseline to ensure optimizations don't break behavior
|
4. **Validates Business Logic**: Compares Final PnL with the first run baseline to ensure optimizations don't break behavior
|
||||||
5. Extracts performance metrics from the test output
|
5. Extracts performance metrics from the test output
|
||||||
6. Appends a new row to `src/Managing.Workers.Tests/performance-benchmarks.csv` (main test)
|
6. Appends a new row to `src/Managing.Workers.Tests/performance-benchmarks.csv` (main test)
|
||||||
@@ -196,13 +196,13 @@ The benchmark includes **comprehensive business logic validation** on three leve
|
|||||||
- Validates specific trading scenarios and positions
|
- Validates specific trading scenarios and positions
|
||||||
- Ensures indicator calculations are correct
|
- Ensures indicator calculations are correct
|
||||||
|
|
||||||
- `ExecuteBacktest_With_ETH_FifteenMinutes_Data_Second_File_Should_Return_LightBacktest`
|
- `LongBacktest_ETH_RSI`
|
||||||
- Tests with a different ETH dataset
|
- Tests with a different ETH dataset
|
||||||
- Validates consistency across different market data
|
- Validates consistency across different market data
|
||||||
- Confirms trading logic works reliably
|
- Confirms trading logic works reliably
|
||||||
|
|
||||||
#### 2. **Large Dataset Telemetry Test** (1 test)
|
#### 2. **Large Dataset Telemetry Test** (1 test)
|
||||||
- `ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry`
|
- `Telemetry_ETH_RSI`
|
||||||
- Validates performance metrics extraction
|
- Validates performance metrics extraction
|
||||||
- Confirms signal updates and backtest steps
|
- Confirms signal updates and backtest steps
|
||||||
- Ensures telemetry data is accurate
|
- Ensures telemetry data is accurate
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ ENVIRONMENT="development"
|
|||||||
# Run the main performance test and capture output
|
# Run the main performance test and capture output
|
||||||
echo "📊 Running main performance test..."
|
echo "📊 Running main performance test..."
|
||||||
TEST_OUTPUT=$(dotnet test src/Managing.Workers.Tests/Managing.Workers.Tests.csproj \
|
TEST_OUTPUT=$(dotnet test src/Managing.Workers.Tests/Managing.Workers.Tests.csproj \
|
||||||
--filter "ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry" \
|
--filter "FullyQualifiedName~Telemetry_ETH_RSI&FullyQualifiedName!~EMACROSS" \
|
||||||
--verbosity minimal \
|
--verbosity minimal \
|
||||||
--logger "console;verbosity=detailed" 2>&1)
|
--logger "console;verbosity=detailed" 2>&1)
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ fi
|
|||||||
# Run business logic validation tests
|
# Run business logic validation tests
|
||||||
echo "📊 Running business logic validation tests..."
|
echo "📊 Running business logic validation tests..."
|
||||||
VALIDATION_OUTPUT=$(dotnet test src/Managing.Workers.Tests/Managing.Workers.Tests.csproj \
|
VALIDATION_OUTPUT=$(dotnet test src/Managing.Workers.Tests/Managing.Workers.Tests.csproj \
|
||||||
--filter "ExecuteBacktest_With_ETH_FifteenMinutes_Data_Should_Return_LightBacktest|ExecuteBacktest_With_ETH_FifteenMinutes_Data_Second_File_Should_Return_LightBacktest" \
|
--filter "ExecuteBacktest_With_ETH_FifteenMinutes_Data_Should_Return_LightBacktest|LongBacktest_ETH_RSI" \
|
||||||
--verbosity minimal \
|
--verbosity minimal \
|
||||||
--logger "console;verbosity=detailed" 2>&1)
|
--logger "console;verbosity=detailed" 2>&1)
|
||||||
|
|
||||||
@@ -138,7 +138,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Create CSV row
|
# Create CSV row
|
||||||
CSV_ROW="$TIMESTAMP,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,$CANDLES_COUNT,$EXECUTION_TIME,$PROCESSING_RATE,$MEMORY_START,$MEMORY_END,$MEMORY_PEAK,$SIGNAL_UPDATES,$SIGNAL_SKIPPED,$SIGNAL_EFFICIENCY,$BACKTEST_STEPS,$AVG_SIGNAL_UPDATE,$AVG_BACKTEST_STEP,$FINAL_PNL,$WIN_RATE,$GROWTH_PERCENTAGE,$SCORE,$COMMIT_HASH,$BRANCH_NAME,$ENVIRONMENT"
|
CSV_ROW="$TIMESTAMP,Telemetry_ETH_RSI,$CANDLES_COUNT,$EXECUTION_TIME,$PROCESSING_RATE,$MEMORY_START,$MEMORY_END,$MEMORY_PEAK,$SIGNAL_UPDATES,$SIGNAL_SKIPPED,$SIGNAL_EFFICIENCY,$BACKTEST_STEPS,$AVG_SIGNAL_UPDATE,$AVG_BACKTEST_STEP,$FINAL_PNL,$WIN_RATE,$GROWTH_PERCENTAGE,$SCORE,$COMMIT_HASH,$BRANCH_NAME,$ENVIRONMENT"
|
||||||
|
|
||||||
# Append to CSV file
|
# Append to CSV file
|
||||||
echo "$CSV_ROW" >> "src/Managing.Workers.Tests/performance-benchmarks.csv"
|
echo "$CSV_ROW" >> "src/Managing.Workers.Tests/performance-benchmarks.csv"
|
||||||
@@ -146,7 +146,7 @@ echo "$CSV_ROW" >> "src/Managing.Workers.Tests/performance-benchmarks.csv"
|
|||||||
# Now run the two-scenarios test
|
# Now run the two-scenarios test
|
||||||
echo "📊 Running two-scenarios performance test..."
|
echo "📊 Running two-scenarios performance test..."
|
||||||
TWO_SCENARIOS_OUTPUT=$(dotnet test src/Managing.Workers.Tests/Managing.Workers.Tests.csproj \
|
TWO_SCENARIOS_OUTPUT=$(dotnet test src/Managing.Workers.Tests/Managing.Workers.Tests.csproj \
|
||||||
--filter "ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry" \
|
--filter "Telemetry_ETH_RSI_EMACROSS" \
|
||||||
--verbosity minimal \
|
--verbosity minimal \
|
||||||
--logger "console;verbosity=detailed" 2>&1)
|
--logger "console;verbosity=detailed" 2>&1)
|
||||||
|
|
||||||
@@ -160,14 +160,20 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Extract performance metrics from the two-scenarios test output
|
# Extract performance metrics from the two-scenarios test output
|
||||||
TWO_SCENARIOS_CANDLES_COUNT=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Candles Processed:" | sed 's/.*: //' | sed 's/[^0-9]//g' | xargs)
|
TWO_SCENARIOS_CANDLES_COUNT=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Candles Processed:" | head -1 | sed 's/.*Processed: //' | sed 's/ (.*//' | sed 's/[^0-9]//g' | xargs)
|
||||||
TWO_SCENARIOS_EXECUTION_TIME=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "⏱️ Total Execution Time:" | sed 's/.*: //' | sed 's/s//' | sed 's/,/./g' | awk '{print $NF}' | xargs)
|
TWO_SCENARIOS_EXECUTION_TIME=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "⏱️ Total Execution Time:" | head -1 | sed 's/.*: //' | sed 's/s//' | sed 's/,/./g' | awk '{print $1}' | xargs)
|
||||||
TWO_SCENARIOS_PROCESSING_RATE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Candles Processed:" | sed 's/.*Processed: [0-9]* (//' | sed 's/ candles\/sec)//' | xargs)
|
TWO_SCENARIOS_PROCESSING_RATE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Candles Processed:" | head -1 | sed 's/.*Processed: [0-9]* (//' | sed 's/ candles\/sec).*//' | sed 's/,/./g' | sed 's/[^0-9.]//g' | xargs)
|
||||||
|
|
||||||
# Extract memory metrics (use defaults since two-scenarios test doesn't track detailed memory)
|
# Extract memory metrics from backtest executor output (same format as main test)
|
||||||
TWO_SCENARIOS_MEMORY_START=${MEMORY_START:-0.0}
|
TWO_SCENARIOS_MEMORY_LINE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "💾 Memory Usage:")
|
||||||
TWO_SCENARIOS_MEMORY_END=${MEMORY_END:-0.0}
|
TWO_SCENARIOS_MEMORY_START=$(echo "$TWO_SCENARIOS_MEMORY_LINE" | sed 's/.*Start=//' | sed 's/MB.*//' | xargs)
|
||||||
TWO_SCENARIOS_MEMORY_PEAK=${MEMORY_PEAK:-0.0}
|
TWO_SCENARIOS_MEMORY_END=$(echo "$TWO_SCENARIOS_MEMORY_LINE" | sed 's/.*End=//' | sed 's/MB.*//' | xargs)
|
||||||
|
TWO_SCENARIOS_MEMORY_PEAK=$(echo "$TWO_SCENARIOS_MEMORY_LINE" | sed 's/.*Peak=//' | sed 's/MB.*//' | xargs)
|
||||||
|
|
||||||
|
# Set defaults for missing memory values
|
||||||
|
TWO_SCENARIOS_MEMORY_START=${TWO_SCENARIOS_MEMORY_START:-0.0}
|
||||||
|
TWO_SCENARIOS_MEMORY_END=${TWO_SCENARIOS_MEMORY_END:-0.0}
|
||||||
|
TWO_SCENARIOS_MEMORY_PEAK=${TWO_SCENARIOS_MEMORY_PEAK:-0.0}
|
||||||
|
|
||||||
# Extract signal update metrics (use defaults since two-scenarios test doesn't track these)
|
# Extract signal update metrics (use defaults since two-scenarios test doesn't track these)
|
||||||
TWO_SCENARIOS_SIGNAL_UPDATES=0.0
|
TWO_SCENARIOS_SIGNAL_UPDATES=0.0
|
||||||
@@ -179,13 +185,13 @@ TWO_SCENARIOS_BACKTEST_STEPS=0.0
|
|||||||
TWO_SCENARIOS_AVG_SIGNAL_UPDATE=0.0
|
TWO_SCENARIOS_AVG_SIGNAL_UPDATE=0.0
|
||||||
TWO_SCENARIOS_AVG_BACKTEST_STEP=0.0
|
TWO_SCENARIOS_AVG_BACKTEST_STEP=0.0
|
||||||
|
|
||||||
# Extract trading results
|
# Extract trading results - remove "(Expected: ...)" text and clean values to pure numbers
|
||||||
TWO_SCENARIOS_FINAL_PNL=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "🎯 Final PnL:" | sed 's/.*Final PnL: //' | sed 's/,/./g' | xargs)
|
TWO_SCENARIOS_FINAL_PNL=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "🎯 Final PnL:" | head -1 | sed 's/.*Final PnL: //' | sed 's/ (Expected:.*//' | sed 's/,/./g' | sed 's/[^0-9.-]//g' | xargs)
|
||||||
TWO_SCENARIOS_WIN_RATE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Win Rate:" | sed 's/.*Win Rate: //' | sed 's/%//' | xargs)
|
TWO_SCENARIOS_WIN_RATE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Win Rate:" | head -1 | sed 's/.*Win Rate: //' | sed 's/ (Expected:.*//' | sed 's/%//' | sed 's/[^0-9]//g' | xargs)
|
||||||
TWO_SCENARIOS_GROWTH_PERCENTAGE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Growth:" | sed 's/.*Growth: //' | sed 's/%//' | sed 's/,/./g' | xargs)
|
TWO_SCENARIOS_GROWTH_PERCENTAGE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Growth:" | head -1 | sed 's/.*Growth: //' | sed 's/ (Expected:.*//' | sed 's/%//' | sed 's/,/./g' | sed 's/[^0-9.-]//g' | xargs)
|
||||||
TWO_SCENARIOS_SCORE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📊 Score:" | sed 's/.*Score: //' | sed 's/[^0-9.-]//g' | xargs)
|
TWO_SCENARIOS_SCORE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📊 Score:" | head -1 | sed 's/.*Score: //' | sed 's/ (Expected:.*//' | sed 's/,/./g' | sed 's/[^0-9.-]//g' | xargs)
|
||||||
|
|
||||||
# Set defaults for missing values
|
# Set defaults for missing values and ensure clean numeric format
|
||||||
TWO_SCENARIOS_CANDLES_COUNT=${TWO_SCENARIOS_CANDLES_COUNT:-0}
|
TWO_SCENARIOS_CANDLES_COUNT=${TWO_SCENARIOS_CANDLES_COUNT:-0}
|
||||||
TWO_SCENARIOS_EXECUTION_TIME=${TWO_SCENARIOS_EXECUTION_TIME:-0.0}
|
TWO_SCENARIOS_EXECUTION_TIME=${TWO_SCENARIOS_EXECUTION_TIME:-0.0}
|
||||||
TWO_SCENARIOS_PROCESSING_RATE=${TWO_SCENARIOS_PROCESSING_RATE:-0.0}
|
TWO_SCENARIOS_PROCESSING_RATE=${TWO_SCENARIOS_PROCESSING_RATE:-0.0}
|
||||||
@@ -194,11 +200,17 @@ TWO_SCENARIOS_WIN_RATE=${TWO_SCENARIOS_WIN_RATE:-0}
|
|||||||
TWO_SCENARIOS_GROWTH_PERCENTAGE=${TWO_SCENARIOS_GROWTH_PERCENTAGE:-0.00}
|
TWO_SCENARIOS_GROWTH_PERCENTAGE=${TWO_SCENARIOS_GROWTH_PERCENTAGE:-0.00}
|
||||||
TWO_SCENARIOS_SCORE=${TWO_SCENARIOS_SCORE:-0.00}
|
TWO_SCENARIOS_SCORE=${TWO_SCENARIOS_SCORE:-0.00}
|
||||||
|
|
||||||
# Fix malformed values
|
# Ensure all values are clean numbers (remove any remaining non-numeric characters except decimal point and minus)
|
||||||
TWO_SCENARIOS_SCORE=$(echo "$TWO_SCENARIOS_SCORE" | sed 's/^0*$/0.00/' | xargs)
|
TWO_SCENARIOS_CANDLES_COUNT=$(echo "$TWO_SCENARIOS_CANDLES_COUNT" | sed 's/[^0-9]//g')
|
||||||
|
TWO_SCENARIOS_EXECUTION_TIME=$(echo "$TWO_SCENARIOS_EXECUTION_TIME" | sed 's/[^0-9.]//g')
|
||||||
|
TWO_SCENARIOS_PROCESSING_RATE=$(echo "$TWO_SCENARIOS_PROCESSING_RATE" | sed 's/[^0-9.]//g')
|
||||||
|
TWO_SCENARIOS_FINAL_PNL=$(echo "$TWO_SCENARIOS_FINAL_PNL" | sed 's/[^0-9.-]//g')
|
||||||
|
TWO_SCENARIOS_WIN_RATE=$(echo "$TWO_SCENARIOS_WIN_RATE" | sed 's/[^0-9]//g')
|
||||||
|
TWO_SCENARIOS_GROWTH_PERCENTAGE=$(echo "$TWO_SCENARIOS_GROWTH_PERCENTAGE" | sed 's/[^0-9.-]//g')
|
||||||
|
TWO_SCENARIOS_SCORE=$(echo "$TWO_SCENARIOS_SCORE" | sed 's/[^0-9.-]//g' | sed 's/^$/0.00/')
|
||||||
|
|
||||||
# Create CSV row for two-scenarios test
|
# Create CSV row for two-scenarios test
|
||||||
TWO_SCENARIOS_CSV_ROW="$TIMESTAMP,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,$TWO_SCENARIOS_CANDLES_COUNT,$TWO_SCENARIOS_EXECUTION_TIME,$TWO_SCENARIOS_PROCESSING_RATE,$TWO_SCENARIOS_MEMORY_START,$TWO_SCENARIOS_MEMORY_END,$TWO_SCENARIOS_MEMORY_PEAK,$TWO_SCENARIOS_SIGNAL_UPDATES,$TWO_SCENARIOS_SIGNAL_SKIPPED,$TWO_SCENARIOS_SIGNAL_EFFICIENCY,$TWO_SCENARIOS_BACKTEST_STEPS,$TWO_SCENARIOS_AVG_SIGNAL_UPDATE,$TWO_SCENARIOS_AVG_BACKTEST_STEP,$TWO_SCENARIOS_FINAL_PNL,$TWO_SCENARIOS_WIN_RATE,$TWO_SCENARIOS_GROWTH_PERCENTAGE,$TWO_SCENARIOS_SCORE,$COMMIT_HASH,$BRANCH_NAME,$ENVIRONMENT"
|
TWO_SCENARIOS_CSV_ROW="$TIMESTAMP,Telemetry_ETH_RSI_EMACROSS,$TWO_SCENARIOS_CANDLES_COUNT,$TWO_SCENARIOS_EXECUTION_TIME,$TWO_SCENARIOS_PROCESSING_RATE,$TWO_SCENARIOS_MEMORY_START,$TWO_SCENARIOS_MEMORY_END,$TWO_SCENARIOS_MEMORY_PEAK,$TWO_SCENARIOS_SIGNAL_UPDATES,$TWO_SCENARIOS_SIGNAL_SKIPPED,$TWO_SCENARIOS_SIGNAL_EFFICIENCY,$TWO_SCENARIOS_BACKTEST_STEPS,$TWO_SCENARIOS_AVG_SIGNAL_UPDATE,$TWO_SCENARIOS_AVG_BACKTEST_STEP,$TWO_SCENARIOS_FINAL_PNL,$TWO_SCENARIOS_WIN_RATE,$TWO_SCENARIOS_GROWTH_PERCENTAGE,$TWO_SCENARIOS_SCORE,$COMMIT_HASH,$BRANCH_NAME,$ENVIRONMENT"
|
||||||
|
|
||||||
# Append to two-scenarios CSV file
|
# Append to two-scenarios CSV file
|
||||||
echo "$TWO_SCENARIOS_CSV_ROW" >> "src/Managing.Workers.Tests/performance-benchmarks-two-scenarios.csv"
|
echo "$TWO_SCENARIOS_CSV_ROW" >> "src/Managing.Workers.Tests/performance-benchmarks-two-scenarios.csv"
|
||||||
|
|||||||
@@ -172,17 +172,17 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
|||||||
Assert.NotNull(result);
|
Assert.NotNull(result);
|
||||||
Assert.IsType<LightBacktest>(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(1000.0m, result.InitialBalance);
|
||||||
Assert.Equal(-56.818877583865955744129267779m, result.FinalPnl);
|
Assert.Equal(-106.56099322216572799788857674m, result.FinalPnl);
|
||||||
Assert.Equal(27, result.WinRate);
|
Assert.Equal(31, result.WinRate);
|
||||||
Assert.Equal(-5.68188775838659557441292678m, result.GrowthPercentage);
|
Assert.Equal(-10.65609932221657279978885767m, result.GrowthPercentage);
|
||||||
Assert.Equal(-0.67091284426766023865867781m, result.HodlPercentage);
|
Assert.Equal(-0.67091284426766023865867781m, result.HodlPercentage);
|
||||||
Assert.Equal(32.743730170640305101217109572m, result.Fees);
|
Assert.Equal(80.79928757024963503097372311m, result.Fees);
|
||||||
Assert.Equal(-89.56260775450626084534637735m, result.NetPnl);
|
Assert.Equal(-187.36028079241536302886229985m, result.NetPnl);
|
||||||
Assert.Equal(113.1221106135963492628919622m, result.MaxDrawdown);
|
Assert.Equal(247.6174188306195945127193964m, result.MaxDrawdown);
|
||||||
Assert.True(Math.Abs((double)(result.SharpeRatio ?? 0) - (-0.01779902594116203)) < 0.01,
|
Assert.True(Math.Abs((double)(result.SharpeRatio ?? 0) - (-0.02128926270325995)) < 0.01,
|
||||||
$"SharpeRatio mismatch: expected ~-0.01779902594116203, got {result.SharpeRatio}");
|
$"SharpeRatio mismatch: expected ~-0.02128926270325995, got {result.SharpeRatio}");
|
||||||
Assert.Equal((double)0.0m, result.Score);
|
Assert.Equal((double)0.0m, result.Score);
|
||||||
|
|
||||||
// Validate dates
|
// Validate dates
|
||||||
@@ -192,7 +192,7 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ExecuteBacktest_With_ETH_FifteenMinutes_Data_Second_File_Should_Return_LightBacktest()
|
public async Task LongBacktest_ETH_RSI()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var candles =
|
var candles =
|
||||||
@@ -264,19 +264,18 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
|||||||
Assert.NotNull(result);
|
Assert.NotNull(result);
|
||||||
Assert.IsType<LightBacktest>(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(100000.0m, result.InitialBalance);
|
||||||
Assert.Equal(22032.782058855250417361483713m, result.FinalPnl);
|
Assert.Equal(-51432.265731849885674051903916m, result.FinalPnl);
|
||||||
Assert.Equal(37, result.WinRate);
|
Assert.Equal(21, result.WinRate);
|
||||||
Assert.Equal(22.03278205885525041736148371m, result.GrowthPercentage);
|
Assert.Equal(-51.432265731849885674051903916m, result.GrowthPercentage);
|
||||||
Assert.Equal(-12.86812721679866545042180006m, result.HodlPercentage);
|
Assert.Equal(-12.86812721679866545042180006m, result.HodlPercentage);
|
||||||
Assert.Equal(10846.532763656018618890408138m, result.Fees);
|
Assert.Equal(22264.708181615670578972912983m, result.Fees);
|
||||||
Assert.Equal(11186.249295199231798471075575m, result.NetPnl);
|
Assert.Equal(-73696.973913465556253024816899m, result.NetPnl);
|
||||||
Assert.Equal(15021.41953476671701958923630m, result.MaxDrawdown);
|
Assert.Equal(53475.731588491336432196999149m, result.MaxDrawdown);
|
||||||
Assert.True(Math.Abs((double)(result.SharpeRatio ?? 0) - 0.013497) < 0.01,
|
Assert.True(Math.Abs((double)(result.SharpeRatio ?? 0) - (-0.029960456261340647)) < 0.01,
|
||||||
$"SharpeRatio mismatch: expected ~0.013497, got {result.SharpeRatio}"); // Use tolerance for floating point precision
|
$"SharpeRatio mismatch: expected ~-0.029960456261340647, got {result.SharpeRatio}"); // Use tolerance for floating point precision
|
||||||
Assert.True(Math.Abs((double)58.00807367446997 - result.Score) < 0.1,
|
Assert.Equal((double)0.0m, result.Score);
|
||||||
$"Score mismatch: expected ~58.00807367446997, got {result.Score}"); // Use tolerance for floating point precision
|
|
||||||
|
|
||||||
// Validate dates - Updated to match actual results from ETH-FifteenMinutes-candles-20:44:15 +00:00-.json
|
// 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);
|
Assert.Equal(new DateTime(2025, 9, 11, 20, 45, 0), result.StartDate);
|
||||||
@@ -285,7 +284,7 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[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
|
// Arrange - Use the large dataset for performance testing
|
||||||
var candles =
|
var candles =
|
||||||
@@ -373,7 +372,7 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[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
|
// Arrange - Test with 2 indicators to verify pre-calculated signals optimization works with multiple scenarios
|
||||||
var candles =
|
var candles =
|
||||||
@@ -429,14 +428,14 @@ public class BacktestExecutorTests : BaseTests, IDisposable
|
|||||||
Assert.NotNull(result);
|
Assert.NotNull(result);
|
||||||
Assert.Equal(Ticker.ETH, result.Config.Ticker);
|
Assert.Equal(Ticker.ETH, result.Config.Ticker);
|
||||||
Assert.Equal(100000, result.InitialBalance);
|
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
|
// These values establish the expected baseline for the two-scenarios test
|
||||||
const decimal expectedFinalPnl = 2018.27m;
|
const decimal expectedFinalPnl = -53491.95m;
|
||||||
const double expectedScore = 19.18;
|
const double expectedScore = 0.0;
|
||||||
const int expectedWinRatePercent = 40; // 40% win rate
|
const int expectedWinRatePercent = 20; // 20% win rate
|
||||||
const decimal expectedGrowthPercentage = 2.02m;
|
const decimal expectedGrowthPercentage = -53.49m;
|
||||||
|
|
||||||
// Allow small tolerance for floating-point precision variations
|
// Allow small tolerance for floating-point precision variations
|
||||||
const decimal pnlTolerance = 0.01m;
|
const decimal pnlTolerance = 0.01m;
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
DateTime,TestName,CandlesCount,ExecutionTimeSeconds,ProcessingRateCandlesPerSec,MemoryStartMB,MemoryEndMB,MemoryPeakMB,SignalUpdatesCount,SignalUpdatesSkipped,SignalUpdateEfficiencyPercent,BacktestStepsCount,AverageSignalUpdateMs,AverageBacktestStepMs,FinalPnL,WinRatePercent,GrowthPercentage,Score,CommitHash,GitBranch,Environment
|
DateTime,TestName,CandlesCount,ExecutionTimeSeconds,ProcessingRateCandlesPerSec,MemoryStartMB,MemoryEndMB,MemoryPeakMB,SignalUpdatesCount,SignalUpdatesSkipped,SignalUpdateEfficiencyPercent,BacktestStepsCount,AverageSignalUpdateMs,AverageBacktestStepMs,FinalPnL,WinRatePercent,GrowthPercentage,Score,CommitHash,GitBranch,Environment
|
||||||
2025-11-11T06:53:40Z,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,576037926 576037588,1.52 1.53,3792.6 3758,8,15.26,11.35,23.73,0.0,0,0.0,0.0,0.0,0.0,2018.27,4 000,00,2.02,1919,e810ab60,dev,development
|
2025-11-11T06:53:40Z,Telemetry_ETH_RSI_EMACROSS,5760,1.52,3792.6,15.26,11.35,23.73,0.0,0,0.0,0.0,0.0,0.0,2018.27,40,2.02,19.18,e810ab60,dev,development
|
||||||
2025-11-11T06:58:31Z,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,576038904 576038584,1.48 1.49,3890.4 3858,4,15.27,11.03,23.74,0.0,0,0.0,0.0,0.0,0.0,2018.27 (Expected: 2018.27),4 000,00 (Expected: 40,0%),2.02 (Expected: 2.02%),19181918,e810ab60,dev,development
|
2025-11-11T06:58:31Z,Telemetry_ETH_RSI_EMACROSS,5760,1.48,3890.4,15.27,11.03,23.74,0.0,0,0.0,0.0,0.0,0.0,2018.27,40,2.02,19.18,e810ab60,dev,development
|
||||||
2025-11-11T07:03:00Z,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,576033954 576033649,1.70 1.71,3395.4 3364,9,15.29,11.00,23.75,0.0,0,0.0,0.0,0.0,0.0,2018.27 (Expected: 2018.27),40 (Expected: 40%),2.02 (Expected: 2.02%),19191918,e810ab60,dev,development
|
2025-11-11T07:03:00Z,Telemetry_ETH_RSI_EMACROSS,5760,1.70,3395.4,15.29,11.00,23.75,0.0,0,0.0,0.0,0.0,0.0,2018.27,40,2.02,19.18,e810ab60,dev,development
|
||||||
2025-11-11T07:07:23Z,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,576028957 576028743,1.99 2.00,2895.7 2874,3,15.30,11.20,24.91,0.0,0,0.0,0.0,0.0,0.0,2018.27 (Expected: 2018.27),40 (Expected: 40%),2.02 (Expected: 2.02%),19181918,90341369,dev,development
|
2025-11-11T07:07:23Z,Telemetry_ETH_RSI_EMACROSS,5760,1.99,2895.7,15.30,11.20,24.91,0.0,0,0.0,0.0,0.0,0.0,2018.27,40,2.02,19.18,90341369,dev,development
|
||||||
2025-11-11T07:08:48Z,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,576020748 576020540,2.78 2.80,2074.8 2054,0,15.27,11.13,24.95,0.0,0,0.0,0.0,0.0,0.0,2018.27 (Expected: 2018.27),40 (Expected: 40%),2.02 (Expected: 2.02%),19181918,90341369,dev,development
|
2025-11-11T07:08:48Z,Telemetry_ETH_RSI_EMACROSS,5760,2.78,2074.8,15.27,11.13,24.95,0.0,0,0.0,0.0,0.0,0.0,2018.27,40,2.02,19.18,90341369,dev,development
|
||||||
2025-11-11T07:09:35Z,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,576019355 576019187,2.98 3.00,1935.5 1918,7,15.28,11.27,23.74,0.0,0,0.0,0.0,0.0,0.0,2018.27 (Expected: 2018.27),40 (Expected: 40%),2.02 (Expected: 2.02%),19181918,90341369,dev,development
|
2025-11-11T07:09:35Z,Telemetry_ETH_RSI_EMACROSS,5760,2.98,1935.5,15.28,11.27,23.74,0.0,0,0.0,0.0,0.0,0.0,2018.27,40,2.02,19.18,90341369,dev,development
|
||||||
2025-11-11T07:10:15Z,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,576031357 576031098,1.84 1.85,3135.7 3109,8,15.29,11.08,24.89,0.0,0,0.0,0.0,0.0,0.0,2018.27 (Expected: 2018.27),40 (Expected: 40%),2.02 (Expected: 2.02%),19181918,90341369,dev,development
|
2025-11-11T07:10:15Z,Telemetry_ETH_RSI_EMACROSS,5760,1.84,3135.7,15.29,11.08,24.89,0.0,0,0.0,0.0,0.0,0.0,2018.27,40,2.02,19.18,90341369,dev,development
|
||||||
2025-11-11T07:10:55Z,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,576034016 576033795,1.69 1.70,3401.6 3379,5,15.27,11.27,23.74,0.0,0,0.0,0.0,0.0,0.0,2018.27 (Expected: 2018.27),40 (Expected: 40%),2.02 (Expected: 2.02%),19181918,90341369,dev,development
|
2025-11-11T07:10:55Z,Telemetry_ETH_RSI_EMACROSS,5760,1.69,3401.6,15.27,11.27,23.74,0.0,0,0.0,0.0,0.0,0.0,2018.27,40,2.02,19.18,90341369,dev,development
|
||||||
2025-11-11T07:14:07Z,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,576029692 576029392,1.94 1.96,2969.2 2939,2,15.26,10.16,23.73,0.0,0,0.0,0.0,0.0,0.0,2018.27 (Expected: 2018.27),40 (Expected: 40%),2.02 (Expected: 2.02%),19191918,90341369,dev,development
|
2025-11-11T07:14:07Z,Telemetry_ETH_RSI_EMACROSS,5760,1.94,2969.2,15.26,10.16,23.73,0.0,0,0.0,0.0,0.0,0.0,2018.27,40,2.02,19.18,90341369,dev,development
|
||||||
2025-11-11T07:15:11Z,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,576018866 576018800,3.05 3.06,1886.6 1880,0,15.71,10.54,24.24,0.0,0,0.0,0.0,0.0,0.0,2018.27 (Expected: 2018.27),40 (Expected: 40%),2.02 (Expected: 2.02%),19181918,90341369,dev,development
|
2025-11-11T07:15:11Z,Telemetry_ETH_RSI_EMACROSS,5760,3.05,1886.6,15.71,10.54,24.24,0.0,0,0.0,0.0,0.0,0.0,2018.27,40,2.02,19.18,90341369,dev,development
|
||||||
|
2025-11-12T13:40:48Z,Telemetry_ETH_RSI_EMACROSS,5760,6.78,849.3,15.28,17.38,24.12,0.0,0,0.0,0.0,0.0,0.0,-53491.95,20,-53.49,0.00,e0d21115,dev,development
|
||||||
|
2025-11-12T13:49:57Z,Telemetry_ETH_RSI_EMACROSS,5760,3.56,1618.6,15.26,17.44,23.51,0.0,0,0.0,0.0,0.0,0.0,-53491.95,20,-53.49,0.00,e0d21115,dev,development
|
||||||
|
2025-11-12T13:56:26Z,Telemetry_ETH_RSI_EMACROSS,5760,6.32,910.9,15.26,15.84,23.13,0.0,0,0.0,0.0,0.0,0.0,-53491.95,20,-53.49,0.00,e0d21115,dev,development
|
||||||
|
|||||||
|
@@ -1,53 +1,56 @@
|
|||||||
DateTime,TestName,CandlesCount,ExecutionTimeSeconds,ProcessingRateCandlesPerSec,MemoryStartMB,MemoryEndMB,MemoryPeakMB,SignalUpdatesCount,SignalUpdatesSkipped,SignalUpdateEfficiencyPercent,BacktestStepsCount,AverageSignalUpdateMs,AverageBacktestStepMs,FinalPnL,WinRatePercent,GrowthPercentage,Score,CommitHash,GitBranch,Environment
|
DateTime,TestName,CandlesCount,ExecutionTimeSeconds,ProcessingRateCandlesPerSec,MemoryStartMB,MemoryEndMB,MemoryPeakMB,SignalUpdatesCount,SignalUpdatesSkipped,SignalUpdateEfficiencyPercent,BacktestStepsCount,AverageSignalUpdateMs,AverageBacktestStepMs,FinalPnL,WinRatePercent,GrowthPercentage,Score,CommitHash,GitBranch,Environment
|
||||||
2025-11-11T12:00:00Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.15,2684.8,16.05,23.90,24.24,7706,3814,33.1,5760,0.26,0.01,24560.79,38,24.56,60.15,14bc98d5,dev,development
|
2025-11-11T12:00:00Z,Telemetry_ETH_RSI,5760,2.15,2684.8,16.05,23.90,24.24,7706,3814,33.1,5760,0.26,0.01,24560.79,38,24.56,60.15,14bc98d5,dev,development
|
||||||
2025-11-11T04:14:08Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.54,2244.2,15.27,24.08,23.72,2207.52,3814,33.1,200.48,0.29,0.03,4010.63,28,4.01,3.34,14bc98d5,dev,development
|
2025-11-11T04:14:08Z,Telemetry_ETH_RSI,5760,2.54,2244.2,15.27,24.08,23.72,2207.52,3814,33.1,200.48,0.29,0.03,4010.63,28,4.01,3.34,14bc98d5,dev,development
|
||||||
2025-11-11T04:14:39Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.73,2091.2,15.26,24.36,23.99,2102.66,3814,33.1,372.82,0.27,0.06,4010.63,28,4.01,3.34,b0b757b1,dev,development
|
2025-11-11T04:14:39Z,Telemetry_ETH_RSI,5760,2.73,2091.2,15.26,24.36,23.99,2102.66,3814,33.1,372.82,0.27,0.06,4010.63,28,4.01,3.34,b0b757b1,dev,development
|
||||||
2025-11-11T04:16:43Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.87,3061.1,15.26,23.95,23.67,1600.09,3814,33.1,115.52,0.21,0.02,4010.63,28,4.01,3.34,e5caf1cd,dev,development
|
2025-11-11T04:16:43Z,Telemetry_ETH_RSI,5760,1.87,3061.1,15.26,23.95,23.67,1600.09,3814,33.1,115.52,0.21,0.02,4010.63,28,4.01,3.34,e5caf1cd,dev,development
|
||||||
2025-11-11T04:26:29Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.20,4782.4,15.26,18.01,23.47,1068.51,3814,33.1,53.69,0.14,0.01,-2431.04,54,-2.43,0.00,14d101b6,dev,development
|
2025-11-11T04:26:29Z,Telemetry_ETH_RSI,5760,1.20,4782.4,15.26,18.01,23.47,1068.51,3814,33.1,53.69,0.14,0.01,-2431.04,54,-2.43,0.00,14d101b6,dev,development
|
||||||
2025-11-11T04:31:06Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.14 2.17,2658.3,15.28,17.89,23.73,1875.99,3814,33.1,123.31,0.24,0.02,-2431.04,54,-2.43,0.00,47911c28,dev,development
|
2025-11-11T04:31:06Z,Telemetry_ETH_RSI,5760,2.14 2.17,2658.3,15.28,17.89,23.73,1875.99,3814,33.1,123.31,0.24,0.02,-2431.04,54,-2.43,0.00,47911c28,dev,development
|
||||||
2025-11-11T04:32:55Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.41 1.43,40376,15.26,17.79,23.47,1186.69,3814,33.1,90.22,0.15,0.02,-243104,54,-243,000,47911c28,dev,development
|
2025-11-11T04:32:55Z,Telemetry_ETH_RSI,5760,1.41 1.43,40376,15.26,17.79,23.47,1186.69,3814,33.1,90.22,0.15,0.02,-243104,54,-243,000,47911c28,dev,development
|
||||||
2025-11-11T04:34:42Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.61 2.63,2186.0,15.26,17.85,23.73,2329.99,3814,33.1,134.43,0.30,0.02,-2431.04,54,-2.43,0.00,47911c28,dev,development
|
2025-11-11T04:34:42Z,Telemetry_ETH_RSI,5760,2.61 2.63,2186.0,15.26,17.85,23.73,2329.99,3814,33.1,134.43,0.30,0.02,-2431.04,54,-2.43,0.00,47911c28,dev,development
|
||||||
2025-11-11T04:35:43Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.845,3104.7,15.26,17.82,23.73,1586.43,3814,33.1,106.98,0.21,0.02,-2431.04,54,-2.43,000,47911c28,dev,development
|
2025-11-11T04:35:43Z,Telemetry_ETH_RSI,5760,1.845,3104.7,15.26,17.82,23.73,1586.43,3814,33.1,106.98,0.21,0.02,-2431.04,54,-2.43,000,47911c28,dev,development
|
||||||
2025-11-11T04:37:04Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.115,2686.2,15.71,17.55,23.91,1762.82,3814,33.1,178.50,0.23,0.03,-2431.04,54,-2.43,0.00,567de2e5,dev,development
|
2025-11-11T04:37:04Z,Telemetry_ETH_RSI,5760,2.115,2686.2,15.71,17.55,23.91,1762.82,3814,33.1,178.50,0.23,0.03,-2431.04,54,-2.43,0.00,567de2e5,dev,development
|
||||||
2025-11-11T04:41:15Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.185,4835.7,15.26,18.02,23.47,1031.96,3814,33.1,73.13,0.13,0.01,-2431.04,54,-2.43,0.00,2a0fbf9b,dev,development
|
2025-11-11T04:41:15Z,Telemetry_ETH_RSI,5760,1.185,4835.7,15.26,18.02,23.47,1031.96,3814,33.1,73.13,0.13,0.01,-2431.04,54,-2.43,0.00,2a0fbf9b,dev,development
|
||||||
2025-11-11T04:43:07Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.515,3780.7,15.27,17.97,23.71,1356.28,3814,33.1,75.68,0.18,0.01,-2431.04,54,-2.43,0.00,2a0fbf9b,dev,development
|
2025-11-11T04:43:07Z,Telemetry_ETH_RSI,5760,1.515,3780.7,15.27,17.97,23.71,1356.28,3814,33.1,75.68,0.18,0.01,-2431.04,54,-2.43,0.00,2a0fbf9b,dev,development
|
||||||
2025-11-11T04:44:55Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.205,4763.7,15.27,22.29,23.54,1051.53,3828,33.2,73.41,0.14,0.01,-926.35,54,-0.93,0.00,2a0fbf9b,dev,development
|
2025-11-11T04:44:55Z,Telemetry_ETH_RSI,5760,1.205,4763.7,15.27,22.29,23.54,1051.53,3828,33.2,73.41,0.14,0.01,-926.35,54,-0.93,0.00,2a0fbf9b,dev,development
|
||||||
2025-11-11T04:45:58Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.355,4225.9,15.25,22.63,23.51,1206.02,3828,33.2,73.26,0.16,0.01,-926.35,54,-0.93,0.00,2a0fbf9b,dev,development
|
2025-11-11T04:45:58Z,Telemetry_ETH_RSI,5760,1.355,4225.9,15.25,22.63,23.51,1206.02,3828,33.2,73.26,0.16,0.01,-926.35,54,-0.93,0.00,2a0fbf9b,dev,development
|
||||||
2025-11-11T04:47:41Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.245,2561.0,15.26,22.13,23.55,1985.06,3828,33.2,123.63,0.26,0.02,-926.35,54,-0.93,0.00,2a0fbf9b,dev,development
|
2025-11-11T04:47:41Z,Telemetry_ETH_RSI,5760,2.245,2561.0,15.26,22.13,23.55,1985.06,3828,33.2,123.63,0.26,0.02,-926.35,54,-0.93,0.00,2a0fbf9b,dev,development
|
||||||
2025-11-11T04:52:39Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.115,5152.6,15.26,13.71,24.64,963.17,3828,33.2,77.20,0.13,0.01,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
2025-11-11T04:52:39Z,Telemetry_ETH_RSI,5760,1.115,5152.6,15.26,13.71,24.64,963.17,3828,33.2,77.20,0.13,0.01,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
||||||
2025-11-11T04:53:16Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.455,3933.6,15.26,13.56,25.20,1240.30,3828,33.2,112.03,0.16,0.02,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
2025-11-11T04:53:16Z,Telemetry_ETH_RSI,5760,1.455,3933.6,15.26,13.56,25.20,1240.30,3828,33.2,112.03,0.16,0.02,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
||||||
2025-11-11T04:56:15Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.14,2683.2,15.27,13.85,25.18,1763.50,3828,33.2,204.74,0.23,0.04,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
2025-11-11T04:56:15Z,Telemetry_ETH_RSI,5760,2.14,2683.2,15.27,13.85,25.18,1763.50,3828,33.2,204.74,0.23,0.04,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
||||||
2025-11-11T04:57:14Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.99,2883.5,15.26,13.73,25.11,1589.82,3828,33.2,258.98,0.21,0.04,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
2025-11-11T04:57:14Z,Telemetry_ETH_RSI,5760,1.99,2883.5,15.26,13.73,25.11,1589.82,3828,33.2,258.98,0.21,0.04,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
||||||
2025-11-11T04:59:09Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.695,2127.6,15.26,13.64,24.65,2283.69,3828,33.2,209.33,0.30,0.04,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
2025-11-11T04:59:09Z,Telemetry_ETH_RSI,5760,2.695,2127.6,15.26,13.64,24.65,2283.69,3828,33.2,209.33,0.30,0.04,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
||||||
2025-11-11T05:13:30Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.49,2300.8,15.27,13.68,25.14,2085.01,3828,33.2,232.91,0.27,0.04,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
2025-11-11T05:13:30Z,Telemetry_ETH_RSI,5760,2.49,2300.8,15.27,13.68,25.14,2085.01,3828,33.2,232.91,0.27,0.04,24560.79,38,24.56,6015,2a0fbf9b,dev,development
|
||||||
2025-11-11T05:18:07Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.325,4316.5,15.25,13.83,24.63,1119.29,3828,33.2,112.94,0.15,0.02,24560.79,38,24.56,6015,1792cd23,dev,development
|
2025-11-11T05:18:07Z,Telemetry_ETH_RSI,5760,1.325,4316.5,15.25,13.83,24.63,1119.29,3828,33.2,112.94,0.15,0.02,24560.79,38,24.56,6015,1792cd23,dev,development
|
||||||
2025-11-11T05:21:03Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.015,5659.9,15.27,10.17,24.65,886.92,3828,33.2,58.10,0.12,0.01,24560.79,38,24.56,6015,1792cd23,dev,development
|
2025-11-11T05:21:03Z,Telemetry_ETH_RSI,5760,1.015,5659.9,15.27,10.17,24.65,886.92,3828,33.2,58.10,0.12,0.01,24560.79,38,24.56,6015,1792cd23,dev,development
|
||||||
2025-11-11T05:22:42Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.025,5602.9,15.26,10.15,24.61,898.21,3828,33.2,58.23,0.12,0.01,24560.79,38,24.56,6015,46966cc5,dev,development
|
2025-11-11T05:22:42Z,Telemetry_ETH_RSI,5760,1.025,5602.9,15.26,10.15,24.61,898.21,3828,33.2,58.23,0.12,0.01,24560.79,38,24.56,6015,46966cc5,dev,development
|
||||||
2025-11-11T05:24:05Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.73,2099.4,15.27,11.24,25.12,2350.71,3828,33.2,172.82,0.31,0.03,24560.79,38,24.56,6015,46966cc5,dev,development
|
2025-11-11T05:24:05Z,Telemetry_ETH_RSI,5760,2.73,2099.4,15.27,11.24,25.12,2350.71,3828,33.2,172.82,0.31,0.03,24560.79,38,24.56,6015,46966cc5,dev,development
|
||||||
2025-11-11T05:24:53Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.82,3151.4,15.26,11.16,24.64,1547.05,3828,33.2,128.87,0.20,0.02,24560.79,38,24.56,6015,46966cc5,dev,development
|
2025-11-11T05:24:53Z,Telemetry_ETH_RSI,5760,1.82,3151.4,15.26,11.16,24.64,1547.05,3828,33.2,128.87,0.20,0.02,24560.79,38,24.56,6015,46966cc5,dev,development
|
||||||
2025-11-11T05:25:48Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.87,3069.1,15.26,11.10,24.65,1634.11,3828,33.2,118.83,0.21,0.02,24560.79,38,24.56,6015,46966cc5,dev,development
|
2025-11-11T05:25:48Z,Telemetry_ETH_RSI,5760,1.87,3069.1,15.26,11.10,24.65,1634.11,3828,33.2,118.83,0.21,0.02,24560.79,38,24.56,6015,46966cc5,dev,development
|
||||||
2025-11-11T05:26:29Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.265,4533.9,15.27,11.26,24.66,1075.57,3828,33.2,89.65,0.14,0.02,24560.79,38,24.56,6015,46966cc5,dev,development
|
2025-11-11T05:26:29Z,Telemetry_ETH_RSI,5760,1.265,4533.9,15.27,11.26,24.66,1075.57,3828,33.2,89.65,0.14,0.02,24560.79,38,24.56,6015,46966cc5,dev,development
|
||||||
2025-11-11T05:27:07Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.005,5688.8,15.26,10.17,24.66,875.93,3828,33.2,61.25,0.11,0.01,24560.79,38,24.56,6015,61fdcec9,dev,development
|
2025-11-11T05:27:07Z,Telemetry_ETH_RSI,5760,1.005,5688.8,15.26,10.17,24.66,875.93,3828,33.2,61.25,0.11,0.01,24560.79,38,24.56,6015,61fdcec9,dev,development
|
||||||
2025-11-11T05:31:12Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.175,2637.3,15.26,10.76,25.26,1805.96,3828,33.2,229.60,0.23,0.04,24560.79,38,24.56,6015,578709d9,dev,development
|
2025-11-11T05:31:12Z,Telemetry_ETH_RSI,5760,2.175,2637.3,15.26,10.76,25.26,1805.96,3828,33.2,229.60,0.23,0.04,24560.79,38,24.56,6015,578709d9,dev,development
|
||||||
2025-11-11T05:41:24Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,0.955,6015.5,15.26,10.12,24.63,832.39,3828,33.2,58.02,0.11,0.01,24560.79,38,24.56,6015,fc0ce053,dev,development
|
2025-11-11T05:41:24Z,Telemetry_ETH_RSI,5760,0.955,6015.5,15.26,10.12,24.63,832.39,3828,33.2,58.02,0.11,0.01,24560.79,38,24.56,6015,fc0ce053,dev,development
|
||||||
2025-11-11T05:50:25Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,0.915,6292.9,15.27,11.04,23.72,770.66,3828,66.5,69.13,0.40,0.01,24560.79,38,24.56,6015,c66f6279,dev,development
|
2025-11-11T05:50:25Z,Telemetry_ETH_RSI,5760,0.915,6292.9,15.27,11.04,23.72,770.66,3828,66.5,69.13,0.40,0.01,24560.79,38,24.56,6015,c66f6279,dev,development
|
||||||
2025-11-11T05:52:21Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.045,5475.3,15.27,11.30,23.71,907.47,3828,66.5,64.87,0.47,0.01,24560.79,38,24.56,6015,c66f6279,dev,development
|
2025-11-11T05:52:21Z,Telemetry_ETH_RSI,5760,1.045,5475.3,15.27,11.30,23.71,907.47,3828,66.5,64.87,0.47,0.01,24560.79,38,24.56,6015,c66f6279,dev,development
|
||||||
2025-11-11T05:54:40Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.445,3959.3,15.26,11.11,23.72,1222.26,3828,66.5,111.35,0.63,0.02,24560.79,38,24.56,6015,c66f6279,dev,development
|
2025-11-11T05:54:40Z,Telemetry_ETH_RSI,5760,1.445,3959.3,15.26,11.11,23.72,1222.26,3828,66.5,111.35,0.63,0.02,24560.79,38,24.56,6015,c66f6279,dev,development
|
||||||
2025-11-11T06:10:59Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.22,4683.2,15.26,10.84,23.72,1048.26,3828,66.5,79.79,0.54,0.01,24560.79,38,24.56,6015,e810ab60,dev,development
|
2025-11-11T06:10:59Z,Telemetry_ETH_RSI,5760,1.22,4683.2,15.26,10.84,23.72,1048.26,3828,66.5,79.79,0.54,0.01,24560.79,38,24.56,6015,e810ab60,dev,development
|
||||||
2025-11-11T06:15:18Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.85,3102.1,15.78,14.48,24.59,1559.17,3828,66.5,142.94,0.81,0.02,24560.79,38,24.56,6015,e810ab60,dev,development
|
2025-11-11T06:15:18Z,Telemetry_ETH_RSI,5760,1.85,3102.1,15.78,14.48,24.59,1559.17,3828,66.5,142.94,0.81,0.02,24560.79,38,24.56,6015,e810ab60,dev,development
|
||||||
2025-11-11T06:16:50Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.58,3629.2,15.26,15.20,24.06,1386.27,3828,66.5,101.01,0.72,0.02,24560.79,38,24.56,6015,e810ab60,dev,development
|
2025-11-11T06:16:50Z,Telemetry_ETH_RSI,5760,1.58,3629.2,15.26,15.20,24.06,1386.27,3828,66.5,101.01,0.72,0.02,24560.79,38,24.56,6015,e810ab60,dev,development
|
||||||
2025-11-11T06:22:25Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.445,3966.6,15.26,10.45,24.60,1256.25,3828,66.5,109.62,0.65,0.02,24560.79,38,24.56,6015,e810ab60,dev,development
|
2025-11-11T06:22:25Z,Telemetry_ETH_RSI,5760,1.445,3966.6,15.26,10.45,24.60,1256.25,3828,66.5,109.62,0.65,0.02,24560.79,38,24.56,6015,e810ab60,dev,development
|
||||||
2025-11-11T06:23:44Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.265,4544.2,15.26,11.24,23.71,1023.42,3828,66.5,80.77,0.53,0.01,24560.79,38,24.56,6015,e810ab60,dev,development
|
2025-11-11T06:23:44Z,Telemetry_ETH_RSI,5760,1.265,4544.2,15.26,11.24,23.71,1023.42,3828,66.5,80.77,0.53,0.01,24560.79,38,24.56,6015,e810ab60,dev,development
|
||||||
2025-11-11T06:41:40Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,0.835,6870.8,15.27,10.21,23.73,720.71,3828,66.5,52.24,0.37,0.01,24560.79,38,24.56,6015,e810ab60,dev,development
|
2025-11-11T06:41:40Z,Telemetry_ETH_RSI,5760,0.835,6870.8,15.27,10.21,23.73,720.71,3828,66.5,52.24,0.37,0.01,24560.79,38,24.56,6015,e810ab60,dev,development
|
||||||
2025-11-11T06:44:52Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.095,5217.4,15.26,11.07,23.72,945.37,3828,66.5,72.77,0.49,0.01,24560.79,38,24.56,6015,e810ab60,dev,development
|
2025-11-11T06:44:52Z,Telemetry_ETH_RSI,5760,1.095,5217.4,15.26,11.07,23.72,945.37,3828,66.5,72.77,0.49,0.01,24560.79,38,24.56,6015,e810ab60,dev,development
|
||||||
2025-11-11T06:45:12Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.07,5356.7,15.26,11.18,23.73,897.94,3828,66.5,91.98,0.46,0.02,24560.79,38,24.56,6015,e810ab60,dev,development
|
2025-11-11T06:45:12Z,Telemetry_ETH_RSI,5760,1.07,5356.7,15.26,11.18,23.73,897.94,3828,66.5,91.98,0.46,0.02,24560.79,38,24.56,6015,e810ab60,dev,development
|
||||||
2025-11-11T06:53:40Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.12,5112.2,15.26,11.35,23.73,927.80,3828,66.5,78.67,0.48,0.01,24560.79,38,24.56,6015,e810ab60,dev,development
|
2025-11-11T06:53:40Z,Telemetry_ETH_RSI,5760,1.12,5112.2,15.26,11.35,23.73,927.80,3828,66.5,78.67,0.48,0.01,24560.79,38,24.56,6015,e810ab60,dev,development
|
||||||
2025-11-11T06:58:31Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.55,3699.6,15.27,11.03,23.74,1319.91,3828,66.5,117.22,0.68,0.02,24560.79,38,24.56,6015,e810ab60,dev,development
|
2025-11-11T06:58:31Z,Telemetry_ETH_RSI,5760,1.55,3699.6,15.27,11.03,23.74,1319.91,3828,66.5,117.22,0.68,0.02,24560.79,38,24.56,6015,e810ab60,dev,development
|
||||||
2025-11-11T07:03:00Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,2.11,2720.5,15.29,11.00,23.75,1780.10,3828,66.5,145.96,0.92,0.03,24560.79,38,24.56,6015,e810ab60,dev,development
|
2025-11-11T07:03:00Z,Telemetry_ETH_RSI,5760,2.11,2720.5,15.29,11.00,23.75,1780.10,3828,66.5,145.96,0.92,0.03,24560.79,38,24.56,6015,e810ab60,dev,development
|
||||||
2025-11-11T07:07:23Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,5.115,1123.6,15.30,11.20,24.91,4447.27,3828,66.5,326.88,2.30,0.06,24560.79,38,24.56,6015,90341369,dev,development
|
2025-11-11T07:07:23Z,Telemetry_ETH_RSI,5760,5.115,1123.6,15.30,11.20,24.91,4447.27,3828,66.5,326.88,2.30,0.06,24560.79,38,24.56,6015,90341369,dev,development
|
||||||
2025-11-11T07:08:48Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.5,3827.1,15.27,11.13,24.95,1241.94,3828,66.5,128.70,0.64,0.02,24560.79,38,24.56,6015,90341369,dev,development
|
2025-11-11T07:08:48Z,Telemetry_ETH_RSI,5760,1.5,3827.1,15.27,11.13,24.95,1241.94,3828,66.5,128.70,0.64,0.02,24560.79,38,24.56,6015,90341369,dev,development
|
||||||
2025-11-11T07:09:35Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.015,5645.1,15.28,11.27,23.74,882.37,3828,66.5,62.61,0.46,0.01,24560.79,38,24.56,6015,90341369,dev,development
|
2025-11-11T07:09:35Z,Telemetry_ETH_RSI,5760,1.015,5645.1,15.28,11.27,23.74,882.37,3828,66.5,62.61,0.46,0.01,24560.79,38,24.56,6015,90341369,dev,development
|
||||||
2025-11-11T07:10:15Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.985,2883.0,15.29,11.08,24.89,1662.32,3828,66.5,166.71,0.86,0.03,24560.79,38,24.56,6015,90341369,dev,development
|
2025-11-11T07:10:15Z,Telemetry_ETH_RSI,5760,1.985,2883.0,15.29,11.08,24.89,1662.32,3828,66.5,166.71,0.86,0.03,24560.79,38,24.56,6015,90341369,dev,development
|
||||||
2025-11-11T07:10:55Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.45,3954.1,15.27,11.27,23.74,1256.06,3828,66.5,94.29,0.65,0.02,24560.79,38,24.56,6015,90341369,dev,development
|
2025-11-11T07:10:55Z,Telemetry_ETH_RSI,5760,1.45,3954.1,15.27,11.27,23.74,1256.06,3828,66.5,94.29,0.65,0.02,24560.79,38,24.56,6015,90341369,dev,development
|
||||||
2025-11-11T07:14:07Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,0.815,7020.8,15.26,10.16,23.73,697.23,3828,66.5,53.42,0.36,0.01,24560.79,38,24.56,6016,90341369,dev,development
|
2025-11-11T07:14:07Z,Telemetry_ETH_RSI,5760,0.815,7020.8,15.26,10.16,23.73,697.23,3828,66.5,53.42,0.36,0.01,24560.79,38,24.56,6016,90341369,dev,development
|
||||||
2025-11-11T07:15:11Z,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,5760,1.76,3256.6,15.71,10.54,24.24,1411.34,3828,66.5,208.73,0.73,0.04,24560.79,38,24.56,6015,90341369,dev,development
|
2025-11-11T07:15:11Z,Telemetry_ETH_RSI,5760,1.76,3256.6,15.71,10.54,24.24,1411.34,3828,66.5,208.73,0.73,0.04,24560.79,38,24.56,6015,90341369,dev,development
|
||||||
|
2025-11-12T13:40:48Z,Telemetry_ETH_RSI,5760,2.305,2474.7,15.28,17.38,24.12,0.00,0,0.0,2185.37,0.00,0.38,-53135.25,24,-53.14,0.00,e0d21115,dev,development
|
||||||
|
2025-11-12T13:49:57Z,Telemetry_ETH_RSI,5760,1.485,3865.0,15.26,17.44,23.51,0.00,0,0.0,1424.06,0.00,0.25,-53135.25,24,-53.14,0.00,e0d21115,dev,development
|
||||||
|
2025-11-12T13:56:26Z,Telemetry_ETH_RSI,5760,1.925,2987.3,15.27,17.26,23.77,0.00,0,0.0,1860.19,0.00,0.32,-53135.25,24,-53.14,0.00,e0d21115,dev,development
|
||||||
|
|||||||
|
Reference in New Issue
Block a user