diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 06c7ae495..252b76252 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -63,9 +63,11 @@ class Hyperopt(Backtesting): # if eval ends with higher value, we consider it a failed eval self.max_accepted_trade_duration = 300 - # this is expexted avg profit * expected trade count - # for example 3.5%, 1100 trades, self.expected_max_profit = 3.85 - # check that the reported Σ% values do not exceed this! + # This is assumed to be expected avg profit * expected trade count. + # For example, for 0.35% avg per trade (or 0.0035 as ratio) and 1100 trades, + # self.expected_max_profit = 3.85 + # Check that the reported Σ% values do not exceed this! + # Note, this is ratio. 3.85 stated above means 385Σ%. self.expected_max_profit = 3.0 # Previous evaluations @@ -211,8 +213,8 @@ class Hyperopt(Backtesting): trade_count = len(results.index) trade_duration = results.trade_duration.mean() - # If this evaluation contains too short small amount of trades - # to be interesting -- consider it as 'bad' (assign max. loss value) + # If this evaluation contains too short amount of trades to be + # interesting -- consider it as 'bad' (assigned max. loss value) # in order to cast this hyperspace point away from optimization # path. We do not want to optimize 'hodl' strategies. if trade_count < self.config['hyperopt_min_trades']: @@ -235,15 +237,15 @@ class Hyperopt(Backtesting): Return the format result in a string """ trades = len(results.index) - avg_profit = results.profit_percent.mean() + avg_profit = results.profit_percent.mean() * 100.0 total_profit = results.profit_abs.sum() stake_cur = self.config['stake_currency'] - profit = results.profit_percent.sum() + profit = results.profit_percent.sum() * 100.0 duration = results.trade_duration.mean() - return (f'{trades:6d} trades. Avg profit {avg_profit: 9.6f}%. ' + return (f'{trades:6d} trades. Avg profit {avg_profit: 5.2f}%. ' f'Total profit {total_profit: 11.8f} {stake_cur} ' - f'({profit:.4f}Σ%). Avg duration {duration:5.1f} mins.') + f'({profit: 7.2f}Σ%). Avg duration {duration:5.1f} mins.') def get_optimizer(self, cpu_count) -> Optimizer: return Optimizer( @@ -318,7 +320,7 @@ class Hyperopt(Backtesting): }) logger.debug(f"Optimizer params: {f_val[j]['params']}") for j in range(jobs): - logger.debug(f"Opimizer state: Xi: {opt.Xi[-j-1]}, yi: {opt.yi[-j-1]}") + logger.debug(f"Optimizer state: Xi: {opt.Xi[-j-1]}, yi: {opt.yi[-j-1]}") except KeyboardInterrupt: print('User interrupted..')