From 134ac618848b354240600101c686c5d99b107ee0 Mon Sep 17 00:00:00 2001 From: SII-leiyu <115807123+chaoleiyv@users.noreply.github.com> Date: Sat, 18 Apr 2026 16:47:22 +0800 Subject: [PATCH] Replace "insider trading" terminology with "information asymmetry" Neutral language reduces legal risk for open-source distribution. All prompts, comments, and UI text updated. Database migration code and field names (insider_evidence) preserved for compatibility. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/main.py | 4 ++-- src/models/trade.py | 2 +- src/prompts/whale_analyzer.py | 18 +++++++++--------- src/services/anomaly_detector.py | 2 +- src/services/anomaly_history.py | 6 +++--- src/services/daily_briefing.py | 8 ++++---- src/services/market_fetcher.py | 4 ++-- 7 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/main.py b/src/main.py index 4ca8e87..007c797 100644 --- a/src/main.py +++ b/src/main.py @@ -156,7 +156,7 @@ class WhaleWatcher: logger.separator() def _send_alert_email(self, whale_trade: WhaleTrade, report: str, likelihood: float): - """Send real-time email alert for high insider trading likelihood signals.""" + """Send real-time email alert for high information asymmetry signals.""" settings = get_settings() if not settings.email_enabled or not settings.email_sender or not settings.email_password: return @@ -166,7 +166,7 @@ class WhaleWatcher: try: subject = ( - f"内幕交易警报 ({likelihood:.0%}) — " + f"异常交易警报 ({likelihood:.0%}) — " f"BUY {trade.outcome} @ {trade.price:.4f} " f"${trade.usdc_size:,.0f} — {whale_trade.market_question[:50]}" ) diff --git a/src/models/trade.py b/src/models/trade.py index 21e2e76..5574734 100644 --- a/src/models/trade.py +++ b/src/models/trade.py @@ -234,7 +234,7 @@ class WhaleTrade(BaseModel): ### 分析要点 1. 这笔大额交易 (${self.trade.usdc_size:,.2f}) 的方向为 **BUY {self.trade.outcome} Token**,{'表明交易者看多,认为事件会发生' if self.trade.outcome == 'Yes' else '表明交易者看空,认为事件不会发生'} 2. 买入价格 {self.trade.price:.4f},赔率约 {1/self.trade.price:.1f}x -3. **交易者排名和历史交易是判断内幕交易可信度的重要参考** +3. **交易者排名和历史交易是判断信息不对称可信度的重要参考** 4. **注意分析该鲸鱼在同一事件下的其他持仓** — 如果持有反向仓位可能是对冲策略 5. **参考该市场 Top 多空持仓者的阵营** — 精英交易者集中在哪一方 """ diff --git a/src/prompts/whale_analyzer.py b/src/prompts/whale_analyzer.py index 981a379..4ec320c 100644 --- a/src/prompts/whale_analyzer.py +++ b/src/prompts/whale_analyzer.py @@ -11,13 +11,13 @@ class WhaleAnalyzerPrompts: """System prompt for whale trade analysis with tool-use.""" current_utc = datetime.now(timezone.utc).strftime('%Y-%m-%d %H:%M:%S UTC') - return f"""你是一位专业的预测市场分析师和内幕交易识别专家,专门分析 Polymarket 上的大额异常交易。 + return f"""你是一位专业的预测市场分析师和信息不对称识别专家,专门分析 Polymarket 上的大额异常交易。 **当前真实时间**:{current_utc} ## 你的核心任务 -验证一笔"疑似异常交易"是否真的是"内幕交易"(即交易者掌握了市场尚未反映的信息)。 +验证一笔"疑似异常交易"是否存在信息不对称(即交易者可能掌握了市场尚未反映的信息优势)。 ## 你会收到的数据 @@ -60,7 +60,7 @@ class WhaleAnalyzerPrompts: - 根据市场类型和交易特征,自行判断需要调用哪些工具 - 可以调用一个、多个或零个工具 - 可以用不同的关键词多次调用同一工具 -- 如果交易金额特别大或内幕嫌疑高,应更积极地搜索验证 +- 如果交易金额特别大或信息不对称嫌疑高,应更积极地搜索验证 **工具协作与交叉验证(重要)**: - 不同工具获取到的信息必须**交叉验证**,不要仅凭单一信息源下结论。例如:网页搜索发现某政策传闻,应再用 Twitter 搜索验证舆论反应,用经济数据佐证影响 @@ -89,9 +89,9 @@ class WhaleAnalyzerPrompts: - **活跃市场**:近期参与的市场类型反映交易者的专长领域,与当前市场主题是否匹配 - **近期交易记录**:具体的买卖方向、金额和价格,帮助判断交易者的策略模式 -### 内幕交易可信度判断标准(必须严格遵守) +### 信息不对称可信度判断标准(必须严格遵守) -**"内幕交易"的定义非常严格**:交易者必须掌握了市场尚未反映的、非公开的、具体的信息(如未公布的政策决定、未发布的数据、私下谈判结果等)。仅仅是"聪明的分析"、"经验丰富"或"排名高"都**不构成**内幕交易。 +**"信息不对称"的定义非常严格**:交易者必须掌握了市场尚未反映的、非公开的、具体的信息(如未公布的政策决定、未发布的数据、私下谈判结果等)。仅仅是"聪明的分析"、"经验丰富"或"排名高"都**不构成**信息不对称。 **评分校准基准(大多数交易应落在 0.2-0.5 之间)**: @@ -102,7 +102,7 @@ class WhaleAnalyzerPrompts: - **0.0-0.2(极低)**: 未上榜交易者的常规交易,无任何异常信号。 **常见的错误高估场景(必须避免)**: -- ❌ 仅因为交易者排名高就给 0.7+(高排名交易者每天做很多交易,绝大多数不是内幕交易) +- ❌ 仅因为交易者排名高就给 0.7+(高排名交易者每天做很多交易,绝大多数不存在信息不对称) - ❌ 仅因为交易金额大就给 0.6+(大额交易是鲸鱼的常规操作) - ❌ 短期价格预测市场(如"Bitcoin Up or Down 5分钟")给高分(这类市场几乎不可能有内幕信息) - ❌ 临近到期的市场、价格接近 0 或 1 的交易给高分(这通常是市场共识的正常体现) @@ -118,9 +118,9 @@ class WhaleAnalyzerPrompts: ## 事件关联持仓分析 交易数据中会包含鲸鱼在同一事件(Event)下其他市场的持仓情况。你需要综合分析: -- **对冲识别**:如果鲸鱼在同一事件的不同市场持有反向仓位,可能是对冲策略而非单方向押注,应降低内幕可信度 +- **对冲识别**:如果鲸鱼在同一事件的不同市场持有反向仓位,可能是对冲策略而非单方向押注,应降低信息不对称评分 - **关联押注**:如果鲸鱼在同一事件的多个市场持有同向仓位(如同时看多多个相关市场),这增强了信号强度 -- **套利行为**:同一事件下价格不一致时,鲸鱼可能在做套利,这不是内幕交易信号 +- **套利行为**:同一事件下价格不一致时,鲸鱼可能在做套利,这不是信息不对称信号 ## 市场多空力量分析 @@ -201,7 +201,7 @@ class WhaleAnalyzerPrompts: ### 3. 事件关联持仓分析 - 该鲸鱼在同一事件的其他市场是否有持仓? -- 如果有反向持仓(如同时持有 Yes 和 No,或在相关市场对冲),可能是对冲/套利策略,应降低内幕可信度 +- 如果有反向持仓(如同时持有 Yes 和 No,或在相关市场对冲),可能是对冲/套利策略,应降低信息不对称评分 - 如果同方向押注多个关联市场,则信号增强 ### 4. 市场多空力量分析 diff --git a/src/services/anomaly_detector.py b/src/services/anomaly_detector.py index 384d696..f164c7f 100644 --- a/src/services/anomaly_detector.py +++ b/src/services/anomaly_detector.py @@ -350,5 +350,5 @@ class AnomalyDetector: 4. **注意分析该鲸鱼在同一事件下的其他持仓** — 如果持有反向仓位可能是对冲策略 5. **参考该市场 Top 多空持仓者的阵营** — 高排名交易者集中在哪一方 -请分析这笔交易的内幕交易可能性。 +请分析这笔交易的信息不对称可能性。 """ diff --git a/src/services/anomaly_history.py b/src/services/anomaly_history.py index 9ccbb58..d0fb651 100644 --- a/src/services/anomaly_history.py +++ b/src/services/anomaly_history.py @@ -17,7 +17,7 @@ class AnomalyHistoryService: Only signals with likelihood >= 0.4 are used as historical context for LLM. """ - # Minimum insider trading likelihood to use as historical context for LLM + # Minimum information asymmetry score to use as historical context for LLM MIN_CONTEXT_LIKELIHOOD = 0.4 def __init__(self, db_path: str = "data/signals.db"): @@ -91,7 +91,7 @@ class AnomalyHistoryService: context = f""" ### 历史异常交易信号 (共 {signal_count} 笔) -**重要**: 该市场之前已经检测到 {signal_count} 笔异常交易。请将这些历史信号与当前最新信号一起进行综合分析,统一评估内幕交易可能性。 +**重要**: 该市场之前已经检测到 {signal_count} 笔异常交易。请将这些历史信号与当前最新信号一起进行综合分析,统一评估信息不对称可能性。 """ for i, signal in enumerate(signals, 1): @@ -106,7 +106,7 @@ class AnomalyHistoryService: **综合分析要点**: 1. 对比所有信号(历史+当前)的交易方向,分析是否有一致趋势 2. 对比不同交易者的排名和历史记录,判断"聪明钱"的流向 -3. 如果多个高排名交易者都指向同一方向,内幕交易可能性显著提高 +3. 如果多个高排名交易者都指向同一方向,信息不对称可能性显著提高 4. 如果信号方向相反,需要分析原因(时间变化、新信息、不同判断) 5. 考虑时间因素:越近期的信号越有参考价值 6. 观察交易金额的变化趋势:金额是否在增加? diff --git a/src/services/daily_briefing.py b/src/services/daily_briefing.py index abe2112..b03ab1e 100644 --- a/src/services/daily_briefing.py +++ b/src/services/daily_briefing.py @@ -23,7 +23,7 @@ class DailyBriefingGenerator: Generates daily briefings summarizing high-value signals. Includes: - - Insider trading signals with likelihood >= 60% + - Smart money signals with information asymmetry score >= 60% - Price volatility alerts - Historical signal performance stats """ @@ -56,7 +56,7 @@ class DailyBriefingGenerator: def _load_insider_signals(self, date: datetime) -> tuple: """ - Load insider trading signals for a specific date from the database. + Load smart money signals for a specific date from the database. First tries to find signals with likelihood >= 60%. If none found, falls back to the top 5 by likelihood. @@ -180,7 +180,7 @@ class DailyBriefingGenerator: if is_fallback: summary_line = f"- 今日无可信度 ≥ 60% 的内幕信号,以下为可信度最高的 **{len(insider_signals)}** 条" else: - summary_line = f"- 高可信度内幕交易信号: **{len(insider_signals)}** 个 (可信度 ≥ 60%)" + summary_line = f"- 高可信度信息不对称信号: **{len(insider_signals)}** 个 (可信度 ≥ 60%)" lines.extend([ "## 今日概览", @@ -194,7 +194,7 @@ class DailyBriefingGenerator: if is_fallback: section_title = "## 今日可信度最高的异常交易" else: - section_title = "## 高可信度内幕交易信号" + section_title = "## 高可信度信息不对称信号" lines.extend([ "---", diff --git a/src/services/market_fetcher.py b/src/services/market_fetcher.py index 99fa16f..d58fd6e 100644 --- a/src/services/market_fetcher.py +++ b/src/services/market_fetcher.py @@ -14,7 +14,7 @@ logger = logging.getLogger(__name__) class MarketFetcher: """Fetches and manages trending markets from Polymarket Gamma API.""" - # Short-term price prediction markets to filter out (no insider trading value) + # Short-term price prediction markets to filter out (no signal value) # Matches patterns like "Bitcoin Up or Down - March 27, 2:00AM-2:15AM ET" SHORT_TERM_PRICE_KEYWORDS = [ "up or down", # "Bitcoin Up or Down - March 27, 2:00AM" @@ -24,7 +24,7 @@ class MarketFetcher: "green or red", # daily candle color ] - # Temperature/weather markets (no insider trading value) + # Temperature/weather markets (no signal value) WEATHER_KEYWORDS = [ "highest temperature", "lowest temperature",