From f11523fce5268fc285b76d5cf5b419b716b85309 Mon Sep 17 00:00:00 2001 From: Mikko Ohtamaa Date: Fri, 6 Sep 2024 13:05:09 +0200 Subject: [PATCH] test_build_liquidity_summary passess --- tests/test_liquidity_universe.py | 4 ++++ tradingstrategy/utils/liquidity_filter.py | 14 ++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/tests/test_liquidity_universe.py b/tests/test_liquidity_universe.py index 49cee2c..3d3d29b 100644 --- a/tests/test_liquidity_universe.py +++ b/tests/test_liquidity_universe.py @@ -6,6 +6,7 @@ from tradingstrategy.liquidity import GroupedLiquidityUniverse, LiquidityDataUnavailable from tradingstrategy.pair import DEXPair, LegacyPairUniverse, PandasPairUniverse from tradingstrategy.timebucket import TimeBucket +from tradingstrategy.utils.forward_fill import forward_fill from tradingstrategy.utils.liquidity_filter import build_liquidity_summary from tradingstrategy.utils.token_filter import filter_pairs_default @@ -194,6 +195,9 @@ def test_build_liquidity_summary(persistent_test_client: Client): ) liquidity_df = client.fetch_all_liquidity_samples(TimeBucket.d7).to_pandas() + liquidity_df = liquidity_df.loc[liquidity_df["pair_id"].isin(pairs_df["pair_id"])] # Filter to our pair set before forward fill + liquidity_df = liquidity_df.set_index("timestamp").groupby("pair_id") + liquidity_df = forward_fill(liquidity_df, TimeBucket.d7.to_frequency(), columns=("close",)) historical_max, today = build_liquidity_summary(liquidity_df, pairs_df["pair_id"]) assert len(historical_max) > 100 print(historical_max.most_common(10)) diff --git a/tradingstrategy/utils/liquidity_filter.py b/tradingstrategy/utils/liquidity_filter.py index fb091bf..eeadfa5 100644 --- a/tradingstrategy/utils/liquidity_filter.py +++ b/tradingstrategy/utils/liquidity_filter.py @@ -35,18 +35,16 @@ def get_somewhat_realistic_max_liquidity( Cannot have more than 100M USD """ - try: liquidity_samples = liquidity_df.obj.loc[pair_id]["close"].nlargest(samples) sample = min(liquidity_samples) - import ipdb ; ipdb.set_trace() if sample > broken_liquidity: # Filter out bad data - return 0 + return -1 return sample except KeyError: # Pair not available, because liquidity data is not there, or zero, or broken - return 0 + return -1 def get_liquidity_today( @@ -71,7 +69,7 @@ def get_liquidity_today( return sample except KeyError: # Pair not available, because liquidity data is not there, or zero, or broken - return 0 + return -1 def build_liquidity_summary( @@ -99,7 +97,11 @@ def build_liquidity_summary( Ensure the data is indexed by the time we run this code. :return: - Two counters of historical max liquidity, liquidity today + Two counters of historical max liquidity, liquidity today. + + All in USD. + + Pair liquidity value is set to `-1` if the lookup failed (data not available, data contains inrealistic values, etc.) """ assert isinstance(liquidity_df, (pd.DataFrame, DataFrameGroupBy))