From d76ee432461a438126439b01e69d00eea3a045fc Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Aug 2020 07:12:57 +0200 Subject: [PATCH] Show wins / draws / losses in hyperopt table --- freqtrade/optimize/hyperopt.py | 17 +++++++++++++---- tests/optimize/test_hyperopt.py | 1 + 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 522b217f7..fbd523904 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -312,11 +312,16 @@ class Hyperopt: trials = json_normalize(results, max_level=1) trials['Best'] = '' + if 'results_metrics.winsdrawslosses' not in trials.columns: + # Ensure compatibility with older versions of hyperopt results + trials['results_metrics.winsdrawslosses'] = 'N/A' + trials = trials[['Best', 'current_epoch', 'results_metrics.trade_count', + 'results_metrics.winsdrawslosses', 'results_metrics.avg_profit', 'results_metrics.total_profit', 'results_metrics.profit', 'results_metrics.duration', 'loss', 'is_initial_point', 'is_best']] - trials.columns = ['Best', 'Epoch', 'Trades', 'Avg profit', 'Total profit', + trials.columns = ['Best', 'Epoch', 'Trades', 'W/D/L', 'Avg profit', 'Total profit', 'Profit', 'Avg duration', 'Objective', 'is_initial_point', 'is_best'] trials['is_profit'] = False trials.loc[trials['is_initial_point'], 'Best'] = '* ' @@ -558,11 +563,15 @@ class Hyperopt: } def _calculate_results_metrics(self, backtesting_results: DataFrame) -> Dict: + wins = len(backtesting_results[backtesting_results.profit_percent > 0]) + draws = len(backtesting_results[backtesting_results.profit_percent == 0]) + losses = len(backtesting_results[backtesting_results.profit_percent < 0]) return { 'trade_count': len(backtesting_results.index), - 'wins': len(backtesting_results[backtesting_results.profit_percent > 0]), - 'draws': len(backtesting_results[backtesting_results.profit_percent == 0]), - 'losses': len(backtesting_results[backtesting_results.profit_percent < 0]), + 'wins': wins, + 'draws': draws, + 'losses': losses, + 'winsdrawslosses': f"{wins}/{draws}/{losses}", 'avg_profit': backtesting_results.profit_percent.mean() * 100.0, 'median_profit': backtesting_results.profit_percent.median() * 100.0, 'total_profit': backtesting_results.profit_abs.sum(), diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 4b178ca11..bd86e315f 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -781,6 +781,7 @@ def test_generate_optimizer(mocker, default_conf) -> None: 'draws': 0, 'duration': 100.0, 'losses': 0, + 'winsdrawslosses': '1/0/0', 'median_profit': 2.3117, 'profit': 2.3117, 'total_profit': 0.000233,