Add precalculated signals list + multi scenario test

This commit is contained in:
2025-11-11 14:05:09 +07:00
parent e810ab60ce
commit 903413692c
7 changed files with 359 additions and 17 deletions

View File

@@ -143,6 +143,66 @@ CSV_ROW="$TIMESTAMP,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_T
# Append to CSV file
echo "$CSV_ROW" >> "src/Managing.Workers.Tests/performance-benchmarks.csv"
# Now run the two-scenarios test
echo "📊 Running two-scenarios performance test..."
TWO_SCENARIOS_OUTPUT=$(dotnet test src/Managing.Workers.Tests/Managing.Workers.Tests.csproj \
--filter "ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry" \
--verbosity minimal \
--logger "console;verbosity=detailed" 2>&1)
# Check if two-scenarios test passed
if echo "$TWO_SCENARIOS_OUTPUT" | grep -q "Passed.*1"; then
echo -e "${GREEN}✅ Two-scenarios performance test passed!${NC}"
else
echo -e "${RED}❌ Two-scenarios performance test failed!${NC}"
echo "$TWO_SCENARIOS_OUTPUT"
exit 1
fi
# 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_EXECUTION_TIME=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "⏱️ Total Execution Time:" | sed 's/.*: //' | sed 's/s//' | sed 's/,/./g' | awk '{print $NF}' | xargs)
TWO_SCENARIOS_PROCESSING_RATE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Candles Processed:" | sed 's/.*Processed: [0-9]* (//' | sed 's/ candles\/sec)//' | xargs)
# Extract memory metrics (use defaults since two-scenarios test doesn't track detailed memory)
TWO_SCENARIOS_MEMORY_START=${MEMORY_START:-0.0}
TWO_SCENARIOS_MEMORY_END=${MEMORY_END:-0.0}
TWO_SCENARIOS_MEMORY_PEAK=${MEMORY_PEAK:-0.0}
# Extract signal update metrics (use defaults since two-scenarios test doesn't track these)
TWO_SCENARIOS_SIGNAL_UPDATES=0.0
TWO_SCENARIOS_SIGNAL_SKIPPED=0
TWO_SCENARIOS_SIGNAL_EFFICIENCY=0.0
# Extract backtest steps (use defaults)
TWO_SCENARIOS_BACKTEST_STEPS=0.0
TWO_SCENARIOS_AVG_SIGNAL_UPDATE=0.0
TWO_SCENARIOS_AVG_BACKTEST_STEP=0.0
# Extract trading results
TWO_SCENARIOS_FINAL_PNL=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "🎯 Final PnL:" | sed 's/.*Final PnL: //' | sed 's/,/./g' | xargs)
TWO_SCENARIOS_WIN_RATE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Win Rate:" | sed 's/.*Win Rate: //' | sed 's/%//' | xargs)
TWO_SCENARIOS_GROWTH_PERCENTAGE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Growth:" | sed 's/.*Growth: //' | sed 's/%//' | sed 's/,/./g' | xargs)
TWO_SCENARIOS_SCORE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📊 Score:" | sed 's/.*Score: //' | sed 's/[^0-9.-]//g' | xargs)
# Set defaults for missing values
TWO_SCENARIOS_CANDLES_COUNT=${TWO_SCENARIOS_CANDLES_COUNT:-0}
TWO_SCENARIOS_EXECUTION_TIME=${TWO_SCENARIOS_EXECUTION_TIME:-0.0}
TWO_SCENARIOS_PROCESSING_RATE=${TWO_SCENARIOS_PROCESSING_RATE:-0.0}
TWO_SCENARIOS_FINAL_PNL=${TWO_SCENARIOS_FINAL_PNL:-0.00}
TWO_SCENARIOS_WIN_RATE=${TWO_SCENARIOS_WIN_RATE:-0}
TWO_SCENARIOS_GROWTH_PERCENTAGE=${TWO_SCENARIOS_GROWTH_PERCENTAGE:-0.00}
TWO_SCENARIOS_SCORE=${TWO_SCENARIOS_SCORE:-0.00}
# Fix malformed values
TWO_SCENARIOS_SCORE=$(echo "$TWO_SCENARIOS_SCORE" | sed 's/^0*$/0.00/' | xargs)
# 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"
# Append to two-scenarios CSV file
echo "$TWO_SCENARIOS_CSV_ROW" >> "src/Managing.Workers.Tests/performance-benchmarks-two-scenarios.csv"
# Display results
echo -e "${BLUE}📊 Benchmark Results:${NC}"
echo " • Processing Rate: $PROCESSING_RATE candles/sec"