用户问的是一个非常核心的架构问题：这些被回测的钱包（backtest.json 里的 10 个钱包）是不是这个项目自己"发现"的？如果是，完整流程是怎样的？

这是一个端到端的选择链路问题。我需要梳理整个项目的核心流程链：

1. 从 Polymarket 上的全量交易者
2. enumerate.py 怎么发现候选池
3. trust.py 过滤可信数据
4. skill.py 的 5 门漏斗（z-score 等）
5. conviction_scan.py 信念交易扫描
6. validate_timing.py fee-aware 复制复现
7. sync_floors.py 同步信念门槛
8. backtest.json/copybot.paper.json 到 portfolio.py 回测
9. 再到 copybot.py 实时执行

让我快速看一下关键文件的入口，确保流程说的准确。

## 完整答案。是的，这 10 个钱包是这个项目自己**一步一步筛出来的**。不是手动选的。

---

## 全流程：从"Polymarket 上所有交易者"→"backtest.json 的 10 个钱包"

```
                    Polymarket 全部交易者（~百万级）
                               │
              ┌────────────────┴────────────────┐
              │                                   │
       enumerate.py（步骤 1）                其他来源（gamma/polymarket-ui）
     最近 180 天已结算且流动性 > $20,000 的市场
     每个市场取 Top 30 名义金额交易者（insider.market_traders）
     去重 → 候选池 ~3.5 万个钱包
     附加信号：按"出现在多少个不同市场中"倒序（熟练玩家会在多个市场出现）
                               │
                               ↓
       collect.py（步骤 2）— DuckDB 缓存
     对候选池中每个钱包拉取 /positions 历史
     含每笔 bet：市场 slug、方向、入场价、stake、结算状态
     第一次：全量拉（几个小时），之后增量
                               │
                               ↓
       trust.py（步骤 3）— "可信数据"过滤器
     防御做市商钱包把"卖出盈利"伪装成"结算胜利"
     只保留：有明确 res_t（结算时间戳） + resolved=True +
     跨钱包共识 winner 的条目
     （数据 API 的 cached 字段对高频做市商不可靠）
                               │
                               ↓
       skill.py（步骤 4）— 5 门统计漏斗
     对每个钱包计算 z-score: z = (实际胜利数 - Σ入场价) / σ
     ( Σ入场价 = 市场对胜率的估计，z=0 表示无优势 )
     门限：
       ① n ≥ 15 已结算交易
       ② z > 0
       ③ Benjamini-Hochberg FDR @ 5%
       ④ 前半 vs 后半样本外持续性 (z_oos > 0)
       ⑤ 排除纯做市钱包（trade direction flips 太频繁）
     → 输出 watch_skilled.json （~100-200 个候选）
                               │
                               ↓
       conviction_scan.py（步骤 5）— 信念画像
     "信念 bet" = 该钱包自己下注金额 Top 20% 的那些 bet
     （小 bet 可能是随机玩，大 bet 才是认真的）
     p80 截止线只在 TRAIN 数据上计算
     过滤：
       • ≥ 12 个训练期信念 bet
       • 中位信念 stake ≥ $50（排除 $2-$6 小钱包）
       • 训练期 + 前瞻期 ROI 双正
     → 输出 conviction_wallets.json （~20-40 个）
                               │
                               ↓
       validate_timing.py（步骤 6）— fee-aware 复制复现
     用与实时 bot 完全相同的逻辑复现：
       • 按钱包的 p80 信念 stake 作为门槛
       • 每注 = 当前权益 × 4%，上限 ≤ 信号钱包自己下注
       • taker fee = shares × rate × price × (1-price)
       • 价格保护：比信号价高 0.05 以上才跳过
       • 价格带 0.00-0.95
     输出 watch_sharps.json （~10-20 个 fee 后仍盈利的钱包）
                               │
                               ↓
       sync_floors.py（步骤 7）— 同步信念门槛到配置
     watch_sharps.json 里每个钱包的 p80 信念金额
     → 写入 copybot.paper.json 的 floor 字段
     → 写入 backtest.json（portfolio.py 用同样门槛）
                               │
                               ↓
       portfolio.py（步骤 8）— 滚动回测
     $1000 起步，过去 30 天
     对每个钱包，按时间顺序"回放"每一笔符合条件的 bet
     用完全相同的 sizing / fee / 价格保护逻辑
     实时结算每个市场胜负
     → 输出 portfolio.json（最终权益）
                               │
                               ↓
       人工筛选 + git commit → backtest.json（10 个）
                               │
                               ↓
       copybot.py / deploy_bot.sh（运行时）
     用 copybot.paper.json / copybot.paper.json 配置
     跟踪 Set E（5 个 volume 类 + 5 个 conviction 类）
     实时 paper 账本 wwf_state.json
     真实资金 ledger_live.json
```

---

## 一句话总结

> **这个项目从 Polymarket 近期流动市场的 Top 30 交易者中挖出 ~3.5 万个候选 → 用 z-score + FDR + 样本外持续性过滤做市者和运气 → 只保留"自己大金额下注时才跟"的信念 bet → 扣除 fee 复现后仍盈利的才进入 backtest.json → portfolio.py 做滚动回测 → 最终挑 10 个进 copybot 实时跟踪。**

所以答案是：**是的，这 10 个钱包全是这个项目自己用统计方法一步一步筛出来的**，不是作者随便挑的。