• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

freqtrade / freqtrade / 9394559170

26 Apr 2024 06:36AM UTC coverage: 94.656% (-0.02%) from 94.674%
9394559170

push

github

xmatthias
Loader should be passed as kwarg for clarity

20280 of 21425 relevant lines covered (94.66%)

0.95 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

84.62
/freqtrade/optimize/hyperopt_loss/hyperopt_loss_profit_drawdown.py
1
"""
2
ProfitDrawDownHyperOptLoss
3

4
This module defines the alternative HyperOptLoss class based on Profit &
5
Drawdown objective which can be used for Hyperoptimization.
6

7
Possible to change `DRAWDOWN_MULT` to penalize drawdown objective for
8
individual needs.
9
"""
10
from pandas import DataFrame
1✔
11

12
from freqtrade.data.metrics import calculate_max_drawdown
1✔
13
from freqtrade.optimize.hyperopt import IHyperOptLoss
1✔
14

15

16
# higher numbers penalize drawdowns more severely
17
DRAWDOWN_MULT = 0.075
1✔
18

19

20
class ProfitDrawDownHyperOptLoss(IHyperOptLoss):
1✔
21
    @staticmethod
1✔
22
    def hyperopt_loss_function(results: DataFrame, trade_count: int, *args, **kwargs) -> float:
1✔
23
        total_profit = results["profit_abs"].sum()
1✔
24

25
        try:
1✔
26
            max_drawdown_abs = calculate_max_drawdown(results, value_col="profit_abs")[5]
1✔
27
        except ValueError:
×
28
            max_drawdown_abs = 0
×
29

30
        return -1 * (total_profit * (1 - max_drawdown_abs * DRAWDOWN_MULT))
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc