diff --git a/asset_pool/asset_optimize.py b/asset_pool/asset_optimize.py
index 3af9f2bcec4711ce9c56ab44978308490292259b..710a105499ee7176d90f958f9084d4c24dc6052a 100644
--- a/asset_pool/asset_optimize.py
+++ b/asset_pool/asset_optimize.py
@@ -175,10 +175,11 @@ class FundDividendSortinoAssetOptimize(SortinoAssetOptimize):
             records = [fund for fund in funds if fund['customType'] == customType and fund['id'] in annual.keys()]
             if exclude is not None:
                 exclude = exclude if len(records) > exclude else len(records)
-                filtered.extend(records[-exclude:])
+                if exclude > 0:
+                    records = records[:len(records) - exclude]
             if volatility is not None:
-                records = [record for record in records[0:exclude] if annual.get(record['id']) > volatility]
-                filtered.extend(records)
+                records = [record for record in records if annual.get(record['id']) > volatility]
+            filtered.extend(records)
         for f in filtered:
             funds.remove(f)
         return funds