strategies
strategies copied to clipboard
HyperOpt Crash
Happens on all Linux installs Tried with setup.sh and conda installs Happens on stable and current dev builds Back testing with any time-range works fine
(freqtrade-conda2) alok@kaliSSD:/media/alok/New_Volume/kali/freqtrade$ freqtrade hyperopt --config user_data/strategies/binance/config_binance_short.json --strategy-path user_data/strategies/binance --strategy DWT_short --epochs 5 --hyperopt-loss ExpectancyHyperOptLoss --timerange 20220915-20221015
2023-03-01 16:40:44,531 - freqtrade - INFO - freqtrade 2023.3.dev-d1b2e38ae
-------trimmed ------------------------
2023-03-01 16:41:57,627 - freqtrade.optimize.hyperopt - INFO - Using estimator ET.
2023-03-01 16:41:57,659 - freqtrade.optimize.hyperopt - INFO - Effective number of parallel workers used: 16
2023-03-01 16:42:07,724 - freqtrade - ERROR - Fatal exception!
joblib.externals.loky.process_executor._RemoteTraceback:
"""
Traceback (most recent call last):
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/joblib/externals/loky/process_executor.py", line 428, in _process_worker
r = call_item()
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/joblib/externals/loky/process_executor.py", line 275, in __call__
return self.fn(*self.args, **self.kwargs)
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/joblib/_parallel_backends.py", line 620, in __call__
return self.func(*args, **kwargs)
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/joblib/parallel.py", line 288, in __call__
return [func(*args, **kwargs)
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/joblib/parallel.py", line 288, in <listcomp>
return [func(*args, **kwargs)
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/joblib/externals/loky/cloudpickle_wrapper.py", line 33, in __call__
return self._obj(*args, **kwargs)
File "/media/alok/New_Volume/kali/freqtrade/freqtrade/optimize/hyperopt.py", line 373, in generate_optimizer
return self._get_results_dict(bt_results, self.min_date, self.max_date,
File "/media/alok/New_Volume/kali/freqtrade/freqtrade/optimize/hyperopt.py", line 401, in _get_results_dict
loss = self.calculate_loss(results=backtesting_results['results'],
File "/media/alok/New_Volume/kali/freqtrade/user_data/hyperopts/ExpectancyHyperOptLoss.py", line 65, in hyperopt_loss_function
total_profit_pct = results["profit_abs"] / stake
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/pandas/core/ops/common.py", line 72, in new_method
return method(self, other)
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/pandas/core/arraylike.py", line 126, in __truediv__
return self._arith_method(other, operator.truediv)
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/pandas/core/series.py", line 6259, in _arith_method
return base.IndexOpsMixin._arith_method(self, other, op)
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/pandas/core/base.py", line 1325, in _arith_method
result = ops.arithmetic_op(lvalues, rvalues, op)
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/pandas/core/ops/array_ops.py", line 226, in arithmetic_op
res_values = _na_arithmetic_op(left, right, op) # type: ignore[arg-type]
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/pandas/core/ops/array_ops.py", line 165, in _na_arithmetic_op
result = func(left, right)
TypeError: ufunc 'divide' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/media/alok/New_Volume/kali/freqtrade/freqtrade/main.py", line 42, in main
return_code = args['func'](args)
File "/media/alok/New_Volume/kali/freqtrade/freqtrade/commands/optimize_commands.py", line 107, in start_hyperopt
hyperopt.start()
File "/media/alok/New_Volume/kali/freqtrade/freqtrade/optimize/hyperopt.py", line 630, in start
f_val = self.run_optimizer_parallel(parallel, asked)
File "/media/alok/New_Volume/kali/freqtrade/freqtrade/optimize/hyperopt.py", line 440, in run_optimizer_parallel
return parallel(delayed(
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/joblib/parallel.py", line 1098, in __call__
self.retrieve()
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/joblib/parallel.py", line 975, in retrieve
self._output.extend(job.get(timeout=self.timeout))
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/site-packages/joblib/_parallel_backends.py", line 567, in wrap_future_result
return future.result(timeout=timeout)
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/concurrent/futures/_base.py", line 445, in result
return self.__get_result()
File "/home/alok/miniconda3/envs/freqtrade-conda2/lib/python3.10/concurrent/futures/_base.py", line 390, in __get_result
raise self._exception
TypeError: ufunc 'divide' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
SampleStrategy HyperOpt also works fine
(freqtrade-conda2) alok@kaliSSD:/media/alok/New_Volume/kali/freqtrade$ freqtrade hyperopt --hyperopt-loss SharpeHyperOptLossDaily --strategy SampleStrategy --config ./user_data/config_ds.json -e 10 --timerange 20210101-20210201
2023-03-01 16:42:33,561 - freqtrade - INFO - freqtrade 2023.3.dev-d1b2e38ae
2023-03-01 16:42:33,572 - freqtrade.configuration.load_config - INFO - Using config: ./user_data/config_ds.json ...
2023-03-01 16:42:33,572 - freqtrade.loggers - INFO - Verbosity set to 0
2
-------------trimmed--------------------
2023-03-01 16:44:03,952 - freqtrade.optimize.hyperopt - INFO - Number of parallel jobs set as: -1
2023-03-01 16:44:03,952 - freqtrade.optimize.hyperopt - INFO - Using estimator ET.
2023-03-01 16:44:03,962 - freqtrade.optimize.hyperopt - INFO - Effective number of parallel workers used: 16
+--------+---------+----------+--------------------------+--------------+-------------------------------+-----------------+-------------+-------------------------------+
| Best | Epoch | Trades | Win Draw Loss Win% | Avg profit | Profit | Avg duration | Objective | Max Drawdown (Acct) |
|--------+---------+----------+--------------------------+--------------+-------------------------------+-----------------+-------------+-------------------------------|
| * Best | 1/10 | 166 | 107 53 6 64.5 | 1.05% | 185.488 USDT (18.55%) | 0 days 03:46:00 | -9.45209 | 45.303 USDT (4.08%) |
| * Best | 3/10 | 739 | 320 406 13 43.3 | 0.66% | 624.189 USDT (62.42%) | 0 days 09:58:00 | -11.7834 | 91.865 USDT (5.35%) |
[Epoch 10 of 10 (100%)] || | [Time: 0:00:00, Elapsed Time: 0:00:00]
2023-03-01 16:44:45,551 - freqtrade.optimize.hyperopt - INFO - 10 epochs saved to '/media/alok/New_Volume/kali/freqtrade/user_data/hyperopt_results/strategy_SampleStrategy_2023-03-01_16-42-55.fthypt'.
Add {
"method": "AgeFilter",
"min_days_listed": 30
},
to your pairlists in config (Under StaticPairList)
2023-03-01 16:44:45,568 - NostalgiaForInfinityX - INFO - pandas_ta successfully imported
2023-03-01 16:44:45,579 - NostalgiaForInfinityX3 - INFO - pandas_ta successfully imported
2023-03-01 16:44:45,589 - freqtrade.optimize.hyperopt_tools - INFO - Dumping parameters to /media/alok/New_Volume/kali/freqtrade/user_data/strategies/sample_strategy.json
Best result:
* 3/10: 739 trades. 320/406/13 Wins/Draws/Losses. Avg profit 0.66%. Median profit 0.00%. Total profit 624.18882109 USDT ( 62.42%). Avg duration 9:58:00 min. Objective: -11.78339
My conda environment details attached packages.txt . Could you please post yours as well or may be take a guess on what could be causing this crash?
i found the issue in file https://github.com/nateemma/strategies/blob/master/hyperopts/ExpectancyHyperOptLoss.py in line number 64 stake = backtest_stats['stake_amount'] You need to handle what if stake amount is 'unlimited'