Simplify sort_values in PerformanceFilter

Avoids potential regression in numpy 1.25.0 - which doesn't keep prior sort order in chained sort_values calls.
This commit is contained in:
Matthias
2023-07-08 09:49:01 +02:00
parent e6db5bd193
commit 5c0f5588a6

View File

@@ -89,10 +89,10 @@ class PerformanceFilter(IPairList):
# Sort the list using:
# - primarily performance (high to low)
# - then count (low to high, so as to favor same performance with fewer trades)
# - then pair name alphametically
# - then by prior index, keeping original sorting order
sorted_df = list_df.merge(performance, on='pair', how='left')\
.fillna(0).sort_values(by=['count', 'prior_idx'], ascending=True)\
.sort_values(by=['profit_ratio'], ascending=False)
.fillna(0).sort_values(by=['profit_ratio', 'count', 'prior_idx'],
ascending=[False, True, True])
if self._min_profit is not None:
removed = sorted_df[sorted_df['profit_ratio'] < self._min_profit]
for _, row in removed.iterrows():