From 59b1460e305689dd1926cc022110f798c3c7e113 Mon Sep 17 00:00:00 2001 From: Andras Kovacs Date: Tue, 24 Dec 2024 12:52:35 +0100 Subject: [PATCH 1/2] Adding drawdown information for hyperopt-list --export-csv command --- freqtrade/optimize/hyperopt_tools.py | 7 +++++++ tests/commands/test_commands.py | 6 ++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/hyperopt_tools.py b/freqtrade/optimize/hyperopt_tools.py index 964afc2ab..4c9c290ff 100644 --- a/freqtrade/optimize/hyperopt_tools.py +++ b/freqtrade/optimize/hyperopt_tools.py @@ -388,6 +388,8 @@ class HyperoptTools: "results_metrics.holding_avg", "results_metrics.trade_count_long", "results_metrics.trade_count_short", + "results_metrics.max_drawdown_abs", + "results_metrics.max_drawdown_account", "loss", "is_initial_point", "is_best", @@ -409,6 +411,8 @@ class HyperoptTools: "Avg duration", "Trade count long", "Trade count short", + "Max drawdown", + "Max drawdown percent", "Objective", "is_initial_point", "is_best", @@ -432,6 +436,9 @@ class HyperoptTools: trials["Avg profit"] = trials["Avg profit"].apply( lambda x: f"{x * perc_multi:,.2f}%" if not isna(x) else "" ) + trials["Max drawdown percent"] = trials["Max drawdown percent"].apply( + lambda x: f"{x * perc_multi:,.2f}%" if not isna(x) else "" + ) trials["Objective"] = trials["Objective"].apply( lambda x: f"{x:,.5f}" if x != 100000 else "" ) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 355b7e20d..f5bf591d5 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -1532,8 +1532,10 @@ def test_hyperopt_list(mocker, capsys, caplog, tmp_path): assert csv_file.is_file() line = csv_file.read_text() assert ( - 'Best,1,2,-1.25%,-1.2222,-0.00125625,,-2.51,"3,930.0 m",0.43662' in line - or "Best,1,2,-1.25%,-1.2222,-0.00125625,,-2.51,2 days 17:30:00,2,0,0.43662" in line + 'Best,1,2,-1.25%,-1.2222,-0.00125625,,-2.51,"3,930.0 m",-0.00125625,23.00%,0.43662' in line + or "Best,1,2,-1.25%,-1.2222,-0.00125625,,-2.51,2 days 17:30:00,2,0,-0.00125625,23.00%," + "0.43662" + in line ) csv_file.unlink() From b820810afe39756454282103ed35a1e89cba5586 Mon Sep 17 00:00:00 2001 From: Andras Kovacs Date: Tue, 24 Dec 2024 13:33:58 +0100 Subject: [PATCH 2/2] hyperopt-list --export-csv command stake currency fix Take stake currency from hyperopt result file instead of config --- freqtrade/optimize/hyperopt_tools.py | 3 +-- tests/commands/test_commands.py | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt_tools.py b/freqtrade/optimize/hyperopt_tools.py index 4c9c290ff..ff4747781 100644 --- a/freqtrade/optimize/hyperopt_tools.py +++ b/freqtrade/optimize/hyperopt_tools.py @@ -374,7 +374,6 @@ class HyperoptTools: trials = json_normalize(results, max_level=1) trials["Best"] = "" - trials["Stake currency"] = config["stake_currency"] base_metrics = [ "Best", @@ -383,7 +382,7 @@ class HyperoptTools: "results_metrics.profit_mean", "results_metrics.profit_median", "results_metrics.profit_total", - "Stake currency", + "results_metrics.stake_currency", "results_metrics.profit_total_abs", "results_metrics.holding_avg", "results_metrics.trade_count_long", diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index f5bf591d5..65a43b795 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -1532,8 +1532,9 @@ def test_hyperopt_list(mocker, capsys, caplog, tmp_path): assert csv_file.is_file() line = csv_file.read_text() assert ( - 'Best,1,2,-1.25%,-1.2222,-0.00125625,,-2.51,"3,930.0 m",-0.00125625,23.00%,0.43662' in line - or "Best,1,2,-1.25%,-1.2222,-0.00125625,,-2.51,2 days 17:30:00,2,0,-0.00125625,23.00%," + 'Best,1,2,-1.25%,-1.2222,-0.00125625,BTC,-2.51,"3,930.0 m",-0.00125625,23.00%,0.43662' + in line + or "Best,1,2,-1.25%,-1.2222,-0.00125625,BTC,-2.51,2 days 17:30:00,2,0,-0.00125625,23.00%," "0.43662" in line )