Drop hyperopt results legacy mode
This commit is contained in:
parent
7bf735dbfc
commit
42579c0268
@ -299,8 +299,7 @@ class HyperoptTools():
|
|||||||
f"Objective: {results['loss']:.5f}")
|
f"Objective: {results['loss']:.5f}")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def prepare_trials_columns(trials: pd.DataFrame, legacy_mode: bool,
|
def prepare_trials_columns(trials: pd.DataFrame, has_drawdown: bool) -> pd.DataFrame:
|
||||||
has_drawdown: bool) -> pd.DataFrame:
|
|
||||||
trials['Best'] = ''
|
trials['Best'] = ''
|
||||||
|
|
||||||
if 'results_metrics.winsdrawslosses' not in trials.columns:
|
if 'results_metrics.winsdrawslosses' not in trials.columns:
|
||||||
@ -312,26 +311,17 @@ class HyperoptTools():
|
|||||||
trials['results_metrics.max_drawdown_abs'] = None
|
trials['results_metrics.max_drawdown_abs'] = None
|
||||||
trials['results_metrics.max_drawdown'] = None
|
trials['results_metrics.max_drawdown'] = None
|
||||||
|
|
||||||
if not legacy_mode:
|
# New mode, using backtest result for metrics
|
||||||
# New mode, using backtest result for metrics
|
trials['results_metrics.winsdrawslosses'] = trials.apply(
|
||||||
trials['results_metrics.winsdrawslosses'] = trials.apply(
|
lambda x: f"{x['results_metrics.wins']} {x['results_metrics.draws']:>4} "
|
||||||
lambda x: f"{x['results_metrics.wins']} {x['results_metrics.draws']:>4} "
|
f"{x['results_metrics.losses']:>4}", axis=1)
|
||||||
f"{x['results_metrics.losses']:>4}", axis=1)
|
|
||||||
trials = trials[['Best', 'current_epoch', 'results_metrics.total_trades',
|
|
||||||
'results_metrics.winsdrawslosses',
|
|
||||||
'results_metrics.profit_mean', 'results_metrics.profit_total_abs',
|
|
||||||
'results_metrics.profit_total', 'results_metrics.holding_avg',
|
|
||||||
'results_metrics.max_drawdown', 'results_metrics.max_drawdown_abs',
|
|
||||||
'loss', 'is_initial_point', 'is_best']]
|
|
||||||
|
|
||||||
else:
|
trials = trials[['Best', 'current_epoch', 'results_metrics.total_trades',
|
||||||
# Legacy mode
|
'results_metrics.winsdrawslosses',
|
||||||
trials = trials[['Best', 'current_epoch', 'results_metrics.trade_count',
|
'results_metrics.profit_mean', 'results_metrics.profit_total_abs',
|
||||||
'results_metrics.winsdrawslosses', 'results_metrics.avg_profit',
|
'results_metrics.profit_total', 'results_metrics.holding_avg',
|
||||||
'results_metrics.total_profit', 'results_metrics.profit',
|
'results_metrics.max_drawdown', 'results_metrics.max_drawdown_abs',
|
||||||
'results_metrics.duration', 'results_metrics.max_drawdown',
|
'loss', 'is_initial_point', 'is_best']]
|
||||||
'results_metrics.max_drawdown_abs', 'loss', 'is_initial_point',
|
|
||||||
'is_best']]
|
|
||||||
|
|
||||||
trials.columns = ['Best', 'Epoch', 'Trades', ' Win Draw Loss', 'Avg profit',
|
trials.columns = ['Best', 'Epoch', 'Trades', ' Win Draw Loss', 'Avg profit',
|
||||||
'Total profit', 'Profit', 'Avg duration', 'Max Drawdown',
|
'Total profit', 'Profit', 'Avg duration', 'Max Drawdown',
|
||||||
@ -351,10 +341,9 @@ class HyperoptTools():
|
|||||||
tabulate.PRESERVE_WHITESPACE = True
|
tabulate.PRESERVE_WHITESPACE = True
|
||||||
trials = json_normalize(results, max_level=1)
|
trials = json_normalize(results, max_level=1)
|
||||||
|
|
||||||
legacy_mode = 'results_metrics.total_trades' not in trials
|
|
||||||
has_drawdown = 'results_metrics.max_drawdown_abs' in trials.columns
|
has_drawdown = 'results_metrics.max_drawdown_abs' in trials.columns
|
||||||
|
|
||||||
trials = HyperoptTools.prepare_trials_columns(trials, legacy_mode, has_drawdown)
|
trials = HyperoptTools.prepare_trials_columns(trials, has_drawdown)
|
||||||
|
|
||||||
trials['is_profit'] = False
|
trials['is_profit'] = False
|
||||||
trials.loc[trials['is_initial_point'], 'Best'] = '* '
|
trials.loc[trials['is_initial_point'], 'Best'] = '* '
|
||||||
@ -362,12 +351,12 @@ class HyperoptTools():
|
|||||||
trials.loc[trials['is_initial_point'] & trials['is_best'], 'Best'] = '* Best'
|
trials.loc[trials['is_initial_point'] & trials['is_best'], 'Best'] = '* Best'
|
||||||
trials.loc[trials['Total profit'] > 0, 'is_profit'] = True
|
trials.loc[trials['Total profit'] > 0, 'is_profit'] = True
|
||||||
trials['Trades'] = trials['Trades'].astype(str)
|
trials['Trades'] = trials['Trades'].astype(str)
|
||||||
perc_multi = 1 if legacy_mode else 100
|
# perc_multi = 1 if legacy_mode else 100
|
||||||
trials['Epoch'] = trials['Epoch'].apply(
|
trials['Epoch'] = trials['Epoch'].apply(
|
||||||
lambda x: '{}/{}'.format(str(x).rjust(len(str(total_epochs)), ' '), total_epochs)
|
lambda x: '{}/{}'.format(str(x).rjust(len(str(total_epochs)), ' '), total_epochs)
|
||||||
)
|
)
|
||||||
trials['Avg profit'] = trials['Avg profit'].apply(
|
trials['Avg profit'] = trials['Avg profit'].apply(
|
||||||
lambda x: f'{x * perc_multi:,.2f}%'.rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ')
|
lambda x: f'{x:,.2%}'.rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ')
|
||||||
)
|
)
|
||||||
trials['Avg duration'] = trials['Avg duration'].apply(
|
trials['Avg duration'] = trials['Avg duration'].apply(
|
||||||
lambda x: f'{x:,.1f} m'.rjust(7, ' ') if isinstance(x, float) else f"{x}"
|
lambda x: f'{x:,.1f} m'.rjust(7, ' ') if isinstance(x, float) else f"{x}"
|
||||||
@ -383,7 +372,7 @@ class HyperoptTools():
|
|||||||
trials['Max Drawdown'] = trials.apply(
|
trials['Max Drawdown'] = trials.apply(
|
||||||
lambda x: '{} {}'.format(
|
lambda x: '{} {}'.format(
|
||||||
round_coin_value(x['max_drawdown_abs'], stake_currency),
|
round_coin_value(x['max_drawdown_abs'], stake_currency),
|
||||||
'({:,.2f}%)'.format(x['Max Drawdown'] * perc_multi).rjust(10, ' ')
|
f"({x['Max Drawdown']:,.2%})".rjust(10, ' ')
|
||||||
).rjust(25 + len(stake_currency))
|
).rjust(25 + len(stake_currency))
|
||||||
if x['Max Drawdown'] != 0.0 else '--'.rjust(25 + len(stake_currency)),
|
if x['Max Drawdown'] != 0.0 else '--'.rjust(25 + len(stake_currency)),
|
||||||
axis=1
|
axis=1
|
||||||
@ -396,7 +385,7 @@ class HyperoptTools():
|
|||||||
trials['Profit'] = trials.apply(
|
trials['Profit'] = trials.apply(
|
||||||
lambda x: '{} {}'.format(
|
lambda x: '{} {}'.format(
|
||||||
round_coin_value(x['Total profit'], stake_currency),
|
round_coin_value(x['Total profit'], stake_currency),
|
||||||
'({:,.2f}%)'.format(x['Profit'] * perc_multi).rjust(10, ' ')
|
f"({x['Profit']:,.2%})".rjust(10, ' ')
|
||||||
).rjust(25+len(stake_currency))
|
).rjust(25+len(stake_currency))
|
||||||
if x['Total profit'] != 0.0 else '--'.rjust(25+len(stake_currency)),
|
if x['Total profit'] != 0.0 else '--'.rjust(25+len(stake_currency)),
|
||||||
axis=1
|
axis=1
|
||||||
|
Loading…
Reference in New Issue
Block a user