Merge pull request #11499 from mrpabloyeah/add-relevant-metrics-to-backtest-breakdowns

Add relevant metrics to backtest breakdowns
This commit is contained in:
Matthias
2025-03-18 07:27:05 +01:00
committed by GitHub
3 changed files with 15 additions and 11 deletions
@@ -132,18 +132,18 @@ def text_table_periodic_breakdown(
""" """
headers = [ headers = [
period.capitalize(), period.capitalize(),
"Trades",
f"Tot Profit {stake_currency}", f"Tot Profit {stake_currency}",
"Wins", "Profit Factor",
"Draws", "Win Draw Loss Win%",
"Losses",
] ]
output = [ output = [
[ [
d["date"], d["date"],
d.get("trades", "N/A"),
fmt_coin(d["profit_abs"], stake_currency, False), fmt_coin(d["profit_abs"], stake_currency, False),
d["wins"], round(d["profit_factor"], 2) if "profit_factor" in d else "N/A",
d["draws"], generate_wins_draws_losses(d["wins"], d["draws"], d.get("losses", d.get("loses", 0))),
d["loses"],
] ]
for d in days_breakdown_stats for d in days_breakdown_stats
] ]
@@ -231,8 +231,11 @@ def generate_periodic_breakdown_stats(
profit_abs = day["profit_abs"].sum().round(10) profit_abs = day["profit_abs"].sum().round(10)
wins = sum(day["profit_abs"] > 0) wins = sum(day["profit_abs"] > 0)
draws = sum(day["profit_abs"] == 0) draws = sum(day["profit_abs"] == 0)
loses = sum(day["profit_abs"] < 0) losses = sum(day["profit_abs"] < 0)
trades = wins + draws + loses trades = wins + draws + losses
winning_profit = day.loc[day["profit_abs"] > 0, "profit_abs"].sum()
losing_profit = day.loc[day["profit_abs"] < 0, "profit_abs"].sum()
profit_factor = winning_profit / abs(losing_profit) if losing_profit else 0.0
stats.append( stats.append(
{ {
"date": name.strftime("%d/%m/%Y"), "date": name.strftime("%d/%m/%Y"),
@@ -240,8 +243,9 @@ def generate_periodic_breakdown_stats(
"profit_abs": profit_abs, "profit_abs": profit_abs,
"wins": wins, "wins": wins,
"draws": draws, "draws": draws,
"loses": loses, "losses": losses,
"winrate": wins / trades if trades else 0.0, "trades": trades,
"profit_factor": round(profit_factor, 8),
} }
) )
return stats return stats
+1 -1
View File
@@ -587,7 +587,7 @@ def test_generate_periodic_breakdown_stats(testdatadir):
day = res[0] day = res[0]
assert "date" in day assert "date" in day
assert "draws" in day assert "draws" in day
assert "loses" in day assert "losses" in day
assert "wins" in day assert "wins" in day
assert "profit_abs" in day assert "profit_abs" in day