From 852010b8d4999a4a4fe01c35045e16a2d2206e05 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Mon, 25 May 2026 02:54:20 +0800 Subject: [PATCH] =?UTF-8?q?=5Fpasses=5Fhard=5Ffilters=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=8E=9F=E5=9B=A0=E6=97=A5=E5=BF=97=E6=8E=92?= =?UTF-8?q?=E6=9F=A5=E6=89=AB=E6=8F=8F=E8=A1=8C=E8=A2=AB=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E7=AD=9B=E6=8E=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data_collection/polymarket_readonly.py | 27 ++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/data_collection/polymarket_readonly.py b/src/data_collection/polymarket_readonly.py index 9749a01d..42863590 100644 --- a/src/data_collection/polymarket_readonly.py +++ b/src/data_collection/polymarket_readonly.py @@ -3682,16 +3682,25 @@ class PolymarketReadOnlyLayer: _safe_float(row.get("book_liquidity")) or 0.0, _safe_float(row.get("market_liquidity")) or 0.0, ) + _reason = None if ask is None or edge_percent is None: + _reason = f"ask_or_edge_none ask={ask} edge={edge_percent}" + elif not row.get("tradable") or row.get("accepting_orders") is False: + _reason = f"not_tradable tradable={row.get('tradable')} accepting={row.get('accepting_orders')}" + elif row.get("enable_order_book") is False: + _reason = "order_book_disabled" + elif ask < filters["min_price"] or ask > filters["max_price"]: + _reason = f"price_range ask={ask} min={filters['min_price']} max={filters['max_price']}" + elif edge_percent < filters["min_edge_pct"]: + _reason = f"edge_too_low edge={edge_percent} min={filters['min_edge_pct']}" + elif spread is not None and spread > filters["max_spread"]: + _reason = f"spread_too_wide spread={spread} max={filters['max_spread']}" + elif liquidity < filters["min_liquidity"]: + _reason = f"liquidity_too_low liq={liquidity} min={filters['min_liquidity']}" + if _reason: + logger.info("SCAN_DEBUG filter_skip slug={} side={} reason={}", str(row.get("market_slug") or "")[:60], row.get("side"), _reason) return False - if not row.get("tradable") or row.get("accepting_orders") is False: - return False - if row.get("enable_order_book") is False: - return False - if ask < filters["min_price"] or ask > filters["max_price"]: - return False - if edge_percent < filters["min_edge_pct"]: - return False + side = str(row.get("side") or "").lower() market_direction = str(row.get("market_direction") or "").lower() if ( @@ -3702,7 +3711,7 @@ class PolymarketReadOnlyLayer: and not (row.get("cluster_adjusted") and row.get("is_directional_candidate")) ): return False - if spread is None or spread > filters["max_spread"]: + if spread is not None and spread > filters["max_spread"]: return False if liquidity < filters["min_liquidity"]: return False