From 32bbe603cbf9932250916f6f15d219d15317f517 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 28 Dec 2022 14:59:23 +0100 Subject: [PATCH] Fix sortino std calculation --- freqtrade/data/metrics.py | 4 +--- tests/data/test_btanalysis.py | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/metrics.py b/freqtrade/data/metrics.py index 9d32121e8..09dd60208 100644 --- a/freqtrade/data/metrics.py +++ b/freqtrade/data/metrics.py @@ -237,9 +237,7 @@ def calculate_sortino(trades: pd.DataFrame, min_date: datetime, max_date: dateti expected_returns_mean = total_profit.sum() / days_period - trades['downside_returns'] = 0 - trades.loc[total_profit < 0, 'downside_returns'] = (trades['profit_abs'] / starting_balance) - down_stdev = np.std(trades['downside_returns']) + down_stdev = np.std(trades.loc[trades['profit_abs'] < 0, 'profit_abs'] / starting_balance) if down_stdev != 0: sortino_ratio = expected_returns_mean / down_stdev * np.sqrt(365) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 22b0e3832..345e3c299 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -1,4 +1,3 @@ -from datetime import datetime from pathlib import Path from unittest.mock import MagicMock @@ -365,7 +364,7 @@ def test_calculate_sortino(testdatadir): 0.01, ) assert isinstance(sortino, float) - assert pytest.approx(sortino) == 55.1447312 + assert pytest.approx(sortino) == 35.17722 def test_calculate_sharpe(testdatadir):