Skip to content

Commit c6959c9

Browse files
authored
Merge pull request freqtrade#11499 from mrpabloyeah/add-relevant-metrics-to-backtest-breakdowns
Add relevant metrics to backtest breakdowns
2 parents b431c5b + 7bc6a22 commit c6959c9

File tree

3 files changed

+15
-11
lines changed

3 files changed

+15
-11
lines changed

freqtrade/optimize/optimize_reports/bt_output.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -132,18 +132,18 @@ def text_table_periodic_breakdown(
132132
"""
133133
headers = [
134134
period.capitalize(),
135+
"Trades",
135136
f"Tot Profit {stake_currency}",
136-
"Wins",
137-
"Draws",
138-
"Losses",
137+
"Profit Factor",
138+
"Win Draw Loss Win%",
139139
]
140140
output = [
141141
[
142142
d["date"],
143+
d.get("trades", "N/A"),
143144
fmt_coin(d["profit_abs"], stake_currency, False),
144-
d["wins"],
145-
d["draws"],
146-
d["loses"],
145+
round(d["profit_factor"], 2) if "profit_factor" in d else "N/A",
146+
generate_wins_draws_losses(d["wins"], d["draws"], d.get("losses", d.get("loses", 0))),
147147
]
148148
for d in days_breakdown_stats
149149
]

freqtrade/optimize/optimize_reports/optimize_reports.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -231,17 +231,21 @@ def generate_periodic_breakdown_stats(
231231
profit_abs = day["profit_abs"].sum().round(10)
232232
wins = sum(day["profit_abs"] > 0)
233233
draws = sum(day["profit_abs"] == 0)
234-
loses = sum(day["profit_abs"] < 0)
235-
trades = wins + draws + loses
234+
losses = sum(day["profit_abs"] < 0)
235+
trades = wins + draws + losses
236+
winning_profit = day.loc[day["profit_abs"] > 0, "profit_abs"].sum()
237+
losing_profit = day.loc[day["profit_abs"] < 0, "profit_abs"].sum()
238+
profit_factor = winning_profit / abs(losing_profit) if losing_profit else 0.0
236239
stats.append(
237240
{
238241
"date": name.strftime("%d/%m/%Y"),
239242
"date_ts": int(name.to_pydatetime().timestamp() * 1000),
240243
"profit_abs": profit_abs,
241244
"wins": wins,
242245
"draws": draws,
243-
"loses": loses,
244-
"winrate": wins / trades if trades else 0.0,
246+
"losses": losses,
247+
"trades": trades,
248+
"profit_factor": round(profit_factor, 8),
245249
}
246250
)
247251
return stats

tests/optimize/test_optimize_reports.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ def test_generate_periodic_breakdown_stats(testdatadir):
587587
day = res[0]
588588
assert "date" in day
589589
assert "draws" in day
590-
assert "loses" in day
590+
assert "losses" in day
591591
assert "wins" in day
592592
assert "profit_abs" in day
593593

0 commit comments

Comments
 (0)