Files
winning-wallet-finder/钱包筛选流程.md
T

111 lines
5.5 KiB
Markdown
Raw Normal View History

用户问的是一个非常核心的架构问题:这些被回测的钱包(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.jsonportfolio.py 用同样门槛)
portfolio.py(步骤 8)— 滚动回测
$1000 起步,过去 30 天
对每个钱包,按时间顺序"回放"每一笔符合条件的 bet
用完全相同的 sizing / fee / 价格保护逻辑
实时结算每个市场胜负
→ 输出 portfolio.json(最终权益)
人工筛选 + git commit → backtest.json10 个)
copybot.py / deploy_bot.sh(运行时)
用 copybot.paper.json / copybot.paper.json 配置
跟踪 Set E5 个 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 个钱包全是这个项目自己用统计方法一步一步筛出来的**,不是作者随便挑的。